@webiny/app-headless-cms-workflows 0.0.0-unstable.0156a4c312

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 (417) hide show
  1. package/Components/CmsEntriesList/CmsReviewMoveEntryAction.d.ts +2 -0
  2. package/Components/CmsEntriesList/CmsReviewMoveEntryAction.js +43 -0
  3. package/Components/CmsEntriesList/CmsReviewMoveEntryAction.js.map +1 -0
  4. package/Components/CmsEntriesList/CmsReviewMoveEntryAction.test.d.ts +1 -0
  5. package/Components/CmsEntriesList/CmsReviewMoveEntryAction.test.js +118 -0
  6. package/Components/CmsEntriesList/CmsReviewMoveEntryAction.test.js.map +1 -0
  7. package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.d.ts +2 -0
  8. package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.js +22 -0
  9. package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.js.map +1 -0
  10. package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.test.d.ts +1 -0
  11. package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.test.js +98 -0
  12. package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.test.js.map +1 -0
  13. package/Components/ContentEntryForm/CmsEntryReviewBar.d.ts +2 -0
  14. package/Components/ContentEntryForm/CmsEntryReviewBar.js +32 -0
  15. package/Components/ContentEntryForm/CmsEntryReviewBar.js.map +1 -0
  16. package/Components/ContentEntryForm/CmsEntryReviewBar.test.d.ts +1 -0
  17. package/Components/ContentEntryForm/CmsEntryReviewBar.test.js +128 -0
  18. package/Components/ContentEntryForm/CmsEntryReviewBar.test.js.map +1 -0
  19. package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.d.ts +2 -0
  20. package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.js +46 -0
  21. package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.js.map +1 -0
  22. package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.test.d.ts +1 -0
  23. package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.test.js +222 -0
  24. package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.test.js.map +1 -0
  25. package/Components/ContentEntryForm/CmsEntryReviewFormLock.d.ts +2 -0
  26. package/Components/ContentEntryForm/CmsEntryReviewFormLock.js +32 -0
  27. package/Components/ContentEntryForm/CmsEntryReviewFormLock.js.map +1 -0
  28. package/Components/ContentEntryForm/CmsEntryReviewFormLock.test.d.ts +1 -0
  29. package/Components/ContentEntryForm/CmsEntryReviewFormLock.test.js +94 -0
  30. package/Components/ContentEntryForm/CmsEntryReviewFormLock.test.js.map +1 -0
  31. package/Components/ContentEntryForm/CmsEntryReviewNewRevision.d.ts +2 -0
  32. package/Components/ContentEntryForm/CmsEntryReviewNewRevision.js +56 -0
  33. package/Components/ContentEntryForm/CmsEntryReviewNewRevision.js.map +1 -0
  34. package/Components/ContentEntryForm/CmsEntryReviewNewRevision.test.d.ts +1 -0
  35. package/Components/ContentEntryForm/CmsEntryReviewNewRevision.test.js +186 -0
  36. package/Components/ContentEntryForm/CmsEntryReviewNewRevision.test.js.map +1 -0
  37. package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.d.ts +2 -0
  38. package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.js +26 -0
  39. package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.js.map +1 -0
  40. package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.test.d.ts +1 -0
  41. package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.test.js +78 -0
  42. package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.test.js.map +1 -0
  43. package/Components/ContentEntryForm/getModelFieldLabels.d.ts +3 -0
  44. package/Components/ContentEntryForm/getModelFieldLabels.js +8 -0
  45. package/Components/ContentEntryForm/getModelFieldLabels.js.map +1 -0
  46. package/Components/ContentEntryForm/index.d.ts +5 -0
  47. package/Components/ContentEntryForm/index.js +5 -0
  48. package/Components/ContentReviews/CmsContentReviews.d.ts +2 -0
  49. package/Components/ContentReviews/CmsContentReviews.js +11 -0
  50. package/Components/ContentReviews/CmsContentReviews.js.map +1 -0
  51. package/Components/ContentReviews/CmsContentReviews.test.d.ts +1 -0
  52. package/Components/ContentReviews/CmsContentReviews.test.js +214 -0
  53. package/Components/ContentReviews/CmsContentReviews.test.js.map +1 -0
  54. package/Components/ContentReviews/CmsContentReviewsMount.d.ts +4 -0
  55. package/Components/ContentReviews/CmsContentReviewsMount.js +44 -0
  56. package/Components/ContentReviews/CmsContentReviewsMount.js.map +1 -0
  57. package/Components/ContentReviews/CmsContentReviewsSidebarItem.d.ts +2 -0
  58. package/Components/ContentReviews/CmsContentReviewsSidebarItem.js +20 -0
  59. package/Components/ContentReviews/CmsContentReviewsSidebarItem.js.map +1 -0
  60. package/Components/ContentReviews/CmsContentReviewsSidebarItem.test.d.ts +1 -0
  61. package/Components/ContentReviews/CmsContentReviewsSidebarItem.test.js +83 -0
  62. package/Components/ContentReviews/CmsContentReviewsSidebarItem.test.js.map +1 -0
  63. package/Components/ModelDelete/ModelBoundToWorkflowErrorData.d.ts +8 -0
  64. package/Components/ModelDelete/ModelBoundToWorkflowErrorData.js +0 -0
  65. package/Components/ModelDelete/ModelDeleteWorkflowCopy.d.ts +10 -0
  66. package/Components/ModelDelete/ModelDeleteWorkflowCopy.js +0 -0
  67. package/Components/ModelDelete/ModelDeleteWorkflowError.d.ts +2 -0
  68. package/Components/ModelDelete/ModelDeleteWorkflowError.js +34 -0
  69. package/Components/ModelDelete/ModelDeleteWorkflowError.js.map +1 -0
  70. package/Components/ModelDelete/ModelDeleteWorkflowError.test.d.ts +1 -0
  71. package/Components/ModelDelete/ModelDeleteWorkflowError.test.js +73 -0
  72. package/Components/ModelDelete/ModelDeleteWorkflowError.test.js.map +1 -0
  73. package/Components/ModelDelete/getModelDeleteWorkflowCopy.d.ts +3 -0
  74. package/Components/ModelDelete/getModelDeleteWorkflowCopy.js +17 -0
  75. package/Components/ModelDelete/getModelDeleteWorkflowCopy.js.map +1 -0
  76. package/Components/ModelDelete/getModelDeleteWorkflowCopy.test.d.ts +1 -0
  77. package/Components/ModelDelete/getModelDeleteWorkflowCopy.test.js +28 -0
  78. package/Components/ModelDelete/getModelDeleteWorkflowCopy.test.js.map +1 -0
  79. package/Components/ignoreAction.d.ts +1 -0
  80. package/Components/ignoreAction.js +4 -0
  81. package/Components/ignoreAction.js.map +1 -0
  82. package/LICENSE +21 -0
  83. package/README.md +11 -0
  84. package/Routes/CmsWorkflowEditor.d.ts +2 -0
  85. package/Routes/CmsWorkflowEditor.js +23 -0
  86. package/Routes/CmsWorkflowEditor.js.map +1 -0
  87. package/Routes/CmsWorkflowEditor.test.d.ts +1 -0
  88. package/Routes/CmsWorkflowEditor.test.js +141 -0
  89. package/Routes/CmsWorkflowEditor.test.js.map +1 -0
  90. package/Routes/index.d.ts +1 -0
  91. package/Routes/index.js +1 -0
  92. package/features/cache/CmsReviewCacheSyncHandler.d.ts +8 -0
  93. package/features/cache/CmsReviewCacheSyncHandler.js +14 -0
  94. package/features/cache/CmsReviewCacheSyncHandler.js.map +1 -0
  95. package/features/cache/CmsReviewCacheWriter.d.ts +14 -0
  96. package/features/cache/CmsReviewCacheWriter.js +39 -0
  97. package/features/cache/CmsReviewCacheWriter.js.map +1 -0
  98. package/features/cache/CmsReviewCacheWriter.test.d.ts +1 -0
  99. package/features/cache/CmsReviewCacheWriter.test.js +207 -0
  100. package/features/cache/CmsReviewCacheWriter.test.js.map +1 -0
  101. package/features/cache/CmsReviewEntriesCacheProviderDecorator.d.ts +12 -0
  102. package/features/cache/CmsReviewEntriesCacheProviderDecorator.js +17 -0
  103. package/features/cache/CmsReviewEntriesCacheProviderDecorator.js.map +1 -0
  104. package/features/cache/CmsReviewEntriesCacheProviderDecorator.test.d.ts +1 -0
  105. package/features/cache/CmsReviewEntriesCacheProviderDecorator.test.js +129 -0
  106. package/features/cache/CmsReviewEntriesCacheProviderDecorator.test.js.map +1 -0
  107. package/features/cache/ReviewPreservingEntriesCache.d.ts +18 -0
  108. package/features/cache/ReviewPreservingEntriesCache.js +54 -0
  109. package/features/cache/ReviewPreservingEntriesCache.js.map +1 -0
  110. package/features/cache/abstractions.d.ts +5 -0
  111. package/features/cache/abstractions.js +5 -0
  112. package/features/cache/abstractions.js.map +1 -0
  113. package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.d.ts +26 -0
  114. package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.js +104 -0
  115. package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.js.map +1 -0
  116. package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.test.d.ts +1 -0
  117. package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.test.js +589 -0
  118. package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.test.js.map +1 -0
  119. package/features/editorGateway/feature.d.ts +1 -0
  120. package/features/editorGateway/feature.js +11 -0
  121. package/features/editorGateway/feature.js.map +1 -0
  122. package/features/editorGateway/feature.test.d.ts +1 -0
  123. package/features/editorGateway/feature.test.js +272 -0
  124. package/features/editorGateway/feature.test.js.map +1 -0
  125. package/features/editorGateway/graphql/cmsEntryFolderExists.d.ts +1 -0
  126. package/features/editorGateway/graphql/cmsEntryFolderExists.js +16 -0
  127. package/features/editorGateway/graphql/cmsEntryFolderExists.js.map +1 -0
  128. package/features/editorGateway/graphql/deleteCmsEntryWorkflow.d.ts +1 -0
  129. package/features/editorGateway/graphql/deleteCmsEntryWorkflow.js +19 -0
  130. package/features/editorGateway/graphql/deleteCmsEntryWorkflow.js.map +1 -0
  131. package/features/editorGateway/graphql/getCmsEntryWorkflow.d.ts +1 -0
  132. package/features/editorGateway/graphql/getCmsEntryWorkflow.js +19 -0
  133. package/features/editorGateway/graphql/getCmsEntryWorkflow.js.map +1 -0
  134. package/features/editorGateway/graphql/inspectCmsEntryRouting.d.ts +1 -0
  135. package/features/editorGateway/graphql/inspectCmsEntryRouting.js +19 -0
  136. package/features/editorGateway/graphql/inspectCmsEntryRouting.js.map +1 -0
  137. package/features/editorGateway/graphql/listCmsEntryWorkflowModels.d.ts +1 -0
  138. package/features/editorGateway/graphql/listCmsEntryWorkflowModels.js +29 -0
  139. package/features/editorGateway/graphql/listCmsEntryWorkflowModels.js.map +1 -0
  140. package/features/editorGateway/graphql/storeCmsEntryWorkflow.d.ts +1 -0
  141. package/features/editorGateway/graphql/storeCmsEntryWorkflow.js +19 -0
  142. package/features/editorGateway/graphql/storeCmsEntryWorkflow.js.map +1 -0
  143. package/features/editorMounting/CmsWorkflowEditorAppAdapter.d.ts +25 -0
  144. package/features/editorMounting/CmsWorkflowEditorAppAdapter.js +51 -0
  145. package/features/editorMounting/CmsWorkflowEditorAppAdapter.js.map +1 -0
  146. package/features/editorMounting/CmsWorkflowEditorAppAdapter.test.d.ts +1 -0
  147. package/features/editorMounting/CmsWorkflowEditorAppAdapter.test.js +185 -0
  148. package/features/editorMounting/CmsWorkflowEditorAppAdapter.test.js.map +1 -0
  149. package/features/editorMounting/abstractions.d.ts +5 -0
  150. package/features/editorMounting/abstractions.js +5 -0
  151. package/features/editorMounting/abstractions.js.map +1 -0
  152. package/features/editorMounting/feature.d.ts +3 -0
  153. package/features/editorMounting/feature.js +19 -0
  154. package/features/editorMounting/feature.js.map +1 -0
  155. package/features/editorMounting/feature.test.d.ts +1 -0
  156. package/features/editorMounting/feature.test.js +100 -0
  157. package/features/editorMounting/feature.test.js.map +1 -0
  158. package/features/editorReview/CmsEntryReview.d.ts +8 -0
  159. package/features/editorReview/CmsEntryReview.js +14 -0
  160. package/features/editorReview/CmsEntryReview.js.map +1 -0
  161. package/features/editorReview/abstractions.d.ts +5 -0
  162. package/features/editorReview/abstractions.js +5 -0
  163. package/features/editorReview/abstractions.js.map +1 -0
  164. package/features/editorReview/feature.d.ts +3 -0
  165. package/features/editorReview/feature.js +17 -0
  166. package/features/editorReview/feature.js.map +1 -0
  167. package/features/editorReview/feature.test.d.ts +1 -0
  168. package/features/editorReview/feature.test.js +46 -0
  169. package/features/editorReview/feature.test.js.map +1 -0
  170. package/features/editorReview/useCmsEntryReview.d.ts +2 -0
  171. package/features/editorReview/useCmsEntryReview.js +8 -0
  172. package/features/editorReview/useCmsEntryReview.js.map +1 -0
  173. package/features/feature.d.ts +1 -0
  174. package/features/feature.js +15 -0
  175. package/features/feature.js.map +1 -0
  176. package/features/gateway/CmsReviewChangeMessageHandler.d.ts +8 -0
  177. package/features/gateway/CmsReviewChangeMessageHandler.js +16 -0
  178. package/features/gateway/CmsReviewChangeMessageHandler.js.map +1 -0
  179. package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.d.ts +16 -0
  180. package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.js +39 -0
  181. package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.js.map +1 -0
  182. package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.test.d.ts +1 -0
  183. package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.test.js +83 -0
  184. package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.test.js.map +1 -0
  185. package/features/gateway/CmsReviewContentAdapter/abstractions.d.ts +5 -0
  186. package/features/gateway/CmsReviewContentAdapter/abstractions.js +5 -0
  187. package/features/gateway/CmsReviewContentAdapter/abstractions.js.map +1 -0
  188. package/features/gateway/CmsReviewGateway/CmsReviewGateway.d.ts +52 -0
  189. package/features/gateway/CmsReviewGateway/CmsReviewGateway.js +221 -0
  190. package/features/gateway/CmsReviewGateway/CmsReviewGateway.js.map +1 -0
  191. package/features/gateway/CmsReviewGateway/CmsReviewGateway.test.d.ts +1 -0
  192. package/features/gateway/CmsReviewGateway/CmsReviewGateway.test.js +689 -0
  193. package/features/gateway/CmsReviewGateway/CmsReviewGateway.test.js.map +1 -0
  194. package/features/gateway/CmsReviewNotificationHandler.d.ts +8 -0
  195. package/features/gateway/CmsReviewNotificationHandler.js +16 -0
  196. package/features/gateway/CmsReviewNotificationHandler.js.map +1 -0
  197. package/features/gateway/CmsReviewRowProvider/CmsReviewRowProvider.d.ts +8 -0
  198. package/features/gateway/CmsReviewRowProvider/CmsReviewRowProvider.js +14 -0
  199. package/features/gateway/CmsReviewRowProvider/CmsReviewRowProvider.js.map +1 -0
  200. package/features/gateway/CmsReviewRowProvider/abstractions.d.ts +5 -0
  201. package/features/gateway/CmsReviewRowProvider/abstractions.js +5 -0
  202. package/features/gateway/CmsReviewRowProvider/abstractions.js.map +1 -0
  203. package/features/gateway/contentReviewsBindings.test.d.ts +1 -0
  204. package/features/gateway/contentReviewsBindings.test.js +125 -0
  205. package/features/gateway/contentReviewsBindings.test.js.map +1 -0
  206. package/features/gateway/feature.d.ts +4 -0
  207. package/features/gateway/feature.js +27 -0
  208. package/features/gateway/feature.js.map +1 -0
  209. package/features/gateway/feature.test.d.ts +1 -0
  210. package/features/gateway/feature.test.js +79 -0
  211. package/features/gateway/feature.test.js.map +1 -0
  212. package/features/gateway/graphql/CmsOperationResponse.d.ts +3 -0
  213. package/features/gateway/graphql/CmsOperationResponse.js +0 -0
  214. package/features/gateway/graphql/approveCmsEntryReviewStep.d.ts +1 -0
  215. package/features/gateway/graphql/approveCmsEntryReviewStep.js +18 -0
  216. package/features/gateway/graphql/approveCmsEntryReviewStep.js.map +1 -0
  217. package/features/gateway/graphql/cancelCmsEntryReview.d.ts +1 -0
  218. package/features/gateway/graphql/cancelCmsEntryReview.js +18 -0
  219. package/features/gateway/graphql/cancelCmsEntryReview.js.map +1 -0
  220. package/features/gateway/graphql/cancelCmsEntryReviewsForDelete.d.ts +1 -0
  221. package/features/gateway/graphql/cancelCmsEntryReviewsForDelete.js +28 -0
  222. package/features/gateway/graphql/cancelCmsEntryReviewsForDelete.js.map +1 -0
  223. package/features/gateway/graphql/getCmsEntryReview.d.ts +1 -0
  224. package/features/gateway/graphql/getCmsEntryReview.js +18 -0
  225. package/features/gateway/graphql/getCmsEntryReview.js.map +1 -0
  226. package/features/gateway/graphql/getCmsEntryReviewStepRun.d.ts +1 -0
  227. package/features/gateway/graphql/getCmsEntryReviewStepRun.js +18 -0
  228. package/features/gateway/graphql/getCmsEntryReviewStepRun.js.map +1 -0
  229. package/features/gateway/graphql/getCmsEntryTargetReview.d.ts +1 -0
  230. package/features/gateway/graphql/getCmsEntryTargetReview.js +18 -0
  231. package/features/gateway/graphql/getCmsEntryTargetReview.js.map +1 -0
  232. package/features/gateway/graphql/listCmsEntryBlockingReviews.d.ts +1 -0
  233. package/features/gateway/graphql/listCmsEntryBlockingReviews.js +18 -0
  234. package/features/gateway/graphql/listCmsEntryBlockingReviews.js.map +1 -0
  235. package/features/gateway/graphql/listCmsEntryReviewStepCandidates.d.ts +1 -0
  236. package/features/gateway/graphql/listCmsEntryReviewStepCandidates.js +18 -0
  237. package/features/gateway/graphql/listCmsEntryReviewStepCandidates.js.map +1 -0
  238. package/features/gateway/graphql/listCmsEntryReviews.d.ts +1 -0
  239. package/features/gateway/graphql/listCmsEntryReviews.js +34 -0
  240. package/features/gateway/graphql/listCmsEntryReviews.js.map +1 -0
  241. package/features/gateway/graphql/listCmsEntryStepCandidates.d.ts +1 -0
  242. package/features/gateway/graphql/listCmsEntryStepCandidates.js +28 -0
  243. package/features/gateway/graphql/listCmsEntryStepCandidates.js.map +1 -0
  244. package/features/gateway/graphql/listCmsEntryWorkflows.d.ts +1 -0
  245. package/features/gateway/graphql/listCmsEntryWorkflows.js +18 -0
  246. package/features/gateway/graphql/listCmsEntryWorkflows.js.map +1 -0
  247. package/features/gateway/graphql/reassignCmsEntryReviewStep.d.ts +1 -0
  248. package/features/gateway/graphql/reassignCmsEntryReviewStep.js +18 -0
  249. package/features/gateway/graphql/reassignCmsEntryReviewStep.js.map +1 -0
  250. package/features/gateway/graphql/rejectCmsEntryReviewStep.d.ts +1 -0
  251. package/features/gateway/graphql/rejectCmsEntryReviewStep.js +18 -0
  252. package/features/gateway/graphql/rejectCmsEntryReviewStep.js.map +1 -0
  253. package/features/gateway/graphql/requestCmsEntryReview.d.ts +1 -0
  254. package/features/gateway/graphql/requestCmsEntryReview.js +28 -0
  255. package/features/gateway/graphql/requestCmsEntryReview.js.map +1 -0
  256. package/features/gateway/graphql/restartCmsEntryReviewStep.d.ts +1 -0
  257. package/features/gateway/graphql/restartCmsEntryReviewStep.js +18 -0
  258. package/features/gateway/graphql/restartCmsEntryReviewStep.js.map +1 -0
  259. package/features/gateway/graphql/startCmsEntryReviewStep.d.ts +1 -0
  260. package/features/gateway/graphql/startCmsEntryReviewStep.js +18 -0
  261. package/features/gateway/graphql/startCmsEntryReviewStep.js.map +1 -0
  262. package/features/gateway/graphql/takeOverCmsEntryReviewStep.d.ts +1 -0
  263. package/features/gateway/graphql/takeOverCmsEntryReviewStep.js +22 -0
  264. package/features/gateway/graphql/takeOverCmsEntryReviewStep.js.map +1 -0
  265. package/features/trash/BulkDeletePresenterReviewDecorator.d.ts +20 -0
  266. package/features/trash/BulkDeletePresenterReviewDecorator.js +81 -0
  267. package/features/trash/BulkDeletePresenterReviewDecorator.js.map +1 -0
  268. package/features/trash/BulkDeletePresenterReviewDecorator.test.d.ts +1 -0
  269. package/features/trash/BulkDeletePresenterReviewDecorator.test.js +693 -0
  270. package/features/trash/BulkDeletePresenterReviewDecorator.test.js.map +1 -0
  271. package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.d.ts +13 -0
  272. package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.js +23 -0
  273. package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.js.map +1 -0
  274. package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.test.d.ts +1 -0
  275. package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.test.js +123 -0
  276. package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.test.js.map +1 -0
  277. package/features/trash/DeleteEntryUseCaseReviewDecorator.d.ts +13 -0
  278. package/features/trash/DeleteEntryUseCaseReviewDecorator.js +23 -0
  279. package/features/trash/DeleteEntryUseCaseReviewDecorator.js.map +1 -0
  280. package/features/trash/DeleteEntryUseCaseReviewDecorator.test.d.ts +1 -0
  281. package/features/trash/DeleteEntryUseCaseReviewDecorator.test.js +139 -0
  282. package/features/trash/DeleteEntryUseCaseReviewDecorator.test.js.map +1 -0
  283. package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.d.ts +13 -0
  284. package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.js +23 -0
  285. package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.js.map +1 -0
  286. package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.test.d.ts +1 -0
  287. package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.test.js +122 -0
  288. package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.test.js.map +1 -0
  289. package/features/trash/feature.d.ts +1 -0
  290. package/features/trash/feature.js +17 -0
  291. package/features/trash/feature.js.map +1 -0
  292. package/features/trash/feature.test.d.ts +1 -0
  293. package/features/trash/feature.test.js +213 -0
  294. package/features/trash/feature.test.js.map +1 -0
  295. package/index.d.ts +2 -0
  296. package/index.editor.test.d.ts +1 -0
  297. package/index.editor.test.js +149 -0
  298. package/index.editor.test.js.map +1 -0
  299. package/index.js +41 -0
  300. package/index.js.map +1 -0
  301. package/index.lists.test.d.ts +1 -0
  302. package/index.lists.test.js +172 -0
  303. package/index.lists.test.js.map +1 -0
  304. package/index.mount.test.d.ts +1 -0
  305. package/index.mount.test.js +49 -0
  306. package/index.mount.test.js.map +1 -0
  307. package/index.test.d.ts +1 -0
  308. package/index.test.js +414 -0
  309. package/index.test.js.map +1 -0
  310. package/package.json +54 -0
  311. package/presentation/CmsEntryContentReloader.d.ts +8 -0
  312. package/presentation/CmsEntryContentReloader.js +20 -0
  313. package/presentation/CmsEntryContentReloader.js.map +1 -0
  314. package/presentation/CmsEntryContentReloader.test.d.ts +1 -0
  315. package/presentation/CmsEntryContentReloader.test.js +118 -0
  316. package/presentation/CmsEntryContentReloader.test.js.map +1 -0
  317. package/presentation/CmsEntryFormPresenterReviewDecorator.d.ts +27 -0
  318. package/presentation/CmsEntryFormPresenterReviewDecorator.js +167 -0
  319. package/presentation/CmsEntryFormPresenterReviewDecorator.js.map +1 -0
  320. package/presentation/CmsEntryFormPresenterReviewDecorator.test.d.ts +1 -0
  321. package/presentation/CmsEntryFormPresenterReviewDecorator.test.js +601 -0
  322. package/presentation/CmsEntryFormPresenterReviewDecorator.test.js.map +1 -0
  323. package/presentation/CmsEntryUnsavedChanges.d.ts +7 -0
  324. package/presentation/CmsEntryUnsavedChanges.js +12 -0
  325. package/presentation/CmsEntryUnsavedChanges.js.map +1 -0
  326. package/presentation/CmsEntryUnsavedChanges.test.d.ts +1 -0
  327. package/presentation/CmsEntryUnsavedChanges.test.js +23 -0
  328. package/presentation/CmsEntryUnsavedChanges.test.js.map +1 -0
  329. package/presentation/CmsReviewFieldSelections.test.d.ts +1 -0
  330. package/presentation/CmsReviewFieldSelections.test.js +27 -0
  331. package/presentation/CmsReviewFieldSelections.test.js.map +1 -0
  332. package/presentation/CmsReviewGetEntryFieldSelection.d.ts +8 -0
  333. package/presentation/CmsReviewGetEntryFieldSelection.js +16 -0
  334. package/presentation/CmsReviewGetEntryFieldSelection.js.map +1 -0
  335. package/presentation/CmsReviewListEntriesFieldSelection.d.ts +8 -0
  336. package/presentation/CmsReviewListEntriesFieldSelection.js +16 -0
  337. package/presentation/CmsReviewListEntriesFieldSelection.js.map +1 -0
  338. package/presentation/CmsReviewTableRowMapperDecorator.d.ts +11 -0
  339. package/presentation/CmsReviewTableRowMapperDecorator.js +24 -0
  340. package/presentation/CmsReviewTableRowMapperDecorator.js.map +1 -0
  341. package/presentation/CmsReviewTableRowMapperDecorator.test.d.ts +1 -0
  342. package/presentation/CmsReviewTableRowMapperDecorator.test.js +120 -0
  343. package/presentation/CmsReviewTableRowMapperDecorator.test.js.map +1 -0
  344. package/presentation/CmsRevisionsListPresenterDecorator.d.ts +24 -0
  345. package/presentation/CmsRevisionsListPresenterDecorator.js +66 -0
  346. package/presentation/CmsRevisionsListPresenterDecorator.js.map +1 -0
  347. package/presentation/CmsRevisionsListPresenterDecorator.test.d.ts +1 -0
  348. package/presentation/CmsRevisionsListPresenterDecorator.test.js +174 -0
  349. package/presentation/CmsRevisionsListPresenterDecorator.test.js.map +1 -0
  350. package/presentation/contentReviews/CmsContentReviewsPresenter.d.ts +28 -0
  351. package/presentation/contentReviews/CmsContentReviewsPresenter.js +103 -0
  352. package/presentation/contentReviews/CmsContentReviewsPresenter.js.map +1 -0
  353. package/presentation/contentReviews/CmsContentReviewsPresenter.test.d.ts +1 -0
  354. package/presentation/contentReviews/CmsContentReviewsPresenter.test.js +238 -0
  355. package/presentation/contentReviews/CmsContentReviewsPresenter.test.js.map +1 -0
  356. package/presentation/contentReviews/abstractions.d.ts +31 -0
  357. package/presentation/contentReviews/abstractions.js +5 -0
  358. package/presentation/contentReviews/abstractions.js.map +1 -0
  359. package/presentation/contentReviews/feature.d.ts +3 -0
  360. package/presentation/contentReviews/feature.js +17 -0
  361. package/presentation/contentReviews/feature.js.map +1 -0
  362. package/presentation/contentReviews/toContentTypes.d.ts +3 -0
  363. package/presentation/contentReviews/toContentTypes.js +14 -0
  364. package/presentation/contentReviews/toContentTypes.js.map +1 -0
  365. package/presentation/contentReviews/toContentTypes.test.d.ts +1 -0
  366. package/presentation/contentReviews/toContentTypes.test.js +20 -0
  367. package/presentation/contentReviews/toContentTypes.test.js.map +1 -0
  368. package/presentation/feature.d.ts +1 -0
  369. package/presentation/feature.js +19 -0
  370. package/presentation/feature.js.map +1 -0
  371. package/presentation/getCmsEntryReviewContext.d.ts +4 -0
  372. package/presentation/getCmsEntryReviewContext.js +12 -0
  373. package/presentation/getCmsEntryReviewContext.js.map +1 -0
  374. package/presentation/getCmsEntryReviewInitParams.d.ts +13 -0
  375. package/presentation/getCmsEntryReviewInitParams.js +18 -0
  376. package/presentation/getCmsEntryReviewInitParams.js.map +1 -0
  377. package/presentation/getCmsEntryReviewInitParams.test.d.ts +1 -0
  378. package/presentation/getCmsEntryReviewInitParams.test.js +69 -0
  379. package/presentation/getCmsEntryReviewInitParams.test.js.map +1 -0
  380. package/routes.d.ts +11 -0
  381. package/routes.js +21 -0
  382. package/routes.js.map +1 -0
  383. package/testing/createEntry.d.ts +3 -0
  384. package/testing/createEntry.js +22 -0
  385. package/testing/createEntry.js.map +1 -0
  386. package/testing/createEntrySession.d.ts +9 -0
  387. package/testing/createEntrySession.js +29 -0
  388. package/testing/createEntrySession.js.map +1 -0
  389. package/testing/createFolder.d.ts +2 -0
  390. package/testing/createFolder.js +13 -0
  391. package/testing/createFolder.js.map +1 -0
  392. package/testing/createFormVm.d.ts +2 -0
  393. package/testing/createFormVm.js +22 -0
  394. package/testing/createFormVm.js.map +1 -0
  395. package/testing/models.d.ts +4 -0
  396. package/testing/models.js +23 -0
  397. package/testing/models.js.map +1 -0
  398. package/testing/renderEditorTree.d.ts +17 -0
  399. package/testing/renderEditorTree.js +93 -0
  400. package/testing/renderEditorTree.js.map +1 -0
  401. package/testing/reviewStates.d.ts +17 -0
  402. package/testing/reviewStates.js +65 -0
  403. package/testing/reviewStates.js.map +1 -0
  404. package/types.d.ts +10 -0
  405. package/types.js +0 -0
  406. package/utils/appName.d.ts +4 -0
  407. package/utils/appName.js +13 -0
  408. package/utils/appName.js.map +1 -0
  409. package/utils/isReviewableModel.d.ts +2 -0
  410. package/utils/isReviewableModel.js +7 -0
  411. package/utils/isReviewableModel.js.map +1 -0
  412. package/utils/renderModelIcon.d.ts +3 -0
  413. package/utils/renderModelIcon.js +19 -0
  414. package/utils/renderModelIcon.js.map +1 -0
  415. package/utils/renderModelIconOrFallback.d.ts +3 -0
  416. package/utils/renderModelIconOrFallback.js +17 -0
  417. package/utils/renderModelIconOrFallback.js.map +1 -0
