@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,300 +0,0 @@
1
- 'use strict';
2
-
3
- // NOTE: This override is for the properties on _user's site_, it's not about Strapi Admin.
4
- /**
5
- * previewScript will be injected into the preview iframe after being stringified.
6
- * Therefore it CANNOT use any imports, or refer to any variables outside of its own scope.
7
- * It's why many functions are defined within previewScript, it's the only way to avoid going full spaghetti.
8
- * To get a better overview of everything previewScript does, go to the orchestration part at its end.
9
- */ const previewScript = (shouldRun = true)=>{
10
- /* -----------------------------------------------------------------------------------------------
11
- * Params
12
- * ---------------------------------------------------------------------------------------------*/ const HIGHLIGHT_PADDING = 2; // in pixels
13
- const HIGHLIGHT_COLOR = window.__strapi_HIGHLIGHT_COLOR ?? '#4945ff';
14
- const DISABLE_STEGA_DECODING = window.__strapi_DISABLE_STEGA_DECODING ?? false;
15
- const SOURCE_ATTRIBUTE = 'data-strapi-source';
16
- const OVERLAY_ID = 'strapi-preview-overlay';
17
- const EVENTS = {
18
- WILL_EDIT_FIELD: 'willEditField',
19
- STRAPI_READY: 'strapiReady',
20
- STRAPI_FIELD_TYPING: 'strapiFieldTyping',
21
- STRAPI_FIELD_FOCUS: 'strapiFieldFocus',
22
- STRAPI_FIELD_BLUR: 'strapiFieldBlur'
23
- };
24
- /**
25
- * Calling the function in no-run mode lets us retrieve the constants from other files and keep
26
- * a single source of truth for them. It's the only way to do this because this script can't
27
- * refer to any variables outside of its own scope, because it's stringified before it's run.
28
- */ if (!shouldRun) {
29
- return {
30
- EVENTS
31
- };
32
- }
33
- /* -----------------------------------------------------------------------------------------------
34
- * Utils
35
- * ---------------------------------------------------------------------------------------------*/ const sendMessage = (type, payload)=>{
36
- window.parent.postMessage({
37
- type,
38
- payload
39
- }, '*');
40
- };
41
- /* -----------------------------------------------------------------------------------------------
42
- * Functional blocks
43
- * ---------------------------------------------------------------------------------------------*/ const setupStegaDecoding = async ()=>{
44
- if (DISABLE_STEGA_DECODING) {
45
- return;
46
- }
47
- const { vercelStegaDecode: stegaDecode } = await import(// @ts-expect-error it's not a local dependency
48
- // eslint-disable-next-line import/no-unresolved
49
- 'https://cdn.jsdelivr.net/npm/@vercel/stega@0.1.2/+esm');
50
- const allElements = document.querySelectorAll('*');
51
- Array.from(allElements).forEach((element)=>{
52
- const directTextContent = Array.from(element.childNodes).filter((node)=>node.nodeType === Node.TEXT_NODE).map((node)=>node.textContent || '').join('');
53
- if (directTextContent) {
54
- try {
55
- const result = stegaDecode(directTextContent);
56
- if (result) {
57
- element.setAttribute(SOURCE_ATTRIBUTE, result.key);
58
- }
59
- } catch (error) {}
60
- }
61
- });
62
- };
63
- const createOverlaySystem = ()=>{
64
- const existingOverlay = document.getElementById(OVERLAY_ID);
65
- if (existingOverlay) {
66
- existingOverlay.remove();
67
- }
68
- window.__strapi_previewCleanup?.();
69
- const overlay = document.createElement('div');
70
- overlay.id = OVERLAY_ID;
71
- overlay.style.cssText = `
72
- position: fixed;
73
- top: 0;
74
- left: 0;
75
- width: 100%;
76
- height: 100%;
77
- pointer-events: none;
78
- z-index: 9999;
79
- `;
80
- window.document.body.appendChild(overlay);
81
- return overlay;
82
- };
83
- const createHighlightManager = (overlay)=>{
84
- const elements = window.document.querySelectorAll(`[${SOURCE_ATTRIBUTE}]`);
85
- const highlights = [];
86
- let focusedField = null;
87
- const focusedHighlights = [];
88
- const drawOverlay = (target, highlight)=>{
89
- if (!highlight) return;
90
- const rect = target.getBoundingClientRect();
91
- highlight.style.width = `${rect.width + HIGHLIGHT_PADDING * 2}px`;
92
- highlight.style.height = `${rect.height + HIGHLIGHT_PADDING * 2}px`;
93
- highlight.style.transform = `translate(${rect.left - HIGHLIGHT_PADDING}px, ${rect.top - HIGHLIGHT_PADDING}px)`;
94
- };
95
- const updateAllHighlights = ()=>{
96
- highlights.forEach((highlight, index)=>{
97
- const element = elements[index];
98
- if (element && highlight) {
99
- drawOverlay(element, highlight);
100
- }
101
- });
102
- };
103
- elements.forEach((element)=>{
104
- if (element instanceof HTMLElement) {
105
- const highlight = document.createElement('div');
106
- highlight.style.cssText = `
107
- position: absolute;
108
- outline: 2px solid transparent;
109
- pointer-events: auto;
110
- border-radius: 2px 0 2px 2px;
111
- background-color: transparent;
112
- will-change: transform;
113
- transition: outline-color 0.1s ease-in-out;
114
- `;
115
- const editButton = document.createElement('button');
116
- editButton.textContent = 'Edit';
117
- editButton.style.cssText = `
118
- position: absolute;
119
- top: 0px;
120
- right: -${HIGHLIGHT_PADDING}px;
121
- transform: translateY(-100%);
122
- font-size: 12px;
123
- padding: 4px 8px;
124
- background: ${HIGHLIGHT_COLOR};
125
- color: white;
126
- border: none;
127
- border-radius: 4px 4px 0 0;
128
- cursor: pointer;
129
- pointer-events: auto;
130
- display: none;
131
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
132
- z-index: 10000;
133
- user-select: none;
134
- `;
135
- highlight.addEventListener('mouseenter', ()=>{
136
- highlight.style.outlineColor = HIGHLIGHT_COLOR;
137
- editButton.style.display = 'block';
138
- highlight.style.borderRadius = '2px 0 2px 2px';
139
- });
140
- highlight.addEventListener('mouseleave', ()=>{
141
- const fieldPath = element.getAttribute(SOURCE_ATTRIBUTE);
142
- if (fieldPath !== focusedField) {
143
- highlight.style.outlineColor = 'transparent';
144
- }
145
- editButton.style.display = 'none';
146
- highlight.style.borderRadius = '2px';
147
- });
148
- const triggerEdit = (e)=>{
149
- e.stopPropagation();
150
- e.preventDefault();
151
- const fieldPath = element.getAttribute(SOURCE_ATTRIBUTE);
152
- if (fieldPath && window.parent) {
153
- const rect = element.getBoundingClientRect();
154
- sendMessage(EVENTS.WILL_EDIT_FIELD, {
155
- path: fieldPath,
156
- position: {
157
- top: rect.top,
158
- left: rect.left,
159
- width: rect.width,
160
- height: rect.height
161
- }
162
- });
163
- }
164
- };
165
- editButton.addEventListener('click', triggerEdit);
166
- highlight.addEventListener('dblclick', triggerEdit);
167
- highlight.appendChild(editButton);
168
- highlights.push(highlight);
169
- overlay.appendChild(highlight);
170
- drawOverlay(element, highlight);
171
- }
172
- });
173
- return {
174
- elements,
175
- highlights,
176
- focusedField,
177
- focusedHighlights,
178
- updateAllHighlights,
179
- setFocusedField: (field)=>{
180
- focusedField = field;
181
- },
182
- getFocusedField: ()=>focusedField
183
- };
184
- };
185
- const setupEventHandlers = (highlightManager)=>{
186
- const handleMessages = (event)=>{
187
- if (event.data?.type === EVENTS.STRAPI_FIELD_TYPING) {
188
- const { field, value } = event.data.payload;
189
- if (field) {
190
- const matchingElements = document.querySelectorAll(`[${SOURCE_ATTRIBUTE}="${field}"]`);
191
- matchingElements.forEach((element)=>{
192
- if (element instanceof HTMLElement) {
193
- element.textContent = value || '';
194
- }
195
- });
196
- }
197
- } else if (event.data?.type === EVENTS.STRAPI_FIELD_FOCUS) {
198
- const { field } = event.data.payload;
199
- if (field) {
200
- highlightManager.focusedHighlights.forEach((highlight)=>{
201
- highlight.style.outlineColor = 'transparent';
202
- });
203
- highlightManager.focusedHighlights.length = 0;
204
- highlightManager.setFocusedField(field);
205
- const matchingElements = document.querySelectorAll(`[${SOURCE_ATTRIBUTE}="${field}"]`);
206
- matchingElements.forEach((element)=>{
207
- const highlight = highlightManager.highlights[Array.from(highlightManager.elements).indexOf(element)];
208
- if (highlight) {
209
- highlight.style.outlineColor = HIGHLIGHT_COLOR;
210
- highlightManager.focusedHighlights.push(highlight);
211
- }
212
- });
213
- }
214
- } else if (event.data?.type === EVENTS.STRAPI_FIELD_BLUR) {
215
- const { field } = event.data.payload;
216
- if (field === highlightManager.getFocusedField()) {
217
- highlightManager.focusedHighlights.forEach((highlight)=>{
218
- highlight.style.outlineColor = 'transparent';
219
- });
220
- highlightManager.focusedHighlights.length = 0;
221
- highlightManager.setFocusedField(null);
222
- }
223
- }
224
- };
225
- window.addEventListener('message', handleMessages);
226
- return {
227
- handleMessages
228
- };
229
- };
230
- const setupObservers = (highlightManager)=>{
231
- const resizeObserver = new ResizeObserver(()=>{
232
- highlightManager.updateAllHighlights();
233
- });
234
- highlightManager.elements.forEach((element)=>{
235
- resizeObserver.observe(element);
236
- });
237
- resizeObserver.observe(document.documentElement);
238
- const updateOnScroll = ()=>{
239
- highlightManager.updateAllHighlights();
240
- };
241
- // Find all scrollable ancestors for all tracked elements
242
- const scrollableElements = new Set();
243
- scrollableElements.add(window); // Add window as a special case
244
- highlightManager.elements.forEach((element)=>{
245
- let parent = element.parentElement;
246
- while(parent){
247
- const computedStyle = window.getComputedStyle(parent);
248
- const overflow = computedStyle.overflow + computedStyle.overflowX + computedStyle.overflowY;
249
- if (overflow.includes('scroll') || overflow.includes('auto')) {
250
- scrollableElements.add(parent);
251
- }
252
- parent = parent.parentElement;
253
- }
254
- });
255
- // Add scroll listeners to all scrollable elements
256
- scrollableElements.forEach((element)=>{
257
- if (element === window) {
258
- window.addEventListener('scroll', updateOnScroll);
259
- window.addEventListener('resize', updateOnScroll);
260
- } else {
261
- element.addEventListener('scroll', updateOnScroll);
262
- }
263
- });
264
- return {
265
- resizeObserver,
266
- updateOnScroll,
267
- scrollableElements
268
- };
269
- };
270
- const createCleanupSystem = (overlay, observers, eventHandlers)=>{
271
- window.__strapi_previewCleanup = ()=>{
272
- observers.resizeObserver.disconnect();
273
- // Remove all scroll listeners
274
- observers.scrollableElements.forEach((element)=>{
275
- if (element === window) {
276
- window.removeEventListener('scroll', observers.updateOnScroll);
277
- window.removeEventListener('resize', observers.updateOnScroll);
278
- } else {
279
- element.removeEventListener('scroll', observers.updateOnScroll);
280
- }
281
- });
282
- window.removeEventListener('message', eventHandlers.handleMessages);
283
- if (overlay.parentNode) {
284
- overlay.parentNode.removeChild(overlay);
285
- }
286
- };
287
- };
288
- /* -----------------------------------------------------------------------------------------------
289
- * Orchestration
290
- * ---------------------------------------------------------------------------------------------*/ setupStegaDecoding().then(()=>{
291
- const overlay = createOverlaySystem();
292
- const highlightManager = createHighlightManager(overlay);
293
- const eventHandlers = setupEventHandlers(highlightManager);
294
- const observers = setupObservers(highlightManager);
295
- createCleanupSystem(overlay, observers, eventHandlers);
296
- });
297
- };
298
-
299
- exports.previewScript = previewScript;
300
- //# sourceMappingURL=script.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"script.js","sources":["../../../../admin/src/preview/utils/script.ts"],"sourcesContent":["// NOTE: This override is for the properties on _user's site_, it's not about Strapi Admin.\ndeclare global {\n interface Window {\n __strapi_previewCleanup?: () => void;\n __strapi_HIGHLIGHT_COLOR?: string;\n __strapi_DISABLE_STEGA_DECODING?: boolean;\n }\n}\n\n/**\n * previewScript will be injected into the preview iframe after being stringified.\n * Therefore it CANNOT use any imports, or refer to any variables outside of its own scope.\n * It's why many functions are defined within previewScript, it's the only way to avoid going full spaghetti.\n * To get a better overview of everything previewScript does, go to the orchestration part at its end.\n */\nconst previewScript = (shouldRun = true) => {\n /* -----------------------------------------------------------------------------------------------\n * Params\n * ---------------------------------------------------------------------------------------------*/\n\n const HIGHLIGHT_PADDING = 2; // in pixels\n const HIGHLIGHT_COLOR = window.__strapi_HIGHLIGHT_COLOR ?? '#4945ff';\n const DISABLE_STEGA_DECODING = window.__strapi_DISABLE_STEGA_DECODING ?? false;\n const SOURCE_ATTRIBUTE = 'data-strapi-source';\n const OVERLAY_ID = 'strapi-preview-overlay';\n const EVENTS = {\n WILL_EDIT_FIELD: 'willEditField',\n STRAPI_READY: 'strapiReady',\n STRAPI_FIELD_TYPING: 'strapiFieldTyping',\n STRAPI_FIELD_FOCUS: 'strapiFieldFocus',\n STRAPI_FIELD_BLUR: 'strapiFieldBlur',\n } as const;\n\n /**\n * Calling the function in no-run mode lets us retrieve the constants from other files and keep\n * a single source of truth for them. It's the only way to do this because this script can't\n * refer to any variables outside of its own scope, because it's stringified before it's run.\n */\n if (!shouldRun) {\n return { EVENTS };\n }\n\n /* -----------------------------------------------------------------------------------------------\n * Utils\n * ---------------------------------------------------------------------------------------------*/\n\n const sendMessage = (type: (typeof EVENTS)[keyof typeof EVENTS], payload: unknown) => {\n window.parent.postMessage({ type, payload }, '*');\n };\n\n /* -----------------------------------------------------------------------------------------------\n * Functional blocks\n * ---------------------------------------------------------------------------------------------*/\n\n const setupStegaDecoding = async () => {\n if (DISABLE_STEGA_DECODING) {\n return;\n }\n\n const { vercelStegaDecode: stegaDecode } = await import(\n // @ts-expect-error it's not a local dependency\n // eslint-disable-next-line import/no-unresolved\n 'https://cdn.jsdelivr.net/npm/@vercel/stega@0.1.2/+esm'\n );\n\n const allElements = document.querySelectorAll('*');\n\n Array.from(allElements).forEach((element) => {\n const directTextContent = Array.from(element.childNodes)\n .filter((node) => node.nodeType === Node.TEXT_NODE)\n .map((node) => node.textContent || '')\n .join('');\n\n if (directTextContent) {\n try {\n const result = stegaDecode(directTextContent);\n if (result) {\n element.setAttribute(SOURCE_ATTRIBUTE, result.key);\n }\n } catch (error) {}\n }\n });\n };\n\n const createOverlaySystem = () => {\n const existingOverlay = document.getElementById(OVERLAY_ID);\n if (existingOverlay) {\n existingOverlay.remove();\n }\n\n window.__strapi_previewCleanup?.();\n\n const overlay = document.createElement('div');\n overlay.id = OVERLAY_ID;\n overlay.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 9999;\n `;\n\n window.document.body.appendChild(overlay);\n return overlay;\n };\n\n const createHighlightManager = (overlay: HTMLElement) => {\n const elements = window.document.querySelectorAll(`[${SOURCE_ATTRIBUTE}]`);\n const highlights: HTMLElement[] = [];\n let focusedField: string | null = null;\n const focusedHighlights: HTMLElement[] = [];\n\n const drawOverlay = (target: Element, highlight: HTMLElement) => {\n if (!highlight) return;\n\n const rect = target.getBoundingClientRect();\n highlight.style.width = `${rect.width + HIGHLIGHT_PADDING * 2}px`;\n highlight.style.height = `${rect.height + HIGHLIGHT_PADDING * 2}px`;\n highlight.style.transform = `translate(${rect.left - HIGHLIGHT_PADDING}px, ${rect.top - HIGHLIGHT_PADDING}px)`;\n };\n\n const updateAllHighlights = () => {\n highlights.forEach((highlight, index) => {\n const element = elements[index];\n if (element && highlight) {\n drawOverlay(element, highlight);\n }\n });\n };\n\n elements.forEach((element) => {\n if (element instanceof HTMLElement) {\n const highlight = document.createElement('div');\n highlight.style.cssText = `\n position: absolute;\n outline: 2px solid transparent;\n pointer-events: auto;\n border-radius: 2px 0 2px 2px;\n background-color: transparent;\n will-change: transform;\n transition: outline-color 0.1s ease-in-out;\n `;\n\n const editButton = document.createElement('button');\n editButton.textContent = 'Edit';\n editButton.style.cssText = `\n position: absolute;\n top: 0px;\n right: -${HIGHLIGHT_PADDING}px;\n transform: translateY(-100%);\n font-size: 12px;\n padding: 4px 8px;\n background: ${HIGHLIGHT_COLOR};\n color: white;\n border: none;\n border-radius: 4px 4px 0 0;\n cursor: pointer;\n pointer-events: auto;\n display: none;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n z-index: 10000;\n user-select: none;\n `;\n\n highlight.addEventListener('mouseenter', () => {\n highlight.style.outlineColor = HIGHLIGHT_COLOR;\n editButton.style.display = 'block';\n highlight.style.borderRadius = '2px 0 2px 2px';\n });\n\n highlight.addEventListener('mouseleave', () => {\n const fieldPath = element.getAttribute(SOURCE_ATTRIBUTE);\n if (fieldPath !== focusedField) {\n highlight.style.outlineColor = 'transparent';\n }\n editButton.style.display = 'none';\n highlight.style.borderRadius = '2px';\n });\n\n const triggerEdit = (e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n\n const fieldPath = element.getAttribute(SOURCE_ATTRIBUTE);\n if (fieldPath && window.parent) {\n const rect = element.getBoundingClientRect();\n sendMessage(EVENTS.WILL_EDIT_FIELD, {\n path: fieldPath,\n position: {\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height,\n },\n });\n }\n };\n\n editButton.addEventListener('click', triggerEdit);\n highlight.addEventListener('dblclick', triggerEdit);\n\n highlight.appendChild(editButton);\n highlights.push(highlight);\n overlay.appendChild(highlight);\n\n drawOverlay(element, highlight);\n }\n });\n\n return {\n elements,\n highlights,\n focusedField,\n focusedHighlights,\n updateAllHighlights,\n setFocusedField: (field: string | null) => {\n focusedField = field;\n },\n getFocusedField: () => focusedField,\n };\n };\n\n type HighlightManager = ReturnType<typeof createHighlightManager>;\n\n const setupEventHandlers = (highlightManager: HighlightManager) => {\n const handleMessages = (event: MessageEvent) => {\n if (event.data?.type === EVENTS.STRAPI_FIELD_TYPING) {\n const { field, value } = event.data.payload;\n if (field) {\n const matchingElements = document.querySelectorAll(`[${SOURCE_ATTRIBUTE}=\"${field}\"]`);\n matchingElements.forEach((element) => {\n if (element instanceof HTMLElement) {\n element.textContent = value || '';\n }\n });\n }\n } else if (event.data?.type === EVENTS.STRAPI_FIELD_FOCUS) {\n const { field } = event.data.payload;\n if (field) {\n highlightManager.focusedHighlights.forEach((highlight: HTMLElement) => {\n highlight.style.outlineColor = 'transparent';\n });\n highlightManager.focusedHighlights.length = 0;\n\n highlightManager.setFocusedField(field);\n const matchingElements = document.querySelectorAll(`[${SOURCE_ATTRIBUTE}=\"${field}\"]`);\n matchingElements.forEach((element) => {\n const highlight =\n highlightManager.highlights[Array.from(highlightManager.elements).indexOf(element)];\n if (highlight) {\n highlight.style.outlineColor = HIGHLIGHT_COLOR;\n highlightManager.focusedHighlights.push(highlight);\n }\n });\n }\n } else if (event.data?.type === EVENTS.STRAPI_FIELD_BLUR) {\n const { field } = event.data.payload;\n if (field === highlightManager.getFocusedField()) {\n highlightManager.focusedHighlights.forEach((highlight: HTMLElement) => {\n highlight.style.outlineColor = 'transparent';\n });\n highlightManager.focusedHighlights.length = 0;\n highlightManager.setFocusedField(null);\n }\n }\n };\n\n window.addEventListener('message', handleMessages);\n return { handleMessages };\n };\n\n const setupObservers = (highlightManager: HighlightManager) => {\n const resizeObserver = new ResizeObserver(() => {\n highlightManager.updateAllHighlights();\n });\n\n highlightManager.elements.forEach((element: Element) => {\n resizeObserver.observe(element);\n });\n\n resizeObserver.observe(document.documentElement);\n\n const updateOnScroll = () => {\n highlightManager.updateAllHighlights();\n };\n\n // Find all scrollable ancestors for all tracked elements\n const scrollableElements = new Set<Element | Window>();\n scrollableElements.add(window); // Add window as a special case\n\n highlightManager.elements.forEach((element) => {\n let parent = element.parentElement;\n while (parent) {\n const computedStyle = window.getComputedStyle(parent);\n const overflow = computedStyle.overflow + computedStyle.overflowX + computedStyle.overflowY;\n\n if (overflow.includes('scroll') || overflow.includes('auto')) {\n scrollableElements.add(parent);\n }\n\n parent = parent.parentElement;\n }\n });\n\n // Add scroll listeners to all scrollable elements\n scrollableElements.forEach((element) => {\n if (element === window) {\n window.addEventListener('scroll', updateOnScroll);\n window.addEventListener('resize', updateOnScroll);\n } else {\n (element as Element).addEventListener('scroll', updateOnScroll);\n }\n });\n\n return {\n resizeObserver,\n updateOnScroll,\n scrollableElements,\n };\n };\n\n const createCleanupSystem = (\n overlay: HTMLElement,\n observers: ReturnType<typeof setupObservers>,\n eventHandlers: ReturnType<typeof setupEventHandlers>\n ) => {\n window.__strapi_previewCleanup = () => {\n observers.resizeObserver.disconnect();\n\n // Remove all scroll listeners\n observers.scrollableElements.forEach((element) => {\n if (element === window) {\n window.removeEventListener('scroll', observers.updateOnScroll);\n window.removeEventListener('resize', observers.updateOnScroll);\n } else {\n (element as Element).removeEventListener('scroll', observers.updateOnScroll);\n }\n });\n\n window.removeEventListener('message', eventHandlers.handleMessages);\n if (overlay.parentNode) {\n overlay.parentNode.removeChild(overlay);\n }\n };\n };\n\n /* -----------------------------------------------------------------------------------------------\n * Orchestration\n * ---------------------------------------------------------------------------------------------*/\n\n setupStegaDecoding().then(() => {\n const overlay = createOverlaySystem();\n const highlightManager = createHighlightManager(overlay);\n const eventHandlers = setupEventHandlers(highlightManager);\n const observers = setupObservers(highlightManager);\n createCleanupSystem(overlay, observers, eventHandlers);\n });\n};\n\nexport { previewScript };\n"],"names":["previewScript","shouldRun","HIGHLIGHT_PADDING","HIGHLIGHT_COLOR","window","__strapi_HIGHLIGHT_COLOR","DISABLE_STEGA_DECODING","__strapi_DISABLE_STEGA_DECODING","SOURCE_ATTRIBUTE","OVERLAY_ID","EVENTS","WILL_EDIT_FIELD","STRAPI_READY","STRAPI_FIELD_TYPING","STRAPI_FIELD_FOCUS","STRAPI_FIELD_BLUR","sendMessage","type","payload","parent","postMessage","setupStegaDecoding","vercelStegaDecode","stegaDecode","allElements","document","querySelectorAll","Array","from","forEach","element","directTextContent","childNodes","filter","node","nodeType","Node","TEXT_NODE","map","textContent","join","result","setAttribute","key","error","createOverlaySystem","existingOverlay","getElementById","remove","__strapi_previewCleanup","overlay","createElement","id","style","cssText","body","appendChild","createHighlightManager","elements","highlights","focusedField","focusedHighlights","drawOverlay","target","highlight","rect","getBoundingClientRect","width","height","transform","left","top","updateAllHighlights","index","HTMLElement","editButton","addEventListener","outlineColor","display","borderRadius","fieldPath","getAttribute","triggerEdit","e","stopPropagation","preventDefault","path","position","push","setFocusedField","field","getFocusedField","setupEventHandlers","highlightManager","handleMessages","event","data","value","matchingElements","length","indexOf","setupObservers","resizeObserver","ResizeObserver","observe","documentElement","updateOnScroll","scrollableElements","Set","add","parentElement","computedStyle","getComputedStyle","overflow","overflowX","overflowY","includes","createCleanupSystem","observers","eventHandlers","disconnect","removeEventListener","parentNode","removeChild","then"],"mappings":";;AAAA;AASA;;;;;AAKC,IACKA,MAAAA,aAAAA,GAAgB,CAACC,SAAAA,GAAY,IAAI,GAAA;AACrC;;qGAIA,MAAMC,iBAAoB,GAAA,CAAA,CAAA;IAC1B,MAAMC,eAAAA,GAAkBC,MAAOC,CAAAA,wBAAwB,IAAI,SAAA;IAC3D,MAAMC,sBAAAA,GAAyBF,MAAOG,CAAAA,+BAA+B,IAAI,KAAA;AACzE,IAAA,MAAMC,gBAAmB,GAAA,oBAAA;AACzB,IAAA,MAAMC,UAAa,GAAA,wBAAA;AACnB,IAAA,MAAMC,MAAS,GAAA;QACbC,eAAiB,EAAA,eAAA;QACjBC,YAAc,EAAA,aAAA;QACdC,mBAAqB,EAAA,mBAAA;QACrBC,kBAAoB,EAAA,kBAAA;QACpBC,iBAAmB,EAAA;AACrB,KAAA;AAEA;;;;MAKA,IAAI,CAACd,SAAW,EAAA;QACd,OAAO;AAAES,YAAAA;AAAO,SAAA;AAClB;AAEA;;qGAIA,MAAMM,WAAc,GAAA,CAACC,IAA4CC,EAAAA,OAAAA,GAAAA;QAC/Dd,MAAOe,CAAAA,MAAM,CAACC,WAAW,CAAC;AAAEH,YAAAA,IAAAA;AAAMC,YAAAA;SAAW,EAAA,GAAA,CAAA;AAC/C,KAAA;AAEA;;AAEgG,qGAEhG,MAAMG,kBAAqB,GAAA,UAAA;AACzB,QAAA,IAAIf,sBAAwB,EAAA;AAC1B,YAAA;AACF;QAEA,MAAM,EAAEgB,mBAAmBC,WAAW,EAAE,GAAG,MAAM;;AAG/C,QAAA,uDAAA,CAAA;QAGF,MAAMC,WAAAA,GAAcC,QAASC,CAAAA,gBAAgB,CAAC,GAAA,CAAA;AAE9CC,QAAAA,KAAAA,CAAMC,IAAI,CAACJ,WAAaK,CAAAA,CAAAA,OAAO,CAAC,CAACC,OAAAA,GAAAA;YAC/B,MAAMC,iBAAAA,GAAoBJ,KAAMC,CAAAA,IAAI,CAACE,OAAAA,CAAQE,UAAU,CAAA,CACpDC,MAAM,CAAC,CAACC,IAAAA,GAASA,IAAKC,CAAAA,QAAQ,KAAKC,IAAKC,CAAAA,SAAS,CACjDC,CAAAA,GAAG,CAAC,CAACJ,IAASA,GAAAA,IAAAA,CAAKK,WAAW,IAAI,EAClCC,CAAAA,CAAAA,IAAI,CAAC,EAAA,CAAA;AAER,YAAA,IAAIT,iBAAmB,EAAA;gBACrB,IAAI;AACF,oBAAA,MAAMU,SAASlB,WAAYQ,CAAAA,iBAAAA,CAAAA;AAC3B,oBAAA,IAAIU,MAAQ,EAAA;AACVX,wBAAAA,OAAAA,CAAQY,YAAY,CAAClC,gBAAkBiC,EAAAA,MAAAA,CAAOE,GAAG,CAAA;AACnD;iBACA,CAAA,OAAOC,OAAO;AAClB;AACF,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,MAAMC,mBAAsB,GAAA,IAAA;QAC1B,MAAMC,eAAAA,GAAkBrB,QAASsB,CAAAA,cAAc,CAACtC,UAAAA,CAAAA;AAChD,QAAA,IAAIqC,eAAiB,EAAA;AACnBA,YAAAA,eAAAA,CAAgBE,MAAM,EAAA;AACxB;AAEA5C,QAAAA,MAAAA,CAAO6C,uBAAuB,IAAA;QAE9B,MAAMC,OAAAA,GAAUzB,QAAS0B,CAAAA,aAAa,CAAC,KAAA,CAAA;AACvCD,QAAAA,OAAAA,CAAQE,EAAE,GAAG3C,UAAAA;AACbyC,QAAAA,OAAAA,CAAQG,KAAK,CAACC,OAAO,GAAG;;;;;;;;IAQxB,CAAC;AAEDlD,QAAAA,MAAAA,CAAOqB,QAAQ,CAAC8B,IAAI,CAACC,WAAW,CAACN,OAAAA,CAAAA;QACjC,OAAOA,OAAAA;AACT,KAAA;AAEA,IAAA,MAAMO,yBAAyB,CAACP,OAAAA,GAAAA;QAC9B,MAAMQ,QAAAA,GAAWtD,MAAOqB,CAAAA,QAAQ,CAACC,gBAAgB,CAAC,CAAC,CAAC,EAAElB,gBAAiB,CAAA,CAAC,CAAC,CAAA;AACzE,QAAA,MAAMmD,aAA4B,EAAE;AACpC,QAAA,IAAIC,YAA8B,GAAA,IAAA;AAClC,QAAA,MAAMC,oBAAmC,EAAE;QAE3C,MAAMC,WAAAA,GAAc,CAACC,MAAiBC,EAAAA,SAAAA,GAAAA;AACpC,YAAA,IAAI,CAACA,SAAW,EAAA;YAEhB,MAAMC,IAAAA,GAAOF,OAAOG,qBAAqB,EAAA;AACzCF,YAAAA,SAAAA,CAAUX,KAAK,CAACc,KAAK,GAAG,CAAC,EAAEF,IAAKE,CAAAA,KAAK,GAAGjE,iBAAAA,GAAoB,CAAE,CAAA,EAAE,CAAC;AACjE8D,YAAAA,SAAAA,CAAUX,KAAK,CAACe,MAAM,GAAG,CAAC,EAAEH,IAAKG,CAAAA,MAAM,GAAGlE,iBAAAA,GAAoB,CAAE,CAAA,EAAE,CAAC;AACnE8D,YAAAA,SAAAA,CAAUX,KAAK,CAACgB,SAAS,GAAG,CAAC,UAAU,EAAEJ,IAAKK,CAAAA,IAAI,GAAGpE,iBAAAA,CAAkB,IAAI,EAAE+D,IAAAA,CAAKM,GAAG,GAAGrE,iBAAAA,CAAkB,GAAG,CAAC;AAChH,SAAA;AAEA,QAAA,MAAMsE,mBAAsB,GAAA,IAAA;YAC1Bb,UAAW9B,CAAAA,OAAO,CAAC,CAACmC,SAAWS,EAAAA,KAAAA,GAAAA;gBAC7B,MAAM3C,OAAAA,GAAU4B,QAAQ,CAACe,KAAM,CAAA;AAC/B,gBAAA,IAAI3C,WAAWkC,SAAW,EAAA;AACxBF,oBAAAA,WAAAA,CAAYhC,OAASkC,EAAAA,SAAAA,CAAAA;AACvB;AACF,aAAA,CAAA;AACF,SAAA;QAEAN,QAAS7B,CAAAA,OAAO,CAAC,CAACC,OAAAA,GAAAA;AAChB,YAAA,IAAIA,mBAAmB4C,WAAa,EAAA;gBAClC,MAAMV,SAAAA,GAAYvC,QAAS0B,CAAAA,aAAa,CAAC,KAAA,CAAA;AACzCa,gBAAAA,SAAAA,CAAUX,KAAK,CAACC,OAAO,GAAG;;;;;;;;QAQ1B,CAAC;gBAED,MAAMqB,UAAAA,GAAalD,QAAS0B,CAAAA,aAAa,CAAC,QAAA,CAAA;AAC1CwB,gBAAAA,UAAAA,CAAWpC,WAAW,GAAG,MAAA;AACzBoC,gBAAAA,UAAAA,CAAWtB,KAAK,CAACC,OAAO,GAAG;;;AAGjB,kBAAA,EAAEpD,iBAAkB,CAAA;;;;AAIhB,sBAAA,EAAEC,eAAgB,CAAA;;;;;;;;;;QAUhC,CAAC;gBAED6D,SAAUY,CAAAA,gBAAgB,CAAC,YAAc,EAAA,IAAA;oBACvCZ,SAAUX,CAAAA,KAAK,CAACwB,YAAY,GAAG1E,eAAAA;oBAC/BwE,UAAWtB,CAAAA,KAAK,CAACyB,OAAO,GAAG,OAAA;oBAC3Bd,SAAUX,CAAAA,KAAK,CAAC0B,YAAY,GAAG,eAAA;AACjC,iBAAA,CAAA;gBAEAf,SAAUY,CAAAA,gBAAgB,CAAC,YAAc,EAAA,IAAA;oBACvC,MAAMI,SAAAA,GAAYlD,OAAQmD,CAAAA,YAAY,CAACzE,gBAAAA,CAAAA;AACvC,oBAAA,IAAIwE,cAAcpB,YAAc,EAAA;wBAC9BI,SAAUX,CAAAA,KAAK,CAACwB,YAAY,GAAG,aAAA;AACjC;oBACAF,UAAWtB,CAAAA,KAAK,CAACyB,OAAO,GAAG,MAAA;oBAC3Bd,SAAUX,CAAAA,KAAK,CAAC0B,YAAY,GAAG,KAAA;AACjC,iBAAA,CAAA;AAEA,gBAAA,MAAMG,cAAc,CAACC,CAAAA,GAAAA;AACnBA,oBAAAA,CAAAA,CAAEC,eAAe,EAAA;AACjBD,oBAAAA,CAAAA,CAAEE,cAAc,EAAA;oBAEhB,MAAML,SAAAA,GAAYlD,OAAQmD,CAAAA,YAAY,CAACzE,gBAAAA,CAAAA;oBACvC,IAAIwE,SAAAA,IAAa5E,MAAOe,CAAAA,MAAM,EAAE;wBAC9B,MAAM8C,IAAAA,GAAOnC,QAAQoC,qBAAqB,EAAA;wBAC1ClD,WAAYN,CAAAA,MAAAA,CAAOC,eAAe,EAAE;4BAClC2E,IAAMN,EAAAA,SAAAA;4BACNO,QAAU,EAAA;AACRhB,gCAAAA,GAAAA,EAAKN,KAAKM,GAAG;AACbD,gCAAAA,IAAAA,EAAML,KAAKK,IAAI;AACfH,gCAAAA,KAAAA,EAAOF,KAAKE,KAAK;AACjBC,gCAAAA,MAAAA,EAAQH,KAAKG;AACf;AACF,yBAAA,CAAA;AACF;AACF,iBAAA;gBAEAO,UAAWC,CAAAA,gBAAgB,CAAC,OAASM,EAAAA,WAAAA,CAAAA;gBACrClB,SAAUY,CAAAA,gBAAgB,CAAC,UAAYM,EAAAA,WAAAA,CAAAA;AAEvClB,gBAAAA,SAAAA,CAAUR,WAAW,CAACmB,UAAAA,CAAAA;AACtBhB,gBAAAA,UAAAA,CAAW6B,IAAI,CAACxB,SAAAA,CAAAA;AAChBd,gBAAAA,OAAAA,CAAQM,WAAW,CAACQ,SAAAA,CAAAA;AAEpBF,gBAAAA,WAAAA,CAAYhC,OAASkC,EAAAA,SAAAA,CAAAA;AACvB;AACF,SAAA,CAAA;QAEA,OAAO;AACLN,YAAAA,QAAAA;AACAC,YAAAA,UAAAA;AACAC,YAAAA,YAAAA;AACAC,YAAAA,iBAAAA;AACAW,YAAAA,mBAAAA;AACAiB,YAAAA,eAAAA,EAAiB,CAACC,KAAAA,GAAAA;gBAChB9B,YAAe8B,GAAAA,KAAAA;AACjB,aAAA;AACAC,YAAAA,eAAAA,EAAiB,IAAM/B;AACzB,SAAA;AACF,KAAA;AAIA,IAAA,MAAMgC,qBAAqB,CAACC,gBAAAA,GAAAA;AAC1B,QAAA,MAAMC,iBAAiB,CAACC,KAAAA,GAAAA;AACtB,YAAA,IAAIA,MAAMC,IAAI,EAAE/E,IAASP,KAAAA,MAAAA,CAAOG,mBAAmB,EAAE;gBACnD,MAAM,EAAE6E,KAAK,EAAEO,KAAK,EAAE,GAAGF,KAAAA,CAAMC,IAAI,CAAC9E,OAAO;AAC3C,gBAAA,IAAIwE,KAAO,EAAA;AACT,oBAAA,MAAMQ,gBAAmBzE,GAAAA,QAAAA,CAASC,gBAAgB,CAAC,CAAC,CAAC,EAAElB,gBAAAA,CAAiB,EAAE,EAAEkF,KAAM,CAAA,EAAE,CAAC,CAAA;oBACrFQ,gBAAiBrE,CAAAA,OAAO,CAAC,CAACC,OAAAA,GAAAA;AACxB,wBAAA,IAAIA,mBAAmB4C,WAAa,EAAA;4BAClC5C,OAAQS,CAAAA,WAAW,GAAG0D,KAAS,IAAA,EAAA;AACjC;AACF,qBAAA,CAAA;AACF;AACF,aAAA,MAAO,IAAIF,KAAMC,CAAAA,IAAI,EAAE/E,IAASP,KAAAA,MAAAA,CAAOI,kBAAkB,EAAE;AACzD,gBAAA,MAAM,EAAE4E,KAAK,EAAE,GAAGK,KAAMC,CAAAA,IAAI,CAAC9E,OAAO;AACpC,gBAAA,IAAIwE,KAAO,EAAA;AACTG,oBAAAA,gBAAAA,CAAiBhC,iBAAiB,CAAChC,OAAO,CAAC,CAACmC,SAAAA,GAAAA;wBAC1CA,SAAUX,CAAAA,KAAK,CAACwB,YAAY,GAAG,aAAA;AACjC,qBAAA,CAAA;oBACAgB,gBAAiBhC,CAAAA,iBAAiB,CAACsC,MAAM,GAAG,CAAA;AAE5CN,oBAAAA,gBAAAA,CAAiBJ,eAAe,CAACC,KAAAA,CAAAA;AACjC,oBAAA,MAAMQ,gBAAmBzE,GAAAA,QAAAA,CAASC,gBAAgB,CAAC,CAAC,CAAC,EAAElB,gBAAAA,CAAiB,EAAE,EAAEkF,KAAM,CAAA,EAAE,CAAC,CAAA;oBACrFQ,gBAAiBrE,CAAAA,OAAO,CAAC,CAACC,OAAAA,GAAAA;AACxB,wBAAA,MAAMkC,SACJ6B,GAAAA,gBAAAA,CAAiBlC,UAAU,CAAChC,KAAMC,CAAAA,IAAI,CAACiE,gBAAAA,CAAiBnC,QAAQ,CAAA,CAAE0C,OAAO,CAACtE,OAAS,CAAA,CAAA;AACrF,wBAAA,IAAIkC,SAAW,EAAA;4BACbA,SAAUX,CAAAA,KAAK,CAACwB,YAAY,GAAG1E,eAAAA;4BAC/B0F,gBAAiBhC,CAAAA,iBAAiB,CAAC2B,IAAI,CAACxB,SAAAA,CAAAA;AAC1C;AACF,qBAAA,CAAA;AACF;AACF,aAAA,MAAO,IAAI+B,KAAMC,CAAAA,IAAI,EAAE/E,IAASP,KAAAA,MAAAA,CAAOK,iBAAiB,EAAE;AACxD,gBAAA,MAAM,EAAE2E,KAAK,EAAE,GAAGK,KAAMC,CAAAA,IAAI,CAAC9E,OAAO;gBACpC,IAAIwE,KAAAA,KAAUG,gBAAiBF,CAAAA,eAAe,EAAI,EAAA;AAChDE,oBAAAA,gBAAAA,CAAiBhC,iBAAiB,CAAChC,OAAO,CAAC,CAACmC,SAAAA,GAAAA;wBAC1CA,SAAUX,CAAAA,KAAK,CAACwB,YAAY,GAAG,aAAA;AACjC,qBAAA,CAAA;oBACAgB,gBAAiBhC,CAAAA,iBAAiB,CAACsC,MAAM,GAAG,CAAA;AAC5CN,oBAAAA,gBAAAA,CAAiBJ,eAAe,CAAC,IAAA,CAAA;AACnC;AACF;AACF,SAAA;QAEArF,MAAOwE,CAAAA,gBAAgB,CAAC,SAAWkB,EAAAA,cAAAA,CAAAA;QACnC,OAAO;AAAEA,YAAAA;AAAe,SAAA;AAC1B,KAAA;AAEA,IAAA,MAAMO,iBAAiB,CAACR,gBAAAA,GAAAA;QACtB,MAAMS,cAAAA,GAAiB,IAAIC,cAAe,CAAA,IAAA;AACxCV,YAAAA,gBAAAA,CAAiBrB,mBAAmB,EAAA;AACtC,SAAA,CAAA;AAEAqB,QAAAA,gBAAAA,CAAiBnC,QAAQ,CAAC7B,OAAO,CAAC,CAACC,OAAAA,GAAAA;AACjCwE,YAAAA,cAAAA,CAAeE,OAAO,CAAC1E,OAAAA,CAAAA;AACzB,SAAA,CAAA;QAEAwE,cAAeE,CAAAA,OAAO,CAAC/E,QAAAA,CAASgF,eAAe,CAAA;AAE/C,QAAA,MAAMC,cAAiB,GAAA,IAAA;AACrBb,YAAAA,gBAAAA,CAAiBrB,mBAAmB,EAAA;AACtC,SAAA;;AAGA,QAAA,MAAMmC,qBAAqB,IAAIC,GAAAA,EAAAA;QAC/BD,kBAAmBE,CAAAA,GAAG,CAACzG,MAAAA,CAAAA,CAAAA;AAEvByF,QAAAA,gBAAAA,CAAiBnC,QAAQ,CAAC7B,OAAO,CAAC,CAACC,OAAAA,GAAAA;YACjC,IAAIX,MAAAA,GAASW,QAAQgF,aAAa;AAClC,YAAA,MAAO3F,MAAQ,CAAA;gBACb,MAAM4F,aAAAA,GAAgB3G,MAAO4G,CAAAA,gBAAgB,CAAC7F,MAAAA,CAAAA;gBAC9C,MAAM8F,QAAAA,GAAWF,cAAcE,QAAQ,GAAGF,cAAcG,SAAS,GAAGH,cAAcI,SAAS;AAE3F,gBAAA,IAAIF,SAASG,QAAQ,CAAC,aAAaH,QAASG,CAAAA,QAAQ,CAAC,MAAS,CAAA,EAAA;AAC5DT,oBAAAA,kBAAAA,CAAmBE,GAAG,CAAC1F,MAAAA,CAAAA;AACzB;AAEAA,gBAAAA,MAAAA,GAASA,OAAO2F,aAAa;AAC/B;AACF,SAAA,CAAA;;QAGAH,kBAAmB9E,CAAAA,OAAO,CAAC,CAACC,OAAAA,GAAAA;AAC1B,YAAA,IAAIA,YAAY1B,MAAQ,EAAA;gBACtBA,MAAOwE,CAAAA,gBAAgB,CAAC,QAAU8B,EAAAA,cAAAA,CAAAA;gBAClCtG,MAAOwE,CAAAA,gBAAgB,CAAC,QAAU8B,EAAAA,cAAAA,CAAAA;aAC7B,MAAA;gBACJ5E,OAAoB8C,CAAAA,gBAAgB,CAAC,QAAU8B,EAAAA,cAAAA,CAAAA;AAClD;AACF,SAAA,CAAA;QAEA,OAAO;AACLJ,YAAAA,cAAAA;AACAI,YAAAA,cAAAA;AACAC,YAAAA;AACF,SAAA;AACF,KAAA;IAEA,MAAMU,mBAAAA,GAAsB,CAC1BnE,OAAAA,EACAoE,SACAC,EAAAA,aAAAA,GAAAA;AAEAnH,QAAAA,MAAAA,CAAO6C,uBAAuB,GAAG,IAAA;YAC/BqE,SAAUhB,CAAAA,cAAc,CAACkB,UAAU,EAAA;;AAGnCF,YAAAA,SAAAA,CAAUX,kBAAkB,CAAC9E,OAAO,CAAC,CAACC,OAAAA,GAAAA;AACpC,gBAAA,IAAIA,YAAY1B,MAAQ,EAAA;AACtBA,oBAAAA,MAAAA,CAAOqH,mBAAmB,CAAC,QAAUH,EAAAA,SAAAA,CAAUZ,cAAc,CAAA;AAC7DtG,oBAAAA,MAAAA,CAAOqH,mBAAmB,CAAC,QAAUH,EAAAA,SAAAA,CAAUZ,cAAc,CAAA;iBACxD,MAAA;AACJ5E,oBAAAA,OAAAA,CAAoB2F,mBAAmB,CAAC,QAAUH,EAAAA,SAAAA,CAAUZ,cAAc,CAAA;AAC7E;AACF,aAAA,CAAA;AAEAtG,YAAAA,MAAAA,CAAOqH,mBAAmB,CAAC,SAAWF,EAAAA,aAAAA,CAAczB,cAAc,CAAA;YAClE,IAAI5C,OAAAA,CAAQwE,UAAU,EAAE;gBACtBxE,OAAQwE,CAAAA,UAAU,CAACC,WAAW,CAACzE,OAAAA,CAAAA;AACjC;AACF,SAAA;AACF,KAAA;AAEA;;qGAIA7B,kBAAAA,EAAAA,CAAqBuG,IAAI,CAAC,IAAA;AACxB,QAAA,MAAM1E,OAAUL,GAAAA,mBAAAA,EAAAA;AAChB,QAAA,MAAMgD,mBAAmBpC,sBAAuBP,CAAAA,OAAAA,CAAAA;AAChD,QAAA,MAAMqE,gBAAgB3B,kBAAmBC,CAAAA,gBAAAA,CAAAA;AACzC,QAAA,MAAMyB,YAAYjB,cAAeR,CAAAA,gBAAAA,CAAAA;AACjCwB,QAAAA,mBAAAA,CAAoBnE,SAASoE,SAAWC,EAAAA,aAAAA,CAAAA;AAC1C,KAAA,CAAA;AACF;;;;"}
@@ -1,298 +0,0 @@
1
- // NOTE: This override is for the properties on _user's site_, it's not about Strapi Admin.
2
- /**
3
- * previewScript will be injected into the preview iframe after being stringified.
4
- * Therefore it CANNOT use any imports, or refer to any variables outside of its own scope.
5
- * It's why many functions are defined within previewScript, it's the only way to avoid going full spaghetti.
6
- * To get a better overview of everything previewScript does, go to the orchestration part at its end.
7
- */ const previewScript = (shouldRun = true)=>{
8
- /* -----------------------------------------------------------------------------------------------
9
- * Params
10
- * ---------------------------------------------------------------------------------------------*/ const HIGHLIGHT_PADDING = 2; // in pixels
11
- const HIGHLIGHT_COLOR = window.__strapi_HIGHLIGHT_COLOR ?? '#4945ff';
12
- const DISABLE_STEGA_DECODING = window.__strapi_DISABLE_STEGA_DECODING ?? false;
13
- const SOURCE_ATTRIBUTE = 'data-strapi-source';
14
- const OVERLAY_ID = 'strapi-preview-overlay';
15
- const EVENTS = {
16
- WILL_EDIT_FIELD: 'willEditField',
17
- STRAPI_READY: 'strapiReady',
18
- STRAPI_FIELD_TYPING: 'strapiFieldTyping',
19
- STRAPI_FIELD_FOCUS: 'strapiFieldFocus',
20
- STRAPI_FIELD_BLUR: 'strapiFieldBlur'
21
- };
22
- /**
23
- * Calling the function in no-run mode lets us retrieve the constants from other files and keep
24
- * a single source of truth for them. It's the only way to do this because this script can't
25
- * refer to any variables outside of its own scope, because it's stringified before it's run.
26
- */ if (!shouldRun) {
27
- return {
28
- EVENTS
29
- };
30
- }
31
- /* -----------------------------------------------------------------------------------------------
32
- * Utils
33
- * ---------------------------------------------------------------------------------------------*/ const sendMessage = (type, payload)=>{
34
- window.parent.postMessage({
35
- type,
36
- payload
37
- }, '*');
38
- };
39
- /* -----------------------------------------------------------------------------------------------
40
- * Functional blocks
41
- * ---------------------------------------------------------------------------------------------*/ const setupStegaDecoding = async ()=>{
42
- if (DISABLE_STEGA_DECODING) {
43
- return;
44
- }
45
- const { vercelStegaDecode: stegaDecode } = await import(// @ts-expect-error it's not a local dependency
46
- // eslint-disable-next-line import/no-unresolved
47
- 'https://cdn.jsdelivr.net/npm/@vercel/stega@0.1.2/+esm');
48
- const allElements = document.querySelectorAll('*');
49
- Array.from(allElements).forEach((element)=>{
50
- const directTextContent = Array.from(element.childNodes).filter((node)=>node.nodeType === Node.TEXT_NODE).map((node)=>node.textContent || '').join('');
51
- if (directTextContent) {
52
- try {
53
- const result = stegaDecode(directTextContent);
54
- if (result) {
55
- element.setAttribute(SOURCE_ATTRIBUTE, result.key);
56
- }
57
- } catch (error) {}
58
- }
59
- });
60
- };
61
- const createOverlaySystem = ()=>{
62
- const existingOverlay = document.getElementById(OVERLAY_ID);
63
- if (existingOverlay) {
64
- existingOverlay.remove();
65
- }
66
- window.__strapi_previewCleanup?.();
67
- const overlay = document.createElement('div');
68
- overlay.id = OVERLAY_ID;
69
- overlay.style.cssText = `
70
- position: fixed;
71
- top: 0;
72
- left: 0;
73
- width: 100%;
74
- height: 100%;
75
- pointer-events: none;
76
- z-index: 9999;
77
- `;
78
- window.document.body.appendChild(overlay);
79
- return overlay;
80
- };
81
- const createHighlightManager = (overlay)=>{
82
- const elements = window.document.querySelectorAll(`[${SOURCE_ATTRIBUTE}]`);
83
- const highlights = [];
84
- let focusedField = null;
85
- const focusedHighlights = [];
86
- const drawOverlay = (target, highlight)=>{
87
- if (!highlight) return;
88
- const rect = target.getBoundingClientRect();
89
- highlight.style.width = `${rect.width + HIGHLIGHT_PADDING * 2}px`;
90
- highlight.style.height = `${rect.height + HIGHLIGHT_PADDING * 2}px`;
91
- highlight.style.transform = `translate(${rect.left - HIGHLIGHT_PADDING}px, ${rect.top - HIGHLIGHT_PADDING}px)`;
92
- };
93
- const updateAllHighlights = ()=>{
94
- highlights.forEach((highlight, index)=>{
95
- const element = elements[index];
96
- if (element && highlight) {
97
- drawOverlay(element, highlight);
98
- }
99
- });
100
- };
101
- elements.forEach((element)=>{
102
- if (element instanceof HTMLElement) {
103
- const highlight = document.createElement('div');
104
- highlight.style.cssText = `
105
- position: absolute;
106
- outline: 2px solid transparent;
107
- pointer-events: auto;
108
- border-radius: 2px 0 2px 2px;
109
- background-color: transparent;
110
- will-change: transform;
111
- transition: outline-color 0.1s ease-in-out;
112
- `;
113
- const editButton = document.createElement('button');
114
- editButton.textContent = 'Edit';
115
- editButton.style.cssText = `
116
- position: absolute;
117
- top: 0px;
118
- right: -${HIGHLIGHT_PADDING}px;
119
- transform: translateY(-100%);
120
- font-size: 12px;
121
- padding: 4px 8px;
122
- background: ${HIGHLIGHT_COLOR};
123
- color: white;
124
- border: none;
125
- border-radius: 4px 4px 0 0;
126
- cursor: pointer;
127
- pointer-events: auto;
128
- display: none;
129
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
130
- z-index: 10000;
131
- user-select: none;
132
- `;
133
- highlight.addEventListener('mouseenter', ()=>{
134
- highlight.style.outlineColor = HIGHLIGHT_COLOR;
135
- editButton.style.display = 'block';
136
- highlight.style.borderRadius = '2px 0 2px 2px';
137
- });
138
- highlight.addEventListener('mouseleave', ()=>{
139
- const fieldPath = element.getAttribute(SOURCE_ATTRIBUTE);
140
- if (fieldPath !== focusedField) {
141
- highlight.style.outlineColor = 'transparent';
142
- }
143
- editButton.style.display = 'none';
144
- highlight.style.borderRadius = '2px';
145
- });
146
- const triggerEdit = (e)=>{
147
- e.stopPropagation();
148
- e.preventDefault();
149
- const fieldPath = element.getAttribute(SOURCE_ATTRIBUTE);
150
- if (fieldPath && window.parent) {
151
- const rect = element.getBoundingClientRect();
152
- sendMessage(EVENTS.WILL_EDIT_FIELD, {
153
- path: fieldPath,
154
- position: {
155
- top: rect.top,
156
- left: rect.left,
157
- width: rect.width,
158
- height: rect.height
159
- }
160
- });
161
- }
162
- };
163
- editButton.addEventListener('click', triggerEdit);
164
- highlight.addEventListener('dblclick', triggerEdit);
165
- highlight.appendChild(editButton);
166
- highlights.push(highlight);
167
- overlay.appendChild(highlight);
168
- drawOverlay(element, highlight);
169
- }
170
- });
171
- return {
172
- elements,
173
- highlights,
174
- focusedField,
175
- focusedHighlights,
176
- updateAllHighlights,
177
- setFocusedField: (field)=>{
178
- focusedField = field;
179
- },
180
- getFocusedField: ()=>focusedField
181
- };
182
- };
183
- const setupEventHandlers = (highlightManager)=>{
184
- const handleMessages = (event)=>{
185
- if (event.data?.type === EVENTS.STRAPI_FIELD_TYPING) {
186
- const { field, value } = event.data.payload;
187
- if (field) {
188
- const matchingElements = document.querySelectorAll(`[${SOURCE_ATTRIBUTE}="${field}"]`);
189
- matchingElements.forEach((element)=>{
190
- if (element instanceof HTMLElement) {
191
- element.textContent = value || '';
192
- }
193
- });
194
- }
195
- } else if (event.data?.type === EVENTS.STRAPI_FIELD_FOCUS) {
196
- const { field } = event.data.payload;
197
- if (field) {
198
- highlightManager.focusedHighlights.forEach((highlight)=>{
199
- highlight.style.outlineColor = 'transparent';
200
- });
201
- highlightManager.focusedHighlights.length = 0;
202
- highlightManager.setFocusedField(field);
203
- const matchingElements = document.querySelectorAll(`[${SOURCE_ATTRIBUTE}="${field}"]`);
204
- matchingElements.forEach((element)=>{
205
- const highlight = highlightManager.highlights[Array.from(highlightManager.elements).indexOf(element)];
206
- if (highlight) {
207
- highlight.style.outlineColor = HIGHLIGHT_COLOR;
208
- highlightManager.focusedHighlights.push(highlight);
209
- }
210
- });
211
- }
212
- } else if (event.data?.type === EVENTS.STRAPI_FIELD_BLUR) {
213
- const { field } = event.data.payload;
214
- if (field === highlightManager.getFocusedField()) {
215
- highlightManager.focusedHighlights.forEach((highlight)=>{
216
- highlight.style.outlineColor = 'transparent';
217
- });
218
- highlightManager.focusedHighlights.length = 0;
219
- highlightManager.setFocusedField(null);
220
- }
221
- }
222
- };
223
- window.addEventListener('message', handleMessages);
224
- return {
225
- handleMessages
226
- };
227
- };
228
- const setupObservers = (highlightManager)=>{
229
- const resizeObserver = new ResizeObserver(()=>{
230
- highlightManager.updateAllHighlights();
231
- });
232
- highlightManager.elements.forEach((element)=>{
233
- resizeObserver.observe(element);
234
- });
235
- resizeObserver.observe(document.documentElement);
236
- const updateOnScroll = ()=>{
237
- highlightManager.updateAllHighlights();
238
- };
239
- // Find all scrollable ancestors for all tracked elements
240
- const scrollableElements = new Set();
241
- scrollableElements.add(window); // Add window as a special case
242
- highlightManager.elements.forEach((element)=>{
243
- let parent = element.parentElement;
244
- while(parent){
245
- const computedStyle = window.getComputedStyle(parent);
246
- const overflow = computedStyle.overflow + computedStyle.overflowX + computedStyle.overflowY;
247
- if (overflow.includes('scroll') || overflow.includes('auto')) {
248
- scrollableElements.add(parent);
249
- }
250
- parent = parent.parentElement;
251
- }
252
- });
253
- // Add scroll listeners to all scrollable elements
254
- scrollableElements.forEach((element)=>{
255
- if (element === window) {
256
- window.addEventListener('scroll', updateOnScroll);
257
- window.addEventListener('resize', updateOnScroll);
258
- } else {
259
- element.addEventListener('scroll', updateOnScroll);
260
- }
261
- });
262
- return {
263
- resizeObserver,
264
- updateOnScroll,
265
- scrollableElements
266
- };
267
- };
268
- const createCleanupSystem = (overlay, observers, eventHandlers)=>{
269
- window.__strapi_previewCleanup = ()=>{
270
- observers.resizeObserver.disconnect();
271
- // Remove all scroll listeners
272
- observers.scrollableElements.forEach((element)=>{
273
- if (element === window) {
274
- window.removeEventListener('scroll', observers.updateOnScroll);
275
- window.removeEventListener('resize', observers.updateOnScroll);
276
- } else {
277
- element.removeEventListener('scroll', observers.updateOnScroll);
278
- }
279
- });
280
- window.removeEventListener('message', eventHandlers.handleMessages);
281
- if (overlay.parentNode) {
282
- overlay.parentNode.removeChild(overlay);
283
- }
284
- };
285
- };
286
- /* -----------------------------------------------------------------------------------------------
287
- * Orchestration
288
- * ---------------------------------------------------------------------------------------------*/ setupStegaDecoding().then(()=>{
289
- const overlay = createOverlaySystem();
290
- const highlightManager = createHighlightManager(overlay);
291
- const eventHandlers = setupEventHandlers(highlightManager);
292
- const observers = setupObservers(highlightManager);
293
- createCleanupSystem(overlay, observers, eventHandlers);
294
- });
295
- };
296
-
297
- export { previewScript };
298
- //# sourceMappingURL=script.mjs.map