@webiny/app-website-builder-workflows 0.0.0-unstable.7c2def32a7 → 0.0.0-unstable.9609e4e0c9

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 (412) hide show
  1. package/Components/ContentReviews/WbContentReviews.d.ts +2 -0
  2. package/Components/ContentReviews/WbContentReviews.js +41 -0
  3. package/Components/ContentReviews/WbContentReviews.js.map +1 -0
  4. package/Components/ContentReviews/WbContentReviews.smoke.test.d.ts +1 -0
  5. package/Components/ContentReviews/WbContentReviews.smoke.test.js +59 -0
  6. package/Components/ContentReviews/WbContentReviews.smoke.test.js.map +1 -0
  7. package/Components/ContentReviews/WbContentReviews.test.d.ts +1 -0
  8. package/Components/ContentReviews/WbContentReviews.test.js +80 -0
  9. package/Components/ContentReviews/WbContentReviews.test.js.map +1 -0
  10. package/Components/ContentReviews/WbContentReviewsSidebarItem.d.ts +2 -0
  11. package/Components/ContentReviews/WbContentReviewsSidebarItem.js +18 -0
  12. package/Components/ContentReviews/WbContentReviewsSidebarItem.js.map +1 -0
  13. package/Components/ContentReviews/WbContentReviewsSidebarItem.test.d.ts +1 -0
  14. package/Components/ContentReviews/WbContentReviewsSidebarItem.test.js +67 -0
  15. package/Components/ContentReviews/WbContentReviewsSidebarItem.test.js.map +1 -0
  16. package/Components/PageEditor/DisabledPublishButton.d.ts +6 -0
  17. package/Components/PageEditor/DisabledPublishButton.js +17 -0
  18. package/Components/PageEditor/DisabledPublishButton.js.map +1 -0
  19. package/Components/PageEditor/DisabledPublishButton.test.d.ts +1 -0
  20. package/Components/PageEditor/DisabledPublishButton.test.js +67 -0
  21. package/Components/PageEditor/DisabledPublishButton.test.js.map +1 -0
  22. package/Components/PageEditor/PageBasePublishDecorator.d.ts +2 -0
  23. package/Components/PageEditor/PageBasePublishDecorator.js +23 -0
  24. package/Components/PageEditor/PageBasePublishDecorator.js.map +1 -0
  25. package/Components/PageEditor/PageEditorAutoSave.js +8 -7
  26. package/Components/PageEditor/PageEditorAutoSave.js.map +1 -1
  27. package/Components/PageEditor/PageEditorAutoSave.test.d.ts +1 -0
  28. package/Components/PageEditor/PageEditorAutoSave.test.js +111 -0
  29. package/Components/PageEditor/PageEditorAutoSave.test.js.map +1 -0
  30. package/Components/PageEditor/PageEditorConfig.js +7 -4
  31. package/Components/PageEditor/PageEditorConfig.js.map +1 -1
  32. package/Components/PageEditor/PageEditorLayout.d.ts +2 -0
  33. package/Components/PageEditor/PageEditorLayout.js +10 -0
  34. package/Components/PageEditor/PageEditorLayout.js.map +1 -0
  35. package/Components/PageEditor/PageEditorLayout.test.d.ts +1 -0
  36. package/Components/PageEditor/PageEditorLayout.test.js +121 -0
  37. package/Components/PageEditor/PageEditorLayout.test.js.map +1 -0
  38. package/Components/PageEditor/PageEditorTopBar.js +4 -22
  39. package/Components/PageEditor/PageEditorTopBar.js.map +1 -1
  40. package/Components/PageEditor/PageEditorTopBar.test.d.ts +1 -0
  41. package/Components/PageEditor/PageEditorTopBar.test.js +175 -0
  42. package/Components/PageEditor/PageEditorTopBar.test.js.map +1 -0
  43. package/Components/PageEditor/PageNewRevisionDecorator.d.ts +2 -0
  44. package/Components/PageEditor/PageNewRevisionDecorator.js +24 -0
  45. package/Components/PageEditor/PageNewRevisionDecorator.js.map +1 -0
  46. package/Components/PageEditor/PageNewRevisionDecorator.test.d.ts +1 -0
  47. package/Components/PageEditor/PageNewRevisionDecorator.test.js +107 -0
  48. package/Components/PageEditor/PageNewRevisionDecorator.test.js.map +1 -0
  49. package/Components/PageEditor/{ToggleEditorMode.d.ts → PageReadOnlySync.d.ts} +1 -1
  50. package/Components/PageEditor/PageReadOnlySync.js +23 -0
  51. package/Components/PageEditor/PageReadOnlySync.js.map +1 -0
  52. package/Components/PageEditor/PageReviewBar.d.ts +4 -0
  53. package/Components/PageEditor/PageReviewBar.js +93 -0
  54. package/Components/PageEditor/PageReviewBar.js.map +1 -0
  55. package/Components/PageEditor/PageReviewBar.test.d.ts +1 -0
  56. package/Components/PageEditor/PageReviewBar.test.js +135 -0
  57. package/Components/PageEditor/PageReviewBar.test.js.map +1 -0
  58. package/Components/PageEditor/PageReviewPublishAction.d.ts +2 -0
  59. package/Components/PageEditor/PageReviewPublishAction.js +15 -0
  60. package/Components/PageEditor/PageReviewPublishAction.js.map +1 -0
  61. package/Components/PageEditor/PageReviewPublishButton.d.ts +4 -0
  62. package/Components/PageEditor/PageReviewPublishButton.js +23 -0
  63. package/Components/PageEditor/PageReviewPublishButton.js.map +1 -0
  64. package/Components/PageEditor/PageScheduleDecorator.d.ts +2 -0
  65. package/Components/PageEditor/PageScheduleDecorator.js +23 -0
  66. package/Components/PageEditor/PageScheduleDecorator.js.map +1 -0
  67. package/Components/PageEditor/PageScheduleDecorator.test.d.ts +1 -0
  68. package/Components/PageEditor/PageScheduleDecorator.test.js +75 -0
  69. package/Components/PageEditor/PageScheduleDecorator.test.js.map +1 -0
  70. package/Components/PageEditor/getPageReadOnlyReason.d.ts +4 -0
  71. package/Components/PageEditor/getPageReadOnlyReason.js +20 -0
  72. package/Components/PageEditor/getPageReadOnlyReason.js.map +1 -0
  73. package/Components/PageEditor/getPageReadOnlyReason.test.d.ts +1 -0
  74. package/Components/PageEditor/getPageReadOnlyReason.test.js +122 -0
  75. package/Components/PageEditor/getPageReadOnlyReason.test.js.map +1 -0
  76. package/Components/PageEditor/getPageReviewContext.d.ts +9 -0
  77. package/Components/PageEditor/getPageReviewContext.js +13 -0
  78. package/Components/PageEditor/getPageReviewContext.js.map +1 -0
  79. package/Components/PageEditor/getPageReviewContext.test.d.ts +1 -0
  80. package/Components/PageEditor/getPageReviewContext.test.js +42 -0
  81. package/Components/PageEditor/getPageReviewContext.test.js.map +1 -0
  82. package/Components/PageEditor/pageEditorDocument.d.ts +17 -0
  83. package/Components/PageEditor/pageEditorDocument.js +0 -0
  84. package/Components/PageEditor/pageReviewMatrix.test.d.ts +1 -0
  85. package/Components/PageEditor/pageReviewMatrix.test.js +223 -0
  86. package/Components/PageEditor/pageReviewMatrix.test.js.map +1 -0
  87. package/Components/PageEditor/publishMatrix.test.d.ts +1 -0
  88. package/Components/PageEditor/publishMatrix.test.js +313 -0
  89. package/Components/PageEditor/publishMatrix.test.js.map +1 -0
  90. package/Components/PagesList/PageListReviewGatedActions.d.ts +2 -0
  91. package/Components/PagesList/PageListReviewGatedActions.js +27 -0
  92. package/Components/PagesList/PageListReviewGatedActions.js.map +1 -0
  93. package/Components/PagesList/PageListReviewGatedActions.test.d.ts +1 -0
  94. package/Components/PagesList/PageListReviewGatedActions.test.js +94 -0
  95. package/Components/PagesList/PageListReviewGatedActions.test.js.map +1 -0
  96. package/Components/PagesList/PagesList.js +3 -3
  97. package/Components/PagesList/PagesList.js.map +1 -1
  98. package/Components/PagesList/PagesList.test.d.ts +1 -0
  99. package/Components/PagesList/PagesList.test.js +47 -0
  100. package/Components/PagesList/PagesList.test.js.map +1 -0
  101. package/Components/index.d.ts +0 -1
  102. package/Components/index.js +0 -1
  103. package/Routes/WebsiteBuilderWorkflowsMenu.d.ts +1 -1
  104. package/Routes/WebsiteBuilderWorkflowsMenu.js +16 -25
  105. package/Routes/WebsiteBuilderWorkflowsMenu.js.map +1 -1
  106. package/Routes/WebsiteBuilderWorkflowsMenu.test.d.ts +1 -0
  107. package/Routes/WebsiteBuilderWorkflowsMenu.test.js +141 -0
  108. package/Routes/WebsiteBuilderWorkflowsMenu.test.js.map +1 -0
  109. package/editorGlue.wiring.test.d.ts +1 -0
  110. package/editorGlue.wiring.test.js +128 -0
  111. package/editorGlue.wiring.test.js.map +1 -0
  112. package/features/cache/WbReviewCacheSyncHandler.d.ts +8 -0
  113. package/features/cache/WbReviewCacheSyncHandler.js +14 -0
  114. package/features/cache/WbReviewCacheSyncHandler.js.map +1 -0
  115. package/features/cache/WbReviewPageCacheWriter.d.ts +17 -0
  116. package/features/cache/WbReviewPageCacheWriter.js +39 -0
  117. package/features/cache/WbReviewPageCacheWriter.js.map +1 -0
  118. package/features/cache/WbReviewPageCacheWriter.test.d.ts +1 -0
  119. package/features/cache/WbReviewPageCacheWriter.test.js +115 -0
  120. package/features/cache/WbReviewPageCacheWriter.test.js.map +1 -0
  121. package/features/cache/abstractions.d.ts +5 -0
  122. package/features/cache/abstractions.js +5 -0
  123. package/features/cache/abstractions.js.map +1 -0
  124. package/features/cache/feature.d.ts +1 -0
  125. package/features/cache/feature.js +13 -0
  126. package/features/cache/feature.js.map +1 -0
  127. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.d.ts +25 -0
  128. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.js +112 -0
  129. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.js.map +1 -0
  130. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.test.d.ts +1 -0
  131. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.test.js +632 -0
  132. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.test.js.map +1 -0
  133. package/features/editorGateway/feature.d.ts +1 -0
  134. package/features/editorGateway/feature.js +11 -0
  135. package/features/editorGateway/feature.js.map +1 -0
  136. package/features/editorGateway/feature.test.d.ts +1 -0
  137. package/features/editorGateway/feature.test.js +244 -0
  138. package/features/editorGateway/feature.test.js.map +1 -0
  139. package/features/editorGateway/graphql/deleteWebsiteBuilderPageWorkflow.d.ts +1 -0
  140. package/features/editorGateway/graphql/deleteWebsiteBuilderPageWorkflow.js +19 -0
  141. package/features/editorGateway/graphql/deleteWebsiteBuilderPageWorkflow.js.map +1 -0
  142. package/features/editorGateway/graphql/getWebsiteBuilderPageWorkflow.d.ts +1 -0
  143. package/features/editorGateway/graphql/getWebsiteBuilderPageWorkflow.js +19 -0
  144. package/features/editorGateway/graphql/getWebsiteBuilderPageWorkflow.js.map +1 -0
  145. package/features/editorGateway/graphql/inspectWebsiteBuilderPageRouting.d.ts +1 -0
  146. package/features/editorGateway/graphql/inspectWebsiteBuilderPageRouting.js +19 -0
  147. package/features/editorGateway/graphql/inspectWebsiteBuilderPageRouting.js.map +1 -0
  148. package/features/editorGateway/graphql/listWebsiteBuilderPageWorkflowNames.d.ts +1 -0
  149. package/features/editorGateway/graphql/listWebsiteBuilderPageWorkflowNames.js +23 -0
  150. package/features/editorGateway/graphql/listWebsiteBuilderPageWorkflowNames.js.map +1 -0
  151. package/features/editorGateway/graphql/storeWebsiteBuilderPageWorkflow.d.ts +1 -0
  152. package/features/editorGateway/graphql/storeWebsiteBuilderPageWorkflow.js +19 -0
  153. package/features/editorGateway/graphql/storeWebsiteBuilderPageWorkflow.js.map +1 -0
  154. package/features/editorGateway/graphql/websiteBuilderPageFolderExists.d.ts +1 -0
  155. package/features/editorGateway/graphql/websiteBuilderPageFolderExists.js +16 -0
  156. package/features/editorGateway/graphql/websiteBuilderPageFolderExists.js.map +1 -0
  157. package/features/editorMounting/WbWorkflowEditorAppAdapter.d.ts +21 -0
  158. package/features/editorMounting/WbWorkflowEditorAppAdapter.js +45 -0
  159. package/features/editorMounting/WbWorkflowEditorAppAdapter.js.map +1 -0
  160. package/features/editorMounting/WbWorkflowEditorAppAdapter.test.d.ts +1 -0
  161. package/features/editorMounting/WbWorkflowEditorAppAdapter.test.js +115 -0
  162. package/features/editorMounting/WbWorkflowEditorAppAdapter.test.js.map +1 -0
  163. package/features/editorMounting/abstractions.d.ts +5 -0
  164. package/features/editorMounting/abstractions.js +5 -0
  165. package/features/editorMounting/abstractions.js.map +1 -0
  166. package/features/editorMounting/feature.d.ts +3 -0
  167. package/features/editorMounting/feature.js +19 -0
  168. package/features/editorMounting/feature.js.map +1 -0
  169. package/features/editorMounting/feature.test.d.ts +1 -0
  170. package/features/editorMounting/feature.test.js +93 -0
  171. package/features/editorMounting/feature.test.js.map +1 -0
  172. package/features/editorReview/WbPageContentReloader.d.ts +12 -0
  173. package/features/editorReview/WbPageContentReloader.js +40 -0
  174. package/features/editorReview/WbPageContentReloader.js.map +1 -0
  175. package/features/editorReview/WbPageContentReloader.test.d.ts +1 -0
  176. package/features/editorReview/WbPageContentReloader.test.js +222 -0
  177. package/features/editorReview/WbPageContentReloader.test.js.map +1 -0
  178. package/features/editorReview/WbPageReview.d.ts +8 -0
  179. package/features/editorReview/WbPageReview.js +14 -0
  180. package/features/editorReview/WbPageReview.js.map +1 -0
  181. package/features/editorReview/WbPageUnsavedChanges.d.ts +8 -0
  182. package/features/editorReview/WbPageUnsavedChanges.js +12 -0
  183. package/features/editorReview/WbPageUnsavedChanges.js.map +1 -0
  184. package/features/editorReview/WbPageUnsavedChanges.test.d.ts +1 -0
  185. package/features/editorReview/WbPageUnsavedChanges.test.js +33 -0
  186. package/features/editorReview/WbPageUnsavedChanges.test.js.map +1 -0
  187. package/features/editorReview/abstractions.d.ts +5 -0
  188. package/features/editorReview/abstractions.js +5 -0
  189. package/features/editorReview/abstractions.js.map +1 -0
  190. package/features/editorReview/feature.d.ts +3 -0
  191. package/features/editorReview/feature.js +17 -0
  192. package/features/editorReview/feature.js.map +1 -0
  193. package/features/gateway/WbReviewChangeMessageHandler.d.ts +8 -0
  194. package/features/gateway/WbReviewChangeMessageHandler.js +16 -0
  195. package/features/gateway/WbReviewChangeMessageHandler.js.map +1 -0
  196. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.d.ts +13 -0
  197. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.js +35 -0
  198. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.js.map +1 -0
  199. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.test.d.ts +1 -0
  200. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.test.js +47 -0
  201. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.test.js.map +1 -0
  202. package/features/gateway/WbReviewContentAdapter/abstractions.d.ts +5 -0
  203. package/features/gateway/WbReviewContentAdapter/abstractions.js +5 -0
  204. package/features/gateway/WbReviewContentAdapter/abstractions.js.map +1 -0
  205. package/features/gateway/WbReviewGateway/WbReviewGateway.d.ts +51 -0
  206. package/features/gateway/WbReviewGateway/WbReviewGateway.js +216 -0
  207. package/features/gateway/WbReviewGateway/WbReviewGateway.js.map +1 -0
  208. package/features/gateway/WbReviewGateway/WbReviewGateway.test.d.ts +1 -0
  209. package/features/gateway/WbReviewGateway/WbReviewGateway.test.js +647 -0
  210. package/features/gateway/WbReviewGateway/WbReviewGateway.test.js.map +1 -0
  211. package/features/gateway/WbReviewNotificationHandler.d.ts +8 -0
  212. package/features/gateway/WbReviewNotificationHandler.js +16 -0
  213. package/features/gateway/WbReviewNotificationHandler.js.map +1 -0
  214. package/features/gateway/WbReviewRowProvider/WbReviewRowProvider.d.ts +8 -0
  215. package/features/gateway/WbReviewRowProvider/WbReviewRowProvider.js +14 -0
  216. package/features/gateway/WbReviewRowProvider/WbReviewRowProvider.js.map +1 -0
  217. package/features/gateway/WbReviewRowProvider/abstractions.d.ts +5 -0
  218. package/features/gateway/WbReviewRowProvider/abstractions.js +5 -0
  219. package/features/gateway/WbReviewRowProvider/abstractions.js.map +1 -0
  220. package/features/gateway/assertWbPageNamespace.d.ts +1 -0
  221. package/features/gateway/assertWbPageNamespace.js +7 -0
  222. package/features/gateway/assertWbPageNamespace.js.map +1 -0
  223. package/features/gateway/contentReviewsBindings.test.d.ts +1 -0
  224. package/features/gateway/contentReviewsBindings.test.js +159 -0
  225. package/features/gateway/contentReviewsBindings.test.js.map +1 -0
  226. package/features/gateway/feature.d.ts +4 -0
  227. package/features/gateway/feature.js +27 -0
  228. package/features/gateway/feature.js.map +1 -0
  229. package/features/gateway/feature.test.d.ts +1 -0
  230. package/features/gateway/feature.test.js +85 -0
  231. package/features/gateway/feature.test.js.map +1 -0
  232. package/features/gateway/graphql/WbOperationResponse.d.ts +3 -0
  233. package/features/gateway/graphql/WbOperationResponse.js +0 -0
  234. package/features/gateway/graphql/approveWebsiteBuilderPageReviewStep.d.ts +1 -0
  235. package/features/gateway/graphql/approveWebsiteBuilderPageReviewStep.js +22 -0
  236. package/features/gateway/graphql/approveWebsiteBuilderPageReviewStep.js.map +1 -0
  237. package/features/gateway/graphql/cancelWebsiteBuilderPageReview.d.ts +1 -0
  238. package/features/gateway/graphql/cancelWebsiteBuilderPageReview.js +18 -0
  239. package/features/gateway/graphql/cancelWebsiteBuilderPageReview.js.map +1 -0
  240. package/features/gateway/graphql/cancelWebsiteBuilderPageReviewsForDelete.d.ts +1 -0
  241. package/features/gateway/graphql/cancelWebsiteBuilderPageReviewsForDelete.js +26 -0
  242. package/features/gateway/graphql/cancelWebsiteBuilderPageReviewsForDelete.js.map +1 -0
  243. package/features/gateway/graphql/getWebsiteBuilderPageReview.d.ts +1 -0
  244. package/features/gateway/graphql/getWebsiteBuilderPageReview.js +18 -0
  245. package/features/gateway/graphql/getWebsiteBuilderPageReview.js.map +1 -0
  246. package/features/gateway/graphql/getWebsiteBuilderPageReviewStepRun.d.ts +1 -0
  247. package/features/gateway/graphql/getWebsiteBuilderPageReviewStepRun.js +18 -0
  248. package/features/gateway/graphql/getWebsiteBuilderPageReviewStepRun.js.map +1 -0
  249. package/features/gateway/graphql/getWebsiteBuilderPageTargetReview.d.ts +1 -0
  250. package/features/gateway/graphql/getWebsiteBuilderPageTargetReview.js +18 -0
  251. package/features/gateway/graphql/getWebsiteBuilderPageTargetReview.js.map +1 -0
  252. package/features/gateway/graphql/listWebsiteBuilderPageReviewStepCandidates.d.ts +1 -0
  253. package/features/gateway/graphql/listWebsiteBuilderPageReviewStepCandidates.js +18 -0
  254. package/features/gateway/graphql/listWebsiteBuilderPageReviewStepCandidates.js.map +1 -0
  255. package/features/gateway/graphql/listWebsiteBuilderPageReviews.d.ts +1 -0
  256. package/features/gateway/graphql/listWebsiteBuilderPageReviews.js +34 -0
  257. package/features/gateway/graphql/listWebsiteBuilderPageReviews.js.map +1 -0
  258. package/features/gateway/graphql/listWebsiteBuilderPageStepCandidates.d.ts +1 -0
  259. package/features/gateway/graphql/listWebsiteBuilderPageStepCandidates.js +22 -0
  260. package/features/gateway/graphql/listWebsiteBuilderPageStepCandidates.js.map +1 -0
  261. package/features/gateway/graphql/listWebsiteBuilderPageWorkflows.d.ts +1 -0
  262. package/features/gateway/graphql/listWebsiteBuilderPageWorkflows.js +18 -0
  263. package/features/gateway/graphql/listWebsiteBuilderPageWorkflows.js.map +1 -0
  264. package/features/gateway/graphql/reassignWebsiteBuilderPageReviewStep.d.ts +1 -0
  265. package/features/gateway/graphql/reassignWebsiteBuilderPageReviewStep.js +22 -0
  266. package/features/gateway/graphql/reassignWebsiteBuilderPageReviewStep.js.map +1 -0
  267. package/features/gateway/graphql/rejectWebsiteBuilderPageReviewStep.d.ts +1 -0
  268. package/features/gateway/graphql/rejectWebsiteBuilderPageReviewStep.js +22 -0
  269. package/features/gateway/graphql/rejectWebsiteBuilderPageReviewStep.js.map +1 -0
  270. package/features/gateway/graphql/requestWebsiteBuilderPageReview.d.ts +1 -0
  271. package/features/gateway/graphql/requestWebsiteBuilderPageReview.js +26 -0
  272. package/features/gateway/graphql/requestWebsiteBuilderPageReview.js.map +1 -0
  273. package/features/gateway/graphql/restartWebsiteBuilderPageReviewStep.d.ts +1 -0
  274. package/features/gateway/graphql/restartWebsiteBuilderPageReviewStep.js +18 -0
  275. package/features/gateway/graphql/restartWebsiteBuilderPageReviewStep.js.map +1 -0
  276. package/features/gateway/graphql/startWebsiteBuilderPageReviewStep.d.ts +1 -0
  277. package/features/gateway/graphql/startWebsiteBuilderPageReviewStep.js +18 -0
  278. package/features/gateway/graphql/startWebsiteBuilderPageReviewStep.js.map +1 -0
  279. package/features/gateway/graphql/takeOverWebsiteBuilderPageReviewStep.d.ts +1 -0
  280. package/features/gateway/graphql/takeOverWebsiteBuilderPageReviewStep.js +26 -0
  281. package/features/gateway/graphql/takeOverWebsiteBuilderPageReviewStep.js.map +1 -0
  282. package/features/trash/BulkDeletePresenterReviewDecorator.d.ts +14 -0
  283. package/features/trash/BulkDeletePresenterReviewDecorator.js +27 -0
  284. package/features/trash/BulkDeletePresenterReviewDecorator.js.map +1 -0
  285. package/features/trash/BulkDeletePresenterReviewDecorator.test.d.ts +1 -0
  286. package/features/trash/BulkDeletePresenterReviewDecorator.test.js +234 -0
  287. package/features/trash/BulkDeletePresenterReviewDecorator.test.js.map +1 -0
  288. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.d.ts +13 -0
  289. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.js +23 -0
  290. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.js.map +1 -0
  291. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.test.d.ts +1 -0
  292. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.test.js +114 -0
  293. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.test.js.map +1 -0
  294. package/features/trash/DeletePageUseCaseReviewDecorator.d.ts +13 -0
  295. package/features/trash/DeletePageUseCaseReviewDecorator.js +23 -0
  296. package/features/trash/DeletePageUseCaseReviewDecorator.js.map +1 -0
  297. package/features/trash/DeletePageUseCaseReviewDecorator.test.d.ts +1 -0
  298. package/features/trash/DeletePageUseCaseReviewDecorator.test.js +134 -0
  299. package/features/trash/DeletePageUseCaseReviewDecorator.test.js.map +1 -0
  300. package/features/trash/feature.d.ts +1 -0
  301. package/features/trash/feature.js +15 -0
  302. package/features/trash/feature.js.map +1 -0
  303. package/features/trash/feature.test.d.ts +1 -0
  304. package/features/trash/feature.test.js +183 -0
  305. package/features/trash/feature.test.js.map +1 -0
  306. package/hooks/usePage.test.d.ts +1 -0
  307. package/hooks/usePage.test.js +49 -0
  308. package/hooks/usePage.test.js.map +1 -0
  309. package/index.js +21 -2
  310. package/index.js.map +1 -1
  311. package/index.mount.test.d.ts +1 -0
  312. package/index.mount.test.js +50 -0
  313. package/index.mount.test.js.map +1 -0
  314. package/index.test.d.ts +1 -0
  315. package/index.test.js +523 -0
  316. package/index.test.js.map +1 -0
  317. package/package.json +21 -14
  318. package/pageListChangeStatus.wiring.test.d.ts +1 -0
  319. package/pageListChangeStatus.wiring.test.js +175 -0
  320. package/pageListChangeStatus.wiring.test.js.map +1 -0
  321. package/pageListGlue.wiring.test.d.ts +1 -0
  322. package/pageListGlue.wiring.test.js +220 -0
  323. package/pageListGlue.wiring.test.js.map +1 -0
  324. package/presentation/page/PageGet/{WorkflowStatesGetPageGraphQLFieldSelection.d.ts → WbReviewGetPageFieldSelection.d.ts} +2 -2
  325. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.js +16 -0
  326. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.js.map +1 -0
  327. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.test.d.ts +1 -0
  328. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.test.js +19 -0
  329. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.test.js.map +1 -0
  330. package/presentation/page/PageGet/feature.js +2 -2
  331. package/presentation/page/PageGet/feature.js.map +1 -1
  332. package/presentation/page/PageList/{WorkflowStateListPagesFieldSelection.d.ts → WbReviewListPagesFieldSelection.d.ts} +2 -2
  333. package/presentation/page/PageList/WbReviewListPagesFieldSelection.js +16 -0
  334. package/presentation/page/PageList/WbReviewListPagesFieldSelection.js.map +1 -0
  335. package/presentation/page/PageList/WbReviewListPagesFieldSelection.test.d.ts +1 -0
  336. package/presentation/page/PageList/WbReviewListPagesFieldSelection.test.js +19 -0
  337. package/presentation/page/PageList/WbReviewListPagesFieldSelection.test.js.map +1 -0
  338. package/presentation/page/PageList/{TableRowMapperDecorator.d.ts → WbReviewTableRowMapperDecorator.d.ts} +4 -4
  339. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.js +24 -0
  340. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.js.map +1 -0
  341. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.test.d.ts +1 -0
  342. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.test.js +70 -0
  343. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.test.js.map +1 -0
  344. package/presentation/page/PageList/feature.js +4 -4
  345. package/presentation/page/PageList/feature.js.map +1 -1
  346. package/presentation/page/RevisionList/RevisionListPresenterDecorator.d.ts +7 -13
  347. package/presentation/page/RevisionList/RevisionListPresenterDecorator.js +12 -4
  348. package/presentation/page/RevisionList/RevisionListPresenterDecorator.js.map +1 -1
  349. package/presentation/page/RevisionList/RevisionListPresenterDecorator.test.d.ts +1 -0
  350. package/presentation/page/RevisionList/RevisionListPresenterDecorator.test.js +119 -0
  351. package/presentation/page/RevisionList/RevisionListPresenterDecorator.test.js.map +1 -0
  352. package/presentation/page/wbReviewPageSelection.d.ts +1 -0
  353. package/presentation/page/wbReviewPageSelection.js +9 -0
  354. package/presentation/page/wbReviewPageSelection.js.map +1 -0
  355. package/publishAutosave.wiring.test.d.ts +1 -0
  356. package/publishAutosave.wiring.test.js +162 -0
  357. package/publishAutosave.wiring.test.js.map +1 -0
  358. package/routes.d.ts +3 -3
  359. package/routes.js +5 -5
  360. package/routes.js.map +1 -1
  361. package/testing/WbEditorHarness.d.ts +11 -0
  362. package/testing/WbEditorHarness.js +22 -0
  363. package/testing/WbEditorHarness.js.map +1 -0
  364. package/testing/createFakeSession.d.ts +9 -0
  365. package/testing/createFakeSession.js +29 -0
  366. package/testing/createFakeSession.js.map +1 -0
  367. package/testing/createFakeVm.d.ts +3 -0
  368. package/testing/createFakeVm.js +51 -0
  369. package/testing/createFakeVm.js.map +1 -0
  370. package/testing/createFolder.d.ts +2 -0
  371. package/testing/createFolder.js +13 -0
  372. package/testing/createFolder.js.map +1 -0
  373. package/testing/createPageEditor.d.ts +4 -0
  374. package/testing/createPageEditor.js +26 -0
  375. package/testing/createPageEditor.js.map +1 -0
  376. package/testing/registerPageContent.d.ts +20 -0
  377. package/testing/registerPageContent.js +28 -0
  378. package/testing/registerPageContent.js.map +1 -0
  379. package/types.d.ts +3 -9
  380. package/Components/OptionItem/OpenInNewWindow.d.ts +0 -2
  381. package/Components/OptionItem/OpenInNewWindow.js +0 -34
  382. package/Components/OptionItem/OpenInNewWindow.js.map +0 -1
  383. package/Components/OptionItem/index.d.ts +0 -1
  384. package/Components/OptionItem/index.js +0 -1
  385. package/Components/PageEditor/PageFormWorkflowState.d.ts +0 -4
  386. package/Components/PageEditor/PageFormWorkflowState.js +0 -18
  387. package/Components/PageEditor/PageFormWorkflowState.js.map +0 -1
  388. package/Components/PageEditor/PageFormWorkflowStatePublishButton.d.ts +0 -2
  389. package/Components/PageEditor/PageFormWorkflowStatePublishButton.js +0 -22
  390. package/Components/PageEditor/PageFormWorkflowStatePublishButton.js.map +0 -1
  391. package/Components/PageEditor/PageFormWorkflowStateTooltip.d.ts +0 -2
  392. package/Components/PageEditor/PageFormWorkflowStateTooltip.js +0 -14
  393. package/Components/PageEditor/PageFormWorkflowStateTooltip.js.map +0 -1
  394. package/Components/PageEditor/ToggleEditorMode.js +0 -21
  395. package/Components/PageEditor/ToggleEditorMode.js.map +0 -1
  396. package/Components/PageWorkflows/PageWorkflowsEditorView.d.ts +0 -3
  397. package/Components/PageWorkflows/PageWorkflowsEditorView.js +0 -54
  398. package/Components/PageWorkflows/PageWorkflowsEditorView.js.map +0 -1
  399. package/Components/PageWorkflows/index.d.ts +0 -1
  400. package/Components/PageWorkflows/index.js +0 -1
  401. package/Components/PagesList/PageListChangeStatus.d.ts +0 -2
  402. package/Components/PagesList/PageListChangeStatus.js +0 -23
  403. package/Components/PagesList/PageListChangeStatus.js.map +0 -1
  404. package/Components/PagesList/PagesListContentReviews.d.ts +0 -2
  405. package/Components/PagesList/PagesListContentReviews.js +0 -26
  406. package/Components/PagesList/PagesListContentReviews.js.map +0 -1
  407. package/presentation/page/PageGet/WorkflowStatesGetPageGraphQLFieldSelection.js +0 -22
  408. package/presentation/page/PageGet/WorkflowStatesGetPageGraphQLFieldSelection.js.map +0 -1
  409. package/presentation/page/PageList/TableRowMapperDecorator.js +0 -24
  410. package/presentation/page/PageList/TableRowMapperDecorator.js.map +0 -1
  411. package/presentation/page/PageList/WorkflowStateListPagesFieldSelection.js +0 -22
  412. package/presentation/page/PageList/WorkflowStateListPagesFieldSelection.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const WbContentReviews: () => React.JSX.Element;
