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