@strapi/content-manager 0.0.0-experimental.ca5f02ef2ec166e219546983049c0543bed92f8d → 0.0.0-experimental.cad2fba5593c9ceddfc264fcecd9313a7f866d1a

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 (351) hide show
  1. package/dist/admin/components/ComponentIcon.js +3 -0
  2. package/dist/admin/components/ComponentIcon.js.map +1 -1
  3. package/dist/admin/components/ComponentIcon.mjs +3 -0
  4. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/EditFieldForm.js +1 -1
  6. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs +1 -1
  8. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  9. package/dist/admin/components/ConfigurationForm/Fields.js +4 -1
  10. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  11. package/dist/admin/components/ConfigurationForm/Fields.mjs +5 -2
  12. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  13. package/dist/admin/components/ConfigurationForm/Form.js +1 -1
  14. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  15. package/dist/admin/components/ConfigurationForm/Form.mjs +3 -3
  16. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  17. package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
  18. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
  20. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  21. package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
  22. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  23. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
  24. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  25. package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
  26. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  27. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
  28. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  29. package/dist/admin/components/LeftMenu.js +91 -51
  30. package/dist/admin/components/LeftMenu.js.map +1 -1
  31. package/dist/admin/components/LeftMenu.mjs +93 -53
  32. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  33. package/dist/admin/components/RelativeTime.js.map +1 -1
  34. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  35. package/dist/admin/components/Widgets.js +37 -14
  36. package/dist/admin/components/Widgets.js.map +1 -1
  37. package/dist/admin/components/Widgets.mjs +38 -15
  38. package/dist/admin/components/Widgets.mjs.map +1 -1
  39. package/dist/admin/content-manager.js.map +1 -1
  40. package/dist/admin/content-manager.mjs.map +1 -1
  41. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  42. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  43. package/dist/admin/history/components/VersionHeader.js +1 -0
  44. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  45. package/dist/admin/history/components/VersionHeader.mjs +1 -0
  46. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  47. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  48. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  49. package/dist/admin/history/components/VersionsList.js +1 -1
  50. package/dist/admin/history/components/VersionsList.js.map +1 -1
  51. package/dist/admin/history/components/VersionsList.mjs +1 -1
  52. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  53. package/dist/admin/history/pages/History.js +7 -7
  54. package/dist/admin/history/pages/History.js.map +1 -1
  55. package/dist/admin/history/pages/History.mjs +7 -7
  56. package/dist/admin/history/pages/History.mjs.map +1 -1
  57. package/dist/admin/history/services/historyVersion.js.map +1 -1
  58. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  59. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  60. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  61. package/dist/admin/hooks/useDocumentActions.js +24 -5
  62. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  63. package/dist/admin/hooks/useDocumentActions.mjs +24 -5
  64. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  65. package/dist/admin/index.js.map +1 -1
  66. package/dist/admin/index.mjs.map +1 -1
  67. package/dist/admin/layout.js +27 -6
  68. package/dist/admin/layout.js.map +1 -1
  69. package/dist/admin/layout.mjs +28 -7
  70. package/dist/admin/layout.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/EditViewPage.js +16 -11
  72. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  73. package/dist/admin/pages/EditView/EditViewPage.mjs +17 -12
  74. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/Blocker.js +4 -22
  76. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/Blocker.mjs +4 -22
  78. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/DocumentActions.js +27 -4
  80. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  81. package/dist/admin/pages/EditView/components/DocumentActions.mjs +28 -5
  82. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  84. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  86. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
  88. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
  90. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  92. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  94. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  96. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -2
  98. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -2
  100. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  102. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
  104. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
  106. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  108. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +3 -3
  110. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +4 -4
  112. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
  114. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
  116. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +4 -3
  118. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  119. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +5 -4
  120. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  121. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  122. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  123. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
  124. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  125. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
  126. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  127. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +2 -1
  128. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  129. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +3 -2
  130. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
  132. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
  134. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  136. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +2 -2
  138. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  139. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +2 -2
  140. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  142. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  143. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  144. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  145. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  146. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  147. package/dist/admin/pages/EditView/components/FormLayout.js +13 -8
  148. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  149. package/dist/admin/pages/EditView/components/FormLayout.mjs +14 -8
  150. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  151. package/dist/admin/pages/EditView/components/Header.js +92 -27
  152. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  153. package/dist/admin/pages/EditView/components/Header.mjs +94 -29
  154. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  155. package/dist/admin/pages/EditView/components/InputRenderer.js +48 -62
  156. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  157. package/dist/admin/pages/EditView/components/InputRenderer.mjs +49 -63
  158. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  159. package/dist/admin/pages/EditView/utils/data.js +34 -9
  160. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  161. package/dist/admin/pages/EditView/utils/data.mjs +34 -9
  162. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  163. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
  164. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  165. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
  166. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  167. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  168. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  169. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  170. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  171. package/dist/admin/pages/ListView/ListViewPage.js +8 -10
  172. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  173. package/dist/admin/pages/ListView/ListViewPage.mjs +8 -10
  174. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  175. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  176. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  177. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +12 -2
  178. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  179. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +12 -2
  180. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  181. package/dist/admin/pages/ListView/components/Filters.js +4 -1
  182. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  183. package/dist/admin/pages/ListView/components/Filters.mjs +4 -1
  184. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  185. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  186. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  187. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  188. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  189. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
  190. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  191. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
  192. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  193. package/dist/admin/preview/components/InputPopover.js +189 -0
  194. package/dist/admin/preview/components/InputPopover.js.map +1 -0
  195. package/dist/admin/preview/components/InputPopover.mjs +167 -0
  196. package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
  197. package/dist/admin/preview/components/PreviewHeader.js +0 -1
  198. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  199. package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
  200. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  201. package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
  202. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
  203. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
  204. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
  205. package/dist/admin/preview/pages/Preview.js +34 -92
  206. package/dist/admin/preview/pages/Preview.js.map +1 -1
  207. package/dist/admin/preview/pages/Preview.mjs +34 -92
  208. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  209. package/dist/admin/preview/services/preview.js.map +1 -1
  210. package/dist/admin/preview/services/preview.mjs.map +1 -1
  211. package/dist/admin/preview/utils/constants.js +51 -4
  212. package/dist/admin/preview/utils/constants.js.map +1 -1
  213. package/dist/admin/preview/utils/constants.mjs +48 -3
  214. package/dist/admin/preview/utils/constants.mjs.map +1 -1
  215. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  216. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  217. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  218. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  219. package/dist/admin/preview/utils/getSendMessage.js +22 -0
  220. package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
  221. package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
  222. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
  223. package/dist/admin/preview/utils/previewScript.js +534 -0
  224. package/dist/admin/preview/utils/previewScript.js.map +1 -0
  225. package/dist/admin/preview/utils/previewScript.mjs +532 -0
  226. package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
  227. package/dist/admin/router.js.map +1 -1
  228. package/dist/admin/router.mjs.map +1 -1
  229. package/dist/admin/services/api.js +3 -1
  230. package/dist/admin/services/api.js.map +1 -1
  231. package/dist/admin/services/api.mjs +3 -1
  232. package/dist/admin/services/api.mjs.map +1 -1
  233. package/dist/admin/services/documents.js +39 -13
  234. package/dist/admin/services/documents.js.map +1 -1
  235. package/dist/admin/services/documents.mjs +39 -13
  236. package/dist/admin/services/documents.mjs.map +1 -1
  237. package/dist/admin/services/homepage.js +2 -11
  238. package/dist/admin/services/homepage.js.map +1 -1
  239. package/dist/admin/services/homepage.mjs +3 -11
  240. package/dist/admin/services/homepage.mjs.map +1 -1
  241. package/dist/admin/services/relations.js.map +1 -1
  242. package/dist/admin/services/relations.mjs.map +1 -1
  243. package/dist/admin/src/components/LeftMenu.d.ts +3 -1
  244. package/dist/admin/src/components/Widgets.d.ts +6 -2
  245. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  246. package/dist/admin/src/pages/EditView/components/Blocker.d.ts +3 -0
  247. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  248. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +0 -3
  249. package/dist/admin/src/pages/EditView/components/Header.d.ts +15 -0
  250. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
  251. package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
  252. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
  253. package/dist/admin/src/preview/pages/Preview.d.ts +10 -1
  254. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  255. package/dist/admin/src/preview/utils/constants.d.ts +52 -4
  256. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  257. package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
  258. package/dist/admin/src/preview/utils/{script.d.ts → previewScript.d.ts} +7 -6
  259. package/dist/admin/src/services/api.d.ts +1 -1
  260. package/dist/admin/src/services/components.d.ts +2 -2
  261. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  262. package/dist/admin/src/services/documents.d.ts +16 -16
  263. package/dist/admin/src/services/homepage.d.ts +2 -6
  264. package/dist/admin/src/services/init.d.ts +1 -1
  265. package/dist/admin/src/services/relations.d.ts +2 -2
  266. package/dist/admin/src/services/uid.d.ts +3 -3
  267. package/dist/admin/src/utils/api.d.ts +1 -1
  268. package/dist/admin/translations/en.json.js +6 -0
  269. package/dist/admin/translations/en.json.js.map +1 -1
  270. package/dist/admin/translations/en.json.mjs +6 -0
  271. package/dist/admin/translations/en.json.mjs.map +1 -1
  272. package/dist/admin/translations/es.json.js +1 -0
  273. package/dist/admin/translations/es.json.js.map +1 -1
  274. package/dist/admin/translations/es.json.mjs +1 -0
  275. package/dist/admin/translations/es.json.mjs.map +1 -1
  276. package/dist/admin/translations/fr.json.js +2 -1
  277. package/dist/admin/translations/fr.json.js.map +1 -1
  278. package/dist/admin/translations/fr.json.mjs +2 -1
  279. package/dist/admin/translations/fr.json.mjs.map +1 -1
  280. package/dist/admin/utils/api.js +1 -1
  281. package/dist/admin/utils/api.js.map +1 -1
  282. package/dist/admin/utils/api.mjs +1 -1
  283. package/dist/admin/utils/api.mjs.map +1 -1
  284. package/dist/admin/utils/translations.js.map +1 -1
  285. package/dist/admin/utils/translations.mjs.map +1 -1
  286. package/dist/admin/utils/urls.js.map +1 -1
  287. package/dist/admin/utils/urls.mjs.map +1 -1
  288. package/dist/admin/utils/users.js.map +1 -1
  289. package/dist/admin/utils/users.mjs.map +1 -1
  290. package/dist/admin/utils/validation.js.map +1 -1
  291. package/dist/admin/utils/validation.mjs.map +1 -1
  292. package/dist/server/controllers/collection-types.js +2 -1
  293. package/dist/server/controllers/collection-types.js.map +1 -1
  294. package/dist/server/controllers/collection-types.mjs +2 -1
  295. package/dist/server/controllers/collection-types.mjs.map +1 -1
  296. package/dist/server/controllers/relations.js +6 -4
  297. package/dist/server/controllers/relations.js.map +1 -1
  298. package/dist/server/controllers/relations.mjs +6 -4
  299. package/dist/server/controllers/relations.mjs.map +1 -1
  300. package/dist/server/controllers/single-types.js +3 -1
  301. package/dist/server/controllers/single-types.js.map +1 -1
  302. package/dist/server/controllers/single-types.mjs +3 -1
  303. package/dist/server/controllers/single-types.mjs.map +1 -1
  304. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  305. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  306. package/dist/server/controllers/validation/index.js.map +1 -1
  307. package/dist/server/controllers/validation/index.mjs.map +1 -1
  308. package/dist/server/history/utils.js.map +1 -1
  309. package/dist/server/history/utils.mjs.map +1 -1
  310. package/dist/server/homepage/services/homepage.js +2 -2
  311. package/dist/server/homepage/services/homepage.js.map +1 -1
  312. package/dist/server/homepage/services/homepage.mjs +2 -2
  313. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  314. package/dist/server/middlewares/routing.js.map +1 -1
  315. package/dist/server/middlewares/routing.mjs.map +1 -1
  316. package/dist/server/preview/services/preview-config.js +8 -33
  317. package/dist/server/preview/services/preview-config.js.map +1 -1
  318. package/dist/server/preview/services/preview-config.mjs +9 -34
  319. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  320. package/dist/server/preview/services/preview.js.map +1 -1
  321. package/dist/server/preview/services/preview.mjs.map +1 -1
  322. package/dist/server/preview/utils.js.map +1 -1
  323. package/dist/server/preview/utils.mjs.map +1 -1
  324. package/dist/server/services/configuration.js.map +1 -1
  325. package/dist/server/services/configuration.mjs.map +1 -1
  326. package/dist/server/services/document-metadata.js +23 -1
  327. package/dist/server/services/document-metadata.js.map +1 -1
  328. package/dist/server/services/document-metadata.mjs +23 -1
  329. package/dist/server/services/document-metadata.mjs.map +1 -1
  330. package/dist/server/services/field-sizes.js.map +1 -1
  331. package/dist/server/services/field-sizes.mjs.map +1 -1
  332. package/dist/server/services/uid.js.map +1 -1
  333. package/dist/server/services/uid.mjs.map +1 -1
  334. package/dist/server/services/utils/store.js.map +1 -1
  335. package/dist/server/services/utils/store.mjs.map +1 -1
  336. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  337. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  338. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  339. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  340. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  341. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  342. package/package.json +7 -7
  343. package/dist/admin/preview/utils/script.js +0 -300
  344. package/dist/admin/preview/utils/script.js.map +0 -1
  345. package/dist/admin/preview/utils/script.mjs +0 -298
  346. package/dist/admin/preview/utils/script.mjs.map +0 -1
  347. package/dist/admin/preview/utils/usePreviewInputManager.js +0 -93
  348. package/dist/admin/preview/utils/usePreviewInputManager.js.map +0 -1
  349. package/dist/admin/preview/utils/usePreviewInputManager.mjs +0 -72
  350. package/dist/admin/preview/utils/usePreviewInputManager.mjs.map +0 -1
  351. package/dist/admin/src/preview/utils/usePreviewInputManager.d.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewHeader.mjs","sources":["../../../../admin/src/preview/components/PreviewHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useClipboard,\n useHistory,\n useNotification,\n useQueryParams,\n useStrapiApp,\n} from '@strapi/admin/strapi-admin';\nimport { IconButton, Tabs, Typography, Flex } from '@strapi/design-system';\nimport { Cross, Link as LinkIcon } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, type To } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { InjectionZone } from '../../components/InjectionZone';\nimport { DocumentActionButton } from '../../pages/EditView/components/DocumentActions';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDocumentStatus } from '../../pages/EditView/EditViewPage';\nimport { usePreviewContext } from '../pages/Preview';\n\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * ClosePreviewButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst ClosePreviewButton = () => {\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { formatMessage } = useIntl();\n\n const canGoBack = useHistory('BackButton', (state) => state.canGoBack);\n const goBack = useHistory('BackButton', (state) => state.goBack);\n const history = useHistory('BackButton', (state) => state.history);\n const locationIndex = useHistory('BackButton', (state) => state.currentLocationIndex);\n\n /**\n * Get the link destination from the history.\n * Rely on a fallback (the parent edit view page) if there's no page to go back .\n */\n const historyTo = canGoBack ? history.at(locationIndex - 2) : undefined;\n const fallback = {\n pathname: '..',\n search: stringify(query, { encode: false }),\n } satisfies To;\n const toWithFallback = historyTo ?? fallback;\n\n const handleClick = (e: React.MouseEvent) => {\n if (canGoBack) {\n // Prevent normal link behavior, go back in the history stack instead\n e.preventDefault();\n goBack();\n return;\n }\n\n // Otherwise rely on native link behavior to go back to the edit view. We don't use navigate()\n // here in order to get the relative=\"path\" functionality from the Link component.\n };\n\n return (\n <IconButton\n variant=\"ghost\"\n tag={Link}\n relative=\"path\"\n to={toWithFallback}\n onClick={handleClick}\n label={formatMessage({\n id: 'content-manager.preview.header.close',\n defaultMessage: 'Close preview',\n })}\n >\n <Cross />\n </IconButton>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\nconst Status = () => {\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n if (!hasDraftAndPublished) {\n return null;\n }\n\n const status = getDocumentStatus(document, meta);\n\n return <DocumentStatus status={status} size=\"XS\" />;\n};\n\nconst PreviewTabs = () => {\n const { formatMessage } = useIntl();\n\n // URL query params\n const [{ query }, setQuery] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublish = schema?.options?.draftAndPublish ?? false;\n const documentStatus = getDocumentStatus(document, meta);\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n if (!hasDraftAndPublish) {\n return null;\n }\n\n return (\n <Tabs.Root variant=\"simple\" value={query.status || 'draft'} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'preview.tabs.label',\n defaultMessage: 'Document status',\n })}\n >\n <StatusTab value=\"draft\">\n {formatMessage({\n id: 'content-manager.containers.List.draft',\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab value=\"published\" disabled={documentStatus === 'draft'}>\n {formatMessage({\n id: 'content-manager.containers.List.published',\n defaultMessage: 'published',\n })}\n </StatusTab>\n </Tabs.List>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst PreviewHeader = () => {\n const title = usePreviewContext('PreviewHeader', (state) => state.title);\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const onPreview = usePreviewContext('PreviewHeader', (state) => state.onPreview);\n const plugins = useStrapiApp('PreviewHeader', (state) => state.plugins);\n\n const [{ query }] = useQueryParams<{\n status?: 'draft' | 'published';\n }>();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n\n const handleCopyLink = () => {\n copy(window.location.href);\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.preview.copy.success',\n defaultMessage: 'Copied preview link',\n }),\n type: 'success',\n });\n };\n\n const hasDraftAndPublish = schema.options?.draftAndPublish ?? false;\n const documentActionProps = {\n activeTab: query.status ?? null,\n collectionType: schema.kind === 'collectionType' ? 'collection-types' : 'single-types',\n model: schema.uid,\n documentId: schema.kind === 'collectionType' ? document.documentId : undefined,\n document,\n meta,\n } satisfies DocumentActionProps;\n\n return (\n <Flex height=\"48px\" gap={4} background=\"neutral0\" borderColor=\"neutral150\" tag=\"header\">\n {/* Title and status */}\n <TitleContainer height=\"100%\" paddingLeft={2} paddingRight={4}>\n <ClosePreviewButton />\n <PreviewTitle\n tag=\"h1\"\n title={title}\n maxWidth=\"200px\"\n fontSize={2}\n paddingLeft={2}\n paddingRight={3}\n fontWeight={600}\n >\n {title}\n </PreviewTitle>\n <Status />\n </TitleContainer>\n\n {/* Tabs and actions */}\n <Flex\n flex={1}\n paddingRight={2}\n gap={2}\n justifyContent={hasDraftAndPublish ? 'space-between' : 'flex-end'}\n >\n <Flex flex=\"1 1 70%\">\n <PreviewTabs />\n </Flex>\n <Flex gap={2}>\n <IconButton\n type=\"button\"\n label={formatMessage({\n id: 'preview.copy.label',\n defaultMessage: 'Copy preview link',\n })}\n onClick={handleCopyLink}\n >\n <LinkIcon />\n </IconButton>\n <InjectionZone area=\"preview.actions\" />\n <DescriptionComponentRenderer\n props={documentActionProps}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('preview')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) =>\n [action.position].flat().includes('preview')\n );\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n\nconst PreviewTitle = styled(Typography)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\nconst TitleContainer = styled(Flex)`\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nexport { PreviewHeader };\n"],"names":["ClosePreviewButton","query","useQueryParams","formatMessage","useIntl","canGoBack","useHistory","state","goBack","history","locationIndex","currentLocationIndex","historyTo","at","undefined","fallback","pathname","search","stringify","encode","toWithFallback","handleClick","e","preventDefault","_jsx","IconButton","variant","tag","Link","relative","to","onClick","label","id","defaultMessage","Cross","Status","document","usePreviewContext","schema","meta","hasDraftAndPublished","options","draftAndPublish","status","getDocumentStatus","DocumentStatus","size","PreviewTabs","setQuery","hasDraftAndPublish","documentStatus","handleTabChange","Tabs","Root","value","onValueChange","_jsxs","List","aria-label","StatusTab","disabled","PreviewHeader","title","onPreview","plugins","useStrapiApp","toggleNotification","useNotification","copy","useClipboard","handleCopyLink","window","location","href","message","type","documentActionProps","activeTab","collectionType","kind","model","uid","documentId","Flex","height","gap","background","borderColor","TitleContainer","paddingLeft","paddingRight","PreviewTitle","maxWidth","fontSize","fontWeight","flex","justifyContent","LinkIcon","InjectionZone","area","DescriptionComponentRenderer","props","descriptions","apis","getDocumentActions","actions","filteredActions","filter","action","position","flat","includes","primaryAction","secondaryAction","_Fragment","DocumentActionButton","styled","Typography","Trigger","theme","colors","neutral150"],"mappings":"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"}
1
+ {"version":3,"file":"PreviewHeader.mjs","sources":["../../../../admin/src/preview/components/PreviewHeader.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useClipboard,\n useHistory,\n useNotification,\n useQueryParams,\n useStrapiApp,\n} from '@strapi/admin/strapi-admin';\nimport { IconButton, Tabs, Typography, Flex } from '@strapi/design-system';\nimport { Cross, Link as LinkIcon } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, type To } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { InjectionZone } from '../../components/InjectionZone';\nimport { DocumentActionButton } from '../../pages/EditView/components/DocumentActions';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDocumentStatus } from '../../pages/EditView/EditViewPage';\nimport { usePreviewContext } from '../pages/Preview';\n\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * ClosePreviewButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst ClosePreviewButton = () => {\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { formatMessage } = useIntl();\n\n const canGoBack = useHistory('BackButton', (state) => state.canGoBack);\n const goBack = useHistory('BackButton', (state) => state.goBack);\n const history = useHistory('BackButton', (state) => state.history);\n const locationIndex = useHistory('BackButton', (state) => state.currentLocationIndex);\n\n /**\n * Get the link destination from the history.\n * Rely on a fallback (the parent edit view page) if there's no page to go back .\n */\n const historyTo = canGoBack ? history.at(locationIndex - 2) : undefined;\n const fallback = {\n pathname: '..',\n search: stringify(query, { encode: false }),\n } satisfies To;\n const toWithFallback = historyTo ?? fallback;\n\n const handleClick = (e: React.MouseEvent) => {\n if (canGoBack) {\n // Prevent normal link behavior, go back in the history stack instead\n e.preventDefault();\n goBack();\n return;\n }\n\n // Otherwise rely on native link behavior to go back to the edit view. We don't use navigate()\n // here in order to get the relative=\"path\" functionality from the Link component.\n };\n\n return (\n <IconButton\n variant=\"ghost\"\n tag={Link}\n relative=\"path\"\n to={toWithFallback}\n onClick={handleClick}\n label={formatMessage({\n id: 'content-manager.preview.header.close',\n defaultMessage: 'Close preview',\n })}\n >\n <Cross />\n </IconButton>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\nconst Status = () => {\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n if (!hasDraftAndPublished) {\n return null;\n }\n\n const status = getDocumentStatus(document, meta);\n\n return <DocumentStatus status={status} size=\"XS\" />;\n};\n\nconst PreviewTabs = () => {\n const { formatMessage } = useIntl();\n\n // URL query params\n const [{ query }, setQuery] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublish = schema?.options?.draftAndPublish ?? false;\n const documentStatus = getDocumentStatus(document, meta);\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n if (!hasDraftAndPublish) {\n return null;\n }\n\n return (\n <Tabs.Root variant=\"simple\" value={query.status || 'draft'} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'preview.tabs.label',\n defaultMessage: 'Document status',\n })}\n >\n <StatusTab value=\"draft\">\n {formatMessage({\n id: 'content-manager.containers.List.draft',\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab value=\"published\" disabled={documentStatus === 'draft'}>\n {formatMessage({\n id: 'content-manager.containers.List.published',\n defaultMessage: 'published',\n })}\n </StatusTab>\n </Tabs.List>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst PreviewHeader = () => {\n const title = usePreviewContext('PreviewHeader', (state) => state.title);\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const plugins = useStrapiApp('PreviewHeader', (state) => state.plugins);\n\n const [{ query }] = useQueryParams<{\n status?: 'draft' | 'published';\n }>();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n\n const handleCopyLink = () => {\n copy(window.location.href);\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.preview.copy.success',\n defaultMessage: 'Copied preview link',\n }),\n type: 'success',\n });\n };\n\n const hasDraftAndPublish = schema.options?.draftAndPublish ?? false;\n const documentActionProps = {\n activeTab: query.status ?? null,\n collectionType: schema.kind === 'collectionType' ? 'collection-types' : 'single-types',\n model: schema.uid,\n documentId: schema.kind === 'collectionType' ? document.documentId : undefined,\n document,\n meta,\n } satisfies DocumentActionProps;\n\n return (\n <Flex height=\"48px\" gap={4} background=\"neutral0\" borderColor=\"neutral150\" tag=\"header\">\n {/* Title and status */}\n <TitleContainer height=\"100%\" paddingLeft={2} paddingRight={4}>\n <ClosePreviewButton />\n <PreviewTitle\n tag=\"h1\"\n title={title}\n maxWidth=\"200px\"\n fontSize={2}\n paddingLeft={2}\n paddingRight={3}\n fontWeight={600}\n >\n {title}\n </PreviewTitle>\n <Status />\n </TitleContainer>\n\n {/* Tabs and actions */}\n <Flex\n flex={1}\n paddingRight={2}\n gap={2}\n justifyContent={hasDraftAndPublish ? 'space-between' : 'flex-end'}\n >\n <Flex flex=\"1 1 70%\">\n <PreviewTabs />\n </Flex>\n <Flex gap={2}>\n <IconButton\n type=\"button\"\n label={formatMessage({\n id: 'preview.copy.label',\n defaultMessage: 'Copy preview link',\n })}\n onClick={handleCopyLink}\n >\n <LinkIcon />\n </IconButton>\n <InjectionZone area=\"preview.actions\" />\n <DescriptionComponentRenderer\n props={documentActionProps}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('preview')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) =>\n [action.position].flat().includes('preview')\n );\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n\nconst PreviewTitle = styled(Typography)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\nconst TitleContainer = styled(Flex)`\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nexport { PreviewHeader };\n"],"names":["ClosePreviewButton","query","useQueryParams","formatMessage","useIntl","canGoBack","useHistory","state","goBack","history","locationIndex","currentLocationIndex","historyTo","at","undefined","fallback","pathname","search","stringify","encode","toWithFallback","handleClick","e","preventDefault","_jsx","IconButton","variant","tag","Link","relative","to","onClick","label","id","defaultMessage","Cross","Status","document","usePreviewContext","schema","meta","hasDraftAndPublished","options","draftAndPublish","status","getDocumentStatus","DocumentStatus","size","PreviewTabs","setQuery","hasDraftAndPublish","documentStatus","handleTabChange","Tabs","Root","value","onValueChange","_jsxs","List","aria-label","StatusTab","disabled","PreviewHeader","title","plugins","useStrapiApp","toggleNotification","useNotification","copy","useClipboard","handleCopyLink","window","location","href","message","type","documentActionProps","activeTab","collectionType","kind","model","uid","documentId","Flex","height","gap","background","borderColor","TitleContainer","paddingLeft","paddingRight","PreviewTitle","maxWidth","fontSize","fontWeight","flex","justifyContent","LinkIcon","InjectionZone","area","DescriptionComponentRenderer","props","descriptions","apis","getDocumentActions","actions","filteredActions","filter","action","position","flat","includes","primaryAction","secondaryAction","_Fragment","DocumentActionButton","styled","Typography","Trigger","theme","colors","neutral150"],"mappings":";;;;;;;;;;;;;;;AAyBA;;AAEkG,qGAElG,MAAMA,kBAAqB,GAAA,IAAA;AACzB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,cAAAA,EAAAA;IAGpB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,MAAMC,YAAYC,UAAW,CAAA,YAAA,EAAc,CAACC,KAAAA,GAAUA,MAAMF,SAAS,CAAA;AACrE,IAAA,MAAMG,SAASF,UAAW,CAAA,YAAA,EAAc,CAACC,KAAAA,GAAUA,MAAMC,MAAM,CAAA;AAC/D,IAAA,MAAMC,UAAUH,UAAW,CAAA,YAAA,EAAc,CAACC,KAAAA,GAAUA,MAAME,OAAO,CAAA;AACjE,IAAA,MAAMC,gBAAgBJ,UAAW,CAAA,YAAA,EAAc,CAACC,KAAAA,GAAUA,MAAMI,oBAAoB,CAAA;AAEpF;;;AAGC,MACD,MAAMC,SAAYP,GAAAA,SAAAA,GAAYI,QAAQI,EAAE,CAACH,gBAAgB,CAAKI,CAAAA,GAAAA,SAAAA;AAC9D,IAAA,MAAMC,QAAW,GAAA;QACfC,QAAU,EAAA,IAAA;AACVC,QAAAA,MAAAA,EAAQC,UAAUjB,KAAO,EAAA;YAAEkB,MAAQ,EAAA;AAAM,SAAA;AAC3C,KAAA;AACA,IAAA,MAAMC,iBAAiBR,SAAaG,IAAAA,QAAAA;AAEpC,IAAA,MAAMM,cAAc,CAACC,CAAAA,GAAAA;AACnB,QAAA,IAAIjB,SAAW,EAAA;;AAEbiB,YAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBf,YAAAA,MAAAA,EAAAA;AACA,YAAA;AACF;;;AAIF,KAAA;AAEA,IAAA,qBACEgB,GAACC,CAAAA,UAAAA,EAAAA;QACCC,OAAQ,EAAA,OAAA;QACRC,GAAKC,EAAAA,MAAAA;QACLC,QAAS,EAAA,MAAA;QACTC,EAAIV,EAAAA,cAAAA;QACJW,OAASV,EAAAA,WAAAA;AACTW,QAAAA,KAAAA,EAAO7B,aAAc,CAAA;YACnB8B,EAAI,EAAA,sCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;AAEA,QAAA,QAAA,gBAAAV,GAACW,CAAAA,KAAAA,EAAAA,EAAAA;;AAGP,CAAA;AAEA;;AAEkG,qGAElG,MAAMC,MAAS,GAAA,IAAA;;AAEb,IAAA,MAAMC,WAAWC,iBAAkB,CAAA,eAAA,EAAiB,CAAC/B,KAAAA,GAAUA,MAAM8B,QAAQ,CAAA;AAC7E,IAAA,MAAME,SAASD,iBAAkB,CAAA,eAAA,EAAiB,CAAC/B,KAAAA,GAAUA,MAAMgC,MAAM,CAAA;AACzE,IAAA,MAAMC,OAAOF,iBAAkB,CAAA,eAAA,EAAiB,CAAC/B,KAAAA,GAAUA,MAAMiC,IAAI,CAAA;IACrE,MAAMC,oBAAAA,GAAuBF,MAAQG,EAAAA,OAAAA,EAASC,eAAmB,IAAA,KAAA;AAEjE,IAAA,IAAI,CAACF,oBAAsB,EAAA;QACzB,OAAO,IAAA;AACT;IAEA,MAAMG,MAAAA,GAASC,kBAAkBR,QAAUG,EAAAA,IAAAA,CAAAA;AAE3C,IAAA,qBAAOhB,GAACsB,CAAAA,cAAAA,EAAAA;QAAeF,MAAQA,EAAAA,MAAAA;QAAQG,IAAK,EAAA;;AAC9C,CAAA;AAEA,MAAMC,WAAc,GAAA,IAAA;IAClB,MAAM,EAAE7C,aAAa,EAAE,GAAGC,OAAAA,EAAAA;;AAG1B,IAAA,MAAM,CAAC,EAAEH,KAAK,EAAE,EAAEgD,SAAS,GAAG/C,cAAAA,EAAAA;;AAG9B,IAAA,MAAMmC,WAAWC,iBAAkB,CAAA,eAAA,EAAiB,CAAC/B,KAAAA,GAAUA,MAAM8B,QAAQ,CAAA;AAC7E,IAAA,MAAME,SAASD,iBAAkB,CAAA,eAAA,EAAiB,CAAC/B,KAAAA,GAAUA,MAAMgC,MAAM,CAAA;AACzE,IAAA,MAAMC,OAAOF,iBAAkB,CAAA,eAAA,EAAiB,CAAC/B,KAAAA,GAAUA,MAAMiC,IAAI,CAAA;IACrE,MAAMU,kBAAAA,GAAqBX,MAAQG,EAAAA,OAAAA,EAASC,eAAmB,IAAA,KAAA;IAC/D,MAAMQ,cAAAA,GAAiBN,kBAAkBR,QAAUG,EAAAA,IAAAA,CAAAA;AAEnD,IAAA,MAAMY,kBAAkB,CAACR,MAAAA,GAAAA;QACvB,IAAIA,MAAAA,KAAW,WAAeA,IAAAA,MAAAA,KAAW,OAAS,EAAA;YAChDK,QAAS,CAAA;AAAEL,gBAAAA;AAAO,aAAA,EAAG,MAAQ,EAAA,IAAA,CAAA;AAC/B;AACF,KAAA;AAEA,IAAA,IAAI,CAACM,kBAAoB,EAAA;QACvB,OAAO,IAAA;AACT;IAEA,qBACE1B,GAAA,CAAC6B,KAAKC,IAAI,EAAA;QAAC5B,OAAQ,EAAA,QAAA;QAAS6B,KAAOtD,EAAAA,KAAAA,CAAM2C,MAAM,IAAI,OAAA;QAASY,aAAeJ,EAAAA,eAAAA;gCACzEK,IAAA,CAACJ,KAAKK,IAAI,EAAA;AACRC,YAAAA,YAAAA,EAAYxD,aAAc,CAAA;gBACxB8B,EAAI,EAAA,oBAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;;8BAEAV,GAACoC,CAAAA,SAAAA,EAAAA;oBAAUL,KAAM,EAAA,OAAA;8BACdpD,aAAc,CAAA;wBACb8B,EAAI,EAAA,uCAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;8BAEFV,GAACoC,CAAAA,SAAAA,EAAAA;oBAAUL,KAAM,EAAA,WAAA;AAAYM,oBAAAA,QAAAA,EAAUV,cAAmB,KAAA,OAAA;8BACvDhD,aAAc,CAAA;wBACb8B,EAAI,EAAA,2CAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;;;;AAKV,CAAA;AAEA;;AAEkG,2GAE5F4B,aAAgB,GAAA,IAAA;AACpB,IAAA,MAAMC,QAAQzB,iBAAkB,CAAA,eAAA,EAAiB,CAAC/B,KAAAA,GAAUA,MAAMwD,KAAK,CAAA;AACvE,IAAA,MAAM1B,WAAWC,iBAAkB,CAAA,eAAA,EAAiB,CAAC/B,KAAAA,GAAUA,MAAM8B,QAAQ,CAAA;AAC7E,IAAA,MAAME,SAASD,iBAAkB,CAAA,eAAA,EAAiB,CAAC/B,KAAAA,GAAUA,MAAMgC,MAAM,CAAA;AACzE,IAAA,MAAMC,OAAOF,iBAAkB,CAAA,eAAA,EAAiB,CAAC/B,KAAAA,GAAUA,MAAMiC,IAAI,CAAA;AACrE,IAAA,MAAMwB,UAAUC,YAAa,CAAA,eAAA,EAAiB,CAAC1D,KAAAA,GAAUA,MAAMyD,OAAO,CAAA;AAEtE,IAAA,MAAM,CAAC,EAAE/D,KAAK,EAAE,CAAC,GAAGC,cAAAA,EAAAA;IAGpB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAE8D,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,IAAI,EAAE,GAAGC,YAAAA,EAAAA;AAEjB,IAAA,MAAMC,cAAiB,GAAA,IAAA;QACrBF,IAAKG,CAAAA,MAAAA,CAAOC,QAAQ,CAACC,IAAI,CAAA;QACzBP,kBAAmB,CAAA;AACjBQ,YAAAA,OAAAA,EAASvE,aAAc,CAAA;gBACrB8B,EAAI,EAAA,sCAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;YACAyC,IAAM,EAAA;AACR,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,MAAMzB,kBAAqBX,GAAAA,MAAAA,CAAOG,OAAO,EAAEC,eAAmB,IAAA,KAAA;AAC9D,IAAA,MAAMiC,mBAAsB,GAAA;QAC1BC,SAAW5E,EAAAA,KAAAA,CAAM2C,MAAM,IAAI,IAAA;AAC3BkC,QAAAA,cAAAA,EAAgBvC,MAAOwC,CAAAA,IAAI,KAAK,gBAAA,GAAmB,kBAAqB,GAAA,cAAA;AACxEC,QAAAA,KAAAA,EAAOzC,OAAO0C,GAAG;AACjBC,QAAAA,UAAAA,EAAY3C,OAAOwC,IAAI,KAAK,gBAAmB1C,GAAAA,QAAAA,CAAS6C,UAAU,GAAGpE,SAAAA;AACrEuB,QAAAA,QAAAA;AACAG,QAAAA;AACF,KAAA;AAEA,IAAA,qBACEiB,IAAC0B,CAAAA,IAAAA,EAAAA;QAAKC,MAAO,EAAA,MAAA;QAAOC,GAAK,EAAA,CAAA;QAAGC,UAAW,EAAA,UAAA;QAAWC,WAAY,EAAA,YAAA;QAAa5D,GAAI,EAAA,QAAA;;0BAE7E8B,IAAC+B,CAAAA,cAAAA,EAAAA;gBAAeJ,MAAO,EAAA,MAAA;gBAAOK,WAAa,EAAA,CAAA;gBAAGC,YAAc,EAAA,CAAA;;kCAC1DlE,GAACxB,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA;kCACDwB,GAACmE,CAAAA,YAAAA,EAAAA;wBACChE,GAAI,EAAA,IAAA;wBACJoC,KAAOA,EAAAA,KAAAA;wBACP6B,QAAS,EAAA,OAAA;wBACTC,QAAU,EAAA,CAAA;wBACVJ,WAAa,EAAA,CAAA;wBACbC,YAAc,EAAA,CAAA;wBACdI,UAAY,EAAA,GAAA;AAEX/B,wBAAAA,QAAAA,EAAAA;;kCAEHvC,GAACY,CAAAA,MAAAA,EAAAA,EAAAA;;;0BAIHqB,IAAC0B,CAAAA,IAAAA,EAAAA;gBACCY,IAAM,EAAA,CAAA;gBACNL,YAAc,EAAA,CAAA;gBACdL,GAAK,EAAA,CAAA;AACLW,gBAAAA,cAAAA,EAAgB9C,qBAAqB,eAAkB,GAAA,UAAA;;kCAEvD1B,GAAC2D,CAAAA,IAAAA,EAAAA;wBAAKY,IAAK,EAAA,SAAA;AACT,wBAAA,QAAA,gBAAAvE,GAACwB,CAAAA,WAAAA,EAAAA,EAAAA;;kCAEHS,IAAC0B,CAAAA,IAAAA,EAAAA;wBAAKE,GAAK,EAAA,CAAA;;0CACT7D,GAACC,CAAAA,UAAAA,EAAAA;gCACCkD,IAAK,EAAA,QAAA;AACL3C,gCAAAA,KAAAA,EAAO7B,aAAc,CAAA;oCACnB8B,EAAI,EAAA,oBAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA,CAAA;gCACAH,OAASuC,EAAAA,cAAAA;AAET,gCAAA,QAAA,gBAAA9C,GAACyE,CAAAA,IAAAA,EAAAA,EAAAA;;0CAEHzE,GAAC0E,CAAAA,aAAAA,EAAAA;gCAAcC,IAAK,EAAA;;0CACpB3E,GAAC4E,CAAAA,4BAAAA,EAAAA;gCACCC,KAAOzB,EAAAA,mBAAAA;gCACP0B,YAAc,EACZtC,OAAO,CAAC,iBAAA,CAAkB,CAACuC,IAAI,CAC/BC,kBAAkB,CAAC,SAAA,CAAA;0CAEpB,CAACC,OAAAA,GAAAA;AACA,oCAAA,MAAMC,eAAkBD,GAAAA,OAAAA,CAAQE,MAAM,CAAC,CAACC,MACtC,GAAA;AAACA,4CAAAA,MAAAA,CAAOC;yCAAS,CAACC,IAAI,EAAGC,CAAAA,QAAQ,CAAC,SAAA,CAAA,CAAA;oCAEpC,MAAM,CAACC,aAAeC,EAAAA,eAAAA,CAAgB,GAAGP,eAAAA;AAEzC,oCAAA,IAAI,CAACM,aAAAA,IAAiB,CAACC,eAAAA,EAAiB,OAAO,IAAA;;AAG/C,oCAAA,IAAID,iBAAiBC,eAAiB,EAAA;wCACpC,qBACExD,IAAA,CAAAyD,QAAA,EAAA;;8DAEE1F,GAAC2F,CAAAA,oBAAAA,EAAAA;AACE,oDAAA,GAAGF,eAAe;oDACnBvF,OAASuF,EAAAA,eAAAA,CAAgBvF,OAAO,IAAI;;8DAGtCF,GAAC2F,CAAAA,oBAAAA,EAAAA;AACE,oDAAA,GAAGH,aAAa;oDACjBtF,OAASsF,EAAAA,aAAAA,CAActF,OAAO,IAAI;;;;AAI1C;;AAGA,oCAAA,qBACEF,GAAC2F,CAAAA,oBAAAA,EAAAA;AACE,wCAAA,GAAGH,aAAa;wCACjBtF,OAASsF,EAAAA,aAAAA,CAActF,OAAO,IAAI;;AAGxC;;;;;;;;AAMZ;AAEA,MAAMiE,YAAAA,GAAeyB,MAAOC,CAAAA,UAAAA,CAAW;;;;AAIvC,CAAC;AAED,MAAMzD,SAAYwD,GAAAA,MAAAA,CAAO/D,IAAKiE,CAAAA,OAAO,CAAC;;AAEtC,CAAC;AAED,MAAM9B,cAAAA,GAAiB4B,MAAOjC,CAAAA,IAAAA,CAAK;0BACT,EAAE,CAAC,EAAEoC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;AACnE,CAAC;;;;"}
@@ -0,0 +1,77 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var strapiAdmin = require('@strapi/admin/strapi-admin');
5
+ var InputPopover = require('../components/InputPopover.js');
6
+ var Preview = require('../pages/Preview.js');
7
+ var constants = require('../utils/constants.js');
8
+ var getSendMessage = require('../utils/getSendMessage.js');
9
+
10
+ function _interopNamespaceDefault(e) {
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
28
+
29
+ function usePreviewInputManager(name, attribute) {
30
+ const iframe = Preview.usePreviewContext('usePreviewInputManager', (state)=>state.iframeRef, false);
31
+ const setPopoverField = Preview.usePreviewContext('usePreviewInputManager', (state)=>state.setPopoverField, false);
32
+ const hasInputPopoverParent = InputPopover.useHasInputPopoverParent();
33
+ const { value } = strapiAdmin.useField(name);
34
+ const { type } = attribute;
35
+ React__namespace.useEffect(()=>{
36
+ if (!iframe || !type) {
37
+ return;
38
+ }
39
+ /**
40
+ * Only send message if the field is not a data structure (component, dynamic zone)
41
+ * because we already send events for their fields
42
+ */ if (![
43
+ 'component',
44
+ 'dynamiczone'
45
+ ].includes(type)) {
46
+ const sendMessage = getSendMessage.getSendMessage(iframe);
47
+ sendMessage(constants.INTERNAL_EVENTS.STRAPI_FIELD_CHANGE, {
48
+ field: name,
49
+ value
50
+ });
51
+ }
52
+ }, [
53
+ name,
54
+ value,
55
+ iframe,
56
+ type
57
+ ]);
58
+ const sendMessage = getSendMessage.getSendMessage(iframe);
59
+ return {
60
+ onFocus: ()=>{
61
+ if (hasInputPopoverParent) return;
62
+ sendMessage(constants.INTERNAL_EVENTS.STRAPI_FIELD_FOCUS, {
63
+ field: name
64
+ });
65
+ },
66
+ onBlur: ()=>{
67
+ if (hasInputPopoverParent) return;
68
+ setPopoverField?.(null);
69
+ sendMessage(constants.INTERNAL_EVENTS.STRAPI_FIELD_BLUR, {
70
+ field: name
71
+ });
72
+ }
73
+ };
74
+ }
75
+
76
+ exports.usePreviewInputManager = usePreviewInputManager;
77
+ //# sourceMappingURL=usePreviewInputManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePreviewInputManager.js","sources":["../../../../admin/src/preview/hooks/usePreviewInputManager.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useField } from '@strapi/admin/strapi-admin';\nimport { Schema } from '@strapi/types';\n\nimport { useHasInputPopoverParent } from '../components/InputPopover';\nimport { usePreviewContext } from '../pages/Preview';\nimport { INTERNAL_EVENTS } from '../utils/constants';\nimport { getSendMessage } from '../utils/getSendMessage';\n\ntype PreviewInputProps = Pick<\n Required<React.InputHTMLAttributes<HTMLInputElement>>,\n 'onFocus' | 'onBlur'\n>;\n\nexport function usePreviewInputManager(\n name: string,\n attribute: Schema.Attribute.AnyAttribute\n): PreviewInputProps {\n const iframe = usePreviewContext('usePreviewInputManager', (state) => state.iframeRef, false);\n const setPopoverField = usePreviewContext(\n 'usePreviewInputManager',\n (state) => state.setPopoverField,\n false\n );\n const hasInputPopoverParent = useHasInputPopoverParent();\n const { value } = useField(name);\n const { type } = attribute;\n\n React.useEffect(() => {\n if (!iframe || !type) {\n return;\n }\n\n /**\n * Only send message if the field is not a data structure (component, dynamic zone)\n * because we already send events for their fields\n */\n if (!['component', 'dynamiczone'].includes(type)) {\n const sendMessage = getSendMessage(iframe);\n sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_CHANGE, { field: name, value });\n }\n }, [name, value, iframe, type]);\n\n const sendMessage = getSendMessage(iframe);\n\n return {\n onFocus: () => {\n if (hasInputPopoverParent) return;\n\n sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_FOCUS, { field: name });\n },\n onBlur: () => {\n if (hasInputPopoverParent) return;\n\n setPopoverField?.(null);\n sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_BLUR, { field: name });\n },\n };\n}\n"],"names":["usePreviewInputManager","name","attribute","iframe","usePreviewContext","state","iframeRef","setPopoverField","hasInputPopoverParent","useHasInputPopoverParent","value","useField","type","React","useEffect","includes","sendMessage","getSendMessage","INTERNAL_EVENTS","STRAPI_FIELD_CHANGE","field","onFocus","STRAPI_FIELD_FOCUS","onBlur","STRAPI_FIELD_BLUR"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeO,SAASA,sBAAAA,CACdC,IAAY,EACZC,SAAwC,EAAA;AAExC,IAAA,MAAMC,SAASC,yBAAkB,CAAA,wBAAA,EAA0B,CAACC,KAAUA,GAAAA,KAAAA,CAAMC,SAAS,EAAE,KAAA,CAAA;AACvF,IAAA,MAAMC,kBAAkBH,yBACtB,CAAA,wBAAA,EACA,CAACC,KAAUA,GAAAA,KAAAA,CAAME,eAAe,EAChC,KAAA,CAAA;AAEF,IAAA,MAAMC,qBAAwBC,GAAAA,qCAAAA,EAAAA;AAC9B,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGC,oBAASV,CAAAA,IAAAA,CAAAA;IAC3B,MAAM,EAAEW,IAAI,EAAE,GAAGV,SAAAA;AAEjBW,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;QACd,IAAI,CAACX,MAAU,IAAA,CAACS,IAAM,EAAA;AACpB,YAAA;AACF;AAEA;;;AAGC,QACD,IAAI,CAAC;AAAC,YAAA,WAAA;AAAa,YAAA;SAAc,CAACG,QAAQ,CAACH,IAAO,CAAA,EAAA;AAChD,YAAA,MAAMI,cAAcC,6BAAed,CAAAA,MAAAA,CAAAA;YACnCa,WAAYE,CAAAA,yBAAAA,CAAgBC,mBAAmB,EAAE;gBAAEC,KAAOnB,EAAAA,IAAAA;AAAMS,gBAAAA;AAAM,aAAA,CAAA;AACxE;KACC,EAAA;AAACT,QAAAA,IAAAA;AAAMS,QAAAA,KAAAA;AAAOP,QAAAA,MAAAA;AAAQS,QAAAA;AAAK,KAAA,CAAA;AAE9B,IAAA,MAAMI,cAAcC,6BAAed,CAAAA,MAAAA,CAAAA;IAEnC,OAAO;QACLkB,OAAS,EAAA,IAAA;AACP,YAAA,IAAIb,qBAAuB,EAAA;YAE3BQ,WAAYE,CAAAA,yBAAAA,CAAgBI,kBAAkB,EAAE;gBAAEF,KAAOnB,EAAAA;AAAK,aAAA,CAAA;AAChE,SAAA;QACAsB,MAAQ,EAAA,IAAA;AACN,YAAA,IAAIf,qBAAuB,EAAA;YAE3BD,eAAkB,GAAA,IAAA,CAAA;YAClBS,WAAYE,CAAAA,yBAAAA,CAAgBM,iBAAiB,EAAE;gBAAEJ,KAAOnB,EAAAA;AAAK,aAAA,CAAA;AAC/D;AACF,KAAA;AACF;;;;"}
@@ -0,0 +1,56 @@
1
+ import * as React from 'react';
2
+ import { useField } from '@strapi/admin/strapi-admin';
3
+ import { useHasInputPopoverParent } from '../components/InputPopover.mjs';
4
+ import { usePreviewContext } from '../pages/Preview.mjs';
5
+ import { INTERNAL_EVENTS } from '../utils/constants.mjs';
6
+ import { getSendMessage } from '../utils/getSendMessage.mjs';
7
+
8
+ function usePreviewInputManager(name, attribute) {
9
+ const iframe = usePreviewContext('usePreviewInputManager', (state)=>state.iframeRef, false);
10
+ const setPopoverField = usePreviewContext('usePreviewInputManager', (state)=>state.setPopoverField, false);
11
+ const hasInputPopoverParent = useHasInputPopoverParent();
12
+ const { value } = useField(name);
13
+ const { type } = attribute;
14
+ React.useEffect(()=>{
15
+ if (!iframe || !type) {
16
+ return;
17
+ }
18
+ /**
19
+ * Only send message if the field is not a data structure (component, dynamic zone)
20
+ * because we already send events for their fields
21
+ */ if (![
22
+ 'component',
23
+ 'dynamiczone'
24
+ ].includes(type)) {
25
+ const sendMessage = getSendMessage(iframe);
26
+ sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_CHANGE, {
27
+ field: name,
28
+ value
29
+ });
30
+ }
31
+ }, [
32
+ name,
33
+ value,
34
+ iframe,
35
+ type
36
+ ]);
37
+ const sendMessage = getSendMessage(iframe);
38
+ return {
39
+ onFocus: ()=>{
40
+ if (hasInputPopoverParent) return;
41
+ sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_FOCUS, {
42
+ field: name
43
+ });
44
+ },
45
+ onBlur: ()=>{
46
+ if (hasInputPopoverParent) return;
47
+ setPopoverField?.(null);
48
+ sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_BLUR, {
49
+ field: name
50
+ });
51
+ }
52
+ };
53
+ }
54
+
55
+ export { usePreviewInputManager };
56
+ //# sourceMappingURL=usePreviewInputManager.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePreviewInputManager.mjs","sources":["../../../../admin/src/preview/hooks/usePreviewInputManager.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useField } from '@strapi/admin/strapi-admin';\nimport { Schema } from '@strapi/types';\n\nimport { useHasInputPopoverParent } from '../components/InputPopover';\nimport { usePreviewContext } from '../pages/Preview';\nimport { INTERNAL_EVENTS } from '../utils/constants';\nimport { getSendMessage } from '../utils/getSendMessage';\n\ntype PreviewInputProps = Pick<\n Required<React.InputHTMLAttributes<HTMLInputElement>>,\n 'onFocus' | 'onBlur'\n>;\n\nexport function usePreviewInputManager(\n name: string,\n attribute: Schema.Attribute.AnyAttribute\n): PreviewInputProps {\n const iframe = usePreviewContext('usePreviewInputManager', (state) => state.iframeRef, false);\n const setPopoverField = usePreviewContext(\n 'usePreviewInputManager',\n (state) => state.setPopoverField,\n false\n );\n const hasInputPopoverParent = useHasInputPopoverParent();\n const { value } = useField(name);\n const { type } = attribute;\n\n React.useEffect(() => {\n if (!iframe || !type) {\n return;\n }\n\n /**\n * Only send message if the field is not a data structure (component, dynamic zone)\n * because we already send events for their fields\n */\n if (!['component', 'dynamiczone'].includes(type)) {\n const sendMessage = getSendMessage(iframe);\n sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_CHANGE, { field: name, value });\n }\n }, [name, value, iframe, type]);\n\n const sendMessage = getSendMessage(iframe);\n\n return {\n onFocus: () => {\n if (hasInputPopoverParent) return;\n\n sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_FOCUS, { field: name });\n },\n onBlur: () => {\n if (hasInputPopoverParent) return;\n\n setPopoverField?.(null);\n sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_BLUR, { field: name });\n },\n };\n}\n"],"names":["usePreviewInputManager","name","attribute","iframe","usePreviewContext","state","iframeRef","setPopoverField","hasInputPopoverParent","useHasInputPopoverParent","value","useField","type","React","useEffect","includes","sendMessage","getSendMessage","INTERNAL_EVENTS","STRAPI_FIELD_CHANGE","field","onFocus","STRAPI_FIELD_FOCUS","onBlur","STRAPI_FIELD_BLUR"],"mappings":";;;;;;;AAeO,SAASA,sBAAAA,CACdC,IAAY,EACZC,SAAwC,EAAA;AAExC,IAAA,MAAMC,SAASC,iBAAkB,CAAA,wBAAA,EAA0B,CAACC,KAAUA,GAAAA,KAAAA,CAAMC,SAAS,EAAE,KAAA,CAAA;AACvF,IAAA,MAAMC,kBAAkBH,iBACtB,CAAA,wBAAA,EACA,CAACC,KAAUA,GAAAA,KAAAA,CAAME,eAAe,EAChC,KAAA,CAAA;AAEF,IAAA,MAAMC,qBAAwBC,GAAAA,wBAAAA,EAAAA;AAC9B,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGC,QAASV,CAAAA,IAAAA,CAAAA;IAC3B,MAAM,EAAEW,IAAI,EAAE,GAAGV,SAAAA;AAEjBW,IAAAA,KAAAA,CAAMC,SAAS,CAAC,IAAA;QACd,IAAI,CAACX,MAAU,IAAA,CAACS,IAAM,EAAA;AACpB,YAAA;AACF;AAEA;;;AAGC,QACD,IAAI,CAAC;AAAC,YAAA,WAAA;AAAa,YAAA;SAAc,CAACG,QAAQ,CAACH,IAAO,CAAA,EAAA;AAChD,YAAA,MAAMI,cAAcC,cAAed,CAAAA,MAAAA,CAAAA;YACnCa,WAAYE,CAAAA,eAAAA,CAAgBC,mBAAmB,EAAE;gBAAEC,KAAOnB,EAAAA,IAAAA;AAAMS,gBAAAA;AAAM,aAAA,CAAA;AACxE;KACC,EAAA;AAACT,QAAAA,IAAAA;AAAMS,QAAAA,KAAAA;AAAOP,QAAAA,MAAAA;AAAQS,QAAAA;AAAK,KAAA,CAAA;AAE9B,IAAA,MAAMI,cAAcC,cAAed,CAAAA,MAAAA,CAAAA;IAEnC,OAAO;QACLkB,OAAS,EAAA,IAAA;AACP,YAAA,IAAIb,qBAAuB,EAAA;YAE3BQ,WAAYE,CAAAA,eAAAA,CAAgBI,kBAAkB,EAAE;gBAAEF,KAAOnB,EAAAA;AAAK,aAAA,CAAA;AAChE,SAAA;QACAsB,MAAQ,EAAA,IAAA;AACN,YAAA,IAAIf,qBAAuB,EAAA;YAE3BD,eAAkB,GAAA,IAAA,CAAA;YAClBS,WAAYE,CAAAA,eAAAA,CAAgBM,iBAAiB,EAAE;gBAAEJ,KAAOnB,EAAAA;AAAK,aAAA,CAAA;AAC/D;AACF,KAAA;AACF;;;;"}
@@ -14,13 +14,15 @@ var useDocument = require('../../hooks/useDocument.js');
14
14
  var useDocumentLayout = require('../../hooks/useDocumentLayout.js');
15
15
  var Blocker = require('../../pages/EditView/components/Blocker.js');
16
16
  var FormLayout = require('../../pages/EditView/components/FormLayout.js');
17
- var InputRenderer = require('../../pages/EditView/components/InputRenderer.js');
18
17
  var data = require('../../pages/EditView/utils/data.js');
19
18
  var api = require('../../utils/api.js');
20
19
  var validation = require('../../utils/validation.js');
20
+ var InputPopover = require('../components/InputPopover.js');
21
21
  var PreviewHeader = require('../components/PreviewHeader.js');
22
22
  var preview = require('../services/preview.js');
23
- var script = require('../utils/script.js');
23
+ var constants = require('../utils/constants.js');
24
+ var getSendMessage = require('../utils/getSendMessage.js');
25
+ var previewScript = require('../utils/previewScript.js');
24
26
 
25
27
  function _interopNamespaceDefault(e) {
26
28
  var n = Object.create(null);
@@ -64,58 +66,6 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
64
66
  }
65
67
  ];