@@ -0,0 +1,41 @@
1
+ import react from "react";
2
+ import { useFeature } from "@webiny/app";
3
+ import { ReviewContentReviewsMenu } from "@webiny/app-workflows/review/mounting/components/ReviewContentReviewsMenu.js";
4
+ import { ReviewContentReviewsRoute } from "@webiny/app-workflows/review/mounting/components/ReviewContentReviewsRoute.js";
5
+ import { ReviewDashboardWidgets } from "@webiny/app-workflows/review/mounting/components/ReviewDashboardWidgets.js";
6
+ import { WB_PAGE_APP } from "../../constants.js";
7
+ import { WbReviewFeature } from "../../features/gateway/feature.js";
8
+ import { Routes } from "../../routes.js";
9
+ const NAMESPACES = [
10
+ WB_PAGE_APP
11
+ ];
12
+ const CONTENT_TYPES = {
13
+ vm: {
14
+ loading: false,
15
+ namespaces: NAMESPACES,
16
+ options: []
17
+ }
18
+ };
19
+ const WbContentReviews = ()=>{
20
+ const { rowProvider } = useFeature(WbReviewFeature);
21
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(ReviewContentReviewsRoute, {
22
+ route: Routes.Pages.WorkflowStateList,
23
+ app: "wb",
24
+ rowProvider: rowProvider,
25
+ showContentType: false,
26
+ contentTypes: CONTENT_TYPES,
27
+ breadcrumbName: "wb.content-reviews"
28
+ }), /*#__PURE__*/ react.createElement(ReviewContentReviewsMenu, {
29
+ name: "workflows.wb.contentReviews",
30
+ route: Routes.Pages.WorkflowStateList,
31
+ parent: "wb"
32
+ }), /*#__PURE__*/ react.createElement(ReviewDashboardWidgets, {
33
+ prefix: "wb",
34
+ namespaces: NAMESPACES,
35
+ rowProvider: rowProvider,
36
+ viewAllRoute: Routes.Pages.WorkflowStateList
37
+ }));
38
+ };
39
+ export { WbContentReviews };
40
+
41
+ //# sourceMappingURL=WbContentReviews.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/ContentReviews/WbContentReviews.js","sources":["../../../src/Components/ContentReviews/WbContentReviews.tsx"],"sourcesContent":["import React from \"react\";\nimport { useFeature } from \"@webiny/app\";\nimport type { IReviewContentTypesSource } from \"@webiny/app-workflows/review/presentation/reviewList/IReviewContentTypesSource.js\";\nimport { ReviewContentReviewsMenu } from \"@webiny/app-workflows/review/mounting/components/ReviewContentReviewsMenu.js\";\nimport { ReviewContentReviewsRoute } from \"@webiny/app-workflows/review/mounting/components/ReviewContentReviewsRoute.js\";\nimport { ReviewDashboardWidgets } from \"@webiny/app-workflows/review/mounting/components/ReviewDashboardWidgets.js\";\nimport { WB_PAGE_APP } from \"~/constants.js\";\nimport { WbReviewFeature } from \"~/features/gateway/feature.js\";\nimport { Routes } from \"~/routes.js\";\n\nconst NAMESPACES = [WB_PAGE_APP];\n\n// Pages need nothing loaded: one fixed namespace and no content types.\nconst CONTENT_TYPES: IReviewContentTypesSource = {\n vm: { loading: false, namespaces: NAMESPACES, options: [] }\n};\n\n/*\n * Mounts the shared Content Reviews route, menu item and dashboard widgets for the `wb` app.\n * Pages have no content type: no Content type column and no filter (D113).\n */\nexport const WbContentReviews = () => {\n const { rowProvider } = useFeature(WbReviewFeature);\n\n return (\n <>\n <ReviewContentReviewsRoute\n route={Routes.Pages.WorkflowStateList}\n app=\"wb\"\n rowProvider={rowProvider}\n showContentType={false}\n contentTypes={CONTENT_TYPES}\n breadcrumbName=\"wb.content-reviews\"\n />\n <ReviewContentReviewsMenu\n name=\"workflows.wb.contentReviews\"\n route={Routes.Pages.WorkflowStateList}\n parent=\"wb\"\n />\n <ReviewDashboardWidgets\n prefix=\"wb\"\n namespaces={NAMESPACES}\n rowProvider={rowProvider}\n viewAllRoute={Routes.Pages.WorkflowStateList}\n />\n </>\n );\n};\n"],"names":["NAMESPACES","WB_PAGE_APP","CONTENT_TYPES","WbContentReviews","rowProvider","useFeature","WbReviewFeature","ReviewContentReviewsRoute","Routes","ReviewContentReviewsMenu","ReviewDashboardWidgets"],"mappings":";;;;;;;;AAUA,MAAMA,aAAa;IAACC;CAAY;AAGhC,MAAMC,gBAA2C;IAC7C,IAAI;QAAE,SAAS;QAAO,YAAYF;QAAY,SAAS,EAAE;IAAC;AAC9D;AAMO,MAAMG,mBAAmB;IAC5B,MAAM,EAAEC,WAAW,EAAE,GAAGC,WAAWC;IAEnC,OAAO,WAAP,GACI,wDACI,oBAACC,2BAAyBA;QACtB,OAAOC,OAAO,KAAK,CAAC,iBAAiB;QACrC,KAAI;QACJ,aAAaJ;QACb,iBAAiB;QACjB,cAAcF;QACd,gBAAe;sBAEnB,oBAACO,0BAAwBA;QACrB,MAAK;QACL,OAAOD,OAAO,KAAK,CAAC,iBAAiB;QACrC,QAAO;sBAEX,oBAACE,wBAAsBA;QACnB,QAAO;QACP,YAAYV;QACZ,aAAaI;QACb,cAAcI,OAAO,KAAK,CAAC,iBAAiB;;AAI5D"}
@@ -0,0 +1,59 @@
1
+ import react from "react";
2
+ import { afterEach, describe, expect, it, vi } from "vitest";
3
+ import { cleanup, render, screen } from "@testing-library/react";
4
+ import { Container } from "@webiny/di";
5
+ import { DiContainerProvider } from "@webiny/app";
6
+ import { RouterWithConfig, useRouterConfig } from "@webiny/app/config/RouterConfig.js";
7
+ import { AdminConfigPlugin, AdminWithConfig, useAdminConfig } from "@webiny/app-admin/config/AdminConfig.js";
8
+ import { CompositionProvider } from "@webiny/react-composition";
9
+ import { WbReviewContentAdapter } from "../../features/gateway/WbReviewContentAdapter/abstractions.js";
10
+ import { WbReviewRowProvider } from "../../features/gateway/WbReviewRowProvider/abstractions.js";
11
+ import { WbContentReviews } from "./WbContentReviews.js";
12
+ vi.mock("@webiny/app-admin", async (importOriginal)=>{
13
+ const actual = await importOriginal();
14
+ return {
15
+ ...actual,
16
+ useRouter: ()=>({
17
+ getLink: (route, params)=>{
18
+ if (params) return `${route.path}?tab=${params.tab}`;
19
+ return route.path;
20
+ }
21
+ })
22
+ };
23
+ });
24
+ const Probe = ()=>{
25
+ const adminConfig = useAdminConfig();
26
+ const routerConfig = useRouterConfig();
27
+ const menus = adminConfig.menus.map((menu)=>`${menu.name}:${menu.parent ?? ""}`);
28
+ const widgets = adminConfig.widgets.map((widget)=>`${widget.name}:${widget.column}`);
29
+ const routes = routerConfig.routes.map((item)=>item.route.name);
30
+ return /*#__PURE__*/ react.createElement("div", {
31
+ "data-testid": "probe",
32
+ "data-menus": menus.join(","),
33
+ "data-widgets": widgets.join(","),
34
+ "data-routes": routes.join(",")
35
+ });
36
+ };
37
+ describe("WbContentReviews under the real admin and router configs", ()=>{
38
+ afterEach(()=>{
39
+ cleanup();
40
+ });
41
+ it("registers the route, the menu item and the two widgets", async ()=>{
42
+ const container = new Container();
43
+ container.registerInstance(WbReviewContentAdapter, {});
44
+ container.registerInstance(WbReviewRowProvider, {
45
+ getBinding: ()=>null
46
+ });
47
+ render(/*#__PURE__*/ react.createElement(DiContainerProvider, {
48
+ container: container
49
+ }, /*#__PURE__*/ react.createElement(CompositionProvider, null, /*#__PURE__*/ react.createElement(WbContentReviews, null), /*#__PURE__*/ react.createElement(AdminWithConfig, null, AdminConfigPlugin, /*#__PURE__*/ react.createElement(RouterWithConfig, null, /*#__PURE__*/ react.createElement(Probe, null))))));
50
+ const probe = await screen.findByTestId("probe");
51
+ await vi.waitFor(()=>{
52
+ expect(probe.getAttribute("data-routes")).toBe("WebsiteBuilder/Pages/WorkflowStateList");
53
+ });
54
+ expect(probe.getAttribute("data-menus")).toBe("workflows.wb.contentReviews:wb");
55
+ expect(probe.getAttribute("data-widgets")).toBe("workflows.wb.review:right,workflows.wb.requested:right");
56
+ });
57
+ });
58
+
59
+ //# sourceMappingURL=WbContentReviews.smoke.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/ContentReviews/WbContentReviews.smoke.test.js","sources":["../../../src/Components/ContentReviews/WbContentReviews.smoke.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { afterEach } from \"vitest\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { cleanup } from \"@testing-library/react\";\nimport { render } from \"@testing-library/react\";\nimport { screen } from \"@testing-library/react\";\nimport { Container } from \"@webiny/di\";\nimport { DiContainerProvider } from \"@webiny/app\";\nimport { RouterWithConfig } from \"@webiny/app/config/RouterConfig.js\";\nimport { useRouterConfig } from \"@webiny/app/config/RouterConfig.js\";\nimport { AdminConfigPlugin } from \"@webiny/app-admin/config/AdminConfig.js\";\nimport { AdminWithConfig } from \"@webiny/app-admin/config/AdminConfig.js\";\nimport { useAdminConfig } from \"@webiny/app-admin/config/AdminConfig.js\";\nimport { CompositionProvider } from \"@webiny/react-composition\";\nimport type { IReviewContentAdapter } from \"@webiny/app-workflows/review/content/IReviewContentAdapter.js\";\nimport type { IReviewRowProvider } from \"@webiny/app-workflows/review/presentation/reviewList/abstractions.js\";\nimport { WbReviewContentAdapter } from \"~/features/gateway/WbReviewContentAdapter/abstractions.js\";\nimport { WbReviewRowProvider } from \"~/features/gateway/WbReviewRowProvider/abstractions.js\";\nimport { WbContentReviews } from \"./WbContentReviews.js\";\n\ninterface RouteStub {\n path: string;\n}\n\ninterface RouteParamsStub {\n tab: string;\n}\n\n// The router is not under test (only `getLink` is read).\nvi.mock(\"@webiny/app-admin\", async importOriginal => {\n const actual = await importOriginal<typeof import(\"@webiny/app-admin\")>();\n return {\n ...actual,\n useRouter: () => {\n return {\n getLink: (route: RouteStub, params?: RouteParamsStub) => {\n if (params) {\n return `${route.path}?tab=${params.tab}`;\n }\n return route.path;\n }\n };\n }\n };\n});\n\nconst Probe = () => {\n const adminConfig = useAdminConfig();\n const routerConfig = useRouterConfig();\n\n const menus = adminConfig.menus.map(menu => `${menu.name}:${menu.parent ?? \"\"}`);\n const widgets = adminConfig.widgets.map(widget => `${widget.name}:${widget.column}`);\n const routes = routerConfig.routes.map(item => item.route.name);\n\n return (\n <div\n data-testid=\"probe\"\n data-menus={menus.join(\",\")}\n data-widgets={widgets.join(\",\")}\n data-routes={routes.join(\",\")}\n />\n );\n};\n\ndescribe(\"WbContentReviews under the real admin and router configs\", () => {\n afterEach(() => {\n cleanup();\n });\n\n it(\"registers the route, the menu item and the two widgets\", async () => {\n const container = new Container();\n container.registerInstance(WbReviewContentAdapter, {} as unknown as IReviewContentAdapter);\n container.registerInstance(WbReviewRowProvider, {\n getBinding: () => null\n } as IReviewRowProvider);\n\n render(\n <DiContainerProvider container={container}>\n <CompositionProvider>\n {/* Mirrors App.tsx: the config declarations and the admin plugin come before the router, which renders its children only after its first config flush. */}\n <WbContentReviews />\n <AdminWithConfig>\n {AdminConfigPlugin}\n <RouterWithConfig>\n <Probe />\n </RouterWithConfig>\n </AdminWithConfig>\n </CompositionProvider>\n </DiContainerProvider>\n );\n\n const probe = await screen.findByTestId(\"probe\");\n await vi.waitFor(() => {\n expect(probe.getAttribute(\"data-routes\")).toBe(\n \"WebsiteBuilder/Pages/WorkflowStateList\"\n );\n });\n expect(probe.getAttribute(\"data-menus\")).toBe(\"workflows.wb.contentReviews:wb\");\n expect(probe.getAttribute(\"data-widgets\")).toBe(\n \"workflows.wb.review:right,workflows.wb.requested:right\"\n );\n });\n});\n"],"names":["vi","importOriginal","actual","route","params","Probe","adminConfig","useAdminConfig","routerConfig","useRouterConfig","menus","menu","widgets","widget","routes","item","describe","afterEach","cleanup","it","container","Container","WbReviewContentAdapter","WbReviewRowProvider","render","DiContainerProvider","CompositionProvider","WbContentReviews","AdminWithConfig","AdminConfigPlugin","RouterWithConfig","probe","screen","expect"],"mappings":";;;;;;;;;;;AAgCAA,GAAG,IAAI,CAAC,qBAAqB,OAAMC;IAC/B,MAAMC,SAAS,MAAMD;IACrB,OAAO;QACH,GAAGC,MAAM;QACT,WAAW,IACA;gBACH,SAAS,CAACC,OAAkBC;oBACxB,IAAIA,QACA,OAAO,GAAGD,MAAM,IAAI,CAAC,KAAK,EAAEC,OAAO,GAAG,EAAE;oBAE5C,OAAOD,MAAM,IAAI;gBACrB;YACJ;IAER;AACJ;AAEA,MAAME,QAAQ;IACV,MAAMC,cAAcC;IACpB,MAAMC,eAAeC;IAErB,MAAMC,QAAQJ,YAAY,KAAK,CAAC,GAAG,CAACK,CAAAA,OAAQ,GAAGA,KAAK,IAAI,CAAC,CAAC,EAAEA,KAAK,MAAM,IAAI,IAAI;IAC/E,MAAMC,UAAUN,YAAY,OAAO,CAAC,GAAG,CAACO,CAAAA,SAAU,GAAGA,OAAO,IAAI,CAAC,CAAC,EAAEA,OAAO,MAAM,EAAE;IACnF,MAAMC,SAASN,aAAa,MAAM,CAAC,GAAG,CAACO,CAAAA,OAAQA,KAAK,KAAK,CAAC,IAAI;IAE9D,OAAO,WAAP,GACI,oBAAC;QACG,eAAY;QACZ,cAAYL,MAAM,IAAI,CAAC;QACvB,gBAAcE,QAAQ,IAAI,CAAC;QAC3B,eAAaE,OAAO,IAAI,CAAC;;AAGrC;AAEAE,SAAS,4DAA4D;IACjEC,UAAU;QACNC;IACJ;IAEAC,GAAG,0DAA0D;QACzD,MAAMC,YAAY,IAAIC;QACtBD,UAAU,gBAAgB,CAACE,wBAAwB,CAAC;QACpDF,UAAU,gBAAgB,CAACG,qBAAqB;YAC5C,YAAY,IAAM;QACtB;QAEAC,OAAO,WAADA,GACF,oBAACC,qBAAmBA;YAAC,WAAWL;yBAC5B,oBAACM,qBAAmBA,MAAAA,WAAAA,GAEhB,oBAACC,kBAAgBA,OAAAA,WAAAA,GACjB,oBAACC,iBAAeA,MACXC,mBAAiBA,WAAAA,GAClB,oBAACC,kBAAgBA,MAAAA,WAAAA,GACb,oBAACzB,OAAKA;QAO1B,MAAM0B,QAAQ,MAAMC,OAAO,YAAY,CAAC;QACxC,MAAMhC,GAAG,OAAO,CAAC;YACbiC,OAAOF,MAAM,YAAY,CAAC,gBAAgB,IAAI,CAC1C;QAER;QACAE,OAAOF,MAAM,YAAY,CAAC,eAAe,IAAI,CAAC;QAC9CE,OAAOF,MAAM,YAAY,CAAC,iBAAiB,IAAI,CAC3C;IAER;AACJ"}
@@ -0,0 +1,80 @@
1
+ import react from "react";
2
+ import { afterEach, describe, expect, it, vi } from "vitest";
3
+ import { cleanup, render, screen } from "@testing-library/react";
4
+ import { Container } from "@webiny/di";
5
+ import { DiContainerProvider } from "@webiny/app";
6
+ import { WbReviewContentAdapter } from "../../features/gateway/WbReviewContentAdapter/abstractions.js";
7
+ import { WbReviewRowProvider } from "../../features/gateway/WbReviewRowProvider/abstractions.js";
8
+ import { Routes } from "../../routes.js";
9
+ import { WbContentReviews } from "./WbContentReviews.js";
10
+ vi.mock("@webiny/app-workflows/review/mounting/components/ReviewContentReviewsRoute.js", async ()=>{
11
+ const React = await import("react");
12
+ return {
13
+ ReviewContentReviewsRoute: (props)=>React.createElement("div", {
14
+ "data-testid": "route",
15
+ "data-route": props.route.name,
16
+ "data-app": props.app,
17
+ "data-namespaces": props.contentTypes.vm.namespaces.join(","),
18
+ "data-show-content-type": String(props.showContentType),
19
+ "data-loading": String(props.contentTypes.vm.loading),
20
+ "data-options": JSON.stringify(props.contentTypes.vm.options),
21
+ "data-breadcrumb": props.breadcrumbName
22
+ })
23
+ };
24
+ });
25
+ vi.mock("@webiny/app-workflows/review/mounting/components/ReviewContentReviewsMenu.js", async ()=>{
26
+ const React = await import("react");
27
+ return {
28
+ ReviewContentReviewsMenu: (props)=>React.createElement("div", {
29
+ "data-testid": "menu",
30
+ "data-name": props.name,
31
+ "data-route": props.route.name,
32
+ "data-parent": props.parent ?? ""
33
+ })
34
+ };
35
+ });
36
+ vi.mock("@webiny/app-workflows/review/mounting/components/ReviewDashboardWidgets.js", async ()=>{
37
+ const React = await import("react");
38
+ return {
39
+ ReviewDashboardWidgets: (props)=>React.createElement("div", {
40
+ "data-testid": "widgets",
41
+ "data-prefix": props.prefix,
42
+ "data-namespaces": props.namespaces.join(","),
43
+ "data-route": props.viewAllRoute.name
44
+ })
45
+ };
46
+ });
47
+ describe("WbContentReviews", ()=>{
48
+ afterEach(()=>{
49
+ cleanup();
50
+ });
51
+ it("mounts the shared route, menu and widgets for the wb app and no content type", ()=>{
52
+ const container = new Container();
53
+ const rowProvider = {
54
+ getBinding: ()=>null
55
+ };
56
+ container.registerInstance(WbReviewContentAdapter, {});
57
+ container.registerInstance(WbReviewRowProvider, rowProvider);
58
+ render(/*#__PURE__*/ react.createElement(DiContainerProvider, {
59
+ container: container
60
+ }, /*#__PURE__*/ react.createElement(WbContentReviews, null)));
61
+ const route = screen.getByTestId("route");
62
+ expect(route.getAttribute("data-route")).toBe(Routes.Pages.WorkflowStateList.name);
63
+ expect(route.getAttribute("data-app")).toBe("wb");
64
+ expect(route.getAttribute("data-namespaces")).toBe("wb.page");
65
+ expect(route.getAttribute("data-show-content-type")).toBe("false");
66
+ expect(route.getAttribute("data-loading")).toBe("false");
67
+ expect(route.getAttribute("data-options")).toBe("[]");
68
+ expect(route.getAttribute("data-breadcrumb")).toBe("wb.content-reviews");
69
+ const menu = screen.getByTestId("menu");
70
+ expect(menu.getAttribute("data-name")).toBe("workflows.wb.contentReviews");
71
+ expect(menu.getAttribute("data-parent")).toBe("wb");
72
+ expect(menu.getAttribute("data-route")).toBe(Routes.Pages.WorkflowStateList.name);
73
+ const widgets = screen.getByTestId("widgets");
74
+ expect(widgets.getAttribute("data-prefix")).toBe("wb");
75
+ expect(widgets.getAttribute("data-namespaces")).toBe("wb.page");
76
+ expect(widgets.getAttribute("data-route")).toBe(Routes.Pages.WorkflowStateList.name);
77
+ });
78
+ });
79
+
80
+ //# sourceMappingURL=WbContentReviews.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/ContentReviews/WbContentReviews.test.js","sources":["../../../src/Components/ContentReviews/WbContentReviews.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { afterEach } from \"vitest\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { cleanup } from \"@testing-library/react\";\nimport { render } from \"@testing-library/react\";\nimport { screen } from \"@testing-library/react\";\nimport { Container } from \"@webiny/di\";\nimport { DiContainerProvider } from \"@webiny/app\";\nimport type { IReviewContentAdapter } from \"@webiny/app-workflows/review/content/IReviewContentAdapter.js\";\nimport type { IReviewContentTypesSource } from \"@webiny/app-workflows/review/presentation/reviewList/IReviewContentTypesSource.js\";\nimport type { IReviewRowProvider } from \"@webiny/app-workflows/review/presentation/reviewList/abstractions.js\";\nimport { WbReviewContentAdapter } from \"~/features/gateway/WbReviewContentAdapter/abstractions.js\";\nimport { WbReviewRowProvider } from \"~/features/gateway/WbReviewRowProvider/abstractions.js\";\nimport { Routes } from \"~/routes.js\";\nimport { WbContentReviews } from \"./WbContentReviews.js\";\n\ninterface RouteStubProps {\n route: { name: string };\n app: string;\n showContentType: boolean;\n contentTypes: IReviewContentTypesSource;\n breadcrumbName: string;\n}\n\ninterface MenuStubProps {\n name: string;\n route: { name: string };\n parent?: string;\n}\n\ninterface WidgetsStubProps {\n prefix: string;\n namespaces: string[];\n viewAllRoute: { name: string };\n}\n\nvi.mock(\n \"@webiny/app-workflows/review/mounting/components/ReviewContentReviewsRoute.js\",\n async () => {\n const React = await import(\"react\");\n return {\n ReviewContentReviewsRoute: (props: RouteStubProps) => {\n return React.createElement(\"div\", {\n \"data-testid\": \"route\",\n \"data-route\": props.route.name,\n \"data-app\": props.app,\n \"data-namespaces\": props.contentTypes.vm.namespaces.join(\",\"),\n \"data-show-content-type\": String(props.showContentType),\n \"data-loading\": String(props.contentTypes.vm.loading),\n \"data-options\": JSON.stringify(props.contentTypes.vm.options),\n \"data-breadcrumb\": props.breadcrumbName\n });\n }\n };\n }\n);\n\nvi.mock(\n \"@webiny/app-workflows/review/mounting/components/ReviewContentReviewsMenu.js\",\n async () => {\n const React = await import(\"react\");\n return {\n ReviewContentReviewsMenu: (props: MenuStubProps) => {\n return React.createElement(\"div\", {\n \"data-testid\": \"menu\",\n \"data-name\": props.name,\n \"data-route\": props.route.name,\n \"data-parent\": props.parent ?? \"\"\n });\n }\n };\n }\n);\n\nvi.mock(\"@webiny/app-workflows/review/mounting/components/ReviewDashboardWidgets.js\", async () => {\n const React = await import(\"react\");\n return {\n ReviewDashboardWidgets: (props: WidgetsStubProps) => {\n return React.createElement(\"div\", {\n \"data-testid\": \"widgets\",\n \"data-prefix\": props.prefix,\n \"data-namespaces\": props.namespaces.join(\",\"),\n \"data-route\": props.viewAllRoute.name\n });\n }\n };\n});\n\ndescribe(\"WbContentReviews\", () => {\n afterEach(() => {\n cleanup();\n });\n\n it(\"mounts the shared route, menu and widgets for the wb app and no content type\", () => {\n const container = new Container();\n const rowProvider: IReviewRowProvider = { getBinding: () => null };\n container.registerInstance(WbReviewContentAdapter, {} as unknown as IReviewContentAdapter);\n container.registerInstance(WbReviewRowProvider, rowProvider);\n\n render(\n <DiContainerProvider container={container}>\n <WbContentReviews />\n </DiContainerProvider>\n );\n\n const route = screen.getByTestId(\"route\");\n expect(route.getAttribute(\"data-route\")).toBe(Routes.Pages.WorkflowStateList.name);\n expect(route.getAttribute(\"data-app\")).toBe(\"wb\");\n expect(route.getAttribute(\"data-namespaces\")).toBe(\"wb.page\");\n expect(route.getAttribute(\"data-show-content-type\")).toBe(\"false\");\n expect(route.getAttribute(\"data-loading\")).toBe(\"false\");\n expect(route.getAttribute(\"data-options\")).toBe(\"[]\");\n expect(route.getAttribute(\"data-breadcrumb\")).toBe(\"wb.content-reviews\");\n\n const menu = screen.getByTestId(\"menu\");\n expect(menu.getAttribute(\"data-name\")).toBe(\"workflows.wb.contentReviews\");\n expect(menu.getAttribute(\"data-parent\")).toBe(\"wb\");\n expect(menu.getAttribute(\"data-route\")).toBe(Routes.Pages.WorkflowStateList.name);\n\n const widgets = screen.getByTestId(\"widgets\");\n expect(widgets.getAttribute(\"data-prefix\")).toBe(\"wb\");\n expect(widgets.getAttribute(\"data-namespaces\")).toBe(\"wb.page\");\n expect(widgets.getAttribute(\"data-route\")).toBe(Routes.Pages.WorkflowStateList.name);\n });\n});\n"],"names":["vi","React","props","String","JSON","describe","afterEach","cleanup","it","container","Container","rowProvider","WbReviewContentAdapter","WbReviewRowProvider","render","DiContainerProvider","WbContentReviews","route","screen","expect","Routes","menu","widgets"],"mappings":";;;;;;;;;AAuCAA,GAAG,IAAI,CACH,iFACA;IACI,MAAMC,QAAQ,MAAM,MAAM,CAAC;IAC3B,OAAO;QACH,2BAA2B,CAACC,QACjBD,MAAM,aAAa,CAAC,OAAO;gBAC9B,eAAe;gBACf,cAAcC,MAAM,KAAK,CAAC,IAAI;gBAC9B,YAAYA,MAAM,GAAG;gBACrB,mBAAmBA,MAAM,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;gBACzD,0BAA0BC,OAAOD,MAAM,eAAe;gBACtD,gBAAgBC,OAAOD,MAAM,YAAY,CAAC,EAAE,CAAC,OAAO;gBACpD,gBAAgBE,KAAK,SAAS,CAACF,MAAM,YAAY,CAAC,EAAE,CAAC,OAAO;gBAC5D,mBAAmBA,MAAM,cAAc;YAC3C;IAER;AACJ;AAGJF,GAAG,IAAI,CACH,gFACA;IACI,MAAMC,QAAQ,MAAM,MAAM,CAAC;IAC3B,OAAO;QACH,0BAA0B,CAACC,QAChBD,MAAM,aAAa,CAAC,OAAO;gBAC9B,eAAe;gBACf,aAAaC,MAAM,IAAI;gBACvB,cAAcA,MAAM,KAAK,CAAC,IAAI;gBAC9B,eAAeA,MAAM,MAAM,IAAI;YACnC;IAER;AACJ;AAGJF,GAAG,IAAI,CAAC,8EAA8E;IAClF,MAAMC,QAAQ,MAAM,MAAM,CAAC;IAC3B,OAAO;QACH,wBAAwB,CAACC,QACdD,MAAM,aAAa,CAAC,OAAO;gBAC9B,eAAe;gBACf,eAAeC,MAAM,MAAM;gBAC3B,mBAAmBA,MAAM,UAAU,CAAC,IAAI,CAAC;gBACzC,cAAcA,MAAM,YAAY,CAAC,IAAI;YACzC;IAER;AACJ;AAEAG,SAAS,oBAAoB;IACzBC,UAAU;QACNC;IACJ;IAEAC,GAAG,gFAAgF;QAC/E,MAAMC,YAAY,IAAIC;QACtB,MAAMC,cAAkC;YAAE,YAAY,IAAM;QAAK;QACjEF,UAAU,gBAAgB,CAACG,wBAAwB,CAAC;QACpDH,UAAU,gBAAgB,CAACI,qBAAqBF;QAEhDG,OAAO,WAADA,GACF,oBAACC,qBAAmBA;YAAC,WAAWN;yBAC5B,oBAACO,kBAAgBA;QAIzB,MAAMC,QAAQC,OAAO,WAAW,CAAC;QACjCC,OAAOF,MAAM,YAAY,CAAC,eAAe,IAAI,CAACG,OAAO,KAAK,CAAC,iBAAiB,CAAC,IAAI;QACjFD,OAAOF,MAAM,YAAY,CAAC,aAAa,IAAI,CAAC;QAC5CE,OAAOF,MAAM,YAAY,CAAC,oBAAoB,IAAI,CAAC;QACnDE,OAAOF,MAAM,YAAY,CAAC,2BAA2B,IAAI,CAAC;QAC1DE,OAAOF,MAAM,YAAY,CAAC,iBAAiB,IAAI,CAAC;QAChDE,OAAOF,MAAM,YAAY,CAAC,iBAAiB,IAAI,CAAC;QAChDE,OAAOF,MAAM,YAAY,CAAC,oBAAoB,IAAI,CAAC;QAEnD,MAAMI,OAAOH,OAAO,WAAW,CAAC;QAChCC,OAAOE,KAAK,YAAY,CAAC,cAAc,IAAI,CAAC;QAC5CF,OAAOE,KAAK,YAAY,CAAC,gBAAgB,IAAI,CAAC;QAC9CF,OAAOE,KAAK,YAAY,CAAC,eAAe,IAAI,CAACD,OAAO,KAAK,CAAC,iBAAiB,CAAC,IAAI;QAEhF,MAAME,UAAUJ,OAAO,WAAW,CAAC;QACnCC,OAAOG,QAAQ,YAAY,CAAC,gBAAgB,IAAI,CAAC;QACjDH,OAAOG,QAAQ,YAAY,CAAC,oBAAoB,IAAI,CAAC;QACrDH,OAAOG,QAAQ,YAAY,CAAC,eAAe,IAAI,CAACF,OAAO,KAAK,CAAC,iBAAiB,CAAC,IAAI;IACvF;AACJ"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const WbContentReviewsSidebarItem: () => React.JSX.Element;
@@ -0,0 +1,18 @@
1
+ import react from "react";
2
+ import { PageListConfig } from "@webiny/app-website-builder";
3
+ import { ReactComponent } from "@webiny/icons/flowchart.svg";
4
+ import { ReviewContentReviewsSidebarItem } from "@webiny/app-workflows/review/mounting/components/ReviewContentReviewsSidebarItem.js";
5
+ import { Routes } from "../../routes.js";
6
+ const { Browser: Browser } = PageListConfig;
7
+ const ContentReviewsSidebarLink = ()=>/*#__PURE__*/ react.createElement(ReviewContentReviewsSidebarItem, {
8
+ className: "w-full",
9
+ route: Routes.Pages.WorkflowStateList,
10
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null)
11
+ });
12
+ const WbContentReviewsSidebarItem = ()=>/*#__PURE__*/ react.createElement(Browser.Sidebar.Footer, {
13
+ name: "contentReviews",
14
+ element: /*#__PURE__*/ react.createElement(ContentReviewsSidebarLink, null)
15
+ });
16
+ export { WbContentReviewsSidebarItem };
17
+
18
+ //# sourceMappingURL=WbContentReviewsSidebarItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/ContentReviews/WbContentReviewsSidebarItem.js","sources":["../../../src/Components/ContentReviews/WbContentReviewsSidebarItem.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageListConfig } from \"@webiny/app-website-builder\";\nimport { ReactComponent as ContentReviewsIcon } from \"@webiny/icons/flowchart.svg\";\nimport { ReviewContentReviewsSidebarItem } from \"@webiny/app-workflows/review/mounting/components/ReviewContentReviewsSidebarItem.js\";\nimport { Routes } from \"~/routes.js\";\n\nconst { Browser } = PageListConfig;\n\nconst ContentReviewsSidebarLink = () => {\n return (\n <ReviewContentReviewsSidebarItem\n className={\"w-full\"}\n route={Routes.Pages.WorkflowStateList}\n icon={<ContentReviewsIcon />}\n />\n );\n};\n\n// The \"Content Reviews\" item of the page list sidebar; it opens the route (replaces the overlay).\nexport const WbContentReviewsSidebarItem = () => {\n return (\n <Browser.Sidebar.Footer name={\"contentReviews\"} element={<ContentReviewsSidebarLink />} />\n );\n};\n"],"names":["Browser","PageListConfig","ContentReviewsSidebarLink","ReviewContentReviewsSidebarItem","Routes","ContentReviewsIcon","WbContentReviewsSidebarItem"],"mappings":";;;;;AAMA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AAEpB,MAAMC,4BAA4B,IACvB,WAAP,GACI,oBAACC,iCAA+BA;QAC5B,WAAW;QACX,OAAOC,OAAO,KAAK,CAAC,iBAAiB;QACrC,oBAAM,oBAACC,gBAAkBA;;AAM9B,MAAMC,8BAA8B,IAChC,WAAP,GACI,oBAACN,QAAQ,OAAO,CAAC,MAAM;QAAC,MAAM;QAAkB,uBAAS,oBAACE,2BAAyBA"}
@@ -0,0 +1,67 @@
1
+ import react from "react";
2
+ import { afterEach, describe, expect, it, vi } from "vitest";
3
+ import { cleanup, fireEvent, render, screen } from "@testing-library/react";
4
+ import { Routes } from "../../routes.js";
5
+ import { WbContentReviewsSidebarItem } from "./WbContentReviewsSidebarItem.js";
6
+ const goToRoute = vi.hoisted(()=>vi.fn());
7
+ vi.mock("@webiny/icons/work_outline.svg", ()=>({
8
+ ReactComponent: ()=>null
9
+ }));
10
+ vi.mock("@webiny/app-admin", async (importOriginal)=>{
11
+ const actual = await importOriginal();
12
+ return {
13
+ ...actual,
14
+ useRouter: ()=>({
15
+ goToRoute: goToRoute
16
+ })
17
+ };
18
+ });
19
+ vi.mock("@webiny/app-website-builder", async ()=>{
20
+ const React = await import("react");
21
+ const Footer = (props)=>React.createElement("div", {
22
+ "data-testid": "footer",
23
+ "data-name": props.name
24
+ }, props.element);
25
+ return {
26
+ PageListConfig: {
27
+ Browser: {
28
+ Sidebar: {
29
+ Footer
30
+ }
31
+ }
32
+ }
33
+ };
34
+ });
35
+ vi.mock("@webiny/admin-ui", async (importOriginal)=>{
36
+ const actual = await importOriginal();
37
+ const React = await import("react");
38
+ const Item = (props)=>React.createElement("button", {
39
+ onClick: props.onClick
40
+ }, props.text);
41
+ const ItemIcon = ()=>React.createElement("span");
42
+ return {
43
+ ...actual,
44
+ Sidebar: {
45
+ ...actual.Sidebar,
46
+ Item: Object.assign(Item, {
47
+ Icon: ItemIcon
48
+ })
49
+ }
50
+ };
51
+ });
52
+ describe("WbContentReviewsSidebarItem", ()=>{
53
+ afterEach(()=>{
54
+ cleanup();
55
+ });
56
+ it("adds a Content Reviews item to the page list footer that opens the route", ()=>{
57
+ render(/*#__PURE__*/ react.createElement(WbContentReviewsSidebarItem, null));
58
+ expect(screen.getByTestId("footer").getAttribute("data-name")).toBe("contentReviews");
59
+ fireEvent.click(screen.getByRole("button", {
60
+ name: "Content Reviews"
61
+ }));
62
+ expect(goToRoute).toHaveBeenCalledTimes(1);
63
+ expect(goToRoute).toHaveBeenCalledWith(Routes.Pages.WorkflowStateList);
64
+ });
65
+ });
66
+
67
+ //# sourceMappingURL=WbContentReviewsSidebarItem.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/ContentReviews/WbContentReviewsSidebarItem.test.js","sources":["../../../src/Components/ContentReviews/WbContentReviewsSidebarItem.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { afterEach } from \"vitest\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { cleanup } from \"@testing-library/react\";\nimport { fireEvent } from \"@testing-library/react\";\nimport { render } from \"@testing-library/react\";\nimport { screen } from \"@testing-library/react\";\nimport { Routes } from \"~/routes.js\";\nimport { WbContentReviewsSidebarItem } from \"./WbContentReviewsSidebarItem.js\";\n\ninterface FooterStubProps {\n name: string;\n element: React.ReactElement;\n}\n\ninterface SidebarItemStubProps {\n text: string;\n onClick: () => void;\n}\n\nconst goToRoute = vi.hoisted(() => vi.fn());\n\nvi.mock(\"@webiny/icons/work_outline.svg\", () => {\n return { ReactComponent: () => null };\n});\n\nvi.mock(\"@webiny/app-admin\", async importOriginal => {\n const actual = await importOriginal<typeof import(\"@webiny/app-admin\")>();\n return {\n ...actual,\n useRouter: () => {\n return { goToRoute };\n }\n };\n});\n\nvi.mock(\"@webiny/app-website-builder\", async () => {\n const React = await import(\"react\");\n const Footer = (props: FooterStubProps) => {\n return React.createElement(\n \"div\",\n { \"data-testid\": \"footer\", \"data-name\": props.name },\n props.element\n );\n };\n return { PageListConfig: { Browser: { Sidebar: { Footer } } } };\n});\n\nvi.mock(\"@webiny/admin-ui\", async importOriginal => {\n const actual = await importOriginal<typeof import(\"@webiny/admin-ui\")>();\n const React = await import(\"react\");\n const Item = (props: SidebarItemStubProps) => {\n return React.createElement(\"button\", { onClick: props.onClick }, props.text);\n };\n const ItemIcon = () => React.createElement(\"span\");\n return {\n ...actual,\n Sidebar: { ...actual.Sidebar, Item: Object.assign(Item, { Icon: ItemIcon }) }\n };\n});\n\ndescribe(\"WbContentReviewsSidebarItem\", () => {\n afterEach(() => {\n cleanup();\n });\n\n it(\"adds a Content Reviews item to the page list footer that opens the route\", () => {\n render(<WbContentReviewsSidebarItem />);\n\n expect(screen.getByTestId(\"footer\").getAttribute(\"data-name\")).toBe(\"contentReviews\");\n fireEvent.click(screen.getByRole(\"button\", { name: \"Content Reviews\" }));\n\n expect(goToRoute).toHaveBeenCalledTimes(1);\n expect(goToRoute).toHaveBeenCalledWith(Routes.Pages.WorkflowStateList);\n });\n});\n"],"names":["goToRoute","vi","importOriginal","actual","React","Footer","props","Item","ItemIcon","Object","describe","afterEach","cleanup","it","render","WbContentReviewsSidebarItem","expect","screen","fireEvent","Routes"],"mappings":";;;;;AAuBA,MAAMA,YAAYC,GAAG,OAAO,CAAC,IAAMA,GAAG,EAAE;AAExCA,GAAG,IAAI,CAAC,kCAAkC,IAC/B;QAAE,gBAAgB,IAAM;IAAK;AAGxCA,GAAG,IAAI,CAAC,qBAAqB,OAAMC;IAC/B,MAAMC,SAAS,MAAMD;IACrB,OAAO;QACH,GAAGC,MAAM;QACT,WAAW,IACA;gBAAEH,WAAAA;YAAU;IAE3B;AACJ;AAEAC,GAAG,IAAI,CAAC,+BAA+B;IACnC,MAAMG,QAAQ,MAAM,MAAM,CAAC;IAC3B,MAAMC,SAAS,CAACC,QACLF,MAAM,aAAa,CACtB,OACA;YAAE,eAAe;YAAU,aAAaE,MAAM,IAAI;QAAC,GACnDA,MAAM,OAAO;IAGrB,OAAO;QAAE,gBAAgB;YAAE,SAAS;gBAAE,SAAS;oBAAED;gBAAO;YAAE;QAAE;IAAE;AAClE;AAEAJ,GAAG,IAAI,CAAC,oBAAoB,OAAMC;IAC9B,MAAMC,SAAS,MAAMD;IACrB,MAAME,QAAQ,MAAM,MAAM,CAAC;IAC3B,MAAMG,OAAO,CAACD,QACHF,MAAM,aAAa,CAAC,UAAU;YAAE,SAASE,MAAM,OAAO;QAAC,GAAGA,MAAM,IAAI;IAE/E,MAAME,WAAW,IAAMJ,MAAM,aAAa,CAAC;IAC3C,OAAO;QACH,GAAGD,MAAM;QACT,SAAS;YAAE,GAAGA,OAAO,OAAO;YAAE,MAAMM,OAAO,MAAM,CAACF,MAAM;gBAAE,MAAMC;YAAS;QAAG;IAChF;AACJ;AAEAE,SAAS,+BAA+B;IACpCC,UAAU;QACNC;IACJ;IAEAC,GAAG,4EAA4E;QAC3EC,OAAO,WAADA,GAAC,oBAACC,6BAA2BA;QAEnCC,OAAOC,OAAO,WAAW,CAAC,UAAU,YAAY,CAAC,cAAc,IAAI,CAAC;QACpEC,UAAU,KAAK,CAACD,OAAO,SAAS,CAAC,UAAU;YAAE,MAAM;QAAkB;QAErED,OAAOhB,WAAW,qBAAqB,CAAC;QACxCgB,OAAOhB,WAAW,oBAAoB,CAACmB,OAAO,KAAK,CAAC,iBAAiB;IACzE;AACJ"}
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ import type { TargetReviewPresenter } from "@webiny/app-workflows/review/presentation/targetReview/abstractions.js";
3
+ export interface DisabledPublishButtonProps {
4
+ presenter: TargetReviewPresenter.Interface;
5
+ }
6
+ export declare const DisabledPublishButton: ({ presenter }: DisabledPublishButtonProps) => React.JSX.Element;
@@ -0,0 +1,17 @@
1
+ import react from "react";
2
+ import { Button } from "@webiny/admin-ui";
3
+ import { ReviewTooltip } from "@webiny/app-workflows/review/presentation/targetReview/components/ReviewTooltip.js";
4
+ import { ReactComponent } from "@webiny/icons/publish.svg";
5
+ const DisabledPublishButton = ({ presenter })=>/*#__PURE__*/ react.createElement(ReviewTooltip, {
6
+ presenter: presenter
7
+ }, (describedBy)=>/*#__PURE__*/ react.createElement(Button, {
8
+ type: "button",
9
+ variant: "primary",
10
+ text: "Publish",
11
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
12
+ "aria-disabled": "true",
13
+ "aria-describedby": describedBy
14
+ }));
15
+ export { DisabledPublishButton };
16
+
17
+ //# sourceMappingURL=DisabledPublishButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/PageEditor/DisabledPublishButton.js","sources":["../../../src/Components/PageEditor/DisabledPublishButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { Button } from \"@webiny/admin-ui\";\nimport type { TargetReviewPresenter } from \"@webiny/app-workflows/review/presentation/targetReview/abstractions.js\";\nimport { ReviewTooltip } from \"@webiny/app-workflows/review/presentation/targetReview/components/ReviewTooltip.js\";\nimport { ReactComponent as PublishIcon } from \"@webiny/icons/publish.svg\";\n\nexport interface DisabledPublishButtonProps {\n presenter: TargetReviewPresenter.Interface;\n}\n\n/*\n * A disabled Publish that stays focusable (QBZ-36): `aria-disabled` instead of the `disabled`\n * attribute and no click handler. The shared `ReviewTooltip` gives it the reason on hover and\n * focus and through `aria-describedby`.\n */\nexport const DisabledPublishButton = ({ presenter }: DisabledPublishButtonProps) => {\n return (\n <ReviewTooltip presenter={presenter}>\n {describedBy => (\n <Button\n type={\"button\"}\n variant={\"primary\"}\n text={\"Publish\"}\n icon={<PublishIcon />}\n aria-disabled={\"true\"}\n aria-describedby={describedBy}\n />\n )}\n </ReviewTooltip>\n );\n};\n"],"names":["DisabledPublishButton","presenter","ReviewTooltip","describedBy","Button","PublishIcon"],"mappings":";;;;AAeO,MAAMA,wBAAwB,CAAC,EAAEC,SAAS,EAA8B,GACpE,WAAP,GACI,oBAACC,eAAaA;QAAC,WAAWD;OACrBE,CAAAA,cAAAA,WAAAA,GACG,oBAACC,QAAMA;YACH,MAAM;YACN,SAAS;YACT,MAAM;YACN,oBAAM,oBAACC,gBAAWA;YAClB,iBAAe;YACf,oBAAkBF"}
@@ -0,0 +1,67 @@
1
+ import react from "react";
2
+ import { cleanup, fireEvent, render, screen } from "@testing-library/react";
3
+ import { afterEach, describe, expect, it, vi } from "vitest";
4
+ import { createFakeSession } from "../../testing/createFakeSession.js";
5
+ import { DisabledPublishButton } from "./DisabledPublishButton.js";
6
+ vi.mock("@webiny/icons/publish.svg", ()=>({
7
+ ReactComponent: ()=>null
8
+ }));
9
+ vi.mock("@webiny/app-workflows/review/presentation/targetReview/components/ReviewTooltip.js", async ()=>{
10
+ const React = await import("react");
11
+ const ReviewTooltip = (props)=>{
12
+ const reason = props.presenter.vm.publishDisabledReason ?? "";
13
+ return React.createElement("span", {
14
+ "data-testid": "review-tooltip",
15
+ "data-reason": reason
16
+ }, props.children("tooltip-description"));
17
+ };
18
+ return {
19
+ ReviewTooltip
20
+ };
21
+ });
22
+ describe("DisabledPublishButton", ()=>{
23
+ afterEach(()=>{
24
+ cleanup();
25
+ });
26
+ it("stays focusable: aria-disabled, never the disabled attribute", ()=>{
27
+ const { presenter } = createFakeSession("none");
28
+ render(/*#__PURE__*/ react.createElement(DisabledPublishButton, {
29
+ presenter: presenter
30
+ }));
31
+ const button = screen.getByRole("button", {
32
+ name: "Publish"
33
+ });
34
+ expect(button.getAttribute("aria-disabled")).toBe("true");
35
+ expect(button.hasAttribute("disabled")).toBe(false);
36
+ expect(button.getAttribute("aria-describedby")).toBe("tooltip-description");
37
+ });
38
+ it("is wrapped in the shared review tooltip of the same presenter", ()=>{
39
+ const { presenter } = createFakeSession("none");
40
+ render(/*#__PURE__*/ react.createElement(DisabledPublishButton, {
41
+ presenter: presenter
42
+ }));
43
+ const button = screen.getByRole("button", {
44
+ name: "Publish"
45
+ });
46
+ const tooltip = button.closest("[data-testid='review-tooltip']");
47
+ const reason = presenter.vm.publishDisabledReason;
48
+ expect(reason).not.toBeNull();
49
+ expect(tooltip?.getAttribute("data-reason")).toBe(reason);
50
+ });
51
+ it("does nothing when activated, not even a form submit", ()=>{
52
+ const { presenter } = createFakeSession("none");
53
+ const onSubmit = vi.fn();
54
+ render(/*#__PURE__*/ react.createElement("form", {
55
+ onSubmit: onSubmit
56
+ }, /*#__PURE__*/ react.createElement(DisabledPublishButton, {
57
+ presenter: presenter
58
+ })));
59
+ const button = screen.getByRole("button", {
60
+ name: "Publish"
61
+ });
62
+ fireEvent.click(button);
63
+ expect(onSubmit).not.toHaveBeenCalled();
64
+ });
65
+ });
66
+
67
+ //# sourceMappingURL=DisabledPublishButton.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/PageEditor/DisabledPublishButton.test.js","sources":["../../../src/Components/PageEditor/DisabledPublishButton.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { cleanup } from \"@testing-library/react\";\nimport { fireEvent } from \"@testing-library/react\";\nimport { render } from \"@testing-library/react\";\nimport { screen } from \"@testing-library/react\";\nimport { afterEach } from \"vitest\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { createFakeSession } from \"~/testing/createFakeSession.js\";\nimport { DisabledPublishButton } from \"./DisabledPublishButton.js\";\n\nvi.mock(\"@webiny/icons/publish.svg\", () => {\n return { ReactComponent: () => null };\n});\n\nvi.mock(\n \"@webiny/app-workflows/review/presentation/targetReview/components/ReviewTooltip.js\",\n async () => {\n const React = await import(\"react\");\n interface StubProps {\n presenter: { vm: { publishDisabledReason: string | null } };\n children: (describedBy: string) => React.ReactNode;\n }\n const ReviewTooltip = (props: StubProps) => {\n const reason = props.presenter.vm.publishDisabledReason ?? \"\";\n return React.createElement(\n \"span\",\n { \"data-testid\": \"review-tooltip\", \"data-reason\": reason },\n props.children(\"tooltip-description\")\n );\n };\n return { ReviewTooltip };\n }\n);\n\ndescribe(\"DisabledPublishButton\", () => {\n afterEach(() => {\n cleanup();\n });\n\n it(\"stays focusable: aria-disabled, never the disabled attribute\", () => {\n const { presenter } = createFakeSession(\"none\");\n\n render(<DisabledPublishButton presenter={presenter} />);\n\n const button = screen.getByRole(\"button\", { name: \"Publish\" });\n expect(button.getAttribute(\"aria-disabled\")).toBe(\"true\");\n expect(button.hasAttribute(\"disabled\")).toBe(false);\n expect(button.getAttribute(\"aria-describedby\")).toBe(\"tooltip-description\");\n });\n\n it(\"is wrapped in the shared review tooltip of the same presenter\", () => {\n const { presenter } = createFakeSession(\"none\");\n\n render(<DisabledPublishButton presenter={presenter} />);\n\n const button = screen.getByRole(\"button\", { name: \"Publish\" });\n const tooltip = button.closest(\"[data-testid='review-tooltip']\");\n const reason = presenter.vm.publishDisabledReason;\n expect(reason).not.toBeNull();\n expect(tooltip?.getAttribute(\"data-reason\")).toBe(reason);\n });\n\n it(\"does nothing when activated, not even a form submit\", () => {\n const { presenter } = createFakeSession(\"none\");\n const onSubmit = vi.fn();\n\n render(\n <form onSubmit={onSubmit}>\n <DisabledPublishButton presenter={presenter} />\n </form>\n );\n const button = screen.getByRole(\"button\", { name: \"Publish\" });\n fireEvent.click(button);\n\n expect(onSubmit).not.toHaveBeenCalled();\n });\n});\n"],"names":["vi","React","ReviewTooltip","props","reason","describe","afterEach","cleanup","it","presenter","createFakeSession","render","DisabledPublishButton","button","screen","expect","tooltip","onSubmit","fireEvent"],"mappings":";;;;;AAaAA,GAAG,IAAI,CAAC,6BAA6B,IAC1B;QAAE,gBAAgB,IAAM;IAAK;AAGxCA,GAAG,IAAI,CACH,sFACA;IACI,MAAMC,QAAQ,MAAM,MAAM,CAAC;IAK3B,MAAMC,gBAAgB,CAACC;QACnB,MAAMC,SAASD,MAAM,SAAS,CAAC,EAAE,CAAC,qBAAqB,IAAI;QAC3D,OAAOF,MAAM,aAAa,CACtB,QACA;YAAE,eAAe;YAAkB,eAAeG;QAAO,GACzDD,MAAM,QAAQ,CAAC;IAEvB;IACA,OAAO;QAAED;IAAc;AAC3B;AAGJG,SAAS,yBAAyB;IAC9BC,UAAU;QACNC;IACJ;IAEAC,GAAG,gEAAgE;QAC/D,MAAM,EAAEC,SAAS,EAAE,GAAGC,kBAAkB;QAExCC,OAAO,WAADA,GAAC,oBAACC,uBAAqBA;YAAC,WAAWH;;QAEzC,MAAMI,SAASC,OAAO,SAAS,CAAC,UAAU;YAAE,MAAM;QAAU;QAC5DC,OAAOF,OAAO,YAAY,CAAC,kBAAkB,IAAI,CAAC;QAClDE,OAAOF,OAAO,YAAY,CAAC,aAAa,IAAI,CAAC;QAC7CE,OAAOF,OAAO,YAAY,CAAC,qBAAqB,IAAI,CAAC;IACzD;IAEAL,GAAG,iEAAiE;QAChE,MAAM,EAAEC,SAAS,EAAE,GAAGC,kBAAkB;QAExCC,OAAO,WAADA,GAAC,oBAACC,uBAAqBA;YAAC,WAAWH;;QAEzC,MAAMI,SAASC,OAAO,SAAS,CAAC,UAAU;YAAE,MAAM;QAAU;QAC5D,MAAME,UAAUH,OAAO,OAAO,CAAC;QAC/B,MAAMT,SAASK,UAAU,EAAE,CAAC,qBAAqB;QACjDM,OAAOX,QAAQ,GAAG,CAAC,QAAQ;QAC3BW,OAAOC,SAAS,aAAa,gBAAgB,IAAI,CAACZ;IACtD;IAEAI,GAAG,uDAAuD;QACtD,MAAM,EAAEC,SAAS,EAAE,GAAGC,kBAAkB;QACxC,MAAMO,WAAWjB,GAAG,EAAE;QAEtBW,OAAO,WAADA,GACF,oBAAC;YAAK,UAAUM;yBACZ,oBAACL,uBAAqBA;YAAC,WAAWH;;QAG1C,MAAMI,SAASC,OAAO,SAAS,CAAC,UAAU;YAAE,MAAM;QAAU;QAC5DI,UAAU,KAAK,CAACL;QAEhBE,OAAOE,UAAU,GAAG,CAAC,gBAAgB;IACzC;AACJ"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const PageBasePublishDecorator: (props: unknown) => React.JSX.Element;
@@ -0,0 +1,23 @@
1
+ import react from "react";
2
+ import { useFeature } from "@webiny/app";
3
+ import { createReactiveComponent } from "@webiny/app-admin";
4
+ import { PageEditorConfig } from "@webiny/app-website-builder/presentation/pages/PageEditor/PageEditorConfig.js";
5
+ import { WbPageReviewFeature } from "../../features/editorReview/feature.js";
6
+ const { Ui: Ui } = PageEditorConfig;
7
+ const BasePublishGate = createReactiveComponent((props)=>{
8
+ const { session } = useFeature(WbPageReviewFeature);
9
+ if ("noWorkflow" === session.presenter.vm.status) return props.element ?? null;
10
+ return null;
11
+ });
12
+ const PageBasePublishDecorator = Ui.TopBar.Action.createDecorator((Original)=>function(props) {
13
+ if ("buttonPublish" === props.name) return /*#__PURE__*/ react.createElement(Original, {
14
+ ...props,
15
+ element: /*#__PURE__*/ react.createElement(BasePublishGate, {
16
+ element: props.element
17
+ })
18
+ });
19
+ return /*#__PURE__*/ react.createElement(Original, props);
20
+ });
21
+ export { PageBasePublishDecorator };
22
+
23
+ //# sourceMappingURL=PageBasePublishDecorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/PageEditor/PageBasePublishDecorator.js","sources":["../../../src/Components/PageEditor/PageBasePublishDecorator.tsx"],"sourcesContent":["import React from \"react\";\nimport { useFeature } from \"@webiny/app\";\nimport { createReactiveComponent } from \"@webiny/app-admin\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder/presentation/pages/PageEditor/PageEditorConfig.js\";\nimport { WbPageReviewFeature } from \"~/features/editorReview/feature.js\";\n\nconst { Ui } = PageEditorConfig;\n\ninterface BasePublishGateProps {\n element?: React.ReactElement | null;\n}\n\nconst BasePublishGate = createReactiveComponent((props: BasePublishGateProps) => {\n const { session } = useFeature(WbPageReviewFeature);\n\n if (session.presenter.vm.status === \"noWorkflow\") {\n return props.element ?? null;\n }\n\n return null;\n});\n\n/*\n * Hides the base Publish for every page of a namespace that has a workflow; the workflows Publish\n * (`buttonWorkflowPublish`) takes over there. The one decoration of `buttonPublish` (A78).\n */\nexport const PageBasePublishDecorator = Ui.TopBar.Action.createDecorator(Original => {\n return function PageBasePublishDecoratorAction(props) {\n if (props.name === \"buttonPublish\") {\n return <Original {...props} element={<BasePublishGate element={props.element} />} />;\n }\n return <Original {...props} />;\n };\n});\n"],"names":["Ui","PageEditorConfig","BasePublishGate","createReactiveComponent","props","session","useFeature","WbPageReviewFeature","PageBasePublishDecorator","Original"],"mappings":";;;;;AAMA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAMf,MAAMC,kBAAkBC,wBAAwB,CAACC;IAC7C,MAAM,EAAEC,OAAO,EAAE,GAAGC,WAAWC;IAE/B,IAAIF,AAAgC,iBAAhCA,QAAQ,SAAS,CAAC,EAAE,CAAC,MAAM,EAC3B,OAAOD,MAAM,OAAO,IAAI;IAG5B,OAAO;AACX;AAMO,MAAMI,2BAA2BR,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAACS,CAAAA,WAC9D,SAAwCL,KAAK;QAChD,IAAIA,AAAe,oBAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GAAO,oBAACK,UAAAA;YAAU,GAAGL,KAAK;YAAE,uBAAS,oBAACF,iBAAeA;gBAAC,SAASE,MAAM,OAAO;;;QAEhF,OAAO,WAAP,GAAO,oBAACK,UAAaL;IACzB"}
@@ -1,17 +1,18 @@
1
1
  import react from "react";
