@strapi/content-manager 0.0.0-experimental.8478bb287dfba93afd007cad7697c0f88853a2d8 → 0.0.0-experimental.848e0ac442910c1ad22a7c5eaab07088827fb53c

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 (322) 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 +90 -48
  30. package/dist/admin/components/LeftMenu.js.map +1 -1
  31. package/dist/admin/components/LeftMenu.mjs +92 -50
  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 +26 -8
  36. package/dist/admin/components/Widgets.js.map +1 -1
  37. package/dist/admin/components/Widgets.mjs +26 -8
  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 +7 -3
  72. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  73. package/dist/admin/pages/EditView/EditViewPage.mjs +8 -4
  74. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/DocumentActions.js +11 -3
  76. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  77. package/dist/admin/pages/EditView/components/DocumentActions.mjs +11 -3
  78. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  80. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  82. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
  84. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
  86. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  88. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  89. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  90. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  92. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  93. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -2
  94. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  95. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -2
  96. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  97. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  98. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  99. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
  100. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
  101. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
  102. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
  103. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  104. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  105. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +2 -1
  106. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  107. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +3 -2
  108. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  109. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
  110. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  111. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
  112. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  113. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +4 -3
  114. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  115. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +5 -4
  116. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  117. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  118. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  119. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
  120. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  121. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
  122. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  123. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +2 -1
  124. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  125. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +3 -2
  126. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  127. package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
  128. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  129. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
  130. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  132. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +2 -2
  134. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +2 -2
  136. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  138. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  139. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  140. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  142. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  143. package/dist/admin/pages/EditView/components/FormLayout.js +13 -8
  144. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  145. package/dist/admin/pages/EditView/components/FormLayout.mjs +14 -8
  146. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  147. package/dist/admin/pages/EditView/components/Header.js +92 -27
  148. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  149. package/dist/admin/pages/EditView/components/Header.mjs +94 -29
  150. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  151. package/dist/admin/pages/EditView/components/InputRenderer.js +25 -20
  152. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  153. package/dist/admin/pages/EditView/components/InputRenderer.mjs +25 -20
  154. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  155. package/dist/admin/pages/EditView/utils/data.js +1 -1
  156. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  157. package/dist/admin/pages/EditView/utils/data.mjs +1 -1
  158. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  159. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
  160. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  161. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
  162. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  163. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  164. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  165. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  166. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  167. package/dist/admin/pages/ListView/ListViewPage.js +0 -2
  168. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  169. package/dist/admin/pages/ListView/ListViewPage.mjs +0 -2
  170. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  171. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  172. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  173. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  174. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  175. package/dist/admin/pages/ListView/components/Filters.js +4 -1
  176. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  177. package/dist/admin/pages/ListView/components/Filters.mjs +4 -1
  178. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  179. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  180. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  181. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  182. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  183. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js +5 -2
  184. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  185. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs +5 -2
  186. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  187. package/dist/admin/preview/components/InputPopover.js +130 -14
  188. package/dist/admin/preview/components/InputPopover.js.map +1 -1
  189. package/dist/admin/preview/components/InputPopover.mjs +112 -15
  190. package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
  191. package/dist/admin/preview/components/PreviewHeader.js +0 -1
  192. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  193. package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
  194. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  195. package/dist/admin/preview/hooks/usePreviewInputManager.js +18 -8
  196. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
  197. package/dist/admin/preview/hooks/usePreviewInputManager.mjs +18 -8
  198. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -1
  199. package/dist/admin/preview/pages/Preview.js +12 -10
  200. package/dist/admin/preview/pages/Preview.js.map +1 -1
  201. package/dist/admin/preview/pages/Preview.mjs +14 -12
  202. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  203. package/dist/admin/preview/services/preview.js.map +1 -1
  204. package/dist/admin/preview/services/preview.mjs.map +1 -1
  205. package/dist/admin/preview/utils/constants.js +34 -0
  206. package/dist/admin/preview/utils/constants.js.map +1 -1
  207. package/dist/admin/preview/utils/constants.mjs +34 -1
  208. package/dist/admin/preview/utils/constants.mjs.map +1 -1
  209. package/dist/admin/preview/utils/fieldUtils.js +107 -0
  210. package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
  211. package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
  212. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
  213. package/dist/admin/preview/utils/previewScript.js +198 -115
  214. package/dist/admin/preview/utils/previewScript.js.map +1 -1
  215. package/dist/admin/preview/utils/previewScript.mjs +198 -115
  216. package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
  217. package/dist/admin/router.js.map +1 -1
  218. package/dist/admin/router.mjs.map +1 -1
  219. package/dist/admin/services/api.js +2 -1
  220. package/dist/admin/services/api.js.map +1 -1
  221. package/dist/admin/services/api.mjs +2 -1
  222. package/dist/admin/services/api.mjs.map +1 -1
  223. package/dist/admin/services/documents.js +19 -3
  224. package/dist/admin/services/documents.js.map +1 -1
  225. package/dist/admin/services/documents.mjs +19 -3
  226. package/dist/admin/services/documents.mjs.map +1 -1
  227. package/dist/admin/services/homepage.js.map +1 -1
  228. package/dist/admin/services/homepage.mjs.map +1 -1
  229. package/dist/admin/services/relations.js.map +1 -1
  230. package/dist/admin/services/relations.mjs.map +1 -1
  231. package/dist/admin/src/components/LeftMenu.d.ts +3 -1
  232. package/dist/admin/src/components/Widgets.d.ts +6 -2
  233. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  234. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  235. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +0 -3
  236. package/dist/admin/src/pages/EditView/components/Header.d.ts +15 -0
  237. package/dist/admin/src/preview/components/InputPopover.d.ts +1 -1
  238. package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +2 -1
  239. package/dist/admin/src/preview/pages/Preview.d.ts +6 -2
  240. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  241. package/dist/admin/src/preview/utils/constants.d.ts +35 -0
  242. package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
  243. package/dist/admin/src/preview/utils/previewScript.d.ts +1 -0
  244. package/dist/admin/src/services/api.d.ts +1 -1
  245. package/dist/admin/src/services/components.d.ts +2 -2
  246. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  247. package/dist/admin/src/services/documents.d.ts +16 -16
  248. package/dist/admin/src/services/homepage.d.ts +1 -1
  249. package/dist/admin/src/services/init.d.ts +1 -1
  250. package/dist/admin/src/services/relations.d.ts +2 -2
  251. package/dist/admin/src/services/uid.d.ts +3 -3
  252. package/dist/admin/translations/en.json.js +6 -0
  253. package/dist/admin/translations/en.json.js.map +1 -1
  254. package/dist/admin/translations/en.json.mjs +6 -0
  255. package/dist/admin/translations/en.json.mjs.map +1 -1
  256. package/dist/admin/translations/es.json.js +1 -0
  257. package/dist/admin/translations/es.json.js.map +1 -1
  258. package/dist/admin/translations/es.json.mjs +1 -0
  259. package/dist/admin/translations/es.json.mjs.map +1 -1
  260. package/dist/admin/translations/fr.json.js +2 -1
  261. package/dist/admin/translations/fr.json.js.map +1 -1
  262. package/dist/admin/translations/fr.json.mjs +2 -1
  263. package/dist/admin/translations/fr.json.mjs.map +1 -1
  264. package/dist/admin/utils/translations.js.map +1 -1
  265. package/dist/admin/utils/translations.mjs.map +1 -1
  266. package/dist/admin/utils/urls.js.map +1 -1
  267. package/dist/admin/utils/urls.mjs.map +1 -1
  268. package/dist/admin/utils/users.js.map +1 -1
  269. package/dist/admin/utils/users.mjs.map +1 -1
  270. package/dist/admin/utils/validation.js.map +1 -1
  271. package/dist/admin/utils/validation.mjs.map +1 -1
  272. package/dist/server/controllers/collection-types.js +2 -1
  273. package/dist/server/controllers/collection-types.js.map +1 -1
  274. package/dist/server/controllers/collection-types.mjs +2 -1
  275. package/dist/server/controllers/collection-types.mjs.map +1 -1
  276. package/dist/server/controllers/relations.js +6 -4
  277. package/dist/server/controllers/relations.js.map +1 -1
  278. package/dist/server/controllers/relations.mjs +6 -4
  279. package/dist/server/controllers/relations.mjs.map +1 -1
  280. package/dist/server/controllers/single-types.js +3 -1
  281. package/dist/server/controllers/single-types.js.map +1 -1
  282. package/dist/server/controllers/single-types.mjs +3 -1
  283. package/dist/server/controllers/single-types.mjs.map +1 -1
  284. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  285. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  286. package/dist/server/controllers/validation/index.js.map +1 -1
  287. package/dist/server/controllers/validation/index.mjs.map +1 -1
  288. package/dist/server/history/utils.js.map +1 -1
  289. package/dist/server/history/utils.mjs.map +1 -1
  290. package/dist/server/homepage/services/homepage.js +1 -1
  291. package/dist/server/homepage/services/homepage.js.map +1 -1
  292. package/dist/server/homepage/services/homepage.mjs +1 -1
  293. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  294. package/dist/server/middlewares/routing.js.map +1 -1
  295. package/dist/server/middlewares/routing.mjs.map +1 -1
  296. package/dist/server/preview/services/preview-config.js +8 -33
  297. package/dist/server/preview/services/preview-config.js.map +1 -1
  298. package/dist/server/preview/services/preview-config.mjs +9 -34
  299. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  300. package/dist/server/preview/services/preview.js.map +1 -1
  301. package/dist/server/preview/services/preview.mjs.map +1 -1
  302. package/dist/server/preview/utils.js.map +1 -1
  303. package/dist/server/preview/utils.mjs.map +1 -1
  304. package/dist/server/services/configuration.js.map +1 -1
  305. package/dist/server/services/configuration.mjs.map +1 -1
  306. package/dist/server/services/document-metadata.js +23 -1
  307. package/dist/server/services/document-metadata.js.map +1 -1
  308. package/dist/server/services/document-metadata.mjs +23 -1
  309. package/dist/server/services/document-metadata.mjs.map +1 -1
  310. package/dist/server/services/field-sizes.js.map +1 -1
  311. package/dist/server/services/field-sizes.mjs.map +1 -1
  312. package/dist/server/services/uid.js.map +1 -1
  313. package/dist/server/services/uid.mjs.map +1 -1
  314. package/dist/server/services/utils/store.js.map +1 -1
  315. package/dist/server/services/utils/store.mjs.map +1 -1
  316. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  317. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  318. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  319. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  320. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  321. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  322. package/package.json +7 -7