66
68
  const [PreviewProvider, usePreviewContext] = strapiAdmin.createContext('PreviewPage');
67
- /* -------------------------------------------------------------------------------------------------
68
- * VisualEditingPopover
69
- * -----------------------------------------------------------------------------------------------*/ const VisualEditingPopover = ({ popoverField, setPopoverField, documentResponse })=>{
70
- const iframeRef = usePreviewContext('VisualEditingPopover', (state)=>state.iframeRef);
71
- if (!popoverField || !documentResponse.schema || !iframeRef.current) {
72
- return null;
73
- }
74
- const iframeRect = iframeRef.current.getBoundingClientRect();
75
- return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
76
- children: [
77
- popoverField && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
78
- position: 'fixed',
79
- top: iframeRect.top + 'px',
80
- left: iframeRect.left + 'px',
81
- width: iframeRect.width + 'px',
82
- height: iframeRect.height + 'px',
83
- zIndex: 4
84
- }),
85
- /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Popover.Root, {
86
- open: popoverField != null,
87
- onOpenChange: (open)=>!open && setPopoverField(null),
88
- children: [
89
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Popover.Trigger, {
90
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
91
- id: "popover-trigger",
92
- position: "fixed",
93
- width: popoverField.position.width + 'px',
94
- height: popoverField.position.height + 'px',
95
- top: iframeRect.top + popoverField.position.top + 'px',
96
- left: iframeRect.left + popoverField.position.left + 'px'
97
- })
98
- }),
99
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Popover.Content, {
100
- sideOffset: 4,
101
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
102
- padding: 4,
103
- width: "400px",
104
- children: /*#__PURE__*/ jsxRuntime.jsx(InputRenderer.InputRenderer, {
105
- document: documentResponse,
106
- attribute: documentResponse.schema.attributes[popoverField.path],
107
- label: popoverField.path,
108
- name: popoverField.path,
109
- type: documentResponse.schema.attributes[popoverField.path].type,
110
- visible: true
111
- })
112
- })
113
- })
114
- ]
115
- })
116
- ]
117
- });
118
- };
119
69
  /* -------------------------------------------------------------------------------------------------
120
70
  * PreviewPage
121
71
  * -----------------------------------------------------------------------------------------------*/ const AnimatedArrow = styledComponents.styled(Icons.ArrowLineLeft)`
@@ -128,49 +78,41 @@ const PreviewPage = ()=>{
128
78
  const { formatMessage } = reactIntl.useIntl();
129
79
  const iframeRef = React__namespace.useRef(null);
130
80
  const [isSideEditorOpen, setIsSideEditorOpen] = React__namespace.useState(true);
81
+ const [popoverField, setPopoverField] = React__namespace.useState(null);
82
+ const { toggleNotification } = strapiAdmin.useNotification();
131
83
  // Read all the necessary data from the URL to find the right preview URL
132
84
  const { slug: model, id: documentId, collectionType } = reactRouterDom.useParams();
133
- const [{ query: { field: _field, ...query } }, setQuery] = strapiAdmin.useQueryParams();
85
+ const [{ query }] = strapiAdmin.useQueryParams();
134
86
  const params = React__namespace.useMemo(()=>api.buildValidParams(query), [
135
87
  query
136
88
  ]);
137
89
  const [deviceName, setDeviceName] = React__namespace.useState(DEVICES[0].name);
138
90
  const device = DEVICES.find((d)=>d.name === deviceName) ?? DEVICES[0];
139
- const [popoverField, setPopoverField] = React__namespace.useState(null);
140
91
  // Listen for ready message from iframe before injecting script
141
92
  React__namespace.useEffect(()=>{
142
93
  const handleMessage = (event)=>{
143
- if (event.data?.type === 'strapiReady') {
144
- const script$1 = `(${script.previewScript.toString()})()`;
145
- iframeRef?.current?.contentWindow?.postMessage({
146
- type: 'strapiScript',
147
- script: script$1
148
- }, new URL(iframeRef.current.src).origin);
94
+ // Only listen to events from the preview iframe
95
+ if (iframeRef.current) {
96
+ const previewOrigin = new URL(iframeRef.current?.src).origin;
97
+ if (event.origin !== previewOrigin) {
98
+ return;
99
+ }
100
+ }
101
+ if (event.data?.type === constants.PUBLIC_EVENTS.PREVIEW_READY) {
102
+ const script = `(${previewScript.previewScript.toString()})()`;
103
+ const sendMessage = getSendMessage.getSendMessage(iframeRef);
104
+ sendMessage(constants.PUBLIC_EVENTS.STRAPI_SCRIPT, {
105
+ script
106
+ });
149
107
  }
150
108
  };
151
109
  window.addEventListener('message', handleMessage);
152
110
  return ()=>{
153
111
  window.removeEventListener('message', handleMessage);
154
112
  };
155
- }, []);
156
- // Listen for willEditField message from iframe
157
- React__namespace.useEffect(()=>{
158
- const handleMessage = (event)=>{
159
- if (event.data?.type === 'willEditField') {
160
- if (isSideEditorOpen) {
161
- setQuery({
162
- field: event.data.payload.path
163
- }, 'push', true);
164
- } else {
165
- setPopoverField(event.data.payload);
166
- }
167
- }
168
- };
169
- window.addEventListener('message', handleMessage);
170
- return ()=>window.removeEventListener('message', handleMessage);
171
113
  }, [
172
- isSideEditorOpen,
173
- setQuery
114
+ documentId,
115
+ toggleNotification
174
116
  ]);
175
117
  if (!collectionType) {
176
118
  throw new Error('Could not find collectionType in url params');
@@ -250,10 +192,12 @@ const PreviewPage = ()=>{
250
192
  title: documentTitle,
251
193
  meta: documentResponse.meta,
252
194
  schema: documentResponse.schema,
195
+ components: documentResponse.components,
253
196
  layout: documentLayoutResponse.edit,
254
197
  onPreview: onPreview,
255
198
  iframeRef: iframeRef,
256
- isSideEditorOpen: isSideEditorOpen,
199
+ popoverField: popoverField,
200
+ setPopoverField: setPopoverField,
257
201
  children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Form, {
258
202
  method: "PUT",
259
203
  disabled: query.status === 'published' && documentResponse && documentResponse.document.status !== 'draft',
@@ -282,6 +226,9 @@ const PreviewPage = ()=>{
282
226
  children: [
283
227
  /*#__PURE__*/ jsxRuntime.jsx(Blocker.Blocker, {}),
284
228
  /*#__PURE__*/ jsxRuntime.jsx(PreviewHeader.PreviewHeader, {}),
229
+ /*#__PURE__*/ jsxRuntime.jsx(InputPopover.InputPopover, {
230
+ documentResponse: documentResponse
231
+ }),
285
232
  /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
286
233
  flex: 1,
287
234
  overflow: "auto",
@@ -372,11 +319,6 @@ const PreviewPage = ()=>{
372
319
  ]
373
320
  })
374
321
  ]
375
- }),
376
- /*#__PURE__*/ jsxRuntime.jsx(VisualEditingPopover, {
377
- popoverField: popoverField,
378
- setPopoverField: setPopoverField,
379
- documentResponse: documentResponse
380
322
  })
381
323
  ]
382
324
  })
@@ -408,23 +350,23 @@ const PreviewPage = ()=>{
408
350
  }
409
351
  if (error || !model) {
410
352
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
411
- height: "100vh",
412
- width: "100vw",
353
+ height: "100dvh",
354
+ width: "100dvw",
413
355
  position: "fixed",
414
356
  top: 0,
415
357
  left: 0,
416
- zIndex: 2,
358
+ zIndex: 5,
417
359
  background: "neutral0",
418
360
  children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Error, {})
419
361
  });
420
362
  }
421
363
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
422
- height: "100vh",
423
- width: "100vw",
364
+ height: "100dvh",
365
+ width: "100dvw",
424
366
  position: "fixed",
425
367
  top: 0,
426
368
  left: 0,
427
- zIndex: 2,
369
+ zIndex: 5,
428
370
  background: "neutral0",
429
371
  children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Protect, {
430
372
  permissions: permissions.filter((permission)=>permission.action.includes('explorer.read')),
@@ -1 +1 @@
1
- {"version":3,"file":"Preview.js","sources":["../../../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n useQueryParams,\n useRBAC,\n createContext,\n Form as FormContext,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n FocusTrap,\n IconButton,\n Popover,\n Portal,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { ArrowLineLeft } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { Blocker } from '../../pages/EditView/components/Blocker';\nimport { FormLayout } from '../../pages/EditView/components/FormLayout';\nimport { InputRenderer } from '../../pages/EditView/components/InputRenderer';\nimport { handleInvisibleAttributes } from '../../pages/EditView/utils/data';\nimport { buildValidParams } from '../../utils/api';\nimport { createYupSchema } from '../../utils/validation';\nimport { PreviewHeader } from '../components/PreviewHeader';\nimport { useGetPreviewUrlQuery } from '../services/preview';\nimport { previewScript } from '../utils/script';\n\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst DEVICES = [\n {\n name: 'desktop',\n label: {\n id: 'content-manager.preview.device.desktop',\n defaultMessage: 'Desktop',\n },\n width: '100%',\n height: '100%',\n },\n {\n name: 'mobile',\n label: {\n id: 'content-manager.preview.device.mobile',\n defaultMessage: 'Mobile',\n },\n width: '375px',\n height: '667px',\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreviewContextValue {\n url: string;\n title: string;\n document: NonNullable<ReturnType<UseDocument>['document']>;\n meta: NonNullable<ReturnType<UseDocument>['meta']>;\n schema: NonNullable<ReturnType<UseDocument>['schema']>;\n layout: EditLayout;\n onPreview: () => void;\n iframeRef: React.RefObject<HTMLIFrameElement>;\n isSideEditorOpen: boolean;\n}\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\n\n/* -------------------------------------------------------------------------------------------------\n * VisualEditingPopover\n * -----------------------------------------------------------------------------------------------*/\n\nconst VisualEditingPopover = ({\n popoverField,\n setPopoverField,\n documentResponse,\n}: {\n popoverField: PopoverField | null;\n setPopoverField: (value: PopoverField | null) => void;\n documentResponse: ReturnType<UseDocument>;\n}) => {\n const iframeRef = usePreviewContext('VisualEditingPopover', (state) => state.iframeRef);\n\n if (!popoverField || !documentResponse.schema || !iframeRef.current) {\n return null;\n }\n\n const iframeRect = iframeRef.current.getBoundingClientRect();\n\n return (\n <>\n {popoverField && (\n <Box\n position={'fixed'}\n top={iframeRect.top + 'px'}\n left={iframeRect.left + 'px'}\n width={iframeRect.width + 'px'}\n height={iframeRect.height + 'px'}\n zIndex={4}\n />\n )}\n <Popover.Root\n open={popoverField != null}\n onOpenChange={(open) => !open && setPopoverField(null)}\n >\n <Popover.Trigger>\n <Box\n id=\"popover-trigger\"\n position=\"fixed\"\n width={popoverField.position.width + 'px'}\n height={popoverField.position.height + 'px'}\n top={iframeRect.top + popoverField.position.top + 'px'}\n left={iframeRect.left + popoverField.position.left + 'px'}\n />\n </Popover.Trigger>\n <Popover.Content sideOffset={4}>\n <Box padding={4} width=\"400px\">\n <InputRenderer\n document={documentResponse}\n attribute={documentResponse.schema.attributes[popoverField.path] as any}\n label={popoverField.path}\n name={popoverField.path}\n type={documentResponse.schema.attributes[popoverField.path].type}\n visible={true}\n />\n </Box>\n </Popover.Content>\n </Popover.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AnimatedArrow = styled(ArrowLineLeft)<{ $isSideEditorOpen: boolean }>`\n will-change: transform;\n rotate: ${(props) => (props.$isSideEditorOpen ? '0deg' : '180deg')};\n transition: rotate 0.2s ease-in-out;\n`;\n\ninterface PopoverField {\n path: string;\n position: DOMRect;\n}\n\nconst PreviewPage = () => {\n const location = useLocation();\n const { formatMessage } = useIntl();\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null);\n const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);\n\n // Read all the necessary data from the URL to find the right preview URL\n const {\n slug: model,\n id: documentId,\n collectionType,\n } = useParams<{\n slug: UID.ContentType;\n id: string;\n collectionType: string;\n }>();\n const [\n {\n query: { field: _field, ...query },\n },\n setQuery,\n ] = useQueryParams<{\n plugins?: Record<string, unknown>;\n status?: string;\n field?: string;\n }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n const [deviceName, setDeviceName] = React.useState<(typeof DEVICES)[number]['name']>(\n DEVICES[0].name\n );\n const device = DEVICES.find((d) => d.name === deviceName) ?? DEVICES[0];\n\n const [popoverField, setPopoverField] = React.useState<PopoverField | null>(null);\n\n // Listen for ready message from iframe before injecting script\n React.useEffect(() => {\n const handleMessage = (event: MessageEvent) => {\n if (event.data?.type === 'strapiReady') {\n const script = `(${previewScript.toString()})()`;\n iframeRef?.current?.contentWindow?.postMessage(\n { type: 'strapiScript', script },\n new URL(iframeRef.current.src).origin\n );\n }\n };\n\n window.addEventListener('message', handleMessage);\n\n return () => {\n window.removeEventListener('message', handleMessage);\n };\n }, []);\n\n // Listen for willEditField message from iframe\n React.useEffect(() => {\n const handleMessage = (event: MessageEvent) => {\n if (event.data?.type === 'willEditField') {\n if (isSideEditorOpen) {\n setQuery({ field: event.data.payload.path }, 'push', true);\n } else {\n setPopoverField(event.data.payload);\n }\n }\n };\n\n window.addEventListener('message', handleMessage);\n return () => window.removeEventListener('message', handleMessage);\n }, [isSideEditorOpen, setQuery]);\n\n if (!collectionType) {\n throw new Error('Could not find collectionType in url params');\n }\n\n if (!model) {\n throw new Error('Could not find model in url params');\n }\n\n // Only collection types must have a documentId\n if (collectionType === COLLECTION_TYPES && !documentId) {\n throw new Error('Could not find documentId in url params');\n }\n\n const previewUrlResponse = useGetPreviewUrlQuery({\n params: {\n contentType: model,\n },\n query: {\n documentId,\n locale: params.locale,\n status: params.status as GetPreviewUrl.Request['query']['status'],\n },\n });\n const documentResponse = useDocument({\n model,\n collectionType,\n documentId,\n params,\n });\n const documentLayoutResponse = useDocumentLayout(model);\n\n const isLoading =\n previewUrlResponse.isLoading || documentLayoutResponse.isLoading || documentResponse.isLoading;\n if (isLoading && (!documentResponse.document?.documentId || previewUrlResponse.isLoading)) {\n return <Page.Loading />;\n }\n\n const initialValues = documentResponse.getInitialFormValues();\n\n if (\n previewUrlResponse.error ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema ||\n !initialValues\n ) {\n return <Page.Error />;\n }\n\n if (!previewUrlResponse.data?.data?.url) {\n return <Page.NoData />;\n }\n\n const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema: documentResponse.schema,\n initialValues,\n components: documentResponse.components,\n });\n\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n removedAttributes,\n ...options,\n }\n );\n\n return yupSchema.validateSync(cleanedValues, { abortEarly: false });\n };\n\n const previewUrl = previewUrlResponse.data.data.url;\n\n const onPreview = () => {\n iframeRef?.current?.contentWindow?.postMessage(\n { type: 'strapiUpdate' },\n // The iframe origin is safe to use since it must be provided through the allowedOrigins config\n new URL(iframeRef.current.src).origin\n );\n };\n\n const hasAdvancedPreview = window.strapi.features.isEnabled('cms-advanced-preview');\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.preview.page-title',\n defaultMessage: '{contentType} preview',\n },\n {\n contentType: documentTitle,\n }\n )}\n </Page.Title>\n <PreviewProvider\n url={previewUrl}\n document={documentResponse.document}\n title={documentTitle}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n layout={documentLayoutResponse.edit}\n onPreview={onPreview}\n iframeRef={iframeRef}\n isSideEditorOpen={isSideEditorOpen}\n >\n <FormContext\n method=\"PUT\"\n disabled={\n query.status === 'published' &&\n documentResponse &&\n documentResponse.document.status !== 'draft'\n }\n initialValues={documentResponse.getInitialFormValues()}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n height=\"100%\"\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema: documentResponse.schema,\n initialValues,\n components: documentResponse.components,\n });\n\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n removedAttributes,\n ...options,\n }\n );\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n >\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\">\n <Blocker />\n <PreviewHeader />\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\">\n {hasAdvancedPreview && (\n <Box\n overflow=\"auto\"\n width={isSideEditorOpen ? '50%' : 0}\n borderWidth=\"0 1px 0 0\"\n borderColor=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n // Remove horizontal padding when the editor is closed or it won't fully disappear\n paddingLeft={isSideEditorOpen ? 6 : 0}\n paddingRight={isSideEditorOpen ? 6 : 0}\n transition=\"all 0.2s ease-in-out\"\n >\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={documentResponse}\n hasBackground={false}\n />\n </Box>\n )}\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n height=\"100%\"\n overflow=\"hidden\"\n >\n <Flex\n direction=\"row\"\n background=\"neutral0\"\n padding={2}\n borderWidth=\"0 0 1px 0\"\n borderColor=\"neutral150\"\n >\n {hasAdvancedPreview && (\n <IconButton\n variant=\"ghost\"\n label={formatMessage(\n isSideEditorOpen\n ? {\n id: 'content-manager.preview.content.close-editor',\n defaultMessage: 'Close editor',\n }\n : {\n id: 'content-manager.preview.content.open-editor',\n defaultMessage: 'Open editor',\n }\n )}\n onClick={() => setIsSideEditorOpen((prev) => !prev)}\n >\n <AnimatedArrow $isSideEditorOpen={isSideEditorOpen} />\n </IconButton>\n )}\n <Flex justifyContent=\"center\" flex={1}>\n <SingleSelect\n value={deviceName}\n onChange={(name) => setDeviceName(name.toString())}\n aria-label={formatMessage({\n id: 'content-manager.preview.device.select',\n defaultMessage: 'Select device type',\n })}\n >\n {DEVICES.map((deviceOption) => (\n <SingleSelectOption key={deviceOption.name} value={deviceOption.name}>\n {formatMessage(deviceOption.label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Flex>\n </Flex>\n <Flex direction=\"column\" justifyContent=\"center\" background=\"neutral0\" flex={1}>\n <Box\n data-testid=\"preview-iframe\"\n ref={iframeRef}\n src={previewUrl}\n /**\n * For some reason, changing an iframe's src tag causes the browser to add a new item in the\n * history stack. This is an issue for us as it means clicking the back button will not let us\n * go back to the edit view. To fix it, we need to trick the browser into thinking this is a\n * different iframe when the preview URL changes. So we set a key prop to force React\n * to mount a different node when the src changes.\n */\n key={previewUrl}\n title={formatMessage({\n id: 'content-manager.preview.panel.title',\n defaultMessage: 'Preview',\n })}\n width={device.width}\n height={device.height}\n borderWidth={0}\n tag=\"iframe\"\n />\n </Flex>\n </Flex>\n </Flex>\n <VisualEditingPopover\n popoverField={popoverField}\n setPopoverField={setPopoverField}\n documentResponse={documentResponse}\n />\n </Flex>\n </FormContext>\n </PreviewProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedPreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedPreviewPageImpl = () => {\n const { slug: model } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC([\n { action: 'plugin::content-manager.explorer.read', subject: model },\n { action: 'plugin::content-manager.explorer.update', subject: model },\n { action: 'plugin::content-manager.explorer.publish', subject: model },\n ]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !model) {\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Protect\n permissions={permissions.filter((permission) =>\n permission.action.includes('explorer.read')\n )}\n >\n <DocumentRBAC permissions={permissions}>\n <PreviewPage />\n </DocumentRBAC>\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedPreviewPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedPreviewPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedPreviewPage, usePreviewContext };\n"],"names":["DEVICES","name","label","id","defaultMessage","width","height","PreviewProvider","usePreviewContext","createContext","VisualEditingPopover","popoverField","setPopoverField","documentResponse","iframeRef","state","schema","current","iframeRect","getBoundingClientRect","_jsxs","_Fragment","_jsx","Box","position","top","left","zIndex","Popover","Root","open","onOpenChange","Trigger","Content","sideOffset","padding","InputRenderer","document","attribute","attributes","path","type","visible","AnimatedArrow","styled","ArrowLineLeft","props","$isSideEditorOpen","PreviewPage","location","useLocation","formatMessage","useIntl","React","useRef","isSideEditorOpen","setIsSideEditorOpen","useState","slug","model","documentId","collectionType","useParams","query","field","_field","setQuery","useQueryParams","params","useMemo","buildValidParams","deviceName","setDeviceName","device","find","d","useEffect","handleMessage","event","data","script","previewScript","toString","contentWindow","postMessage","URL","src","origin","window","addEventListener","removeEventListener","payload","Error","COLLECTION_TYPES","previewUrlResponse","useGetPreviewUrlQuery","contentType","locale","status","useDocument","documentLayoutResponse","useDocumentLayout","isLoading","Page","Loading","initialValues","getInitialFormValues","error","meta","url","NoData","documentTitle","getTitle","edit","settings","mainField","validateSync","values","options","cleanedValues","removedAttributes","handleInvisibleAttributes","components","yupSchema","createYupSchema","abortEarly","previewUrl","onPreview","hasAdvancedPreview","strapi","features","isEnabled","Title","title","layout","FormContext","method","disabled","initialErrors","forceValidation","validate","Flex","direction","alignItems","Blocker","PreviewHeader","flex","overflow","borderWidth","borderColor","paddingTop","paddingBottom","paddingLeft","paddingRight","transition","FormLayout","hasBackground","background","IconButton","variant","onClick","prev","justifyContent","SingleSelect","value","onChange","aria-label","map","deviceOption","SingleSelectOption","data-testid","ref","tag","ProtectedPreviewPageImpl","permissions","useRBAC","action","subject","Protect","filter","permission","includes","DocumentRBAC","ProtectedPreviewPage","Portal","FocusTrap"],"mappings":"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"}
1
+ {"version":3,"file":"Preview.js","sources":["../../../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n useQueryParams,\n useRBAC,\n createContext,\n Form as FormContext,\n type FieldContentSourceMap,\n useNotification,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n FocusTrap,\n IconButton,\n Portal,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { ArrowLineLeft } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { Blocker } from '../../pages/EditView/components/Blocker';\nimport { FormLayout } from '../../pages/EditView/components/FormLayout';\nimport { handleInvisibleAttributes } from '../../pages/EditView/utils/data';\nimport { buildValidParams } from '../../utils/api';\nimport { createYupSchema } from '../../utils/validation';\nimport { InputPopover } from '../components/InputPopover';\nimport { PreviewHeader } from '../components/PreviewHeader';\nimport { useGetPreviewUrlQuery } from '../services/preview';\nimport { PUBLIC_EVENTS } from '../utils/constants';\nimport { getSendMessage } from '../utils/getSendMessage';\nimport { previewScript } from '../utils/previewScript';\n\nimport type { Schema, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst DEVICES = [\n {\n name: 'desktop',\n label: {\n id: 'content-manager.preview.device.desktop',\n defaultMessage: 'Desktop',\n },\n width: '100%',\n height: '100%',\n },\n {\n name: 'mobile',\n label: {\n id: 'content-manager.preview.device.mobile',\n defaultMessage: 'Mobile',\n },\n width: '375px',\n height: '667px',\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PopoverField extends FieldContentSourceMap {\n position: DOMRect;\n attribute: Schema.Attribute.AnyAttribute;\n}\n\ninterface PreviewContextValue {\n url: string;\n title: string;\n document: NonNullable<ReturnType<UseDocument>['document']>;\n meta: NonNullable<ReturnType<UseDocument>['meta']>;\n schema: NonNullable<ReturnType<UseDocument>['schema']>;\n components: NonNullable<ReturnType<UseDocument>['components']>;\n layout: EditLayout;\n onPreview: () => void;\n iframeRef: React.RefObject<HTMLIFrameElement>;\n popoverField: PopoverField | null;\n setPopoverField: (value: PopoverField | null) => void;\n}\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AnimatedArrow = styled(ArrowLineLeft)<{ $isSideEditorOpen: boolean }>`\n will-change: transform;\n rotate: ${(props) => (props.$isSideEditorOpen ? '0deg' : '180deg')};\n transition: rotate 0.2s ease-in-out;\n`;\n\nconst PreviewPage = () => {\n const location = useLocation();\n const { formatMessage } = useIntl();\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null);\n const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);\n const [popoverField, setPopoverField] = React.useState<PopoverField | null>(null);\n const { toggleNotification } = useNotification();\n\n // Read all the necessary data from the URL to find the right preview URL\n const {\n slug: model,\n id: documentId,\n collectionType,\n } = useParams<{\n slug: UID.ContentType;\n id: string;\n collectionType: string;\n }>();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n status?: string;\n }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n const [deviceName, setDeviceName] = React.useState<(typeof DEVICES)[number]['name']>(\n DEVICES[0].name\n );\n const device = DEVICES.find((d) => d.name === deviceName) ?? DEVICES[0];\n\n // Listen for ready message from iframe before injecting script\n React.useEffect(() => {\n const handleMessage = (event: MessageEvent) => {\n // Only listen to events from the preview iframe\n if (iframeRef.current) {\n const previewOrigin = new URL(iframeRef.current?.src).origin;\n if (event.origin !== previewOrigin) {\n return;\n }\n }\n\n if (event.data?.type === PUBLIC_EVENTS.PREVIEW_READY) {\n const script = `(${previewScript.toString()})()`;\n const sendMessage = getSendMessage(iframeRef);\n sendMessage(PUBLIC_EVENTS.STRAPI_SCRIPT, { script });\n }\n };\n\n window.addEventListener('message', handleMessage);\n\n return () => {\n window.removeEventListener('message', handleMessage);\n };\n }, [documentId, toggleNotification]);\n\n if (!collectionType) {\n throw new Error('Could not find collectionType in url params');\n }\n\n if (!model) {\n throw new Error('Could not find model in url params');\n }\n\n // Only collection types must have a documentId\n if (collectionType === COLLECTION_TYPES && !documentId) {\n throw new Error('Could not find documentId in url params');\n }\n\n const previewUrlResponse = useGetPreviewUrlQuery({\n params: {\n contentType: model,\n },\n query: {\n documentId,\n locale: params.locale,\n status: params.status as GetPreviewUrl.Request['query']['status'],\n },\n });\n const documentResponse = useDocument({\n model,\n collectionType,\n documentId,\n params,\n });\n const documentLayoutResponse = useDocumentLayout(model);\n\n const isLoading =\n previewUrlResponse.isLoading || documentLayoutResponse.isLoading || documentResponse.isLoading;\n if (isLoading && (!documentResponse.document?.documentId || previewUrlResponse.isLoading)) {\n return <Page.Loading />;\n }\n\n const initialValues = documentResponse.getInitialFormValues();\n\n if (\n previewUrlResponse.error ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema ||\n !initialValues\n ) {\n return <Page.Error />;\n }\n\n if (!previewUrlResponse.data?.data?.url) {\n return <Page.NoData />;\n }\n\n const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema: documentResponse.schema,\n initialValues,\n components: documentResponse.components,\n });\n\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n removedAttributes,\n ...options,\n }\n );\n\n return yupSchema.validateSync(cleanedValues, { abortEarly: false });\n };\n\n const previewUrl = previewUrlResponse.data.data.url;\n\n const onPreview = () => {\n iframeRef?.current?.contentWindow?.postMessage(\n { type: 'strapiUpdate' },\n // The iframe origin is safe to use since it must be provided through the allowedOrigins config\n new URL(iframeRef.current.src).origin\n );\n };\n\n const hasAdvancedPreview = window.strapi.features.isEnabled('cms-advanced-preview');\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.preview.page-title',\n defaultMessage: '{contentType} preview',\n },\n {\n contentType: documentTitle,\n }\n )}\n </Page.Title>\n <PreviewProvider\n url={previewUrl}\n document={documentResponse.document}\n title={documentTitle}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n components={documentResponse.components}\n layout={documentLayoutResponse.edit}\n onPreview={onPreview}\n iframeRef={iframeRef}\n popoverField={popoverField}\n setPopoverField={setPopoverField}\n >\n <FormContext\n method=\"PUT\"\n disabled={\n query.status === 'published' &&\n documentResponse &&\n documentResponse.document.status !== 'draft'\n }\n initialValues={documentResponse.getInitialFormValues()}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n height=\"100%\"\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema: documentResponse.schema,\n initialValues,\n components: documentResponse.components,\n });\n\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n removedAttributes,\n ...options,\n }\n );\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n >\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\">\n <Blocker />\n <PreviewHeader />\n <InputPopover documentResponse={documentResponse} />\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\">\n {hasAdvancedPreview && (\n <Box\n overflow=\"auto\"\n width={isSideEditorOpen ? '50%' : 0}\n borderWidth=\"0 1px 0 0\"\n borderColor=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n // Remove horizontal padding when the editor is closed or it won't fully disappear\n paddingLeft={isSideEditorOpen ? 6 : 0}\n paddingRight={isSideEditorOpen ? 6 : 0}\n transition=\"all 0.2s ease-in-out\"\n >\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={documentResponse}\n hasBackground={false}\n />\n </Box>\n )}\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n height=\"100%\"\n overflow=\"hidden\"\n >\n <Flex\n direction=\"row\"\n background=\"neutral0\"\n padding={2}\n borderWidth=\"0 0 1px 0\"\n borderColor=\"neutral150\"\n >\n {hasAdvancedPreview && (\n <IconButton\n variant=\"ghost\"\n label={formatMessage(\n isSideEditorOpen\n ? {\n id: 'content-manager.preview.content.close-editor',\n defaultMessage: 'Close editor',\n }\n : {\n id: 'content-manager.preview.content.open-editor',\n defaultMessage: 'Open editor',\n }\n )}\n onClick={() => setIsSideEditorOpen((prev) => !prev)}\n >\n <AnimatedArrow $isSideEditorOpen={isSideEditorOpen} />\n </IconButton>\n )}\n <Flex justifyContent=\"center\" flex={1}>\n <SingleSelect\n value={deviceName}\n onChange={(name) => setDeviceName(name.toString())}\n aria-label={formatMessage({\n id: 'content-manager.preview.device.select',\n defaultMessage: 'Select device type',\n })}\n >\n {DEVICES.map((deviceOption) => (\n <SingleSelectOption key={deviceOption.name} value={deviceOption.name}>\n {formatMessage(deviceOption.label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Flex>\n </Flex>\n <Flex direction=\"column\" justifyContent=\"center\" background=\"neutral0\" flex={1}>\n <Box\n data-testid=\"preview-iframe\"\n ref={iframeRef}\n src={previewUrl}\n /**\n * For some reason, changing an iframe's src tag causes the browser to add a new item in the\n * history stack. This is an issue for us as it means clicking the back button will not let us\n * go back to the edit view. To fix it, we need to trick the browser into thinking this is a\n * different iframe when the preview URL changes. So we set a key prop to force React\n * to mount a different node when the src changes.\n */\n key={previewUrl}\n title={formatMessage({\n id: 'content-manager.preview.panel.title',\n defaultMessage: 'Preview',\n })}\n width={device.width}\n height={device.height}\n borderWidth={0}\n tag=\"iframe\"\n />\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n </FormContext>\n </PreviewProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedPreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedPreviewPageImpl = () => {\n const { slug: model } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC([\n { action: 'plugin::content-manager.explorer.read', subject: model },\n { action: 'plugin::content-manager.explorer.update', subject: model },\n { action: 'plugin::content-manager.explorer.publish', subject: model },\n ]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !model) {\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={5}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={5}\n background=\"neutral0\"\n >\n <Page.Protect\n permissions={permissions.filter((permission) =>\n permission.action.includes('explorer.read')\n )}\n >\n <DocumentRBAC permissions={permissions}>\n <PreviewPage />\n </DocumentRBAC>\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedPreviewPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedPreviewPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedPreviewPage, usePreviewContext };\nexport type { PreviewContextValue };\n"],"names":["DEVICES","name","label","id","defaultMessage","width","height","PreviewProvider","usePreviewContext","createContext","AnimatedArrow","styled","ArrowLineLeft","props","$isSideEditorOpen","PreviewPage","location","useLocation","formatMessage","useIntl","iframeRef","React","useRef","isSideEditorOpen","setIsSideEditorOpen","useState","popoverField","setPopoverField","toggleNotification","useNotification","slug","model","documentId","collectionType","useParams","query","useQueryParams","params","useMemo","buildValidParams","deviceName","setDeviceName","device","find","d","useEffect","handleMessage","event","current","previewOrigin","URL","src","origin","data","type","PUBLIC_EVENTS","PREVIEW_READY","script","previewScript","toString","sendMessage","getSendMessage","STRAPI_SCRIPT","window","addEventListener","removeEventListener","Error","COLLECTION_TYPES","previewUrlResponse","useGetPreviewUrlQuery","contentType","locale","status","documentResponse","useDocument","documentLayoutResponse","useDocumentLayout","isLoading","document","_jsx","Page","Loading","initialValues","getInitialFormValues","error","meta","schema","url","NoData","documentTitle","getTitle","edit","settings","mainField","validateSync","values","options","cleanedValues","removedAttributes","handleInvisibleAttributes","components","yupSchema","createYupSchema","attributes","abortEarly","previewUrl","onPreview","contentWindow","postMessage","hasAdvancedPreview","strapi","features","isEnabled","_jsxs","_Fragment","Title","title","layout","FormContext","method","disabled","initialErrors","state","forceValidation","validate","Flex","direction","alignItems","Blocker","PreviewHeader","InputPopover","flex","overflow","Box","borderWidth","borderColor","paddingTop","paddingBottom","paddingLeft","paddingRight","transition","FormLayout","hasBackground","background","padding","IconButton","variant","onClick","prev","justifyContent","SingleSelect","value","onChange","aria-label","map","deviceOption","SingleSelectOption","data-testid","ref","tag","ProtectedPreviewPageImpl","permissions","useRBAC","action","subject","position","top","left","zIndex","Protect","filter","permission","includes","DocumentRBAC","ProtectedPreviewPage","Portal","FocusTrap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA;;AAEkG,qGAElG,MAAMA,OAAU,GAAA;AACd,IAAA;QACEC,IAAM,EAAA,SAAA;QACNC,KAAO,EAAA;YACLC,EAAI,EAAA,wCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,KAAO,EAAA,MAAA;QACPC,MAAQ,EAAA;AACV,KAAA;AACA,IAAA;QACEL,IAAM,EAAA,QAAA;QACNC,KAAO,EAAA;YACLC,EAAI,EAAA,uCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAC,KAAO,EAAA,OAAA;QACPC,MAAQ,EAAA;AACV;AACD,CAAA;AAyBD,MAAM,CAACC,eAAAA,EAAiBC,iBAAkB,CAAA,GAAGC,yBAAmC,CAAA,aAAA;AAEhF;;AAEkG,qGAElG,MAAMC,aAAAA,GAAgBC,uBAAOC,CAAAA,mBAAAA,CAA8C;;AAEjE,UAAA,EAAE,CAACC,KAAWA,GAAAA,KAAAA,CAAMC,iBAAiB,GAAG,SAAS,QAAU,CAAA;;AAErE,CAAC;AAED,MAAMC,WAAc,GAAA,IAAA;AAClB,IAAA,MAAMC,QAAWC,GAAAA,0BAAAA,EAAAA;IACjB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,MAAMC,SAAAA,GAAYC,gBAAMC,CAAAA,MAAM,CAAoB,IAAA,CAAA;AAClD,IAAA,MAAM,CAACC,gBAAkBC,EAAAA,mBAAAA,CAAoB,GAAGH,gBAAAA,CAAMI,QAAQ,CAAC,IAAA,CAAA;AAC/D,IAAA,MAAM,CAACC,YAAcC,EAAAA,eAAAA,CAAgB,GAAGN,gBAAAA,CAAMI,QAAQ,CAAsB,IAAA,CAAA;IAC5E,MAAM,EAAEG,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;;IAG/B,MAAM,EACJC,MAAMC,KAAK,EACX5B,IAAI6B,UAAU,EACdC,cAAc,EACf,GAAGC,wBAAAA,EAAAA;AAKJ,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AAKpB,IAAA,MAAMC,SAAShB,gBAAMiB,CAAAA,OAAO,CAAC,IAAMC,qBAAiBJ,KAAQ,CAAA,EAAA;AAACA,QAAAA;AAAM,KAAA,CAAA;IAEnE,MAAM,CAACK,UAAYC,EAAAA,aAAAA,CAAc,GAAGpB,gBAAAA,CAAMI,QAAQ,CAChDzB,OAAO,CAAC,CAAE,CAAA,CAACC,IAAI,CAAA;AAEjB,IAAA,MAAMyC,MAAS1C,GAAAA,OAAAA,CAAQ2C,IAAI,CAAC,CAACC,CAAAA,GAAMA,CAAE3C,CAAAA,IAAI,KAAKuC,UAAAA,CAAAA,IAAexC,OAAO,CAAC,CAAE,CAAA;;AAGvEqB,IAAAA,gBAAAA,CAAMwB,SAAS,CAAC,IAAA;AACd,QAAA,MAAMC,gBAAgB,CAACC,KAAAA,GAAAA;;YAErB,IAAI3B,SAAAA,CAAU4B,OAAO,EAAE;AACrB,gBAAA,MAAMC,gBAAgB,IAAIC,GAAAA,CAAI9B,UAAU4B,OAAO,EAAEG,KAAKC,MAAM;gBAC5D,IAAIL,KAAAA,CAAMK,MAAM,KAAKH,aAAe,EAAA;AAClC,oBAAA;AACF;AACF;AAEA,YAAA,IAAIF,MAAMM,IAAI,EAAEC,IAASC,KAAAA,uBAAAA,CAAcC,aAAa,EAAE;gBACpD,MAAMC,MAAAA,GAAS,CAAC,CAAC,EAAEC,4BAAcC,QAAQ,EAAA,CAAG,GAAG,CAAC;AAChD,gBAAA,MAAMC,cAAcC,6BAAezC,CAAAA,SAAAA,CAAAA;gBACnCwC,WAAYL,CAAAA,uBAAAA,CAAcO,aAAa,EAAE;AAAEL,oBAAAA;AAAO,iBAAA,CAAA;AACpD;AACF,SAAA;QAEAM,MAAOC,CAAAA,gBAAgB,CAAC,SAAWlB,EAAAA,aAAAA,CAAAA;QAEnC,OAAO,IAAA;YACLiB,MAAOE,CAAAA,mBAAmB,CAAC,SAAWnB,EAAAA,aAAAA,CAAAA;AACxC,SAAA;KACC,EAAA;AAACd,QAAAA,UAAAA;AAAYJ,QAAAA;AAAmB,KAAA,CAAA;AAEnC,IAAA,IAAI,CAACK,cAAgB,EAAA;AACnB,QAAA,MAAM,IAAIiC,KAAM,CAAA,6CAAA,CAAA;AAClB;AAEA,IAAA,IAAI,CAACnC,KAAO,EAAA;AACV,QAAA,MAAM,IAAImC,KAAM,CAAA,oCAAA,CAAA;AAClB;;IAGA,IAAIjC,cAAAA,KAAmBkC,4BAAoB,IAAA,CAACnC,UAAY,EAAA;AACtD,QAAA,MAAM,IAAIkC,KAAM,CAAA,yCAAA,CAAA;AAClB;AAEA,IAAA,MAAME,qBAAqBC,6BAAsB,CAAA;QAC/ChC,MAAQ,EAAA;YACNiC,WAAavC,EAAAA;AACf,SAAA;QACAI,KAAO,EAAA;AACLH,YAAAA,UAAAA;AACAuC,YAAAA,MAAAA,EAAQlC,OAAOkC,MAAM;AACrBC,YAAAA,MAAAA,EAAQnC,OAAOmC;AACjB;AACF,KAAA,CAAA;AACA,IAAA,MAAMC,mBAAmBC,uBAAY,CAAA;AACnC3C,QAAAA,KAAAA;AACAE,QAAAA,cAAAA;AACAD,QAAAA,UAAAA;AACAK,QAAAA;AACF,KAAA,CAAA;AACA,IAAA,MAAMsC,yBAAyBC,mCAAkB7C,CAAAA,KAAAA,CAAAA;IAEjD,MAAM8C,SAAAA,GACJT,mBAAmBS,SAAS,IAAIF,uBAAuBE,SAAS,IAAIJ,iBAAiBI,SAAS;IAChG,IAAIA,SAAAA,KAAc,CAACJ,gBAAiBK,CAAAA,QAAQ,EAAE9C,UAAcoC,IAAAA,kBAAAA,CAAmBS,SAAQ,CAAI,EAAA;QACzF,qBAAOE,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,MAAMC,aAAAA,GAAgBT,iBAAiBU,oBAAoB,EAAA;AAE3D,IAAA,IACEf,mBAAmBgB,KAAK,IACxBT,uBAAuBS,KAAK,IAC5B,CAACX,gBAAiBK,CAAAA,QAAQ,IAC1B,CAACL,gBAAAA,CAAiBY,IAAI,IACtB,CAACZ,iBAAiBa,MAAM,IACxB,CAACJ,aACD,EAAA;QACA,qBAAOH,cAAA,CAACC,iBAAKd,KAAK,EAAA,EAAA,CAAA;AACpB;AAEA,IAAA,IAAI,CAACE,kBAAAA,CAAmBf,IAAI,EAAEA,MAAMkC,GAAK,EAAA;QACvC,qBAAOR,cAAA,CAACC,iBAAKQ,MAAM,EAAA,EAAA,CAAA;AACrB;IAEA,MAAMC,aAAAA,GAAgBhB,iBAAiBiB,QAAQ,CAACf,uBAAuBgB,IAAI,CAACC,QAAQ,CAACC,SAAS,CAAA;IAE9F,MAAMC,YAAAA,GAAe,CAACC,MAAiCC,EAAAA,OAAAA,GAAAA;QACrD,MAAM,EAAE3C,MAAM4C,aAAa,EAAEC,iBAAiB,EAAE,GAAGC,+BAA0BJ,MAAQ,EAAA;AACnFT,YAAAA,MAAAA,EAAQb,iBAAiBa,MAAM;AAC/BJ,YAAAA,aAAAA;AACAkB,YAAAA,UAAAA,EAAY3B,iBAAiB2B;AAC/B,SAAA,CAAA;QAEA,MAAMC,SAAAA,GAAYC,2BAChB7B,gBAAiBa,CAAAA,MAAM,EAAEiB,UACzB9B,EAAAA,gBAAAA,CAAiB2B,UAAU,EAC3B;YACE5B,MAAQC,EAAAA,gBAAAA,CAAiBK,QAAQ,EAAEN,MAAAA;AACnC0B,YAAAA,iBAAAA;AACA,YAAA,GAAGF;AACL,SAAA,CAAA;QAGF,OAAOK,SAAAA,CAAUP,YAAY,CAACG,aAAe,EAAA;YAAEO,UAAY,EAAA;AAAM,SAAA,CAAA;AACnE,KAAA;AAEA,IAAA,MAAMC,aAAarC,kBAAmBf,CAAAA,IAAI,CAACA,IAAI,CAACkC,GAAG;AAEnD,IAAA,MAAMmB,SAAY,GAAA,IAAA;QAChBtF,SAAW4B,EAAAA,OAAAA,EAAS2D,eAAeC,WACjC,CAAA;YAAEtD,IAAM,EAAA;AAAe,SAAA;AAEvB,QAAA,IAAIJ,IAAI9B,SAAU4B,CAAAA,OAAO,CAACG,GAAG,EAAEC,MAAM,CAAA;AAEzC,KAAA;AAEA,IAAA,MAAMyD,qBAAqB9C,MAAO+C,CAAAA,MAAM,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAA,CAAA;IAE5D,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;AACE,0BAAAnC,cAAA,CAACC,iBAAKmC,KAAK,EAAA;0BACRjG,aACC,CAAA;oBACEf,EAAI,EAAA,oCAAA;oBACJC,cAAgB,EAAA;iBAElB,EAAA;oBACEkE,WAAamB,EAAAA;AACf,iBAAA;;0BAGJV,cAACxE,CAAAA,eAAAA,EAAAA;gBACCgF,GAAKkB,EAAAA,UAAAA;AACL3B,gBAAAA,QAAAA,EAAUL,iBAAiBK,QAAQ;gBACnCsC,KAAO3B,EAAAA,aAAAA;AACPJ,gBAAAA,IAAAA,EAAMZ,iBAAiBY,IAAI;AAC3BC,gBAAAA,MAAAA,EAAQb,iBAAiBa,MAAM;AAC/Bc,gBAAAA,UAAAA,EAAY3B,iBAAiB2B,UAAU;AACvCiB,gBAAAA,MAAAA,EAAQ1C,uBAAuBgB,IAAI;gBACnCe,SAAWA,EAAAA,SAAAA;gBACXtF,SAAWA,EAAAA,SAAAA;gBACXM,YAAcA,EAAAA,YAAAA;gBACdC,eAAiBA,EAAAA,eAAAA;AAEjB,gBAAA,QAAA,gBAAAoD,cAACuC,CAAAA,gBAAAA,EAAAA;oBACCC,MAAO,EAAA,KAAA;oBACPC,QACErF,EAAAA,KAAAA,CAAMqC,MAAM,KAAK,WAAA,IACjBC,oBACAA,gBAAiBK,CAAAA,QAAQ,CAACN,MAAM,KAAK,OAAA;AAEvCU,oBAAAA,aAAAA,EAAeT,iBAAiBU,oBAAoB,EAAA;AACpDsC,oBAAAA,aAAAA,EAAezG,UAAU0G,KAAOC,EAAAA,eAAAA,GAAkB7B,aAAaZ,aAAe,EAAA,MAAM,EAAC;oBACrF5E,MAAO,EAAA,MAAA;AACPsH,oBAAAA,QAAAA,EAAU,CAAC7B,MAAiCC,EAAAA,OAAAA,GAAAA;wBAC1C,MAAM,EAAE3C,MAAM4C,aAAa,EAAEC,iBAAiB,EAAE,GAAGC,+BAA0BJ,MAAQ,EAAA;AACnFT,4BAAAA,MAAAA,EAAQb,iBAAiBa,MAAM;AAC/BJ,4BAAAA,aAAAA;AACAkB,4BAAAA,UAAAA,EAAY3B,iBAAiB2B;AAC/B,yBAAA,CAAA;wBAEA,MAAMC,SAAAA,GAAYC,2BAChB7B,gBAAiBa,CAAAA,MAAM,EAAEiB,UACzB9B,EAAAA,gBAAAA,CAAiB2B,UAAU,EAC3B;4BACE5B,MAAQC,EAAAA,gBAAAA,CAAiBK,QAAQ,EAAEN,MAAAA;AACnC0B,4BAAAA,iBAAAA;AACA,4BAAA,GAAGF;AACL,yBAAA,CAAA;wBAGF,OAAOK,SAAAA,CAAUuB,QAAQ,CAAC3B,aAAe,EAAA;4BAAEO,UAAY,EAAA;AAAM,yBAAA,CAAA;AAC/D,qBAAA;AAEA,oBAAA,QAAA,gBAAAS,eAACY,CAAAA,iBAAAA,EAAAA;wBAAKC,SAAU,EAAA,QAAA;wBAASxH,MAAO,EAAA,MAAA;wBAAOyH,UAAW,EAAA,SAAA;;0CAChDhD,cAACiD,CAAAA,eAAAA,EAAAA,EAAAA,CAAAA;0CACDjD,cAACkD,CAAAA,2BAAAA,EAAAA,EAAAA,CAAAA;0CACDlD,cAACmD,CAAAA,yBAAAA,EAAAA;gCAAazD,gBAAkBA,EAAAA;;0CAChCwC,eAACY,CAAAA,iBAAAA,EAAAA;gCAAKM,IAAM,EAAA,CAAA;gCAAGC,QAAS,EAAA,MAAA;gCAAOL,UAAW,EAAA,SAAA;;AACvClB,oCAAAA,kBAAAA,kBACC9B,cAACsD,CAAAA,gBAAAA,EAAAA;wCACCD,QAAS,EAAA,MAAA;AACT/H,wCAAAA,KAAAA,EAAOkB,mBAAmB,KAAQ,GAAA,CAAA;wCAClC+G,WAAY,EAAA,WAAA;wCACZC,WAAY,EAAA,YAAA;wCACZC,UAAY,EAAA,CAAA;wCACZC,aAAe,EAAA,CAAA;;AAEfC,wCAAAA,WAAAA,EAAanH,mBAAmB,CAAI,GAAA,CAAA;AACpCoH,wCAAAA,YAAAA,EAAcpH,mBAAmB,CAAI,GAAA,CAAA;wCACrCqH,UAAW,EAAA,sBAAA;AAEX,wCAAA,QAAA,gBAAA7D,cAAC8D,CAAAA,qBAAAA,EAAAA;4CACCxB,MAAQ1C,EAAAA,sBAAAA,CAAuBgB,IAAI,CAAC0B,MAAM;4CAC1CvC,QAAUL,EAAAA,gBAAAA;4CACVqE,aAAe,EAAA;;;kDAIrB7B,eAACY,CAAAA,iBAAAA,EAAAA;wCACCC,SAAU,EAAA,QAAA;wCACVC,UAAW,EAAA,SAAA;wCACXI,IAAM,EAAA,CAAA;wCACN7H,MAAO,EAAA,MAAA;wCACP8H,QAAS,EAAA,QAAA;;0DAETnB,eAACY,CAAAA,iBAAAA,EAAAA;gDACCC,SAAU,EAAA,KAAA;gDACViB,UAAW,EAAA,UAAA;gDACXC,OAAS,EAAA,CAAA;gDACTV,WAAY,EAAA,WAAA;gDACZC,WAAY,EAAA,YAAA;;AAEX1B,oDAAAA,kBAAAA,kBACC9B,cAACkE,CAAAA,uBAAAA,EAAAA;wDACCC,OAAQ,EAAA,OAAA;AACRhJ,wDAAAA,KAAAA,EAAOgB,cACLK,gBACI,GAAA;4DACEpB,EAAI,EAAA,8CAAA;4DACJC,cAAgB,EAAA;yDAElB,GAAA;4DACED,EAAI,EAAA,6CAAA;4DACJC,cAAgB,EAAA;AAClB,yDAAA,CAAA;AAEN+I,wDAAAA,OAAAA,EAAS,IAAM3H,mBAAAA,CAAoB,CAAC4H,IAAAA,GAAS,CAACA,IAAAA,CAAAA;AAE9C,wDAAA,QAAA,gBAAArE,cAACrE,CAAAA,aAAAA,EAAAA;4DAAcI,iBAAmBS,EAAAA;;;kEAGtCwD,cAAC8C,CAAAA,iBAAAA,EAAAA;wDAAKwB,cAAe,EAAA,QAAA;wDAASlB,IAAM,EAAA,CAAA;AAClC,wDAAA,QAAA,gBAAApD,cAACuE,CAAAA,yBAAAA,EAAAA;4DACCC,KAAO/G,EAAAA,UAAAA;AACPgH,4DAAAA,QAAAA,EAAU,CAACvJ,IAAAA,GAASwC,aAAcxC,CAAAA,IAAAA,CAAK0D,QAAQ,EAAA,CAAA;AAC/C8F,4DAAAA,YAAAA,EAAYvI,aAAc,CAAA;gEACxBf,EAAI,EAAA,uCAAA;gEACJC,cAAgB,EAAA;AAClB,6DAAA,CAAA;AAECJ,4DAAAA,QAAAA,EAAAA,OAAAA,CAAQ0J,GAAG,CAAC,CAACC,YAAAA,iBACZ5E,cAAC6E,CAAAA,+BAAAA,EAAAA;AAA2CL,oEAAAA,KAAAA,EAAOI,aAAa1J,IAAI;AACjEiB,oEAAAA,QAAAA,EAAAA,aAAAA,CAAcyI,aAAazJ,KAAK;AADVyJ,iEAAAA,EAAAA,YAAAA,CAAa1J,IAAI,CAAA;;;;;0DAOlD8E,cAAC8C,CAAAA,iBAAAA,EAAAA;gDAAKC,SAAU,EAAA,QAAA;gDAASuB,cAAe,EAAA,QAAA;gDAASN,UAAW,EAAA,UAAA;gDAAWZ,IAAM,EAAA,CAAA;AAC3E,gDAAA,QAAA,gBAAApD,cAACsD,CAAAA,gBAAAA,EAAAA;oDACCwB,aAAY,EAAA,gBAAA;oDACZC,GAAK1I,EAAAA,SAAAA;oDACL+B,GAAKsD,EAAAA,UAAAA;AASLW,oDAAAA,KAAAA,EAAOlG,aAAc,CAAA;wDACnBf,EAAI,EAAA,qCAAA;wDACJC,cAAgB,EAAA;AAClB,qDAAA,CAAA;AACAC,oDAAAA,KAAAA,EAAOqC,OAAOrC,KAAK;AACnBC,oDAAAA,MAAAA,EAAQoC,OAAOpC,MAAM;oDACrBgI,WAAa,EAAA,CAAA;oDACbyB,GAAI,EAAA;AARCtD,iDAAAA,EAAAA,UAAAA;;;;;;;;;;;;AAkBzB,CAAA;AAEA;;AAEkG,qGAElG,MAAMuD,wBAA2B,GAAA,IAAA;AAC/B,IAAA,MAAM,EAAElI,IAAAA,EAAMC,KAAK,EAAE,GAAGG,wBAAAA,EAAAA;IAGxB,MAAM,EACJ+H,cAAc,EAAE,EAChBpF,SAAS,EACTO,KAAK,EACN,GAAG8E,mBAAQ,CAAA;AACV,QAAA;YAAEC,MAAQ,EAAA,uCAAA;YAAyCC,OAASrI,EAAAA;AAAM,SAAA;AAClE,QAAA;YAAEoI,MAAQ,EAAA,yCAAA;YAA2CC,OAASrI,EAAAA;AAAM,SAAA;AACpE,QAAA;YAAEoI,MAAQ,EAAA,0CAAA;YAA4CC,OAASrI,EAAAA;AAAM;AACtE,KAAA,CAAA;AAED,IAAA,IAAI8C,SAAW,EAAA;QACb,qBAAOE,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,IAAIG,KAAAA,IAAS,CAACrD,KAAO,EAAA;AACnB,QAAA,qBACEgD,cAACsD,CAAAA,gBAAAA,EAAAA;YACC/H,MAAO,EAAA,QAAA;YACPD,KAAM,EAAA,QAAA;YACNgK,QAAS,EAAA,OAAA;YACTC,GAAK,EAAA,CAAA;YACLC,IAAM,EAAA,CAAA;YACNC,MAAQ,EAAA,CAAA;YACRzB,UAAW,EAAA,UAAA;oCAEXhE,cAAA,CAACC,iBAAKd,KAAK,EAAA,EAAA;;AAGjB;AAEA,IAAA,qBACEa,cAACsD,CAAAA,gBAAAA,EAAAA;QACC/H,MAAO,EAAA,QAAA;QACPD,KAAM,EAAA,QAAA;QACNgK,QAAS,EAAA,OAAA;QACTC,GAAK,EAAA,CAAA;QACLC,IAAM,EAAA,CAAA;QACNC,MAAQ,EAAA,CAAA;QACRzB,UAAW,EAAA,UAAA;gCAEXhE,cAAA,CAACC,iBAAKyF,OAAO,EAAA;YACXR,WAAaA,EAAAA,WAAAA,CAAYS,MAAM,CAAC,CAACC,aAC/BA,UAAWR,CAAAA,MAAM,CAACS,QAAQ,CAAC,eAAA,CAAA,CAAA;AAG7B,YAAA,QAAA,gBAAA7F,cAAC8F,CAAAA,yBAAAA,EAAAA;gBAAaZ,WAAaA,EAAAA,WAAAA;AACzB,gBAAA,QAAA,gBAAAlF,cAAChE,CAAAA,WAAAA,EAAAA,EAAAA;;;;AAKX,CAAA;AAEA,MAAM+J,oBAAuB,GAAA,IAAA;AAC3B,IAAA,qBACE/F,cAACgG,CAAAA,mBAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAhG,cAACiG,CAAAA,sBAAAA,EAAAA;AACC,YAAA,QAAA,gBAAAjG,cAACiF,CAAAA,wBAAAA,EAAAA,EAAAA;;;AAIT;;;;;"}