2
- import { PageEditorConfig } from "@webiny/app-website-builder";
3
- import { useWorkflowState } from "@webiny/app-workflows";
4
- import { observer } from "mobx-react-lite";
2
+ import { useFeature } from "@webiny/app";
3
+ import { createReactiveComponent } from "@webiny/app-admin";
4
+ import { PageEditorConfig } from "@webiny/app-website-builder/presentation/pages/PageEditor/PageEditorConfig.js";
5
+ import { WbPageReviewFeature } from "../../features/editorReview/feature.js";
5
6
  const { Ui: Ui } = PageEditorConfig;
6
- const WrappedAutoSave = observer((props)=>{
7
- const { presenter } = useWorkflowState();
8
- if (!presenter.vm.hasState) return props.element;
7
+ const AutoSaveGate = createReactiveComponent((props)=>{
8
+ const { session } = useFeature(WbPageReviewFeature);
9
+ if (session.presenter.vm.allowsEditing) return props.element ?? null;
9
10
  return null;
10
11
  });
11
12
  const PageEditorAutoSave = Ui.TopBar.Element.createDecorator((Original)=>function(props) {
12
13
  if ("autoSave" === props.name) return /*#__PURE__*/ react.createElement(Original, {
13
14
  ...props,
14
- element: /*#__PURE__*/ react.createElement(WrappedAutoSave, {
15
+ element: /*#__PURE__*/ react.createElement(AutoSaveGate, {
15
16
  element: props.element
16
17
  })
17
18
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Components/PageEditor/PageEditorAutoSave.js","sources":["../../../src/Components/PageEditor/PageEditorAutoSave.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\n\nconst { Ui } = PageEditorConfig;\n\ninterface IWrappedAutoSave {\n element?: React.ReactElement | null;\n}\nconst WrappedAutoSave = observer((props: IWrappedAutoSave) => {\n const { presenter } = useWorkflowState();\n /**\n * Autosave should work only when the page does not have a workflow state assigned.\n */\n if (!presenter.vm.hasState) {\n return props.element;\n }\n\n return null;\n});\n\nexport const PageEditorAutoSave = Ui.TopBar.Element.createDecorator(Original => {\n return function PageEditorAutoSaveDecorated(props) {\n if (props.name === \"autoSave\") {\n return <Original {...props} element={<WrappedAutoSave element={props.element} />} />;\n }\n return <Original {...props} />;\n };\n});\n"],"names":["Ui","PageEditorConfig","WrappedAutoSave","observer","props","presenter","useWorkflowState","PageEditorAutoSave","Original"],"mappings":";;;;AAKA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAKf,MAAMC,kBAAkBC,SAAS,CAACC;IAC9B,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAItB,IAAI,CAACD,UAAU,EAAE,CAAC,QAAQ,EACtB,OAAOD,MAAM,OAAO;IAGxB,OAAO;AACX;AAEO,MAAMG,qBAAqBP,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAACQ,CAAAA,WACzD,SAAqCJ,KAAK;QAC7C,IAAIA,AAAe,eAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GAAO,oBAACI,UAAAA;YAAU,GAAGJ,KAAK;YAAE,uBAAS,oBAACF,iBAAeA;gBAAC,SAASE,MAAM,OAAO;;;QAEhF,OAAO,WAAP,GAAO,oBAACI,UAAaJ;IACzB"}
1
+ {"version":3,"file":"Components/PageEditor/PageEditorAutoSave.js","sources":["../../../src/Components/PageEditor/PageEditorAutoSave.tsx"],"sourcesContent":["import React from \"react\";\nimport { useFeature } from \"@webiny/app\";\nimport { createReactiveComponent } from \"@webiny/app-admin\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder/presentation/pages/PageEditor/PageEditorConfig.js\";\nimport { WbPageReviewFeature } from \"~/features/editorReview/feature.js\";\n\nconst { Ui } = PageEditorConfig;\n\ninterface AutoSaveGateProps {\n element?: React.ReactElement | null;\n}\n\nconst AutoSaveGate = createReactiveComponent((props: AutoSaveGateProps) => {\n const { session } = useFeature(WbPageReviewFeature);\n\n /*\n * Autosave runs only while editing is allowed: never while a review exists and never while the\n * review status is loading or failed.\n */\n if (session.presenter.vm.allowsEditing) {\n return props.element ?? null;\n }\n\n return null;\n});\n\nexport const PageEditorAutoSave = Ui.TopBar.Element.createDecorator(Original => {\n return function PageEditorAutoSaveDecorated(props) {\n if (props.name === \"autoSave\") {\n return <Original {...props} element={<AutoSaveGate element={props.element} />} />;\n }\n return <Original {...props} />;\n };\n});\n"],"names":["Ui","PageEditorConfig","AutoSaveGate","createReactiveComponent","props","session","useFeature","WbPageReviewFeature","PageEditorAutoSave","Original"],"mappings":";;;;;AAMA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAMf,MAAMC,eAAeC,wBAAwB,CAACC;IAC1C,MAAM,EAAEC,OAAO,EAAE,GAAGC,WAAWC;IAM/B,IAAIF,QAAQ,SAAS,CAAC,EAAE,CAAC,aAAa,EAClC,OAAOD,MAAM,OAAO,IAAI;IAG5B,OAAO;AACX;AAEO,MAAMI,qBAAqBR,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAACS,CAAAA,WACzD,SAAqCL,KAAK;QAC7C,IAAIA,AAAe,eAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GAAO,oBAACK,UAAAA;YAAU,GAAGL,KAAK;YAAE,uBAAS,oBAACF,cAAYA;gBAAC,SAASE,MAAM,OAAO;;;QAE7E,OAAO,WAAP,GAAO,oBAACK,UAAaL;IACzB"}
@@ -0,0 +1 @@
1
+ export {};