@@ -12,6 +12,8 @@
12
12
  * ---------------------------------------------------------------------------------------------*/ const HIGHLIGHT_PADDING = 2; // in pixels
13
13
  const HIGHLIGHT_HOVER_COLOR = window.STRAPI_HIGHLIGHT_HOVER_COLOR ?? '#4945ff'; // dark primary500
14
14
  const HIGHLIGHT_ACTIVE_COLOR = window.STRAPI_HIGHLIGHT_ACTIVE_COLOR ?? '#7b79ff'; // dark primary600
15
+ const HIGHLIGHT_STYLES_ID = 'strapi-preview-highlight-styles';
16
+ const DOUBLE_CLICK_TIMEOUT = 300; // milliseconds to wait for potential double-click
15
17
  const DISABLE_STEGA_DECODING = window.STRAPI_DISABLE_STEGA_DECODING ?? false;
16
18
  const SOURCE_ATTRIBUTE = 'data-strapi-source';
17
19
  const OVERLAY_ID = 'strapi-preview-overlay';
@@ -19,7 +21,8 @@
19
21
  STRAPI_FIELD_FOCUS: 'strapiFieldFocus',
20
22
  STRAPI_FIELD_BLUR: 'strapiFieldBlur',
21
23
  STRAPI_FIELD_CHANGE: 'strapiFieldChange',