@@ -0,0 +1,3 @@
1
+ export declare const CmsContentReviewsPresenterFeature: import("@webiny/feature/admin").FeatureDefinition<{
2
+ presenter: import("./abstractions.js").ICmsContentReviewsPresenter;
3
+ }, []>;
@@ -0,0 +1,17 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { CmsContentReviewsPresenter } from "./abstractions.js";
3
+ import { CmsContentReviewsPresenter as external_CmsContentReviewsPresenter_js_CmsContentReviewsPresenter } from "./CmsContentReviewsPresenter.js";
4
+ const CmsContentReviewsPresenterFeature = createFeature({
5
+ name: "Cms/Workflows/ContentReviewsPresenter",
6
+ register (container) {
7
+ container.register(external_CmsContentReviewsPresenter_js_CmsContentReviewsPresenter);
8
+ },
9
+ resolve (container) {
10
+ return {
11
+ presenter: container.resolve(CmsContentReviewsPresenter)
12
+ };
13
+ }
14
+ });
15
+ export { CmsContentReviewsPresenterFeature };
16
+
17
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/contentReviews/feature.js","sources":["../../../src/presentation/contentReviews/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { CmsContentReviewsPresenter as Abstraction } from \"./abstractions.js\";\nimport { CmsContentReviewsPresenter } from \"./CmsContentReviewsPresenter.js\";\n\nexport const CmsContentReviewsPresenterFeature = createFeature({\n name: \"Cms/Workflows/ContentReviewsPresenter\",\n register(container) {\n // Transient (R212): `useFeature` memoizes the one instance the root component holds.\n container.register(CmsContentReviewsPresenter);\n },\n resolve(container) {\n return {\n presenter: container.resolve(Abstraction)\n };\n }\n});\n"],"names":["CmsContentReviewsPresenterFeature","createFeature","container","CmsContentReviewsPresenter","Abstraction"],"mappings":";;;AAIO,MAAMA,oCAAoCC,cAAc;IAC3D,MAAM;IACN,UAASC,SAAS;QAEdA,UAAU,QAAQ,CAACC;IACvB;IACA,SAAQD,SAAS;QACb,OAAO;YACH,WAAWA,UAAU,OAAO,CAACE;QACjC;IACJ;AACJ"}
@@ -0,0 +1,3 @@
1
+ import type { ContentType } from "./abstractions.js";
2
+ import type { ListedModel } from "./abstractions.js";
3
+ export declare const toContentTypes: (models: ListedModel[]) => ContentType[];
@@ -0,0 +1,14 @@
1
+ const UNPUBLISHABLE_MODEL_TAG = "$publishing:false";
2
+ const toContentTypes = (models)=>{
3
+ const bindable = models.filter((model)=>{
4
+ if (model.isBeingDeleted) return false;
5
+ return !(model.tags ?? []).includes(UNPUBLISHABLE_MODEL_TAG);
6
+ });
7
+ return bindable.map((model)=>({
8
+ modelId: model.modelId,
9
+ name: model.name
10
+ })).sort((a, b)=>a.name.localeCompare(b.name));
11
+ };
12
+ export { toContentTypes };
13
+
14
+ //# sourceMappingURL=toContentTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/contentReviews/toContentTypes.js","sources":["../../../src/presentation/contentReviews/toContentTypes.ts"],"sourcesContent":["import type { ContentType } from \"./abstractions.js\";\nimport type { ListedModel } from \"./abstractions.js\";\n\n// Models that cannot be published cannot be bound to a workflow (mirror of `isBindableModel`).\nconst UNPUBLISHABLE_MODEL_TAG = \"$publishing:false\";\n\n/*\n * The content types a Content Reviews list can show: bindable models that are not being deleted,\n * sorted by name. Private models are not in the admin list (`listContentModels` excludes them).\n */\nexport const toContentTypes = (models: ListedModel[]): ContentType[] => {\n const bindable = models.filter(model => {\n if (model.isBeingDeleted) {\n return false;\n }\n return !(model.tags ?? []).includes(UNPUBLISHABLE_MODEL_TAG);\n });\n\n return bindable\n .map(model => {\n return { modelId: model.modelId, name: model.name };\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n};\n"],"names":["UNPUBLISHABLE_MODEL_TAG","toContentTypes","models","bindable","model","a","b"],"mappings":"AAIA,MAAMA,0BAA0B;AAMzB,MAAMC,iBAAiB,CAACC;IAC3B,MAAMC,WAAWD,OAAO,MAAM,CAACE,CAAAA;QAC3B,IAAIA,MAAM,cAAc,EACpB,OAAO;QAEX,OAAO,CAAEA,AAAAA,CAAAA,MAAM,IAAI,IAAI,EAAC,EAAG,QAAQ,CAACJ;IACxC;IAEA,OAAOG,SACF,GAAG,CAACC,CAAAA,QACM;YAAE,SAASA,MAAM,OAAO;YAAE,MAAMA,MAAM,IAAI;QAAC,IAErD,IAAI,CAAC,CAACC,GAAGC,IAAMD,EAAE,IAAI,CAAC,aAAa,CAACC,EAAE,IAAI;AACnD"}
@@ -0,0 +1,20 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { toContentTypes } from "./toContentTypes.js";
3
+ describe("toContentTypes", ()=>{
4
+ it("keeps a model with no tags", ()=>{
5
+ const result = toContentTypes([
6
+ {
7
+ modelId: "article",
8
+ name: "Article"
9
+ }
10
+ ]);
11
+ expect(result).toEqual([
12
+ {
13
+ modelId: "article",
14
+ name: "Article"
15
+ }
16
+ ]);
17
+ });
18
+ });
19
+
20
+ //# sourceMappingURL=toContentTypes.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/contentReviews/toContentTypes.test.js","sources":["../../../src/presentation/contentReviews/toContentTypes.test.ts"],"sourcesContent":["import { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { toContentTypes } from \"./toContentTypes.js\";\n\ndescribe(\"toContentTypes\", () => {\n it(\"keeps a model with no tags\", () => {\n const result = toContentTypes([{ modelId: \"article\", name: \"Article\" }]);\n\n expect(result).toEqual([{ modelId: \"article\", name: \"Article\" }]);\n });\n});\n"],"names":["describe","it","result","toContentTypes","expect"],"mappings":";;AAKAA,SAAS,kBAAkB;IACvBC,GAAG,8BAA8B;QAC7B,MAAMC,SAASC,eAAe;YAAC;gBAAE,SAAS;gBAAW,MAAM;YAAU;SAAE;QAEvEC,OAAOF,QAAQ,OAAO,CAAC;YAAC;gBAAE,SAAS;gBAAW,MAAM;YAAU;SAAE;IACpE;AACJ"}
@@ -0,0 +1 @@
1
+ export declare const CmsWorkflowsFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
@@ -0,0 +1,19 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { CmsEntryFormPresenterReviewDecorator } from "./CmsEntryFormPresenterReviewDecorator.js";
3
+ import { CmsReviewGetEntryFieldSelection } from "./CmsReviewGetEntryFieldSelection.js";
4
+ import { CmsReviewListEntriesFieldSelection } from "./CmsReviewListEntriesFieldSelection.js";
5
+ import { CmsReviewTableRowMapperDecorator } from "./CmsReviewTableRowMapperDecorator.js";
6
+ import { CmsRevisionsListPresenterDecorator } from "./CmsRevisionsListPresenterDecorator.js";
7
+ const CmsWorkflowsFeature = createFeature({
8
+ name: "CmsWorkflows",
9
+ register (container) {
10
+ container.registerDecorator(CmsEntryFormPresenterReviewDecorator);
11
+ container.registerDecorator(CmsReviewTableRowMapperDecorator);
12
+ container.registerDecorator(CmsRevisionsListPresenterDecorator);
13
+ container.register(CmsReviewListEntriesFieldSelection);
14
+ container.register(CmsReviewGetEntryFieldSelection);
15
+ }
16
+ });
17
+ export { CmsWorkflowsFeature };
18
+
19
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/feature.js","sources":["../../src/presentation/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { CmsEntryFormPresenterReviewDecorator } from \"./CmsEntryFormPresenterReviewDecorator.js\";\nimport { CmsReviewGetEntryFieldSelection } from \"./CmsReviewGetEntryFieldSelection.js\";\nimport { CmsReviewListEntriesFieldSelection } from \"./CmsReviewListEntriesFieldSelection.js\";\nimport { CmsReviewTableRowMapperDecorator } from \"./CmsReviewTableRowMapperDecorator.js\";\nimport { CmsRevisionsListPresenterDecorator } from \"./CmsRevisionsListPresenterDecorator.js\";\n\nexport const CmsWorkflowsFeature = createFeature({\n name: \"CmsWorkflows\",\n register(container) {\n // The review services are registered by WorkflowsAdminApp.\n container.registerDecorator(CmsEntryFormPresenterReviewDecorator);\n container.registerDecorator(CmsReviewTableRowMapperDecorator);\n container.registerDecorator(CmsRevisionsListPresenterDecorator);\n container.register(CmsReviewListEntriesFieldSelection);\n container.register(CmsReviewGetEntryFieldSelection);\n }\n});\n"],"names":["CmsWorkflowsFeature","createFeature","container","CmsEntryFormPresenterReviewDecorator","CmsReviewTableRowMapperDecorator","CmsRevisionsListPresenterDecorator","CmsReviewListEntriesFieldSelection","CmsReviewGetEntryFieldSelection"],"mappings":";;;;;;AAOO,MAAMA,sBAAsBC,cAAc;IAC7C,MAAM;IACN,UAASC,SAAS;QAEdA,UAAU,iBAAiB,CAACC;QAC5BD,UAAU,iBAAiB,CAACE;QAC5BF,UAAU,iBAAiB,CAACG;QAC5BH,UAAU,QAAQ,CAACI;QACnBJ,UAAU,QAAQ,CAACK;IACvB;AACJ"}
@@ -0,0 +1,4 @@
1
+ import type { CmsContentEntry } from "@webiny/app-headless-cms-common/types/index.js";
2
+ import type { CmsModel } from "@webiny/app-headless-cms-common/types/index.js";
3
+ import type { TargetReviewContext } from "@webiny/app-workflows/review/presentation/targetReview/abstractions.js";
4
+ export declare function getCmsEntryReviewContext(model: CmsModel, entry: CmsContentEntry, canRequest: boolean): TargetReviewContext;
@@ -0,0 +1,12 @@
1
+ function getCmsEntryReviewContext(model, entry, canRequest) {
2
+ const entryTitle = entry.meta?.title || "unknown";
3
+ return {
4
+ targetTitle: entryTitle,
5
+ canRequest,
6
+ isPublished: entry.meta?.status === "published",
7
+ isUnpublished: entry.meta?.status === "unpublished"
8
+ };
9
+ }
10
+ export { getCmsEntryReviewContext };
11
+
12
+ //# sourceMappingURL=getCmsEntryReviewContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/getCmsEntryReviewContext.js","sources":["../../src/presentation/getCmsEntryReviewContext.ts"],"sourcesContent":["import type { CmsContentEntry } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type { CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type { TargetReviewContext } from \"@webiny/app-workflows/review/presentation/targetReview/abstractions.js\";\n\nexport function getCmsEntryReviewContext(\n model: CmsModel,\n entry: CmsContentEntry,\n canRequest: boolean\n): TargetReviewContext {\n const entryTitle = entry.meta?.title || \"unknown\";\n\n return {\n targetTitle: entryTitle,\n canRequest,\n isPublished: entry.meta?.status === \"published\",\n // A revision published before and not published now (R226): it was reviewed before.\n isUnpublished: entry.meta?.status === \"unpublished\"\n };\n}\n"],"names":["getCmsEntryReviewContext","model","entry","canRequest","entryTitle"],"mappings":"AAIO,SAASA,yBACZC,KAAe,EACfC,KAAsB,EACtBC,UAAmB;IAEnB,MAAMC,aAAaF,MAAM,IAAI,EAAE,SAAS;IAExC,OAAO;QACH,aAAaE;QACbD;QACA,aAAaD,MAAM,IAAI,EAAE,WAAW;QAEpC,eAAeA,MAAM,IAAI,EAAE,WAAW;IAC1C;AACJ"}
@@ -0,0 +1,13 @@
1
+ import type { CmsContentEntry } from "@webiny/app-headless-cms-common/types/index.js";
2
+ import type { CmsModel } from "@webiny/app-headless-cms-common/types/index.js";
3
+ import type { IReviewContentReloader } from "@webiny/app-workflows/review/content/IReviewContentReloader.js";
4
+ import type { IReviewUnsavedChanges } from "@webiny/app-workflows/review/content/IReviewUnsavedChanges.js";
5
+ import type { TargetReviewInitParams } from "@webiny/app-workflows/review/presentation/targetReview/abstractions.js";
6
+ export interface CmsEntryReviewInitInput {
7
+ model: CmsModel;
8
+ entry: CmsContentEntry;
9
+ canRequest: boolean;
10
+ contentReloader: IReviewContentReloader;
11
+ unsavedChanges: IReviewUnsavedChanges;
12
+ }
13
+ export declare function getCmsEntryReviewInitParams(input: CmsEntryReviewInitInput): TargetReviewInitParams;
@@ -0,0 +1,18 @@
1
+ import { createAppName } from "../utils/appName.js";
2
+ import { getCmsEntryReviewContext } from "./getCmsEntryReviewContext.js";
3
+ function getCmsEntryReviewInitParams(input) {
4
+ const { model, entry, canRequest, contentReloader, unsavedChanges } = input;
5
+ const context = getCmsEntryReviewContext(model, entry, canRequest);
6
+ return {
7
+ ...context,
8
+ target: {
9
+ namespace: createAppName(model),
10
+ targetRevisionId: entry.id
11
+ },
12
+ contentReloader,
13
+ unsavedChanges
14
+ };
15
+ }
16
+ export { getCmsEntryReviewInitParams };
17
+
18
+ //# sourceMappingURL=getCmsEntryReviewInitParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/getCmsEntryReviewInitParams.js","sources":["../../src/presentation/getCmsEntryReviewInitParams.ts"],"sourcesContent":["import type { CmsContentEntry } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type { CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type { IReviewContentReloader } from \"@webiny/app-workflows/review/content/IReviewContentReloader.js\";\nimport type { IReviewUnsavedChanges } from \"@webiny/app-workflows/review/content/IReviewUnsavedChanges.js\";\nimport type { TargetReviewInitParams } from \"@webiny/app-workflows/review/presentation/targetReview/abstractions.js\";\nimport { createAppName } from \"~/utils/appName.js\";\nimport { getCmsEntryReviewContext } from \"./getCmsEntryReviewContext.js\";\n\nexport interface CmsEntryReviewInitInput {\n model: CmsModel;\n entry: CmsContentEntry;\n canRequest: boolean;\n contentReloader: IReviewContentReloader;\n unsavedChanges: IReviewUnsavedChanges;\n}\n\nexport function getCmsEntryReviewInitParams(\n input: CmsEntryReviewInitInput\n): TargetReviewInitParams {\n const { model, entry, canRequest, contentReloader, unsavedChanges } = input;\n const context = getCmsEntryReviewContext(model, entry, canRequest);\n\n return {\n ...context,\n target: { namespace: createAppName(model), targetRevisionId: entry.id },\n contentReloader,\n unsavedChanges\n };\n}\n"],"names":["getCmsEntryReviewInitParams","input","model","entry","canRequest","contentReloader","unsavedChanges","context","getCmsEntryReviewContext","createAppName"],"mappings":";;AAgBO,SAASA,4BACZC,KAA8B;IAE9B,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEC,UAAU,EAAEC,eAAe,EAAEC,cAAc,EAAE,GAAGL;IACtE,MAAMM,UAAUC,yBAAyBN,OAAOC,OAAOC;IAEvD,OAAO;QACH,GAAGG,OAAO;QACV,QAAQ;YAAE,WAAWE,cAAcP;YAAQ,kBAAkBC,MAAM,EAAE;QAAC;QACtEE;QACAC;IACJ;AACJ"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,69 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { createEntry } from "../testing/createEntry.js";
3
+ import { MODEL } from "../testing/models.js";
4
+ import { getCmsEntryReviewInitParams } from "./getCmsEntryReviewInitParams.js";
5
+ describe("getCmsEntryReviewInitParams", ()=>{
6
+ it("builds the target and the context and carries the reloader, no use cases (R353)", ()=>{
7
+ const contentReloader = {
8
+ reload: vi.fn()
9
+ };
10
+ const unsavedChanges = {
11
+ getRequestBlockReason: ()=>null
12
+ };
13
+ const entry = createEntry({
14
+ status: "published"
15
+ });
16
+ const params = getCmsEntryReviewInitParams({
17
+ model: MODEL,
18
+ entry,
19
+ canRequest: true,
20
+ contentReloader,
21
+ unsavedChanges
22
+ });
23
+ expect(params).not.toHaveProperty("useCases");
24
+ expect(params.contentReloader).toBe(contentReloader);
25
+ expect(params.unsavedChanges).toBe(unsavedChanges);
26
+ expect(params.target).toEqual({
27
+ namespace: "cms.article",
28
+ targetRevisionId: "entry-1#0001"
29
+ });
30
+ expect(params.targetTitle).toBe("Hello");
31
+ expect(params.canRequest).toBe(true);
32
+ expect(params.isPublished).toBe(true);
33
+ expect(params.isUnpublished).toBe(false);
34
+ });
35
+ it("prefills the target title with the entry title only, no model name", ()=>{
36
+ const params = getCmsEntryReviewInitParams({
37
+ model: MODEL,
38
+ entry: createEntry({
39
+ title: "Summer launch"
40
+ }),
41
+ canRequest: true,
42
+ contentReloader: {
43
+ reload: vi.fn()
44
+ },
45
+ unsavedChanges: {
46
+ getRequestBlockReason: ()=>null
47
+ }
48
+ });
49
+ expect(params.targetTitle).toBe("Summer launch");
50
+ });
51
+ it("falls back to “unknown” when the entry has no title", ()=>{
52
+ const params = getCmsEntryReviewInitParams({
53
+ model: MODEL,
54
+ entry: createEntry({
55
+ title: void 0
56
+ }),
57
+ canRequest: true,
58
+ contentReloader: {
59
+ reload: vi.fn()
60
+ },
61
+ unsavedChanges: {
62
+ getRequestBlockReason: ()=>null
63
+ }
64
+ });
65
+ expect(params.targetTitle).toBe("unknown");
66
+ });
67
+ });
68
+
69
+ //# sourceMappingURL=getCmsEntryReviewInitParams.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/getCmsEntryReviewInitParams.test.js","sources":["../../src/presentation/getCmsEntryReviewInitParams.test.ts"],"sourcesContent":["import { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport type { IReviewContentReloader } from \"@webiny/app-workflows/review/content/IReviewContentReloader.js\";\nimport type { IReviewUnsavedChanges } from \"@webiny/app-workflows/review/content/IReviewUnsavedChanges.js\";\nimport { createEntry } from \"~/testing/createEntry.js\";\nimport { MODEL } from \"~/testing/models.js\";\nimport { getCmsEntryReviewInitParams } from \"./getCmsEntryReviewInitParams.js\";\n\ndescribe(\"getCmsEntryReviewInitParams\", () => {\n it(\"builds the target and the context and carries the reloader, no use cases (R353)\", () => {\n const contentReloader: IReviewContentReloader = { reload: vi.fn() };\n const unsavedChanges: IReviewUnsavedChanges = { getRequestBlockReason: () => null };\n const entry = createEntry({ status: \"published\" });\n\n const params = getCmsEntryReviewInitParams({\n model: MODEL,\n entry,\n canRequest: true,\n contentReloader,\n unsavedChanges\n });\n\n expect(params).not.toHaveProperty(\"useCases\");\n expect(params.contentReloader).toBe(contentReloader);\n expect(params.unsavedChanges).toBe(unsavedChanges);\n expect(params.target).toEqual({\n namespace: \"cms.article\",\n targetRevisionId: \"entry-1#0001\"\n });\n expect(params.targetTitle).toBe(\"Hello\");\n expect(params.canRequest).toBe(true);\n expect(params.isPublished).toBe(true);\n expect(params.isUnpublished).toBe(false);\n });\n\n it(\"prefills the target title with the entry title only, no model name\", () => {\n const params = getCmsEntryReviewInitParams({\n model: MODEL,\n entry: createEntry({ title: \"Summer launch\" }),\n canRequest: true,\n contentReloader: { reload: vi.fn() },\n unsavedChanges: { getRequestBlockReason: () => null }\n });\n\n expect(params.targetTitle).toBe(\"Summer launch\");\n });\n\n it(\"falls back to “unknown” when the entry has no title\", () => {\n const params = getCmsEntryReviewInitParams({\n model: MODEL,\n entry: createEntry({ title: undefined }),\n canRequest: true,\n contentReloader: { reload: vi.fn() },\n unsavedChanges: { getRequestBlockReason: () => null }\n });\n\n expect(params.targetTitle).toBe(\"unknown\");\n });\n});\n"],"names":["describe","it","contentReloader","vi","unsavedChanges","entry","createEntry","params","getCmsEntryReviewInitParams","MODEL","expect","undefined"],"mappings":";;;;AAUAA,SAAS,+BAA+B;IACpCC,GAAG,mFAAmF;QAClF,MAAMC,kBAA0C;YAAE,QAAQC,GAAG,EAAE;QAAG;QAClE,MAAMC,iBAAwC;YAAE,uBAAuB,IAAM;QAAK;QAClF,MAAMC,QAAQC,YAAY;YAAE,QAAQ;QAAY;QAEhD,MAAMC,SAASC,4BAA4B;YACvC,OAAOC;YACPJ;YACA,YAAY;YACZH;YACAE;QACJ;QAEAM,OAAOH,QAAQ,GAAG,CAAC,cAAc,CAAC;QAClCG,OAAOH,OAAO,eAAe,EAAE,IAAI,CAACL;QACpCQ,OAAOH,OAAO,cAAc,EAAE,IAAI,CAACH;QACnCM,OAAOH,OAAO,MAAM,EAAE,OAAO,CAAC;YAC1B,WAAW;YACX,kBAAkB;QACtB;QACAG,OAAOH,OAAO,WAAW,EAAE,IAAI,CAAC;QAChCG,OAAOH,OAAO,UAAU,EAAE,IAAI,CAAC;QAC/BG,OAAOH,OAAO,WAAW,EAAE,IAAI,CAAC;QAChCG,OAAOH,OAAO,aAAa,EAAE,IAAI,CAAC;IACtC;IAEAN,GAAG,sEAAsE;QACrE,MAAMM,SAASC,4BAA4B;YACvC,OAAOC;YACP,OAAOH,YAAY;gBAAE,OAAO;YAAgB;YAC5C,YAAY;YACZ,iBAAiB;gBAAE,QAAQH,GAAG,EAAE;YAAG;YACnC,gBAAgB;gBAAE,uBAAuB,IAAM;YAAK;QACxD;QAEAO,OAAOH,OAAO,WAAW,EAAE,IAAI,CAAC;IACpC;IAEAN,GAAG,uDAAuD;QACtD,MAAMM,SAASC,4BAA4B;YACvC,OAAOC;YACP,OAAOH,YAAY;gBAAE,OAAOK;YAAU;YACtC,YAAY;YACZ,iBAAiB;gBAAE,QAAQR,GAAG,EAAE;YAAG;YACnC,gBAAgB;gBAAE,uBAAuB,IAAM;YAAK;QACxD;QAEAO,OAAOH,OAAO,WAAW,EAAE,IAAI,CAAC;IACpC;AACJ"}
package/routes.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import { Route } from "@webiny/app-admin";
2
+ export declare const Routes: {
3
+ ContentModels: {
4
+ Workflows: Route<undefined>;
5
+ };
6
+ ContentEntries: {
7
+ ContentReviews: Route<{
8
+ tab: import("zod").ZodOptional<import("zod").ZodString>;
9
+ }>;
10
+ };
11
+ };
package/routes.js ADDED
@@ -0,0 +1,21 @@
1
+ import { Route } from "@webiny/app-admin";
2
+ const Routes = {
3
+ ContentModels: {
4
+ Workflows: new Route({
5
+ name: "Cms/ContentModels/Workflows",
6
+ path: "/cms/workflows"
7
+ })
8
+ },
9
+ ContentEntries: {
10
+ ContentReviews: new Route({
11
+ name: "Cms/ContentEntries/WorkflowStateList",
12
+ path: "/cms/content-reviews",
13
+ params: (zod)=>({
14
+ tab: zod.string().optional()
15
+ })
16
+ })
17
+ }
18
+ };
19
+ export { Routes };
20
+
21
+ //# sourceMappingURL=routes.js.map
package/routes.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sources":["../src/routes.ts"],"sourcesContent":["import { Route } from \"@webiny/app-admin\";\n\nexport const Routes = {\n ContentModels: {\n Workflows: new Route({\n name: \"Cms/ContentModels/Workflows\",\n path: \"/cms/workflows\"\n })\n },\n ContentEntries: {\n ContentReviews: new Route({\n name: \"Cms/ContentEntries/WorkflowStateList\",\n path: \"/cms/content-reviews\",\n params: zod => {\n return {\n tab: zod.string().optional()\n };\n }\n })\n }\n};\n"],"names":["Routes","Route","zod"],"mappings":";AAEO,MAAMA,SAAS;IAClB,eAAe;QACX,WAAW,IAAIC,MAAM;YACjB,MAAM;YACN,MAAM;QACV;IACJ;IACA,gBAAgB;QACZ,gBAAgB,IAAIA,MAAM;YACtB,MAAM;YACN,MAAM;YACN,QAAQC,CAAAA,MACG;oBACH,KAAKA,IAAI,MAAM,GAAG,QAAQ;gBAC9B;QAER;IACJ;AACJ"}
@@ -0,0 +1,3 @@
1
+ import type { CmsContentEntry } from "@webiny/app-headless-cms-common/types/index.js";
2
+ export declare const REVISION_SAVED_ON = "2026-10-17T10:00:00.000Z";
3
+ export declare function createEntry(overrides?: Partial<CmsContentEntry["meta"]>, fields?: Partial<CmsContentEntry>): CmsContentEntry;
@@ -0,0 +1,22 @@
1
+ const REVISION_SAVED_ON = "2026-10-17T10:00:00.000Z";
2
+ function createEntry(overrides = {}, fields = {}) {
3
+ return {
4
+ id: "entry-1#0001",
5
+ entryId: "entry-1",
6
+ modelId: "article",
7
+ revisionSavedOn: REVISION_SAVED_ON,
8
+ revisionModifiedOn: null,
9
+ meta: {
10
+ title: "Hello",
11
+ status: "draft",
12
+ version: 1,
13
+ locked: false,
14
+ ...overrides
15
+ },
16
+ values: {},
17
+ ...fields
18
+ };
19
+ }
20
+ export { REVISION_SAVED_ON, createEntry };
21
+
22
+ //# sourceMappingURL=createEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing/createEntry.js","sources":["../../src/testing/createEntry.ts"],"sourcesContent":["import type { CmsContentEntry } from \"@webiny/app-headless-cms-common/types/index.js\";\n\nexport const REVISION_SAVED_ON = \"2026-10-17T10:00:00.000Z\";\n\nexport function createEntry(\n overrides: Partial<CmsContentEntry[\"meta\"]> = {},\n fields: Partial<CmsContentEntry> = {}\n): CmsContentEntry {\n return {\n id: \"entry-1#0001\",\n entryId: \"entry-1\",\n modelId: \"article\",\n revisionSavedOn: REVISION_SAVED_ON,\n revisionModifiedOn: null,\n meta: {\n title: \"Hello\",\n status: \"draft\",\n version: 1,\n locked: false,\n ...overrides\n },\n values: {},\n ...fields\n } as unknown as CmsContentEntry;\n}\n"],"names":["REVISION_SAVED_ON","createEntry","overrides","fields"],"mappings":"AAEO,MAAMA,oBAAoB;AAE1B,SAASC,YACZC,YAA8C,CAAC,CAAC,EAChDC,SAAmC,CAAC,CAAC;IAErC,OAAO;QACH,IAAI;QACJ,SAAS;QACT,SAAS;QACT,iBAAiBH;QACjB,oBAAoB;QACpB,MAAM;YACF,OAAO;YACP,QAAQ;YACR,SAAS;YACT,QAAQ;YACR,GAAGE,SAAS;QAChB;QACA,QAAQ,CAAC;QACT,GAAGC,MAAM;IACb;AACJ"}
@@ -0,0 +1,9 @@
1
+ import type { IEditorReviewSession } from "@webiny/app-workflows/review/editor/abstractions.js";
2
+ import type { TargetReviewPresenter } from "@webiny/app-workflows/review/presentation/targetReview/abstractions.js";
3
+ import type { FakeTargetReviewPresenter } from "@webiny/app-workflows/review/testing/fakeTargetReviewPresenter.js";
4
+ export interface EntrySession {
5
+ session: IEditorReviewSession;
6
+ presenter: FakeTargetReviewPresenter;
7
+ setVm(overrides: Partial<TargetReviewPresenter.ViewModel>): void;
8
+ }
9
+ export declare function createEntrySession(initial?: Partial<TargetReviewPresenter.ViewModel>): EntrySession;
@@ -0,0 +1,29 @@
1
+ import { action, observable } from "mobx";
2
+ import { createFakePresenter } from "@webiny/app-workflows/review/testing/fakeTargetReviewPresenter.js";
3
+ import { createTargetReviewViewModel } from "@webiny/app-workflows/review/testing/createTargetReviewViewModel.js";
4
+ function createEntrySession(initial = {}) {
5
+ const state = observable.box(createTargetReviewViewModel(initial), {
6
+ deep: false
7
+ });
8
+ const base = createFakePresenter();
9
+ const presenter = {
10
+ ...base,
11
+ get vm () {
12
+ return state.get();
13
+ }
14
+ };
15
+ const session = {
16
+ presenter
17
+ };
18
+ const setVm = action((overrides)=>{
19
+ state.set(createTargetReviewViewModel(overrides));
20
+ });
21
+ return {
22
+ session,
23
+ presenter,
24
+ setVm
25
+ };
26
+ }
27
+ export { createEntrySession };
28
+
29
+ //# sourceMappingURL=createEntrySession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing/createEntrySession.js","sources":["../../src/testing/createEntrySession.ts"],"sourcesContent":["import { action } from \"mobx\";\nimport { observable } from \"mobx\";\nimport type { IEditorReviewSession } from \"@webiny/app-workflows/review/editor/abstractions.js\";\nimport type { TargetReviewPresenter } from \"@webiny/app-workflows/review/presentation/targetReview/abstractions.js\";\nimport { createFakePresenter } from \"@webiny/app-workflows/review/testing/fakeTargetReviewPresenter.js\";\nimport { createTargetReviewViewModel } from \"@webiny/app-workflows/review/testing/createTargetReviewViewModel.js\";\nimport type { FakeTargetReviewPresenter } from \"@webiny/app-workflows/review/testing/fakeTargetReviewPresenter.js\";\n\nexport interface EntrySession {\n session: IEditorReviewSession;\n presenter: FakeTargetReviewPresenter;\n setVm(overrides: Partial<TargetReviewPresenter.ViewModel>): void;\n}\n\n// A session over a fake presenter whose view model a test sets (R355: no use cases travel in it).\nexport function createEntrySession(\n initial: Partial<TargetReviewPresenter.ViewModel> = {}\n): EntrySession {\n const state = observable.box(createTargetReviewViewModel(initial), { deep: false });\n const base = createFakePresenter();\n const presenter: FakeTargetReviewPresenter = {\n ...base,\n get vm() {\n return state.get();\n }\n };\n const session: IEditorReviewSession = { presenter };\n const setVm = action((overrides: Partial<TargetReviewPresenter.ViewModel>) => {\n state.set(createTargetReviewViewModel(overrides));\n });\n\n return { session, presenter, setVm };\n}\n"],"names":["createEntrySession","initial","state","observable","createTargetReviewViewModel","base","createFakePresenter","presenter","session","setVm","action","overrides"],"mappings":";;;AAeO,SAASA,mBACZC,UAAoD,CAAC,CAAC;IAEtD,MAAMC,QAAQC,WAAW,GAAG,CAACC,4BAA4BH,UAAU;QAAE,MAAM;IAAM;IACjF,MAAMI,OAAOC;IACb,MAAMC,YAAuC;QACzC,GAAGF,IAAI;QACP,IAAI;YACA,OAAOH,MAAM,GAAG;QACpB;IACJ;IACA,MAAMM,UAAgC;QAAED;IAAU;IAClD,MAAME,QAAQC,OAAO,CAACC;QAClBT,MAAM,GAAG,CAACE,4BAA4BO;IAC1C;IAEA,OAAO;QAAEH;QAASD;QAAWE;IAAM;AACvC"}
@@ -0,0 +1,2 @@
1
+ import type { FolderDto } from "@webiny/app-aco/domain/folder/FolderDto.js";
2
+ export declare const createFolder: (id: string, title: string, parentId: string | null) => FolderDto;
@@ -0,0 +1,13 @@
1
+ import { RootFolder } from "@webiny/app-aco/domain/folder/RootFolder.js";
2
+ const createFolder = (id, title, parentId)=>({
3
+ ...RootFolder.create(),
4
+ id,
5
+ title,
6
+ slug: title.toLowerCase(),
7
+ type: "cms:article",
8
+ parentId,
9
+ path: `/${title.toLowerCase()}`
10
+ });
11
+ export { createFolder };
12
+
13
+ //# sourceMappingURL=createFolder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing/createFolder.js","sources":["../../src/testing/createFolder.ts"],"sourcesContent":["import type { FolderDto } from \"@webiny/app-aco/domain/folder/FolderDto.js\";\nimport { RootFolder } from \"@webiny/app-aco/domain/folder/RootFolder.js\";\n\n/*\n * An ACO folder as `ListFoldersGateway` returns it: the root folder's shape with this folder's\n * id, title and parent.\n */\nexport const createFolder = (id: string, title: string, parentId: string | null): FolderDto => {\n return {\n ...RootFolder.create(),\n id,\n title,\n slug: title.toLowerCase(),\n type: \"cms:article\",\n parentId,\n path: `/${title.toLowerCase()}`\n };\n};\n"],"names":["createFolder","id","title","parentId","RootFolder"],"mappings":";AAOO,MAAMA,eAAe,CAACC,IAAYC,OAAeC,WAC7C;QACH,GAAGC,WAAW,MAAM,EAAE;QACtBH;QACAC;QACA,MAAMA,MAAM,WAAW;QACvB,MAAM;QACNC;QACA,MAAM,CAAC,CAAC,EAAED,MAAM,WAAW,IAAI;IACnC"}
@@ -0,0 +1,2 @@
1
+ import type { ContentEntryFormPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/form/abstractions.js";
2
+ export declare function createFormVm(overrides?: Partial<ContentEntryFormPresenter.ViewModel>): ContentEntryFormPresenter.ViewModel;
@@ -0,0 +1,22 @@
1
+ import { createEntry } from "./createEntry.js";
2
+ import { MODEL } from "./models.js";
3
+ function createFormVm(overrides = {}) {
4
+ return {
5
+ loading: null,
6
+ entry: createEntry(),
7
+ canCreateNewRevision: false,
8
+ model: MODEL,
9
+ form: null,
10
+ status: "draft",
11
+ canSave: true,
12
+ canPublish: true,
13
+ canUnpublish: false,
14
+ canDelete: true,
15
+ isNewEntry: false,
16
+ isDirty: false,
17
+ ...overrides
18
+ };
19
+ }
20
+ export { createFormVm };
21
+
22
+ //# sourceMappingURL=createFormVm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing/createFormVm.js","sources":["../../src/testing/createFormVm.ts"],"sourcesContent":["import type { ContentEntryFormPresenter } from \"@webiny/app-headless-cms/presentation/contentEntries/form/abstractions.js\";\nimport { createEntry } from \"./createEntry.js\";\nimport { MODEL } from \"./models.js\";\n\nexport function createFormVm(\n overrides: Partial<ContentEntryFormPresenter.ViewModel> = {}\n): ContentEntryFormPresenter.ViewModel {\n return {\n loading: null,\n entry: createEntry(),\n canCreateNewRevision: false,\n model: MODEL,\n form: null,\n status: \"draft\",\n canSave: true,\n canPublish: true,\n canUnpublish: false,\n canDelete: true,\n isNewEntry: false,\n isDirty: false,\n ...overrides\n };\n}\n"],"names":["createFormVm","overrides","createEntry","MODEL"],"mappings":";;AAIO,SAASA,aACZC,YAA0D,CAAC,CAAC;IAE5D,OAAO;QACH,SAAS;QACT,OAAOC;QACP,sBAAsB;QACtB,OAAOC;QACP,MAAM;QACN,QAAQ;QACR,SAAS;QACT,YAAY;QACZ,cAAc;QACd,WAAW;QACX,YAAY;QACZ,SAAS;QACT,GAAGF,SAAS;IAChB;AACJ"}
@@ -0,0 +1,4 @@
1
+ import type { CmsModel } from "@webiny/app-headless-cms-common/types/index.js";
2
+ export declare const MODEL: CmsModel;
3
+ export declare const SINGLETON_MODEL: CmsModel;
4
+ export declare const NO_PUBLISHING_MODEL: CmsModel;
@@ -0,0 +1,23 @@
1
+ import { CMS_MODEL_SINGLETON_TAG } from "@webiny/app-headless-cms-common";
2
+ const MODEL = {
3
+ modelId: "article",
4
+ name: "Article",
5
+ tags: []
6
+ };
7
+ const SINGLETON_MODEL = {
8
+ modelId: "settings",
9
+ name: "Settings",
10
+ tags: [
11
+ CMS_MODEL_SINGLETON_TAG
12
+ ]
13
+ };
14
+ const NO_PUBLISHING_MODEL = {
15
+ modelId: "snippet",
16
+ name: "Snippet",
17
+ tags: [
18
+ "$publishing:false"
19
+ ]
20
+ };
21
+ export { MODEL, NO_PUBLISHING_MODEL, SINGLETON_MODEL };
22
+
23
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing/models.js","sources":["../../src/testing/models.ts"],"sourcesContent":["import { CMS_MODEL_SINGLETON_TAG } from \"@webiny/app-headless-cms-common\";\nimport type { CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\n\nexport const MODEL = {\n modelId: \"article\",\n name: \"Article\",\n tags: []\n} as unknown as CmsModel;\n\nexport const SINGLETON_MODEL = {\n modelId: \"settings\",\n name: \"Settings\",\n tags: [CMS_MODEL_SINGLETON_TAG]\n} as unknown as CmsModel;\n\nexport const NO_PUBLISHING_MODEL = {\n modelId: \"snippet\",\n name: \"Snippet\",\n tags: [\"$publishing:false\"]\n} as unknown as CmsModel;\n"],"names":["MODEL","SINGLETON_MODEL","CMS_MODEL_SINGLETON_TAG","NO_PUBLISHING_MODEL"],"mappings":";AAGO,MAAMA,QAAQ;IACjB,SAAS;IACT,MAAM;IACN,MAAM,EAAE;AACZ;AAEO,MAAMC,kBAAkB;IAC3B,SAAS;IACT,MAAM;IACN,MAAM;QAACC;KAAwB;AACnC;AAEO,MAAMC,sBAAsB;IAC/B,SAAS;IACT,MAAM;IACN,MAAM;QAAC;KAAoB;AAC/B"}
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ import { Container } from "@webiny/di";
3
+ import { ContentEntryFormPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/form/abstractions.js";
4
+ import { RevisionsListPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/revisionsList/abstractions.js";
5
+ import type { TargetReviewPresenter } from "@webiny/app-workflows/review/presentation/targetReview/abstractions.js";
6
+ import type { EntrySession } from "./createEntrySession.js";
7
+ export interface RenderEditorTreeParams {
8
+ children?: React.ReactNode;
9
+ formVm?: Partial<ContentEntryFormPresenter.ViewModel>;
10
+ reviewVm?: Partial<TargetReviewPresenter.ViewModel>;
11
+ }
12
+ export interface RenderedEditorTree extends EntrySession {
13
+ container: Container;
14
+ formPresenter: ContentEntryFormPresenter.Interface;
15
+ revisions: RevisionsListPresenter.Interface;
16
+ }
17
+ export declare function renderEditorTree(params: RenderEditorTreeParams): RenderedEditorTree;
@@ -0,0 +1,93 @@
1
+ import react from "react";
2
+ import { vi } from "vitest";
3
+ import { render } from "@testing-library/react";
4
+ import { Container } from "@webiny/di";
5
+ import { CompositionProvider } from "@webiny/react-composition";
6
+ import { DiContainerProvider } from "@webiny/app";
7
+ import { Buttons } from "@webiny/app-admin";
8
+ import { AdminUiProvider } from "@webiny/admin-ui";
9
+ import { ModelContext } from "@webiny/app-headless-cms/admin/components/ModelProvider/index.js";
10
+ import { ContentEntryEditorConfig, ContentEntryEditorWithConfig, useContentEntryEditorConfig } from "@webiny/app-headless-cms/admin/config/contentEntries/index.js";
11
+ import { ContentEntryFormPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/form/abstractions.js";
12
+ import { RevisionsListPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/revisionsList/abstractions.js";
13
+ import { CmsEntryReview } from "../features/editorReview/abstractions.js";
14
+ import { createEntrySession } from "./createEntrySession.js";
15
+ import { createFormVm } from "./createFormVm.js";
16
+ function createFakeFormPresenter(vm) {
17
+ return {
18
+ vm,
19
+ loadRevision: vi.fn(),
20
+ saveRevision: vi.fn(),
21
+ publishRevision: vi.fn(),
22
+ unpublishRevision: vi.fn(),
23
+ deleteEntry: vi.fn(),
24
+ setFolderId: vi.fn(),
25
+ newEntry: vi.fn(),
26
+ patchEntryMeta: vi.fn(),
27
+ reset: vi.fn()
28
+ };
29
+ }
30
+ function createFakeRevisionsPresenter() {
31
+ return {
32
+ vm: {
33
+ loading: false,
34
+ revisions: [],
35
+ items: [],
36
+ visible: false
37
+ },
38
+ init: vi.fn(),
39
+ show: vi.fn(),
40
+ hide: vi.fn(),
41
+ createRevision: vi.fn(),
42
+ publishRevision: vi.fn(),
43
+ unpublishRevision: vi.fn(),
44
+ updateRevisionNote: vi.fn(),
45
+ deleteRevision: vi.fn(),
46
+ dispose: vi.fn()
47
+ };
48
+ }
49
+ const ActionsProbe = ()=>{
50
+ const { buttonActions, menuItemActions } = useContentEntryEditorConfig();
51
+ const buttonNames = buttonActions.map((action)=>action.name).join(",");
52
+ const menuNames = menuItemActions.map((action)=>action.name).join(",");
53
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement("div", {
54
+ "data-testid": "button-action-names"
55
+ }, buttonNames), /*#__PURE__*/ react.createElement("div", {
56
+ "data-testid": "menu-action-names"
57
+ }, menuNames), /*#__PURE__*/ react.createElement("div", {
58
+ "data-testid": "button-actions"
59
+ }, /*#__PURE__*/ react.createElement(Buttons, {
60
+ actions: buttonActions
61
+ })), /*#__PURE__*/ react.createElement("div", {
62
+ "data-testid": "menu-actions"
63
+ }, menuItemActions.map((action)=>/*#__PURE__*/ react.createElement("span", {
64
+ key: action.name,
65
+ "data-action": action.name
66
+ }, action.element))));
67
+ };
68
+ function renderEditorTree(params) {
69
+ const container = new Container();
70
+ const entrySession = createEntrySession(params.reviewVm);
71
+ const formVm = createFormVm(params.formVm);
72
+ const formPresenter = createFakeFormPresenter(formVm);
73
+ const revisions = createFakeRevisionsPresenter();
74
+ container.registerInstance(CmsEntryReview, entrySession.session);
75
+ container.registerInstance(ContentEntryFormPresenter, formPresenter);
76
+ container.registerInstance(RevisionsListPresenter, revisions);
77
+ render(/*#__PURE__*/ react.createElement(AdminUiProvider, null, /*#__PURE__*/ react.createElement(CompositionProvider, null, /*#__PURE__*/ react.createElement(DiContainerProvider, {
78
+ container: container
79
+ }, /*#__PURE__*/ react.createElement(ModelContext.Provider, {
80
+ value: formVm.model
81
+ }, params.children, /*#__PURE__*/ react.createElement(ContentEntryEditorConfig, null, /*#__PURE__*/ react.createElement(ContentEntryEditorConfig.Width, {
82
+ value: "1020px"
83
+ })), /*#__PURE__*/ react.createElement(ContentEntryEditorWithConfig, null, /*#__PURE__*/ react.createElement(ActionsProbe, null)))))));
84
+ return {
85
+ ...entrySession,
86
+ container,
87
+ formPresenter,
88
+ revisions
89
+ };
90
+ }
91
+ export { renderEditorTree };
92
+
93
+ //# sourceMappingURL=renderEditorTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing/renderEditorTree.js","sources":["../../src/testing/renderEditorTree.tsx"],"sourcesContent":["import React from \"react\";\nimport { vi } from \"vitest\";\nimport { render } from \"@testing-library/react\";\nimport { Container } from \"@webiny/di\";\nimport { CompositionProvider } from \"@webiny/react-composition\";\nimport { DiContainerProvider } from \"@webiny/app\";\nimport { Buttons } from \"@webiny/app-admin\";\nimport { AdminUiProvider } from \"@webiny/admin-ui\";\nimport { ModelContext } from \"@webiny/app-headless-cms/admin/components/ModelProvider/index.js\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms/admin/config/contentEntries/index.js\";\nimport { ContentEntryEditorWithConfig } from \"@webiny/app-headless-cms/admin/config/contentEntries/index.js\";\nimport { useContentEntryEditorConfig } from \"@webiny/app-headless-cms/admin/config/contentEntries/index.js\";\nimport { ContentEntryFormPresenter } from \"@webiny/app-headless-cms/presentation/contentEntries/form/abstractions.js\";\nimport { RevisionsListPresenter } from \"@webiny/app-headless-cms/presentation/contentEntries/revisionsList/abstractions.js\";\nimport type { TargetReviewPresenter } from \"@webiny/app-workflows/review/presentation/targetReview/abstractions.js\";\nimport { CmsEntryReview } from \"~/features/editorReview/abstractions.js\";\nimport { createEntrySession } from \"./createEntrySession.js\";\nimport type { EntrySession } from \"./createEntrySession.js\";\nimport { createFormVm } from \"./createFormVm.js\";\n\nfunction createFakeFormPresenter(\n vm: ContentEntryFormPresenter.ViewModel\n): ContentEntryFormPresenter.Interface {\n return {\n vm,\n loadRevision: vi.fn(),\n saveRevision: vi.fn(),\n publishRevision: vi.fn(),\n unpublishRevision: vi.fn(),\n deleteEntry: vi.fn(),\n setFolderId: vi.fn(),\n newEntry: vi.fn(),\n patchEntryMeta: vi.fn(),\n reset: vi.fn()\n };\n}\n\nfunction createFakeRevisionsPresenter(): RevisionsListPresenter.Interface {\n return {\n vm: { loading: false, revisions: [], items: [], visible: false },\n init: vi.fn(),\n show: vi.fn(),\n hide: vi.fn(),\n createRevision: vi.fn(),\n publishRevision: vi.fn(),\n unpublishRevision: vi.fn(),\n updateRevisionNote: vi.fn(),\n deleteRevision: vi.fn(),\n dispose: vi.fn()\n };\n}\n\n/*\n * The config components (and the form decorators) are rendered next to the editor config, as the\n * app does it: `ContentEntryEditorWithConfig` renders its children only once the registered\n * properties are collected, so config components cannot live inside it. One width property is\n * always registered, so the gate opens even when a component under test registers nothing.\n *\n * Renders what the editor renders: the header buttons through `Buttons` (so `useButtons()` works),\n * and every registered action's element for the options menu. The names list shows what is\n * registered, whatever it renders.\n */\nconst ActionsProbe = () => {\n const { buttonActions, menuItemActions } = useContentEntryEditorConfig();\n const buttonNames = buttonActions.map(action => action.name).join(\",\");\n const menuNames = menuItemActions.map(action => action.name).join(\",\");\n\n return (\n <>\n <div data-testid=\"button-action-names\">{buttonNames}</div>\n <div data-testid=\"menu-action-names\">{menuNames}</div>\n <div data-testid=\"button-actions\">\n <Buttons actions={buttonActions} />\n </div>\n <div data-testid=\"menu-actions\">\n {menuItemActions.map(action => (\n <span key={action.name} data-action={action.name}>\n {action.element}\n </span>\n ))}\n </div>\n </>\n );\n};\n\nexport interface RenderEditorTreeParams {\n children?: React.ReactNode;\n formVm?: Partial<ContentEntryFormPresenter.ViewModel>;\n reviewVm?: Partial<TargetReviewPresenter.ViewModel>;\n}\n\nexport interface RenderedEditorTree extends EntrySession {\n container: Container;\n formPresenter: ContentEntryFormPresenter.Interface;\n revisions: RevisionsListPresenter.Interface;\n}\n\nexport function renderEditorTree(params: RenderEditorTreeParams): RenderedEditorTree {\n const container = new Container();\n const entrySession = createEntrySession(params.reviewVm);\n const formVm = createFormVm(params.formVm);\n const formPresenter = createFakeFormPresenter(formVm);\n const revisions = createFakeRevisionsPresenter();\n\n container.registerInstance(CmsEntryReview, entrySession.session);\n container.registerInstance(ContentEntryFormPresenter, formPresenter);\n container.registerInstance(RevisionsListPresenter, revisions);\n\n render(\n <AdminUiProvider>\n <CompositionProvider>\n <DiContainerProvider container={container}>\n <ModelContext.Provider value={formVm.model}>\n {params.children}\n <ContentEntryEditorConfig>\n <ContentEntryEditorConfig.Width value={\"1020px\"} />\n </ContentEntryEditorConfig>\n <ContentEntryEditorWithConfig>\n <ActionsProbe />\n </ContentEntryEditorWithConfig>\n </ModelContext.Provider>\n </DiContainerProvider>\n </CompositionProvider>\n </AdminUiProvider>\n );\n\n return { ...entrySession, container, formPresenter, revisions };\n}\n"],"names":["createFakeFormPresenter","vm","vi","createFakeRevisionsPresenter","ActionsProbe","buttonActions","menuItemActions","useContentEntryEditorConfig","buttonNames","action","menuNames","Buttons","renderEditorTree","params","container","Container","entrySession","createEntrySession","formVm","createFormVm","formPresenter","revisions","CmsEntryReview","ContentEntryFormPresenter","RevisionsListPresenter","render","AdminUiProvider","CompositionProvider","DiContainerProvider","ModelContext","ContentEntryEditorConfig","ContentEntryEditorWithConfig"],"mappings":";;;;;;;;;;;;;;;AAoBA,SAASA,wBACLC,EAAuC;IAEvC,OAAO;QACHA;QACA,cAAcC,GAAG,EAAE;QACnB,cAAcA,GAAG,EAAE;QACnB,iBAAiBA,GAAG,EAAE;QACtB,mBAAmBA,GAAG,EAAE;QACxB,aAAaA,GAAG,EAAE;QAClB,aAAaA,GAAG,EAAE;QAClB,UAAUA,GAAG,EAAE;QACf,gBAAgBA,GAAG,EAAE;QACrB,OAAOA,GAAG,EAAE;IAChB;AACJ;AAEA,SAASC;IACL,OAAO;QACH,IAAI;YAAE,SAAS;YAAO,WAAW,EAAE;YAAE,OAAO,EAAE;YAAE,SAAS;QAAM;QAC/D,MAAMD,GAAG,EAAE;QACX,MAAMA,GAAG,EAAE;QACX,MAAMA,GAAG,EAAE;QACX,gBAAgBA,GAAG,EAAE;QACrB,iBAAiBA,GAAG,EAAE;QACtB,mBAAmBA,GAAG,EAAE;QACxB,oBAAoBA,GAAG,EAAE;QACzB,gBAAgBA,GAAG,EAAE;QACrB,SAASA,GAAG,EAAE;IAClB;AACJ;AAYA,MAAME,eAAe;IACjB,MAAM,EAAEC,aAAa,EAAEC,eAAe,EAAE,GAAGC;IAC3C,MAAMC,cAAcH,cAAc,GAAG,CAACI,CAAAA,SAAUA,OAAO,IAAI,EAAE,IAAI,CAAC;IAClE,MAAMC,YAAYJ,gBAAgB,GAAG,CAACG,CAAAA,SAAUA,OAAO,IAAI,EAAE,IAAI,CAAC;IAElE,OAAO,WAAP,GACI,wDACI,oBAAC;QAAI,eAAY;OAAuBD,cAAAA,WAAAA,GACxC,oBAAC;QAAI,eAAY;OAAqBE,YAAAA,WAAAA,GACtC,oBAAC;QAAI,eAAY;qBACb,oBAACC,SAAOA;QAAC,SAASN;uBAEtB,oBAAC;QAAI,eAAY;OACZC,gBAAgB,GAAG,CAACG,CAAAA,SAAAA,WAAAA,GACjB,oBAAC;YAAK,KAAKA,OAAO,IAAI;YAAE,eAAaA,OAAO,IAAI;WAC3CA,OAAO,OAAO;AAMvC;AAcO,SAASG,iBAAiBC,MAA8B;IAC3D,MAAMC,YAAY,IAAIC;IACtB,MAAMC,eAAeC,mBAAmBJ,OAAO,QAAQ;IACvD,MAAMK,SAASC,aAAaN,OAAO,MAAM;IACzC,MAAMO,gBAAgBpB,wBAAwBkB;IAC9C,MAAMG,YAAYlB;IAElBW,UAAU,gBAAgB,CAACQ,gBAAgBN,aAAa,OAAO;IAC/DF,UAAU,gBAAgB,CAACS,2BAA2BH;IACtDN,UAAU,gBAAgB,CAACU,wBAAwBH;IAEnDI,OAAO,WAADA,GACF,oBAACC,iBAAeA,MAAAA,WAAAA,GACZ,oBAACC,qBAAmBA,MAAAA,WAAAA,GAChB,oBAACC,qBAAmBA;QAAC,WAAWd;qBAC5B,oBAACe,aAAa,QAAQ;QAAC,OAAOX,OAAO,KAAK;OACrCL,OAAO,QAAQ,gBAChB,oBAACiB,0BAAwBA,MAAAA,WAAAA,GACrB,oBAACA,yBAAyB,KAAK;QAAC,OAAO;uBAE3C,oBAACC,8BAA4BA,MAAAA,WAAAA,GACzB,oBAAC3B,cAAYA;IAQrC,OAAO;QAAE,GAAGY,YAAY;QAAEF;QAAWM;QAAeC;IAAU;AAClE"}