22
- STRAPI_FIELD_FOCUS_INTENT: 'strapiFieldFocusIntent'
24
+ STRAPI_FIELD_FOCUS_INTENT: 'strapiFieldFocusIntent',
25
+ STRAPI_FIELD_SINGLE_CLICK_HINT: 'strapiFieldSingleClickHint'
23
26
  };
24
27
  /**
25
28
  * Calling the function in no-run mode lets us retrieve the constants from other files and keep
@@ -38,6 +41,9 @@
38
41
  payload
39
42
  }, '*');
40
43
  };
44
+ const getElementsByPath = (path)=>{
45
+ return document.querySelectorAll(`[${SOURCE_ATTRIBUTE}*="path=${path}"]`);
46
+ };
41
47
  /* -----------------------------------------------------------------------------------------------
42
48
  * Functionality pieces
43
49
  * ---------------------------------------------------------------------------------------------*/ const setupStegaDOMObserver = async ()=>{
@@ -47,14 +53,15 @@
47
53
  const { vercelStegaDecode: stegaDecode, vercelStegaClean: stegaClean } = await import(// @ts-expect-error it's not a local dependency
48
54
  // eslint-disable-next-line import/no-unresolved
49
55
  'https://cdn.jsdelivr.net/npm/@vercel/stega@0.1.2/+esm');
50
- const processElementForStega = (element)=>{
56
+ const applyStegaToElement = (element)=>{
51
57
  const directTextNodes = Array.from(element.childNodes).filter((node)=>node.nodeType === Node.TEXT_NODE);
52
58
  const directTextContent = directTextNodes.map((node)=>node.textContent || '').join('');
53
59
  if (directTextContent) {
54
60
  try {
61
+ // TODO: check if we can call split instead of decode+clean
55
62
  const result = stegaDecode(directTextContent);
56
- if (result) {
57
- element.setAttribute(SOURCE_ATTRIBUTE, result.key);
63
+ if (result && 'strapiSource' in result) {
64
+ element.setAttribute(SOURCE_ATTRIBUTE, result.strapiSource);
58
65
  // Remove encoded part from DOM text content (to avoid breaking links for example)
59
66
  directTextNodes.forEach((node)=>{
60
67
  if (node.textContent) {
@@ -70,7 +77,7 @@
70
77
  };
71
78
  // Process all existing elements
72
79
  const allElements = document.querySelectorAll('*');
73
- Array.from(allElements).forEach(processElementForStega);
80
+ Array.from(allElements).forEach(applyStegaToElement);
74
81
  // Create observer for new elements and text changes
75
82
  const observer = new MutationObserver((mutations)=>{
76
83
  mutations.forEach((mutation)=>{
@@ -80,16 +87,16 @@
80
87
  if (node.nodeType === Node.ELEMENT_NODE) {
81
88
  const element = node;
82
89
  // Process the added element
83
- processElementForStega(element);
90
+ applyStegaToElement(element);
84
91
  // Process all child elements
85
92
  const childElements = element.querySelectorAll('*');
86
- Array.from(childElements).forEach(processElementForStega);
93
+ Array.from(childElements).forEach(applyStegaToElement);
87
94
  }
88
95
  });
89
96
  }
90
97
  // Handle text content changes
91
98
  if (mutation.type === 'characterData' && mutation.target.parentElement) {
92
- processElementForStega(mutation.target.parentElement);
99
+ applyStegaToElement(mutation.target.parentElement);
93
100
  }
94
101
  });
95
102
  });
@@ -100,6 +107,37 @@
100
107
  });
101
108
  return observer;
102
109
  };
110
+ const createHighlightStyles = ()=>{
111
+ const existingStyles = document.getElementById(HIGHLIGHT_STYLES_ID);
112
+ // Remove existing styles to avoid duplicates
113
+ if (existingStyles) {
114
+ existingStyles.remove();
115
+ }
116
+ const styleElement = document.createElement('style');
117
+ styleElement.id = HIGHLIGHT_STYLES_ID;
118
+ styleElement.textContent = `
119
+ .strapi-highlight {
120
+ position: absolute;
121
+ outline: 2px solid transparent;
122
+ pointer-events: auto;
123
+ border-radius: 2px;
124
+ background-color: transparent;
125
+ will-change: transform;
126
+ transition: outline-color 0.1s ease-in-out;
127
+ }
128
+
129
+ .strapi-highlight:hover {
130
+ outline-color: ${HIGHLIGHT_HOVER_COLOR} !important;
131
+ }
132
+
133
+ .strapi-highlight.strapi-highlight-focused {
134
+ outline-color: ${HIGHLIGHT_ACTIVE_COLOR} !important;
135
+ outline-width: 3px !important;
136
+ }
137
+ `;
138
+ document.head.appendChild(styleElement);
139
+ return styleElement;
140
+ };
103
141
  const createOverlaySystem = ()=>{
104
142
  // Clean up before creating a new overlay so we can safely call previewScript multiple times
105
143
  window.__strapi_previewCleanup?.();
@@ -119,9 +157,10 @@
119
157
  return overlay;
120
158
  };
121
159
  const createHighlightManager = (overlay)=>{
122
- const elementToHighlight = new Map();
160
+ const elementsToHighlight = new Map();
123
161
  const eventListeners = [];
124
162
  const focusedHighlights = [];
163
+ const pendingClicks = new Map(); // number is timeout id
125
164
  let focusedField = null;
126
165
  const drawHighlight = (target, highlight)=>{
127
166
  if (!highlight) return;
@@ -131,36 +170,67 @@
131
170
  highlight.style.transform = `translate(${rect.left - HIGHLIGHT_PADDING}px, ${rect.top - HIGHLIGHT_PADDING}px)`;
132
171
  };
133
172
  const updateAllHighlights = ()=>{
134
- elementToHighlight.forEach((highlight, element)=>{
173
+ elementsToHighlight.forEach((highlight, element)=>{
135
174
  drawHighlight(element, highlight);
136
175
  });
137
176
  };
138
177
  const createHighlightForElement = (element)=>{
139
- if (elementToHighlight.has(element)) {
140
- return; // Already has a highlight
178
+ if (elementsToHighlight.has(element)) {
179
+ // Already has a highlight
180
+ return;
141
181
  }
142
182
  const highlight = document.createElement('div');
143
- highlight.style.cssText = `
144
- position: absolute;
145
- outline: 2px solid transparent;
146
- pointer-events: none;
147
- border-radius: 2px;
148
- background-color: transparent;
149
- will-change: transform;
150
- transition: outline-color 0.1s ease-in-out;
151
- `;
152
- // Move hover detection to the underlying element
153
- const mouseEnterHandler = ()=>{
154
- if (!focusedHighlights.includes(highlight)) {
155
- highlight.style.outlineColor = HIGHLIGHT_HOVER_COLOR;
183
+ highlight.className = 'strapi-highlight';
184
+ const clickHandler = (event)=>{
185
+ // Skip if this is a re-dispatched event from our delayed handler to avoid infinite loops
186
+ if (event.__strapi_redispatched) {
187
+ return;
156
188
  }
157
- };
158
- const mouseLeaveHandler = ()=>{
159
- if (!focusedHighlights.includes(highlight)) {
160
- highlight.style.outlineColor = 'transparent';
189
+ // Prevent the immediate action for interactive elements
190
+ event.preventDefault();
191
+ event.stopPropagation();
192
+ // Clear any existing timeout for this element
193
+ const existingTimeout = pendingClicks.get(element);
194
+ if (existingTimeout) {
195
+ window.clearTimeout(existingTimeout);
196
+ pendingClicks.delete(element);
161
197
  }
198
+ // Set up a delayed single-click handler
199
+ const timeout = window.setTimeout(()=>{
200
+ pendingClicks.delete(element);
201
+ // Send single-click hint notification
202
+ sendMessage(INTERNAL_EVENTS.STRAPI_FIELD_SINGLE_CLICK_HINT, null);
203
+ // Re-trigger the click on the underlying element after the double-click timeout
204
+ // Create a new event to dispatch with a marker to prevent re-handling
205
+ const newEvent = new MouseEvent('click', {
206
+ bubbles: true,
207
+ cancelable: true,
208
+ view: window,
209
+ detail: 1,
210
+ button: event.button,
211
+ buttons: event.buttons,
212
+ clientX: event.clientX,
213
+ clientY: event.clientY,
214
+ ctrlKey: event.ctrlKey,
215
+ altKey: event.altKey,
216
+ shiftKey: event.shiftKey,
217
+ metaKey: event.metaKey
218
+ });
219
+ newEvent.__strapi_redispatched = true;
220
+ element.dispatchEvent(newEvent);
221
+ }, DOUBLE_CLICK_TIMEOUT);
222
+ pendingClicks.set(element, timeout);
162
223
  };
163
- const doubleClickHandler = ()=>{
224
+ const doubleClickHandler = (event)=>{
225
+ // Prevent the default behavior on double-click
226
+ event.preventDefault();
227
+ event.stopPropagation();
228
+ // Clear any pending single-click action
229
+ const existingTimeout = pendingClicks.get(element);
230
+ if (existingTimeout) {
231
+ clearTimeout(existingTimeout);
232
+ pendingClicks.delete(element);
233
+ }
164
234
  const sourceAttribute = element.getAttribute(SOURCE_ATTRIBUTE);
165
235
  if (sourceAttribute) {
166
236
  const rect = element.getBoundingClientRect();
@@ -183,44 +253,45 @@
183
253
  event.preventDefault();
184
254
  }
185
255
  };
186
- element.addEventListener('mouseenter', mouseEnterHandler);
187
- element.addEventListener('mouseleave', mouseLeaveHandler);
188
- element.addEventListener('dblclick', doubleClickHandler);
189
- element.addEventListener('mousedown', mouseDownHandler);
256
+ highlight.addEventListener('click', clickHandler);
257
+ highlight.addEventListener('dblclick', doubleClickHandler);
258
+ highlight.addEventListener('mousedown', mouseDownHandler);
190
259
  // Store event listeners for cleanup
191
260
  eventListeners.push({
192
- element,
193
- type: 'mouseenter',
194
- handler: mouseEnterHandler
195
- }, {
196
- element,
197
- type: 'mouseleave',
198
- handler: mouseLeaveHandler
261
+ element: highlight,
262
+ type: 'click',
263
+ handler: clickHandler
199
264
  }, {
200
- element,
265
+ element: highlight,
201
266
  type: 'dblclick',
202
267
  handler: doubleClickHandler
203
268
  }, {
204
- element,
269
+ element: highlight,
205
270
  type: 'mousedown',
206
271
  handler: mouseDownHandler
207
272
  });
208
- elementToHighlight.set(element, highlight);
273
+ elementsToHighlight.set(element, highlight);
209
274
  overlay.appendChild(highlight);
210
275
  drawHighlight(element, highlight);
211
276
  };
212
277
  const removeHighlightForElement = (element)=>{
213
- const highlight = elementToHighlight.get(element);
278
+ const highlight = elementsToHighlight.get(element);
214
279
  if (!highlight) return;
280
+ // Clear any pending click timeout for this element
281
+ const pendingTimeout = pendingClicks.get(element);
282
+ if (pendingTimeout) {
283
+ window.clearTimeout(pendingTimeout);
284
+ pendingClicks.delete(element);
285
+ }
215
286
  highlight.remove();
216
- elementToHighlight.delete(element);
217
- // Remove event listeners for this element
218
- const listenersToRemove = eventListeners.filter((listener)=>listener.element === element);
287
+ elementsToHighlight.delete(element);
288
+ // Remove event listeners for this highlight
289
+ const listenersToRemove = eventListeners.filter((listener)=>listener.element === highlight);
219
290
  listenersToRemove.forEach(({ element, type, handler })=>{
220
291
  element.removeEventListener(type, handler);
221
292
  });
222
- // Mutate eventListeners to remove listeners for this element
223
- eventListeners.splice(0, eventListeners.length, ...eventListeners.filter((listener)=>listener.element !== element));
293
+ // Mutate eventListeners to remove listeners for this highlight
294
+ eventListeners.splice(0, eventListeners.length, ...eventListeners.filter((listener)=>listener.element !== highlight));
224
295
  };
225
296
  // Process all existing elements with source attributes
226
297
  const initialElements = window.document.querySelectorAll(`[${SOURCE_ATTRIBUTE}]`);
@@ -231,10 +302,10 @@
231
302
  });
232
303
  return {
233
304
  get elements () {
234
- return Array.from(elementToHighlight.keys());
305
+ return Array.from(elementsToHighlight.keys());
235
306
  },
236
307
  get highlights () {
237
- return Array.from(elementToHighlight.values());
308
+ return Array.from(elementsToHighlight.values());
238
309
  },
239
310
  updateAllHighlights,
240
311
  eventListeners,
@@ -244,7 +315,56 @@
244
315
  setFocusedField: (field)=>{
245
316
  focusedField = field;
246
317
  },
247
- getFocusedField: ()=>focusedField
318
+ getFocusedField: ()=>focusedField,
319
+ clearAllPendingClicks: ()=>{
320
+ pendingClicks.forEach((timeout)=>clearTimeout(timeout));
321
+ pendingClicks.clear();
322
+ }
323
+ };
324
+ };
325
+ /**
326
+ * We need to track scroll in all the element parents in order to keep the highlight position
327
+ * in sync with the element position. Listening to window scroll is not enough because the
328
+ * element can be inside one or more scrollable containers.
329
+ */ const setupScrollManagement = (highlightManager)=>{
330
+ const updateOnScroll = ()=>{
331
+ highlightManager.updateAllHighlights();
332
+ };
333
+ const scrollableElements = new Set();
334
+ scrollableElements.add(window);
335
+ // Find all scrollable ancestors for all tracked elements and set up scroll listeners
336
+ highlightManager.elements.forEach((element)=>{
337
+ let parent = element.parentElement;
338
+ while(parent){
339
+ const computedStyle = window.getComputedStyle(parent);
340
+ const overflow = computedStyle.overflow + computedStyle.overflowX + computedStyle.overflowY;
341
+ if (overflow.includes('scroll') || overflow.includes('auto')) {
342
+ scrollableElements.add(parent);
343
+ }
344
+ parent = parent.parentElement;
345
+ }
346
+ });
347
+ // Add scroll listeners to all scrollable elements
348
+ scrollableElements.forEach((element)=>{
349
+ if (element === window) {
350
+ window.addEventListener('scroll', updateOnScroll);
351
+ window.addEventListener('resize', updateOnScroll);
352
+ } else {
353
+ element.addEventListener('scroll', updateOnScroll);
354
+ }
355
+ });
356
+ const cleanup = ()=>{
357
+ scrollableElements.forEach((element)=>{
358
+ if (element === window) {
359
+ window.removeEventListener('scroll', updateOnScroll);
360
+ window.removeEventListener('resize', updateOnScroll);
361
+ } else {
362
+ element.removeEventListener('scroll', updateOnScroll);
363
+ }
364
+ });
365
+ };
366
+ return {
367
+ cleanup
248
368
  };
249
369
  };
250
370
  const setupObservers = (highlightManager, stegaObserver)=>{
@@ -305,51 +425,10 @@
305
425
  SOURCE_ATTRIBUTE
306
426
  ]
307
427
  });
308
- const updateOnScroll = ()=>{
309
- highlightManager.updateAllHighlights();
310
- };
311
- const scrollableElements = new Set();
312
- scrollableElements.add(window);
313
- const findScrollableAncestors = ()=>{
314
- // Clear existing scrollable elements (except window)
315
- scrollableElements.forEach((element)=>{
316
- if (element !== window) {
317
- element.removeEventListener('scroll', updateOnScroll);
318
- }
319
- });
320
- scrollableElements.clear();
321
- scrollableElements.add(window);
322
- // Find all scrollable ancestors for all tracked elements
323
- highlightManager.elements.forEach((element)=>{
324
- let parent = element.parentElement;
325
- while(parent){
326
- const computedStyle = window.getComputedStyle(parent);
327
- const overflow = computedStyle.overflow + computedStyle.overflowX + computedStyle.overflowY;
328
- if (overflow.includes('scroll') || overflow.includes('auto')) {
329
- scrollableElements.add(parent);
330
- }
331
- parent = parent.parentElement;
332
- }
333
- });
334
- // Add scroll listeners to all scrollable elements
335
- scrollableElements.forEach((element)=>{
336
- if (element === window) {
337
- window.addEventListener('scroll', updateOnScroll);
338
- window.addEventListener('resize', updateOnScroll);
339
- } else {
340
- element.addEventListener('scroll', updateOnScroll);
341
- }
342
- });
343
- };
344
- // Initial setup of scrollable elements
345
- findScrollableAncestors();
346
428
  return {
347
429
  resizeObserver,
348
430
  highlightObserver,
349
- stegaObserver,
350
- updateOnScroll,
351
- scrollableElements,
352
- findScrollableAncestors
431
+ stegaObserver
353
432
  };
354
433
  };
355
434
  const setupEventHandlers = (highlightManager)=>{
@@ -359,8 +438,7 @@
359
438
  if (event.data.type === INTERNAL_EVENTS.STRAPI_FIELD_CHANGE) {
360
439
  const { field, value } = event.data.payload;
361
440
  if (!field) return;
362
- const matchingElements = document.querySelectorAll(`[${SOURCE_ATTRIBUTE}="${field}"]`);
363
- matchingElements.forEach((element)=>{
441
+ getElementsByPath(field).forEach((element)=>{
364
442
  if (element instanceof HTMLElement) {
365
443
  element.textContent = value || '';
366
444
  }
@@ -375,17 +453,21 @@
375
453
  if (!field) return;
376
454
  // Clear existing focused highlights
377
455
  highlightManager.focusedHighlights.forEach((highlight)=>{
378
- highlight.style.outlineColor = 'transparent';
456
+ highlight.classList.remove('strapi-highlight-focused');
379
457
  });
380
458
  highlightManager.focusedHighlights.length = 0;
381
459
  // Set new focused field and highlight matching elements
382
460
  highlightManager.setFocusedField(field);
383
- const matchingElements = document.querySelectorAll(`[${SOURCE_ATTRIBUTE}="${field}"]`);
384
- matchingElements.forEach((element)=>{
461
+ getElementsByPath(field).forEach((element, index)=>{
462
+ if (index === 0) {
463
+ element.scrollIntoView({
464
+ behavior: 'smooth',
465
+ block: 'center'
466
+ });
467
+ }
385
468
  const highlight = highlightManager.highlights[Array.from(highlightManager.elements).indexOf(element)];
386
469
  if (highlight) {
387
- highlight.style.outlineColor = HIGHLIGHT_ACTIVE_COLOR;
388
- highlight.style.outlineWidth = '3px';
470
+ highlight.classList.add('strapi-highlight-focused');
389
471
  highlightManager.focusedHighlights.push(highlight);
390
472
  }
391
473
  });
@@ -396,8 +478,7 @@
396
478
  const { field } = event.data.payload;
397
479
  if (field !== highlightManager.getFocusedField()) return;
398
480
  highlightManager.focusedHighlights.forEach((highlight)=>{
399
- highlight.style.outlineColor = 'transparent';
400
- highlight.style.outlineWidth = '2px';
481
+ highlight.classList.remove('strapi-highlight-focused');
401
482
  });
402
483
  highlightManager.focusedHighlights.length = 0;
403
484
  highlightManager.setFocusedField(null);
@@ -415,35 +496,37 @@
415
496
  messageEventListener
416
497
  ];
417
498
  };
418
- const createCleanupSystem = (overlay, observers, eventHandlers)=>{
499
+ const createCleanupSystem = (overlay, observers, scrollManager, eventHandlers, highlightManager)=>{
419
500
  window.__strapi_previewCleanup = ()=>{
420
501
  observers.resizeObserver.disconnect();
421
502
  observers.highlightObserver.disconnect();
422
503
  observers.stegaObserver?.disconnect();
423
- // Remove all scroll listeners
424
- observers.scrollableElements.forEach((element)=>{
425
- if (element === window) {
426
- window.removeEventListener('scroll', observers.updateOnScroll);
427
- window.removeEventListener('resize', observers.updateOnScroll);
428
- } else {
429
- element.removeEventListener('scroll', observers.updateOnScroll);
430
- }
431
- });
504
+ // Clean up scroll listeners
505
+ scrollManager.cleanup();
506
+ // Clear all pending click timeouts
507
+ highlightManager.clearAllPendingClicks();
432
508
  // Remove highlight event listeners
433
509
  eventHandlers.forEach(({ element, type, handler })=>{
434
510
  element.removeEventListener(type, handler);
435
511
  });
512
+ // Clean up CSS styles
513
+ const existingStyles = document.getElementById(HIGHLIGHT_STYLES_ID);
514
+ if (existingStyles) {
515
+ existingStyles.remove();
516
+ }
436
517
  overlay.remove();
437
518
  };
438
519
  };
439
520
  /* -----------------------------------------------------------------------------------------------
440
521
  * Orchestration
441
522
  * ---------------------------------------------------------------------------------------------*/ setupStegaDOMObserver().then((stegaObserver)=>{
523
+ createHighlightStyles();
442
524
  const overlay = createOverlaySystem();
443
525
  const highlightManager = createHighlightManager(overlay);
444
526
  const observers = setupObservers(highlightManager, stegaObserver);
527
+ const scrollManager = setupScrollManagement(highlightManager);
445
528
  const eventHandlers = setupEventHandlers(highlightManager);
446
- createCleanupSystem(overlay, observers, eventHandlers);
529
+ createCleanupSystem(overlay, observers, scrollManager, eventHandlers, highlightManager);
447
530
  });
448
531
  };
449
532