@strapi/content-manager 5.37.1 → 5.38.0

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 (552) hide show
  1. package/dist/admin/components/ActionsDrawer.js.map +1 -1
  2. package/dist/admin/components/ActionsDrawer.mjs.map +1 -1
  3. package/dist/admin/components/ComponentIcon.js.map +1 -1
  4. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
  6. package/dist/admin/components/ConfigurationForm/EditFieldForm.mjs.map +1 -1
  7. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  8. package/dist/admin/components/ConfigurationForm/Fields.mjs +2 -2
  9. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  10. package/dist/admin/components/ConfigurationForm/Form.js +62 -30
  11. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  12. package/dist/admin/components/ConfigurationForm/Form.mjs +62 -30
  13. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  14. package/dist/admin/components/DragLayer.js.map +1 -1
  15. package/dist/admin/components/DragLayer.mjs.map +1 -1
  16. package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
  17. package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
  18. package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
  19. package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
  20. package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
  21. package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
  22. package/dist/admin/components/FieldTypeIcon.js.map +1 -1
  23. package/dist/admin/components/FieldTypeIcon.mjs +1 -1
  24. package/dist/admin/components/FieldTypeIcon.mjs.map +1 -1
  25. package/dist/admin/components/InjectionZone.js.map +1 -1
  26. package/dist/admin/components/InjectionZone.mjs.map +1 -1
  27. package/dist/admin/components/LeftMenu.js.map +1 -1
  28. package/dist/admin/components/LeftMenu.mjs.map +1 -1
  29. package/dist/admin/components/RelativeTime.js.map +1 -1
  30. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  31. package/dist/admin/components/Widgets.js.map +1 -1
  32. package/dist/admin/components/Widgets.mjs +1 -1
  33. package/dist/admin/components/Widgets.mjs.map +1 -1
  34. package/dist/admin/constants/attributes.js.map +1 -1
  35. package/dist/admin/constants/attributes.mjs.map +1 -1
  36. package/dist/admin/constants/collections.js.map +1 -1
  37. package/dist/admin/constants/collections.mjs.map +1 -1
  38. package/dist/admin/constants/dragAndDrop.js.map +1 -1
  39. package/dist/admin/constants/dragAndDrop.mjs.map +1 -1
  40. package/dist/admin/constants/hooks.js.map +1 -1
  41. package/dist/admin/constants/hooks.mjs.map +1 -1
  42. package/dist/admin/constants/plugin.js.map +1 -1
  43. package/dist/admin/constants/plugin.mjs.map +1 -1
  44. package/dist/admin/content-manager.js.map +1 -1
  45. package/dist/admin/content-manager.mjs.map +1 -1
  46. package/dist/admin/features/DocumentRBAC.js.map +1 -1
  47. package/dist/admin/features/DocumentRBAC.mjs.map +1 -1
  48. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  49. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  50. package/dist/admin/history/components/VersionContent.js.map +1 -1
  51. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  52. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  53. package/dist/admin/history/components/VersionHeader.mjs +1 -1
  54. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  55. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  56. package/dist/admin/history/components/VersionInputRenderer.mjs +1 -1
  57. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  58. package/dist/admin/history/components/VersionsList.js.map +1 -1
  59. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  60. package/dist/admin/history/index.js.map +1 -1
  61. package/dist/admin/history/index.mjs.map +1 -1
  62. package/dist/admin/history/pages/History.js.map +1 -1
  63. package/dist/admin/history/pages/History.mjs +1 -1
  64. package/dist/admin/history/pages/History.mjs.map +1 -1
  65. package/dist/admin/history/routes.js.map +1 -1
  66. package/dist/admin/history/routes.mjs.map +1 -1
  67. package/dist/admin/history/services/historyVersion.js.map +1 -1
  68. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  69. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  70. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  71. package/dist/admin/hooks/useContentTypeSchema.js.map +1 -1
  72. package/dist/admin/hooks/useContentTypeSchema.mjs.map +1 -1
  73. package/dist/admin/hooks/useDebounce.js.map +1 -1
  74. package/dist/admin/hooks/useDebounce.mjs.map +1 -1
  75. package/dist/admin/hooks/useDocument.js.map +1 -1
  76. package/dist/admin/hooks/useDocument.mjs +1 -1
  77. package/dist/admin/hooks/useDocument.mjs.map +1 -1
  78. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  79. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  80. package/dist/admin/hooks/useDocumentContext.js.map +1 -1
  81. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
  82. package/dist/admin/hooks/useDocumentLayout.js +2 -1
  83. package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
  84. package/dist/admin/hooks/useDocumentLayout.mjs +2 -1
  85. package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
  86. package/dist/admin/hooks/useDragAndDrop.js +1 -3
  87. package/dist/admin/hooks/useDragAndDrop.js.map +1 -1
  88. package/dist/admin/hooks/useDragAndDrop.mjs +1 -3
  89. package/dist/admin/hooks/useDragAndDrop.mjs.map +1 -1
  90. package/dist/admin/hooks/useKeyboardDragAndDrop.js.map +1 -1
  91. package/dist/admin/hooks/useKeyboardDragAndDrop.mjs.map +1 -1
  92. package/dist/admin/hooks/useLazyComponents.js.map +1 -1
  93. package/dist/admin/hooks/useLazyComponents.mjs.map +1 -1
  94. package/dist/admin/hooks/useOnce.js.map +1 -1
  95. package/dist/admin/hooks/useOnce.mjs.map +1 -1
  96. package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
  97. package/dist/admin/hooks/usePersistentQueryParams.mjs.map +1 -1
  98. package/dist/admin/hooks/usePrev.js.map +1 -1
  99. package/dist/admin/hooks/usePrev.mjs.map +1 -1
  100. package/dist/admin/index.js.map +1 -1
  101. package/dist/admin/index.mjs.map +1 -1
  102. package/dist/admin/layout.js.map +1 -1
  103. package/dist/admin/layout.mjs.map +1 -1
  104. package/dist/admin/modules/app.js.map +1 -1
  105. package/dist/admin/modules/app.mjs.map +1 -1
  106. package/dist/admin/modules/hooks.js.map +1 -1
  107. package/dist/admin/modules/hooks.mjs +1 -1
  108. package/dist/admin/modules/hooks.mjs.map +1 -1
  109. package/dist/admin/modules/reducers.js.map +1 -1
  110. package/dist/admin/modules/reducers.mjs.map +1 -1
  111. package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
  112. package/dist/admin/pages/ComponentConfigurationPage.mjs +1 -1
  113. package/dist/admin/pages/ComponentConfigurationPage.mjs.map +1 -1
  114. package/dist/admin/pages/EditConfigurationPage.js.map +1 -1
  115. package/dist/admin/pages/EditConfigurationPage.mjs +1 -1
  116. package/dist/admin/pages/EditConfigurationPage.mjs.map +1 -1
  117. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  118. package/dist/admin/pages/EditView/EditViewPage.mjs +4 -4
  119. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  120. package/dist/admin/pages/EditView/components/Blocker.js.map +1 -1
  121. package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -1
  122. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  123. package/dist/admin/pages/EditView/components/DocumentActions.mjs +4 -4
  124. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  125. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  126. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  127. package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
  128. package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs.map +1 -1
  129. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  130. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs +1 -1
  131. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  132. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.js.map +1 -1
  133. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs +1 -1
  134. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs.map +1 -1
  135. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
  136. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs +1 -1
  137. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs.map +1 -1
  138. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  139. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  140. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
  141. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +2 -2
  142. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
  143. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.js.map +1 -1
  144. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.mjs.map +1 -1
  145. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  146. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  147. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  148. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  149. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  150. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  151. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
  152. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs.map +1 -1
  153. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  154. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +1 -1
  155. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  156. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  157. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +1 -1
  158. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  159. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  160. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs +2 -2
  161. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  162. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.js.map +1 -1
  163. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.mjs.map +1 -1
  164. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.js.map +1 -1
  165. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/constants.mjs.map +1 -1
  166. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.js.map +1 -1
  167. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.mjs.map +1 -1
  168. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.js.map +1 -1
  169. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.mjs.map +1 -1
  170. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.js.map +1 -1
  171. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.mjs.map +1 -1
  172. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.js.map +1 -1
  173. package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.mjs.map +1 -1
  174. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
  175. package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
  176. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  177. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  178. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  179. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  180. package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.js.map +1 -1
  181. package/dist/admin/pages/EditView/components/FormInputs/ComponentContext.mjs.map +1 -1
  182. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.js.map +1 -1
  183. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.mjs.map +1 -1
  184. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
  185. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
  186. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
  187. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
  188. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  189. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  190. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.js.map +1 -1
  191. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.mjs.map +1 -1
  192. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  193. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  194. package/dist/admin/pages/EditView/components/FormInputs/NotAllowed.js.map +1 -1
  195. package/dist/admin/pages/EditView/components/FormInputs/NotAllowed.mjs.map +1 -1
  196. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +45 -6
  197. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  198. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +46 -9
  199. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  200. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  201. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +2 -2
  202. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  203. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  204. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  205. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  206. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  207. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  208. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  209. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
  210. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs.map +1 -1
  211. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  212. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  213. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.js.map +1 -1
  214. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.mjs.map +1 -1
  215. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  216. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +2 -2
  217. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  218. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  219. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  220. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.js.map +1 -1
  221. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.mjs.map +1 -1
  222. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.js.map +1 -1
  223. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.mjs.map +1 -1
  224. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js +8 -6
  225. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  226. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs +8 -6
  227. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  228. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  229. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  230. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  231. package/dist/admin/pages/EditView/components/Header.mjs +2 -2
  232. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  233. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  234. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  235. package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
  236. package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
  237. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  238. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  239. package/dist/admin/pages/EditView/utils/forms.js.map +1 -1
  240. package/dist/admin/pages/EditView/utils/forms.mjs.map +1 -1
  241. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  242. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -1
  243. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  244. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  245. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs +1 -1
  246. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  247. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
  248. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs +1 -1
  249. package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs.map +1 -1
  250. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  251. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  252. package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
  253. package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
  254. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
  255. package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
  256. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  257. package/dist/admin/pages/ListView/ListViewPage.mjs +3 -3
  258. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  259. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  260. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  261. package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
  262. package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
  263. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +1 -4
  264. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
  265. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -5
  266. package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
  267. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +4 -4
  268. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  269. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +2 -2
  270. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  271. package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
  272. package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
  273. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  274. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  275. package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
  276. package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
  277. package/dist/admin/pages/ListView/components/TableCells/CellValue.js +7 -1
  278. package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
  279. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs +7 -1
  280. package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs.map +1 -1
  281. package/dist/admin/pages/ListView/components/TableCells/Components.js.map +1 -1
  282. package/dist/admin/pages/ListView/components/TableCells/Components.mjs +2 -2
  283. package/dist/admin/pages/ListView/components/TableCells/Components.mjs.map +1 -1
  284. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  285. package/dist/admin/pages/ListView/components/TableCells/Media.mjs +1 -1
  286. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  287. package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
  288. package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
  289. package/dist/admin/pages/ListView/components/ViewSettingsMenu.js.map +1 -1
  290. package/dist/admin/pages/ListView/components/ViewSettingsMenu.mjs.map +1 -1
  291. package/dist/admin/pages/NoContentTypePage.js.map +1 -1
  292. package/dist/admin/pages/NoContentTypePage.mjs.map +1 -1
  293. package/dist/admin/pages/NoPermissionsPage.js.map +1 -1
  294. package/dist/admin/pages/NoPermissionsPage.mjs.map +1 -1
  295. package/dist/admin/preview/components/InputPopover.js.map +1 -1
  296. package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
  297. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  298. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  299. package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
  300. package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
  301. package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
  302. package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -1
  303. package/dist/admin/preview/index.js.map +1 -1
  304. package/dist/admin/preview/index.mjs.map +1 -1
  305. package/dist/admin/preview/pages/Preview.js.map +1 -1
  306. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  307. package/dist/admin/preview/routes.js.map +1 -1
  308. package/dist/admin/preview/routes.mjs.map +1 -1
  309. package/dist/admin/preview/services/preview.js.map +1 -1
  310. package/dist/admin/preview/services/preview.mjs.map +1 -1
  311. package/dist/admin/preview/utils/constants.js +0 -1
  312. package/dist/admin/preview/utils/constants.js.map +1 -1
  313. package/dist/admin/preview/utils/constants.mjs +0 -1
  314. package/dist/admin/preview/utils/constants.mjs.map +1 -1
  315. package/dist/admin/preview/utils/fieldUtils.js.map +1 -1
  316. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -1
  317. package/dist/admin/preview/utils/getSendMessage.js.map +1 -1
  318. package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -1
  319. package/dist/admin/preview/utils/previewScript.js.map +1 -1
  320. package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
  321. package/dist/admin/router.js.map +1 -1
  322. package/dist/admin/router.mjs.map +1 -1
  323. package/dist/admin/services/api.js.map +1 -1
  324. package/dist/admin/services/api.mjs.map +1 -1
  325. package/dist/admin/services/components.js.map +1 -1
  326. package/dist/admin/services/components.mjs.map +1 -1
  327. package/dist/admin/services/contentTypes.js.map +1 -1
  328. package/dist/admin/services/contentTypes.mjs.map +1 -1
  329. package/dist/admin/services/documents.js.map +1 -1
  330. package/dist/admin/services/documents.mjs.map +1 -1
  331. package/dist/admin/services/homepage.js.map +1 -1
  332. package/dist/admin/services/homepage.mjs.map +1 -1
  333. package/dist/admin/services/init.js.map +1 -1
  334. package/dist/admin/services/init.mjs.map +1 -1
  335. package/dist/admin/services/relations.js.map +1 -1
  336. package/dist/admin/services/relations.mjs.map +1 -1
  337. package/dist/admin/services/uid.js.map +1 -1
  338. package/dist/admin/services/uid.mjs.map +1 -1
  339. package/dist/admin/src/hooks/useDocumentLayout.d.ts +1 -0
  340. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +7 -2
  341. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +1 -1
  342. package/dist/admin/translations/en.json.js +5 -0
  343. package/dist/admin/translations/en.json.js.map +1 -1
  344. package/dist/admin/translations/en.json.mjs +5 -0
  345. package/dist/admin/translations/en.json.mjs.map +1 -1
  346. package/dist/admin/translations/fr.json.js +72 -1
  347. package/dist/admin/translations/fr.json.js.map +1 -1
  348. package/dist/admin/translations/fr.json.mjs +72 -1
  349. package/dist/admin/translations/fr.json.mjs.map +1 -1
  350. package/dist/admin/utils/api.js.map +1 -1
  351. package/dist/admin/utils/api.mjs.map +1 -1
  352. package/dist/admin/utils/attributes.js.map +1 -1
  353. package/dist/admin/utils/attributes.mjs.map +1 -1
  354. package/dist/admin/utils/objects.js.map +1 -1
  355. package/dist/admin/utils/objects.mjs.map +1 -1
  356. package/dist/admin/utils/relations.js.map +1 -1
  357. package/dist/admin/utils/relations.mjs.map +1 -1
  358. package/dist/admin/utils/strings.js.map +1 -1
  359. package/dist/admin/utils/strings.mjs.map +1 -1
  360. package/dist/admin/utils/translations.js.map +1 -1
  361. package/dist/admin/utils/translations.mjs.map +1 -1
  362. package/dist/admin/utils/urls.js.map +1 -1
  363. package/dist/admin/utils/urls.mjs.map +1 -1
  364. package/dist/admin/utils/users.js.map +1 -1
  365. package/dist/admin/utils/users.mjs.map +1 -1
  366. package/dist/admin/utils/validation.js.map +1 -1
  367. package/dist/admin/utils/validation.mjs.map +1 -1
  368. package/dist/server/bootstrap.js.map +1 -1
  369. package/dist/server/bootstrap.mjs.map +1 -1
  370. package/dist/server/constants/index.js.map +1 -1
  371. package/dist/server/constants/index.mjs.map +1 -1
  372. package/dist/server/controllers/collection-types.js.map +1 -1
  373. package/dist/server/controllers/collection-types.mjs +1 -1
  374. package/dist/server/controllers/collection-types.mjs.map +1 -1
  375. package/dist/server/controllers/components.js.map +1 -1
  376. package/dist/server/controllers/components.mjs.map +1 -1
  377. package/dist/server/controllers/content-types.js +10 -10
  378. package/dist/server/controllers/content-types.js.map +1 -1
  379. package/dist/server/controllers/content-types.mjs.map +1 -1
  380. package/dist/server/controllers/index.js +4 -4
  381. package/dist/server/controllers/index.js.map +1 -1
  382. package/dist/server/controllers/index.mjs.map +1 -1
  383. package/dist/server/controllers/init.js.map +1 -1
  384. package/dist/server/controllers/init.mjs.map +1 -1
  385. package/dist/server/controllers/relations.js.map +1 -1
  386. package/dist/server/controllers/relations.mjs +3 -3
  387. package/dist/server/controllers/relations.mjs.map +1 -1
  388. package/dist/server/controllers/single-types.js.map +1 -1
  389. package/dist/server/controllers/single-types.mjs +1 -1
  390. package/dist/server/controllers/single-types.mjs.map +1 -1
  391. package/dist/server/controllers/uid.js.map +1 -1
  392. package/dist/server/controllers/uid.mjs +1 -1
  393. package/dist/server/controllers/uid.mjs.map +1 -1
  394. package/dist/server/controllers/utils/clone.js.map +1 -1
  395. package/dist/server/controllers/utils/clone.mjs.map +1 -1
  396. package/dist/server/controllers/utils/document-status.js.map +1 -1
  397. package/dist/server/controllers/utils/document-status.mjs.map +1 -1
  398. package/dist/server/controllers/utils/metadata.js.map +1 -1
  399. package/dist/server/controllers/utils/metadata.mjs.map +1 -1
  400. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  401. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  402. package/dist/server/controllers/validation/index.js.map +1 -1
  403. package/dist/server/controllers/validation/index.mjs +1 -1
  404. package/dist/server/controllers/validation/index.mjs.map +1 -1
  405. package/dist/server/controllers/validation/model-configuration.js +6 -1
  406. package/dist/server/controllers/validation/model-configuration.js.map +1 -1
  407. package/dist/server/controllers/validation/model-configuration.mjs +6 -1
  408. package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
  409. package/dist/server/controllers/validation/relations.js.map +1 -1
  410. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  411. package/dist/server/destroy.js.map +1 -1
  412. package/dist/server/destroy.mjs.map +1 -1
  413. package/dist/server/history/constants.js.map +1 -1
  414. package/dist/server/history/constants.mjs.map +1 -1
  415. package/dist/server/history/controllers/history-version.js.map +1 -1
  416. package/dist/server/history/controllers/history-version.mjs.map +1 -1
  417. package/dist/server/history/controllers/index.js.map +1 -1
  418. package/dist/server/history/controllers/index.mjs.map +1 -1
  419. package/dist/server/history/controllers/validation/history-version.js.map +1 -1
  420. package/dist/server/history/controllers/validation/history-version.mjs.map +1 -1
  421. package/dist/server/history/index.js +4 -4
  422. package/dist/server/history/index.js.map +1 -1
  423. package/dist/server/history/index.mjs.map +1 -1
  424. package/dist/server/history/models/history-version.js.map +1 -1
  425. package/dist/server/history/models/history-version.mjs.map +1 -1
  426. package/dist/server/history/routes/history-version.js.map +1 -1
  427. package/dist/server/history/routes/history-version.mjs.map +1 -1
  428. package/dist/server/history/routes/index.js.map +1 -1
  429. package/dist/server/history/routes/index.mjs.map +1 -1
  430. package/dist/server/history/services/history.js.map +1 -1
  431. package/dist/server/history/services/history.mjs.map +1 -1
  432. package/dist/server/history/services/index.js.map +1 -1
  433. package/dist/server/history/services/index.mjs.map +1 -1
  434. package/dist/server/history/services/lifecycles.js.map +1 -1
  435. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  436. package/dist/server/history/services/utils.js.map +1 -1
  437. package/dist/server/history/services/utils.mjs.map +1 -1
  438. package/dist/server/history/utils.js.map +1 -1
  439. package/dist/server/history/utils.mjs.map +1 -1
  440. package/dist/server/homepage/controllers/homepage.js.map +1 -1
  441. package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
  442. package/dist/server/homepage/controllers/index.js.map +1 -1
  443. package/dist/server/homepage/controllers/index.mjs.map +1 -1
  444. package/dist/server/homepage/index.js +6 -6
  445. package/dist/server/homepage/index.js.map +1 -1
  446. package/dist/server/homepage/index.mjs.map +1 -1
  447. package/dist/server/homepage/routes/homepage.js.map +1 -1
  448. package/dist/server/homepage/routes/homepage.mjs.map +1 -1
  449. package/dist/server/homepage/routes/index.js.map +1 -1
  450. package/dist/server/homepage/routes/index.mjs.map +1 -1
  451. package/dist/server/homepage/services/homepage.js.map +1 -1
  452. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  453. package/dist/server/homepage/services/index.js.map +1 -1
  454. package/dist/server/homepage/services/index.mjs.map +1 -1
  455. package/dist/server/index.js +8 -8
  456. package/dist/server/middlewares/routing.js.map +1 -1
  457. package/dist/server/middlewares/routing.mjs.map +1 -1
  458. package/dist/server/policies/hasPermissions.js.map +1 -1
  459. package/dist/server/policies/hasPermissions.mjs.map +1 -1
  460. package/dist/server/policies/index.js.map +1 -1
  461. package/dist/server/policies/index.mjs.map +1 -1
  462. package/dist/server/preview/controllers/index.js.map +1 -1
  463. package/dist/server/preview/controllers/index.mjs.map +1 -1
  464. package/dist/server/preview/controllers/preview.js.map +1 -1
  465. package/dist/server/preview/controllers/preview.mjs.map +1 -1
  466. package/dist/server/preview/controllers/validation/preview.js.map +1 -1
  467. package/dist/server/preview/controllers/validation/preview.mjs.map +1 -1
  468. package/dist/server/preview/index.js +4 -4
  469. package/dist/server/preview/index.js.map +1 -1
  470. package/dist/server/preview/index.mjs.map +1 -1
  471. package/dist/server/preview/routes/index.js.map +1 -1
  472. package/dist/server/preview/routes/index.mjs.map +1 -1
  473. package/dist/server/preview/routes/preview.js.map +1 -1
  474. package/dist/server/preview/routes/preview.mjs.map +1 -1
  475. package/dist/server/preview/services/index.js.map +1 -1
  476. package/dist/server/preview/services/index.mjs.map +1 -1
  477. package/dist/server/preview/services/preview-config.js.map +1 -1
  478. package/dist/server/preview/services/preview-config.mjs +1 -1
  479. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  480. package/dist/server/preview/services/preview.js.map +1 -1
  481. package/dist/server/preview/services/preview.mjs.map +1 -1
  482. package/dist/server/preview/utils.js.map +1 -1
  483. package/dist/server/preview/utils.mjs.map +1 -1
  484. package/dist/server/register.js.map +1 -1
  485. package/dist/server/register.mjs.map +1 -1
  486. package/dist/server/routes/admin.js.map +1 -1
  487. package/dist/server/routes/admin.mjs.map +1 -1
  488. package/dist/server/routes/index.js +4 -4
  489. package/dist/server/routes/index.js.map +1 -1
  490. package/dist/server/routes/index.mjs.map +1 -1
  491. package/dist/server/services/components.js.map +1 -1
  492. package/dist/server/services/components.mjs.map +1 -1
  493. package/dist/server/services/configuration.js.map +1 -1
  494. package/dist/server/services/configuration.mjs.map +1 -1
  495. package/dist/server/services/content-types.js.map +1 -1
  496. package/dist/server/services/content-types.mjs.map +1 -1
  497. package/dist/server/services/data-mapper.js.map +1 -1
  498. package/dist/server/services/data-mapper.mjs.map +1 -1
  499. package/dist/server/services/document-manager.js.map +1 -1
  500. package/dist/server/services/document-manager.mjs +2 -2
  501. package/dist/server/services/document-manager.mjs.map +1 -1
  502. package/dist/server/services/document-metadata.js.map +1 -1
  503. package/dist/server/services/document-metadata.mjs +2 -2
  504. package/dist/server/services/document-metadata.mjs.map +1 -1
  505. package/dist/server/services/field-sizes.js.map +1 -1
  506. package/dist/server/services/field-sizes.mjs.map +1 -1
  507. package/dist/server/services/index.js +4 -4
  508. package/dist/server/services/index.js.map +1 -1
  509. package/dist/server/services/index.mjs.map +1 -1
  510. package/dist/server/services/metrics.js.map +1 -1
  511. package/dist/server/services/metrics.mjs.map +1 -1
  512. package/dist/server/services/permission-checker.js.map +1 -1
  513. package/dist/server/services/permission-checker.mjs.map +1 -1
  514. package/dist/server/services/permission.js.map +1 -1
  515. package/dist/server/services/permission.mjs.map +1 -1
  516. package/dist/server/services/populate-builder.js.map +1 -1
  517. package/dist/server/services/populate-builder.mjs +4 -4
  518. package/dist/server/services/populate-builder.mjs.map +1 -1
  519. package/dist/server/services/uid.js.map +1 -1
  520. package/dist/server/services/uid.mjs.map +1 -1
  521. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  522. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  523. package/dist/server/services/utils/configuration/index.js.map +1 -1
  524. package/dist/server/services/utils/configuration/index.mjs +3 -3
  525. package/dist/server/services/utils/configuration/index.mjs.map +1 -1
  526. package/dist/server/services/utils/configuration/layouts.js.map +1 -1
  527. package/dist/server/services/utils/configuration/layouts.mjs +1 -1
  528. package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
  529. package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
  530. package/dist/server/services/utils/configuration/metadatas.mjs +1 -1
  531. package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
  532. package/dist/server/services/utils/configuration/settings.js +4 -2
  533. package/dist/server/services/utils/configuration/settings.js.map +1 -1
  534. package/dist/server/services/utils/configuration/settings.mjs +5 -3
  535. package/dist/server/services/utils/configuration/settings.mjs.map +1 -1
  536. package/dist/server/services/utils/draft.js.map +1 -1
  537. package/dist/server/services/utils/draft.mjs.map +1 -1
  538. package/dist/server/services/utils/populate.js.map +1 -1
  539. package/dist/server/services/utils/populate.mjs +1 -1
  540. package/dist/server/services/utils/populate.mjs.map +1 -1
  541. package/dist/server/services/utils/store.js.map +1 -1
  542. package/dist/server/services/utils/store.mjs.map +1 -1
  543. package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
  544. package/dist/server/utils/index.js.map +1 -1
  545. package/dist/server/utils/index.mjs.map +1 -1
  546. package/dist/server/validation/policies/hasPermissions.js.map +1 -1
  547. package/dist/server/validation/policies/hasPermissions.mjs.map +1 -1
  548. package/dist/shared/contracts/content-types.d.ts +2 -0
  549. package/dist/shared/contracts/content-types.d.ts.map +1 -1
  550. package/dist/shared/contracts/relations.d.ts +1 -1
  551. package/dist/shared/contracts/relations.d.ts.map +1 -1
  552. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"Link.js","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Flex, Popover } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport {\n BaseEditor,\n Editor,\n Element,\n Path,\n Point,\n Range,\n Transforms,\n Element as SlateElement,\n Node,\n} from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore, useBlocksEditorContext } from '../BlocksEditor';\nimport { type Block } from '../utils/types';\n\nimport type { Schema } from '@strapi/types';\n\nconst isLinkNode = (element: Element): element is Schema.Attribute.LinkInlineNode => {\n return element.type === 'link';\n};\n\nconst removeLink = (editor: Editor) => {\n Transforms.unwrapNodes(editor, {\n match: (node) => !Editor.isEditor(node) && SlateElement.isElement(node) && node.type === 'link',\n });\n};\n\nconst insertLink = (editor: Editor, { url }: { url: string }) => {\n if (editor.selection) {\n // We want to remove all link on the selection\n const linkNodes = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n linkNodes.forEach(([, path]) => {\n Transforms.unwrapNodes(editor, { at: path });\n });\n\n if (Range.isCollapsed(editor.selection)) {\n const link: Block<'link'> = {\n type: 'link',\n url: url ?? '',\n children: [{ type: 'text', text: url }],\n rel: '',\n target: '',\n };\n\n Transforms.insertNodes(editor, link);\n } else {\n Transforms.wrapNodes(editor, { type: 'link', url: url ?? '' } as Block<'link'>, {\n split: true,\n });\n }\n }\n};\n\nconst editLink = (\n editor: Editor,\n link: { url: string; text: string; rel: string; target: string }\n) => {\n const { url, text, rel, target } = link;\n\n if (!editor.selection) {\n return;\n }\n\n const linkEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n });\n\n if (linkEntry) {\n const [, linkPath] = linkEntry;\n Transforms.setNodes(editor, { url, rel, target }, { at: linkPath });\n\n // If link text is different, we remove the old text and insert the new one\n if (text !== '' && text !== Editor.string(editor, linkPath)) {\n const linkNodeChildrens = Array.from(Node.children(editor, linkPath, { reverse: true }));\n\n linkNodeChildrens.forEach(([, childPath]) => {\n Transforms.removeNodes(editor, { at: childPath });\n });\n\n Transforms.insertNodes(editor, [{ type: 'text', text }], { at: linkPath.concat(0) });\n }\n }\n};\n\nconst StyledLink = styled(Box)`\n text-decoration: none;\n`;\n\nconst RemoveButton = styled(Button)<{ $visible: boolean }>`\n visibility: ${(props) => (props.$visible ? 'visible' : 'hidden')};\n`;\n\ninterface LinkContentProps extends RenderElementProps {\n link: Block<'link'>;\n}\n\nconst LinkContent = React.forwardRef<HTMLAnchorElement, LinkContentProps>(\n ({ link, children, attributes }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { editor } = useBlocksEditorContext('Link');\n const path = ReactEditor.findPath(editor, link);\n const [popoverOpen, setPopoverOpen] = React.useState(\n editor.lastInsertedLinkPath ? Path.equals(path, editor.lastInsertedLinkPath) : false\n );\n const elementText = link.children.map((child) => child.text).join('');\n const [linkText, setLinkText] = React.useState(elementText);\n const [linkUrl, setLinkUrl] = React.useState(link.url);\n const [linkRel, setLinRel] = React.useState(link.rel);\n const [linkTarget, setLinkTarget] = React.useState(link.target);\n const linkInputRef = React.useRef<HTMLInputElement>(null);\n const isLastInsertedLink = editor.lastInsertedLinkPath\n ? !Path.equals(path, editor.lastInsertedLinkPath)\n : true;\n const [isSaveDisabled, setIsSaveDisabled] = React.useState(false);\n\n const onLinkChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkUrl(e.target.value);\n\n try {\n // eslint-disable-next-line no-new\n new URL(\n e.target.value?.startsWith('/') ? `https://strapi.io${e.target.value}` : e.target.value\n );\n } catch (error) {\n setIsSaveDisabled(true);\n }\n };\n\n const onLinkRelChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinRel(e.target.value);\n };\n\n const onLinkTargetChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkTarget(e.target.value);\n };\n\n const handleSave: React.FormEventHandler = (e) => {\n e.stopPropagation();\n\n // If the selection is collapsed, we select the parent node because we want all the link to be replaced)\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n const [, parentPath] = Editor.parent(editor, editor.selection.focus?.path);\n Transforms.select(editor, parentPath);\n }\n\n editLink(editor, { url: linkUrl, text: linkText, rel: linkRel, target: linkTarget });\n setPopoverOpen(false);\n editor.lastInsertedLinkPath = null;\n ReactEditor.focus(editor);\n };\n\n const handleClose = () => {\n if (link.url === '') {\n removeLink(editor);\n }\n\n setPopoverOpen(false);\n ReactEditor.focus(editor);\n };\n\n React.useEffect(() => {\n // Focus on the link input element when the popover opens\n if (popoverOpen) linkInputRef.current?.focus();\n }, [popoverOpen]);\n\n const inputNotDirty =\n !linkText ||\n !linkUrl ||\n (link.url &&\n link.url === linkUrl &&\n elementText &&\n elementText === linkText &&\n link.rel === linkRel &&\n link.target === linkTarget);\n\n return (\n <Popover.Root open={popoverOpen}>\n <Popover.Trigger>\n <StyledLink\n {...attributes}\n ref={forwardedRef}\n tag=\"a\"\n href={link.url}\n rel={link.rel}\n target={link.target}\n onClick={() => setPopoverOpen(true)}\n color=\"primary600\"\n >\n {children}\n </StyledLink>\n </Popover.Trigger>\n <Popover.Content onPointerDownOutside={handleClose}>\n <Flex padding={4} direction=\"column\" gap={4}>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.text',\n defaultMessage: 'Text',\n })}\n </Field.Label>\n <Field.Input\n name=\"text\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.text.placeholder',\n defaultMessage: 'Enter link text',\n })}\n value={linkText}\n onChange={(e) => {\n setLinkText(e.target.value);\n }}\n />\n </Flex>\n </Field.Root>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Field.Label>\n <Field.Input\n ref={linkInputRef}\n name=\"url\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.placeholder',\n defaultMessage: 'Paste link',\n })}\n value={linkUrl}\n onChange={onLinkChange}\n />\n </Flex>\n </Field.Root>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link.rel',\n defaultMessage: 'Rel (optional)',\n })}\n </Field.Label>\n <Field.Input\n name=\"rel\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.rel.placeholder',\n defaultMessage: 'noopener, nofollow, noreferrer',\n })}\n value={linkRel}\n onChange={onLinkRelChange}\n />\n </Flex>\n </Field.Root>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link.target',\n defaultMessage: 'Target (optional)',\n })}\n </Field.Label>\n <Field.Input\n name=\"target\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.target.placeholder',\n defaultMessage: '_blank, _self, _parent, _top',\n })}\n value={linkTarget}\n onChange={onLinkTargetChange}\n />\n </Flex>\n </Field.Root>\n <Flex justifyContent=\"space-between\" width={{ initial: '100%', medium: '368px' }}>\n <RemoveButton\n variant=\"danger-light\"\n onClick={() => removeLink(editor)}\n $visible={isLastInsertedLink}\n >\n {formatMessage({\n id: 'components.Blocks.popover.remove',\n defaultMessage: 'Remove',\n })}\n </RemoveButton>\n <Flex gap={2}>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'global.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button disabled={Boolean(inputNotDirty) || isSaveDisabled} onClick={handleSave}>\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Popover.Content>\n </Popover.Root>\n );\n }\n);\n\nconst Link = React.forwardRef<HTMLAnchorElement, RenderElementProps>((props, forwardedRef) => {\n if (!isLinkNode(props.element)) {\n return null;\n }\n\n // LinkContent uses React hooks that rely on props.element being a link. If the type guard above\n // doesn't pass, those hooks would be called conditionnally, which is not allowed.\n // Hence the need for a separate component.\n return <LinkContent {...props} link={props.element} ref={forwardedRef} />;\n});\n\nconst withLinks = (editor: Editor) => {\n const { isInline, apply, insertText, insertData } = editor;\n\n // Links are inline elements, so we need to override the isInline method for slate\n editor.isInline = (element) => {\n return element.type === 'link' ? true : isInline(element);\n };\n\n // We keep a track of the last inserted link path\n // So we can show the popover on the link component if that link is the last one inserted\n editor.lastInsertedLinkPath = null;\n\n // We intercept the apply method, so everytime we insert a new link, we save its path\n editor.apply = (operation) => {\n if (operation.type === 'insert_node') {\n if (\n !Editor.isEditor(operation.node) &&\n operation.node.type === 'link' &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = operation.path;\n }\n } else if (operation.type === 'move_node') {\n // We need to update the last inserted link path when link is moved\n // If link is the first word in the paragraph we dont need to update the path\n if (\n Path.hasPrevious(operation.path) &&\n editor.lastInsertedLinkPath &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = Path.transform(editor.lastInsertedLinkPath, operation);\n }\n }\n\n apply(operation);\n };\n\n editor.insertText = (text) => {\n // When selection is at the end of a link and user types a space, we want to break the link\n if (editor.selection && Range.isCollapsed(editor.selection) && text === ' ') {\n const linksInSelection = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n const selectionIsInLink = editor.selection && linksInSelection.length > 0;\n const selectionIsAtEndOfLink =\n selectionIsInLink &&\n Point.equals(editor.selection.anchor, Editor.end(editor, linksInSelection[0][1]));\n\n if (selectionIsAtEndOfLink) {\n Transforms.insertNodes(\n editor,\n { text: ' ', type: 'text' },\n { at: Path.next(linksInSelection[0][1]), select: true }\n );\n\n return;\n }\n }\n\n insertText(text);\n };\n\n // Add data as a clickable link if its a valid URL\n editor.insertData = (data) => {\n const pastedText = data.getData('text/plain');\n\n if (pastedText) {\n try {\n // eslint-disable-next-line no-new\n new URL(pastedText);\n // Do not show link popup on copy-paste a link, so do not save its path\n editor.shouldSaveLinkPath = false;\n insertLink(editor, { url: pastedText });\n return;\n } catch (error) {\n // continue normal data insertion\n }\n }\n\n insertData(data);\n };\n\n return editor;\n};\n\nconst linkBlocks: Pick<BlocksStore, 'link'> = {\n link: {\n renderElement: (props) => (\n <Link element={props.element} attributes={props.attributes}>\n {props.children}\n </Link>\n ),\n // No handleConvert here, links are created via the link button in the toolbar\n matchNode: (node) => node.type === 'link',\n isInBlocksSelector: false,\n plugin: withLinks,\n isDraggable: () => false,\n },\n};\n\nexport interface LinkEditor extends BaseEditor {\n lastInsertedLinkPath: Path | null;\n shouldSaveLinkPath: boolean;\n}\n\nexport { linkBlocks, insertLink };\n"],"names":["isLinkNode","element","type","removeLink","editor","Transforms","unwrapNodes","match","node","Editor","isEditor","SlateElement","isElement","insertLink","url","selection","linkNodes","Array","from","nodes","at","forEach","path","Range","isCollapsed","link","children","text","rel","target","insertNodes","wrapNodes","split","editLink","linkEntry","above","linkPath","setNodes","string","linkNodeChildrens","Node","reverse","childPath","removeNodes","concat","StyledLink","styled","Box","RemoveButton","Button","props","$visible","LinkContent","React","forwardRef","attributes","forwardedRef","formatMessage","useIntl","useBlocksEditorContext","ReactEditor","findPath","popoverOpen","setPopoverOpen","useState","lastInsertedLinkPath","Path","equals","elementText","map","child","join","linkText","setLinkText","linkUrl","setLinkUrl","linkRel","setLinRel","linkTarget","setLinkTarget","linkInputRef","useRef","isLastInsertedLink","isSaveDisabled","setIsSaveDisabled","onLinkChange","e","value","URL","startsWith","error","onLinkRelChange","onLinkTargetChange","handleSave","stopPropagation","parentPath","parent","focus","select","handleClose","useEffect","current","inputNotDirty","_jsxs","Popover","Root","open","_jsx","Trigger","ref","tag","href","onClick","color","Content","onPointerDownOutside","Flex","padding","direction","gap","Field","width","initial","medium","alignItems","Label","id","defaultMessage","Input","name","placeholder","onChange","justifyContent","variant","disabled","Boolean","Link","withLinks","isInline","apply","insertText","insertData","operation","shouldSaveLinkPath","hasPrevious","transform","linksInSelection","selectionIsInLink","length","selectionIsAtEndOfLink","Point","anchor","end","next","data","pastedText","getData","linkBlocks","renderElement","matchNode","isInBlocksSelector","plugin","isDraggable"],"mappings":"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"}
1
+ {"version":3,"file":"Link.js","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Flex, Popover } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport {\n BaseEditor,\n Editor,\n Element,\n Path,\n Point,\n Range,\n Transforms,\n Element as SlateElement,\n Node,\n} from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore, useBlocksEditorContext } from '../BlocksEditor';\nimport { type Block } from '../utils/types';\n\nimport type { Schema } from '@strapi/types';\n\nconst isLinkNode = (element: Element): element is Schema.Attribute.LinkInlineNode => {\n return element.type === 'link';\n};\n\nconst removeLink = (editor: Editor) => {\n Transforms.unwrapNodes(editor, {\n match: (node) => !Editor.isEditor(node) && SlateElement.isElement(node) && node.type === 'link',\n });\n};\n\nconst insertLink = (editor: Editor, { url }: { url: string }) => {\n if (editor.selection) {\n // We want to remove all link on the selection\n const linkNodes = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n linkNodes.forEach(([, path]) => {\n Transforms.unwrapNodes(editor, { at: path });\n });\n\n if (Range.isCollapsed(editor.selection)) {\n const link: Block<'link'> = {\n type: 'link',\n url: url ?? '',\n children: [{ type: 'text', text: url }],\n rel: '',\n target: '',\n };\n\n Transforms.insertNodes(editor, link);\n } else {\n Transforms.wrapNodes(editor, { type: 'link', url: url ?? '' } as Block<'link'>, {\n split: true,\n });\n }\n }\n};\n\nconst editLink = (\n editor: Editor,\n link: { url: string; text: string; rel: string; target: string }\n) => {\n const { url, text, rel, target } = link;\n\n if (!editor.selection) {\n return;\n }\n\n const linkEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n });\n\n if (linkEntry) {\n const [, linkPath] = linkEntry;\n Transforms.setNodes(editor, { url, rel, target }, { at: linkPath });\n\n // If link text is different, we remove the old text and insert the new one\n if (text !== '' && text !== Editor.string(editor, linkPath)) {\n const linkNodeChildrens = Array.from(Node.children(editor, linkPath, { reverse: true }));\n\n linkNodeChildrens.forEach(([, childPath]) => {\n Transforms.removeNodes(editor, { at: childPath });\n });\n\n Transforms.insertNodes(editor, [{ type: 'text', text }], { at: linkPath.concat(0) });\n }\n }\n};\n\nconst StyledLink = styled(Box)`\n text-decoration: none;\n`;\n\nconst RemoveButton = styled(Button)<{ $visible: boolean }>`\n visibility: ${(props) => (props.$visible ? 'visible' : 'hidden')};\n`;\n\ninterface LinkContentProps extends RenderElementProps {\n link: Block<'link'>;\n}\n\nconst LinkContent = React.forwardRef<HTMLAnchorElement, LinkContentProps>(\n ({ link, children, attributes }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { editor } = useBlocksEditorContext('Link');\n const path = ReactEditor.findPath(editor, link);\n const [popoverOpen, setPopoverOpen] = React.useState(\n editor.lastInsertedLinkPath ? Path.equals(path, editor.lastInsertedLinkPath) : false\n );\n const elementText = link.children.map((child) => child.text).join('');\n const [linkText, setLinkText] = React.useState(elementText);\n const [linkUrl, setLinkUrl] = React.useState(link.url);\n const [linkRel, setLinRel] = React.useState(link.rel);\n const [linkTarget, setLinkTarget] = React.useState(link.target);\n const linkInputRef = React.useRef<HTMLInputElement>(null);\n const isLastInsertedLink = editor.lastInsertedLinkPath\n ? !Path.equals(path, editor.lastInsertedLinkPath)\n : true;\n const [isSaveDisabled, setIsSaveDisabled] = React.useState(false);\n\n const onLinkChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkUrl(e.target.value);\n\n try {\n // eslint-disable-next-line no-new\n new URL(\n e.target.value?.startsWith('/') ? `https://strapi.io${e.target.value}` : e.target.value\n );\n } catch (error) {\n setIsSaveDisabled(true);\n }\n };\n\n const onLinkRelChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinRel(e.target.value);\n };\n\n const onLinkTargetChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkTarget(e.target.value);\n };\n\n const handleSave: React.FormEventHandler = (e) => {\n e.stopPropagation();\n\n // If the selection is collapsed, we select the parent node because we want all the link to be replaced)\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n const [, parentPath] = Editor.parent(editor, editor.selection.focus?.path);\n Transforms.select(editor, parentPath);\n }\n\n editLink(editor, { url: linkUrl, text: linkText, rel: linkRel, target: linkTarget });\n setPopoverOpen(false);\n editor.lastInsertedLinkPath = null;\n ReactEditor.focus(editor);\n };\n\n const handleClose = () => {\n if (link.url === '') {\n removeLink(editor);\n }\n\n setPopoverOpen(false);\n ReactEditor.focus(editor);\n };\n\n React.useEffect(() => {\n // Focus on the link input element when the popover opens\n if (popoverOpen) linkInputRef.current?.focus();\n }, [popoverOpen]);\n\n const inputNotDirty =\n !linkText ||\n !linkUrl ||\n (link.url &&\n link.url === linkUrl &&\n elementText &&\n elementText === linkText &&\n link.rel === linkRel &&\n link.target === linkTarget);\n\n return (\n <Popover.Root open={popoverOpen}>\n <Popover.Trigger>\n <StyledLink\n {...attributes}\n ref={forwardedRef}\n tag=\"a\"\n href={link.url}\n rel={link.rel}\n target={link.target}\n onClick={() => setPopoverOpen(true)}\n color=\"primary600\"\n >\n {children}\n </StyledLink>\n </Popover.Trigger>\n <Popover.Content onPointerDownOutside={handleClose}>\n <Flex padding={4} direction=\"column\" gap={4}>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.text',\n defaultMessage: 'Text',\n })}\n </Field.Label>\n <Field.Input\n name=\"text\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.text.placeholder',\n defaultMessage: 'Enter link text',\n })}\n value={linkText}\n onChange={(e) => {\n setLinkText(e.target.value);\n }}\n />\n </Flex>\n </Field.Root>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Field.Label>\n <Field.Input\n ref={linkInputRef}\n name=\"url\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.placeholder',\n defaultMessage: 'Paste link',\n })}\n value={linkUrl}\n onChange={onLinkChange}\n />\n </Flex>\n </Field.Root>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link.rel',\n defaultMessage: 'Rel (optional)',\n })}\n </Field.Label>\n <Field.Input\n name=\"rel\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.rel.placeholder',\n defaultMessage: 'noopener, nofollow, noreferrer',\n })}\n value={linkRel}\n onChange={onLinkRelChange}\n />\n </Flex>\n </Field.Root>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link.target',\n defaultMessage: 'Target (optional)',\n })}\n </Field.Label>\n <Field.Input\n name=\"target\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.target.placeholder',\n defaultMessage: '_blank, _self, _parent, _top',\n })}\n value={linkTarget}\n onChange={onLinkTargetChange}\n />\n </Flex>\n </Field.Root>\n <Flex justifyContent=\"space-between\" width={{ initial: '100%', medium: '368px' }}>\n <RemoveButton\n variant=\"danger-light\"\n onClick={() => removeLink(editor)}\n $visible={isLastInsertedLink}\n >\n {formatMessage({\n id: 'components.Blocks.popover.remove',\n defaultMessage: 'Remove',\n })}\n </RemoveButton>\n <Flex gap={2}>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'global.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button disabled={Boolean(inputNotDirty) || isSaveDisabled} onClick={handleSave}>\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Popover.Content>\n </Popover.Root>\n );\n }\n);\n\nconst Link = React.forwardRef<HTMLAnchorElement, RenderElementProps>((props, forwardedRef) => {\n if (!isLinkNode(props.element)) {\n return null;\n }\n\n // LinkContent uses React hooks that rely on props.element being a link. If the type guard above\n // doesn't pass, those hooks would be called conditionnally, which is not allowed.\n // Hence the need for a separate component.\n return <LinkContent {...props} link={props.element} ref={forwardedRef} />;\n});\n\nconst withLinks = (editor: Editor) => {\n const { isInline, apply, insertText, insertData } = editor;\n\n // Links are inline elements, so we need to override the isInline method for slate\n editor.isInline = (element) => {\n return element.type === 'link' ? true : isInline(element);\n };\n\n // We keep a track of the last inserted link path\n // So we can show the popover on the link component if that link is the last one inserted\n editor.lastInsertedLinkPath = null;\n\n // We intercept the apply method, so everytime we insert a new link, we save its path\n editor.apply = (operation) => {\n if (operation.type === 'insert_node') {\n if (\n !Editor.isEditor(operation.node) &&\n operation.node.type === 'link' &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = operation.path;\n }\n } else if (operation.type === 'move_node') {\n // We need to update the last inserted link path when link is moved\n // If link is the first word in the paragraph we dont need to update the path\n if (\n Path.hasPrevious(operation.path) &&\n editor.lastInsertedLinkPath &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = Path.transform(editor.lastInsertedLinkPath, operation);\n }\n }\n\n apply(operation);\n };\n\n editor.insertText = (text) => {\n // When selection is at the end of a link and user types a space, we want to break the link\n if (editor.selection && Range.isCollapsed(editor.selection) && text === ' ') {\n const linksInSelection = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n const selectionIsInLink = editor.selection && linksInSelection.length > 0;\n const selectionIsAtEndOfLink =\n selectionIsInLink &&\n Point.equals(editor.selection.anchor, Editor.end(editor, linksInSelection[0][1]));\n\n if (selectionIsAtEndOfLink) {\n Transforms.insertNodes(\n editor,\n { text: ' ', type: 'text' },\n { at: Path.next(linksInSelection[0][1]), select: true }\n );\n\n return;\n }\n }\n\n insertText(text);\n };\n\n // Add data as a clickable link if its a valid URL\n editor.insertData = (data) => {\n const pastedText = data.getData('text/plain');\n\n if (pastedText) {\n try {\n // eslint-disable-next-line no-new\n new URL(pastedText);\n // Do not show link popup on copy-paste a link, so do not save its path\n editor.shouldSaveLinkPath = false;\n insertLink(editor, { url: pastedText });\n return;\n } catch (error) {\n // continue normal data insertion\n }\n }\n\n insertData(data);\n };\n\n return editor;\n};\n\nconst linkBlocks: Pick<BlocksStore, 'link'> = {\n link: {\n renderElement: (props) => (\n <Link element={props.element} attributes={props.attributes}>\n {props.children}\n </Link>\n ),\n // No handleConvert here, links are created via the link button in the toolbar\n matchNode: (node) => node.type === 'link',\n isInBlocksSelector: false,\n plugin: withLinks,\n isDraggable: () => false,\n },\n};\n\nexport interface LinkEditor extends BaseEditor {\n lastInsertedLinkPath: Path | null;\n shouldSaveLinkPath: boolean;\n}\n\nexport { linkBlocks, insertLink };\n"],"names":["isLinkNode","element","type","removeLink","editor","Transforms","unwrapNodes","match","node","Editor","isEditor","SlateElement","isElement","insertLink","url","selection","linkNodes","Array","from","nodes","at","forEach","path","Range","isCollapsed","link","children","text","rel","target","insertNodes","wrapNodes","split","editLink","linkEntry","above","linkPath","setNodes","string","linkNodeChildrens","Node","reverse","childPath","removeNodes","concat","StyledLink","styled","Box","RemoveButton","Button","props","$visible","LinkContent","React","forwardRef","attributes","forwardedRef","formatMessage","useIntl","useBlocksEditorContext","ReactEditor","findPath","popoverOpen","setPopoverOpen","useState","lastInsertedLinkPath","Path","equals","elementText","map","child","join","linkText","setLinkText","linkUrl","setLinkUrl","linkRel","setLinRel","linkTarget","setLinkTarget","linkInputRef","useRef","isLastInsertedLink","isSaveDisabled","setIsSaveDisabled","onLinkChange","e","value","URL","startsWith","error","onLinkRelChange","onLinkTargetChange","handleSave","stopPropagation","parentPath","parent","focus","select","handleClose","useEffect","current","inputNotDirty","_jsxs","Popover","Root","open","_jsx","Trigger","ref","tag","href","onClick","color","Content","onPointerDownOutside","Flex","padding","direction","gap","Field","width","initial","medium","alignItems","Label","id","defaultMessage","Input","name","placeholder","onChange","justifyContent","variant","disabled","Boolean","Link","withLinks","isInline","apply","insertText","insertData","operation","shouldSaveLinkPath","hasPrevious","transform","linksInSelection","selectionIsInLink","length","selectionIsAtEndOfLink","Point","anchor","end","next","data","pastedText","getData","linkBlocks","renderElement","matchNode","isInBlocksSelector","plugin","isDraggable"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAMA,aAAa,CAACC,OAAAA,GAAAA;IAClB,OAAOA,OAAAA,CAAQC,IAAI,KAAK,MAAA;AAC1B,CAAA;AAEA,MAAMC,aAAa,CAACC,MAAAA,GAAAA;IAClBC,gBAAAA,CAAWC,WAAW,CAACF,MAAAA,EAAQ;AAC7BG,QAAAA,KAAAA,EAAO,CAACC,IAAAA,GAAS,CAACC,YAAAA,CAAOC,QAAQ,CAACF,IAAAA,CAAAA,IAASG,aAAAA,CAAaC,SAAS,CAACJ,IAAAA,CAAAA,IAASA,IAAAA,CAAKN,IAAI,KAAK;AAC3F,KAAA,CAAA;AACF,CAAA;AAEA,MAAMW,UAAAA,GAAa,CAACT,MAAAA,EAAgB,EAAEU,GAAG,EAAmB,GAAA;IAC1D,IAAIV,MAAAA,CAAOW,SAAS,EAAE;;AAEpB,QAAA,MAAMC,YAAYC,KAAAA,CAAMC,IAAI,CAC1BT,YAAAA,CAAOU,KAAK,CAACf,MAAAA,EAAQ;AACnBgB,YAAAA,EAAAA,EAAIhB,OAAOW,SAAS;YACpBR,KAAAA,EAAO,CAACC,OAAS,CAACC,YAAAA,CAAOC,QAAQ,CAACF,IAAAA,CAAAA,IAASA,IAAAA,CAAKN,IAAI,KAAK;AAC3D,SAAA,CAAA,CAAA;AAGFc,QAAAA,SAAAA,CAAUK,OAAO,CAAC,CAAC,GAAGC,IAAAA,CAAK,GAAA;YACzBjB,gBAAAA,CAAWC,WAAW,CAACF,MAAAA,EAAQ;gBAAEgB,EAAAA,EAAIE;AAAK,aAAA,CAAA;AAC5C,QAAA,CAAA,CAAA;AAEA,QAAA,IAAIC,WAAAA,CAAMC,WAAW,CAACpB,MAAAA,CAAOW,SAAS,CAAA,EAAG;AACvC,YAAA,MAAMU,IAAAA,GAAsB;gBAC1BvB,IAAAA,EAAM,MAAA;AACNY,gBAAAA,GAAAA,EAAKA,GAAAA,IAAO,EAAA;gBACZY,QAAAA,EAAU;AAAC,oBAAA;wBAAExB,IAAAA,EAAM,MAAA;wBAAQyB,IAAAA,EAAMb;AAAI;AAAE,iBAAA;gBACvCc,GAAAA,EAAK,EAAA;gBACLC,MAAAA,EAAQ;AACV,aAAA;YAEAxB,gBAAAA,CAAWyB,WAAW,CAAC1B,MAAAA,EAAQqB,IAAAA,CAAAA;QACjC,CAAA,MAAO;YACLpB,gBAAAA,CAAW0B,SAAS,CAAC3B,MAAAA,EAAQ;gBAAEF,IAAAA,EAAM,MAAA;AAAQY,gBAAAA,GAAAA,EAAKA,GAAAA,IAAO;aAAG,EAAoB;gBAC9EkB,KAAAA,EAAO;AACT,aAAA,CAAA;AACF,QAAA;AACF,IAAA;AACF;AAEA,MAAMC,QAAAA,GAAW,CACf7B,MAAAA,EACAqB,IAAAA,GAAAA;IAEA,MAAM,EAAEX,GAAG,EAAEa,IAAI,EAAEC,GAAG,EAAEC,MAAM,EAAE,GAAGJ,IAAAA;IAEnC,IAAI,CAACrB,MAAAA,CAAOW,SAAS,EAAE;AACrB,QAAA;AACF,IAAA;AAEA,IAAA,MAAMmB,SAAAA,GAAYzB,YAAAA,CAAO0B,KAAK,CAAC/B,MAAAA,EAAQ;QACrCG,KAAAA,EAAO,CAACC,OAAS,CAACC,YAAAA,CAAOC,QAAQ,CAACF,IAAAA,CAAAA,IAASA,IAAAA,CAAKN,IAAI,KAAK;AAC3D,KAAA,CAAA;AAEA,IAAA,IAAIgC,SAAAA,EAAW;QACb,MAAM,GAAGE,SAAS,GAAGF,SAAAA;QACrB7B,gBAAAA,CAAWgC,QAAQ,CAACjC,MAAAA,EAAQ;AAAEU,YAAAA,GAAAA;AAAKc,YAAAA,GAAAA;AAAKC,YAAAA;SAAO,EAAG;YAAET,EAAAA,EAAIgB;AAAS,SAAA,CAAA;;AAGjE,QAAA,IAAIT,SAAS,EAAA,IAAMA,IAAAA,KAASlB,aAAO6B,MAAM,CAAClC,QAAQgC,QAAAA,CAAAA,EAAW;YAC3D,MAAMG,iBAAAA,GAAoBtB,MAAMC,IAAI,CAACsB,WAAKd,QAAQ,CAACtB,QAAQgC,QAAAA,EAAU;gBAAEK,OAAAA,EAAS;AAAK,aAAA,CAAA,CAAA;AAErFF,YAAAA,iBAAAA,CAAkBlB,OAAO,CAAC,CAAC,GAAGqB,SAAAA,CAAU,GAAA;gBACtCrC,gBAAAA,CAAWsC,WAAW,CAACvC,MAAAA,EAAQ;oBAAEgB,EAAAA,EAAIsB;AAAU,iBAAA,CAAA;AACjD,YAAA,CAAA,CAAA;YAEArC,gBAAAA,CAAWyB,WAAW,CAAC1B,MAAAA,EAAQ;AAAC,gBAAA;oBAAEF,IAAAA,EAAM,MAAA;AAAQyB,oBAAAA;AAAK;aAAE,EAAE;gBAAEP,EAAAA,EAAIgB,QAAAA,CAASQ,MAAM,CAAC,CAAA;AAAG,aAAA,CAAA;AACpF,QAAA;AACF,IAAA;AACF,CAAA;AAEA,MAAMC,UAAAA,GAAaC,uBAAAA,CAAOC,gBAAAA,CAAI;;AAE9B,CAAC;AAED,MAAMC,YAAAA,GAAeF,uBAAAA,CAAOG,mBAAAA,CAA8B;AAC5C,cAAA,EAAE,CAACC,KAAAA,GAAWA,KAAAA,CAAMC,QAAQ,GAAG,YAAY,QAAA,CAAU;AACnE,CAAC;AAMD,MAAMC,WAAAA,iBAAcC,gBAAAA,CAAMC,UAAU,CAClC,CAAC,EAAE7B,IAAI,EAAEC,QAAQ,EAAE6B,UAAU,EAAE,EAAEC,YAAAA,GAAAA;IAC/B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEtD,MAAM,EAAE,GAAGuD,mCAAAA,CAAuB,MAAA,CAAA;AAC1C,IAAA,MAAMrC,IAAAA,GAAOsC,sBAAAA,CAAYC,QAAQ,CAACzD,MAAAA,EAAQqB,IAAAA,CAAAA;AAC1C,IAAA,MAAM,CAACqC,WAAAA,EAAaC,cAAAA,CAAe,GAAGV,gBAAAA,CAAMW,QAAQ,CAClD5D,MAAAA,CAAO6D,oBAAoB,GAAGC,WAAKC,MAAM,CAAC7C,IAAAA,EAAMlB,MAAAA,CAAO6D,oBAAoB,CAAA,GAAI,KAAA,CAAA;AAEjF,IAAA,MAAMG,WAAAA,GAAc3C,IAAAA,CAAKC,QAAQ,CAAC2C,GAAG,CAAC,CAACC,KAAAA,GAAUA,KAAAA,CAAM3C,IAAI,CAAA,CAAE4C,IAAI,CAAC,EAAA,CAAA;AAClE,IAAA,MAAM,CAACC,QAAAA,EAAUC,WAAAA,CAAY,GAAGpB,gBAAAA,CAAMW,QAAQ,CAACI,WAAAA,CAAAA;IAC/C,MAAM,CAACM,SAASC,UAAAA,CAAW,GAAGtB,iBAAMW,QAAQ,CAACvC,KAAKX,GAAG,CAAA;IACrD,MAAM,CAAC8D,SAASC,SAAAA,CAAU,GAAGxB,iBAAMW,QAAQ,CAACvC,KAAKG,GAAG,CAAA;IACpD,MAAM,CAACkD,YAAYC,aAAAA,CAAc,GAAG1B,iBAAMW,QAAQ,CAACvC,KAAKI,MAAM,CAAA;IAC9D,MAAMmD,YAAAA,GAAe3B,gBAAAA,CAAM4B,MAAM,CAAmB,IAAA,CAAA;IACpD,MAAMC,kBAAAA,GAAqB9E,MAAAA,CAAO6D,oBAAoB,GAClD,CAACC,UAAAA,CAAKC,MAAM,CAAC7C,IAAAA,EAAMlB,MAAAA,CAAO6D,oBAAoB,CAAA,GAC9C,IAAA;AACJ,IAAA,MAAM,CAACkB,cAAAA,EAAgBC,iBAAAA,CAAkB,GAAG/B,gBAAAA,CAAMW,QAAQ,CAAC,KAAA,CAAA;AAE3D,IAAA,MAAMqB,eAAe,CAACC,CAAAA,GAAAA;QACpBF,iBAAAA,CAAkB,KAAA,CAAA;QAClBT,UAAAA,CAAWW,CAAAA,CAAEzD,MAAM,CAAC0D,KAAK,CAAA;QAEzB,IAAI;;YAEF,IAAIC,GAAAA,CACFF,EAAEzD,MAAM,CAAC0D,KAAK,EAAEE,UAAAA,CAAW,OAAO,CAAC,iBAAiB,EAAEH,CAAAA,CAAEzD,MAAM,CAAC0D,KAAK,CAAA,CAAE,GAAGD,CAAAA,CAAEzD,MAAM,CAAC0D,KAAK,CAAA;AAE3F,QAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;YACdN,iBAAAA,CAAkB,IAAA,CAAA;AACpB,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMO,kBAAkB,CAACL,CAAAA,GAAAA;QACvBF,iBAAAA,CAAkB,KAAA,CAAA;QAClBP,SAAAA,CAAUS,CAAAA,CAAEzD,MAAM,CAAC0D,KAAK,CAAA;AAC1B,IAAA,CAAA;AAEA,IAAA,MAAMK,qBAAqB,CAACN,CAAAA,GAAAA;QAC1BF,iBAAAA,CAAkB,KAAA,CAAA;QAClBL,aAAAA,CAAcO,CAAAA,CAAEzD,MAAM,CAAC0D,KAAK,CAAA;AAC9B,IAAA,CAAA;AAEA,IAAA,MAAMM,aAAqC,CAACP,CAAAA,GAAAA;AAC1CA,QAAAA,CAAAA,CAAEQ,eAAe,EAAA;;QAGjB,IAAI1F,MAAAA,CAAOW,SAAS,IAAIQ,WAAAA,CAAMC,WAAW,CAACpB,MAAAA,CAAOW,SAAS,CAAA,EAAG;YAC3D,MAAM,GAAGgF,UAAAA,CAAW,GAAGtF,YAAAA,CAAOuF,MAAM,CAAC5F,MAAAA,EAAQA,MAAAA,CAAOW,SAAS,CAACkF,KAAK,EAAE3E,IAAAA,CAAAA;YACrEjB,gBAAAA,CAAW6F,MAAM,CAAC9F,MAAAA,EAAQ2F,UAAAA,CAAAA;AAC5B,QAAA;AAEA9D,QAAAA,QAAAA,CAAS7B,MAAAA,EAAQ;YAAEU,GAAAA,EAAK4D,OAAAA;YAAS/C,IAAAA,EAAM6C,QAAAA;YAAU5C,GAAAA,EAAKgD,OAAAA;YAAS/C,MAAAA,EAAQiD;AAAW,SAAA,CAAA;QAClFf,cAAAA,CAAe,KAAA,CAAA;AACf3D,QAAAA,MAAAA,CAAO6D,oBAAoB,GAAG,IAAA;AAC9BL,QAAAA,sBAAAA,CAAYqC,KAAK,CAAC7F,MAAAA,CAAAA;AACpB,IAAA,CAAA;AAEA,IAAA,MAAM+F,WAAAA,GAAc,IAAA;QAClB,IAAI1E,IAAAA,CAAKX,GAAG,KAAK,EAAA,EAAI;YACnBX,UAAAA,CAAWC,MAAAA,CAAAA;AACb,QAAA;QAEA2D,cAAAA,CAAe,KAAA,CAAA;AACfH,QAAAA,sBAAAA,CAAYqC,KAAK,CAAC7F,MAAAA,CAAAA;AACpB,IAAA,CAAA;AAEAiD,IAAAA,gBAAAA,CAAM+C,SAAS,CAAC,IAAA;;QAEd,IAAItC,WAAAA,EAAakB,YAAAA,CAAaqB,OAAO,EAAEJ,KAAAA,EAAAA;IACzC,CAAA,EAAG;AAACnC,QAAAA;AAAY,KAAA,CAAA;IAEhB,MAAMwC,aAAAA,GACJ,CAAC9B,QAAAA,IACD,CAACE,WACAjD,IAAAA,CAAKX,GAAG,IACPW,IAAAA,CAAKX,GAAG,KAAK4D,OAAAA,IACbN,WAAAA,IACAA,gBAAgBI,QAAAA,IAChB/C,IAAAA,CAAKG,GAAG,KAAKgD,OAAAA,IACbnD,IAAAA,CAAKI,MAAM,KAAKiD,UAAAA;IAEpB,qBACEyB,eAAA,CAACC,qBAAQC,IAAI,EAAA;QAACC,IAAAA,EAAM5C,WAAAA;;AAClB,0BAAA6C,cAAA,CAACH,qBAAQI,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAD,cAAA,CAAC9D,UAAAA,EAAAA;AACE,oBAAA,GAAGU,UAAU;oBACdsD,GAAAA,EAAKrD,YAAAA;oBACLsD,GAAAA,EAAI,GAAA;AACJC,oBAAAA,IAAAA,EAAMtF,KAAKX,GAAG;AACdc,oBAAAA,GAAAA,EAAKH,KAAKG,GAAG;AACbC,oBAAAA,MAAAA,EAAQJ,KAAKI,MAAM;AACnBmF,oBAAAA,OAAAA,EAAS,IAAMjD,cAAAA,CAAe,IAAA,CAAA;oBAC9BkD,KAAAA,EAAM,YAAA;AAELvF,oBAAAA,QAAAA,EAAAA;;;AAGL,0BAAAiF,cAAA,CAACH,qBAAQU,OAAO,EAAA;gBAACC,oBAAAA,EAAsBhB,WAAAA;AACrC,gBAAA,QAAA,gBAAAI,eAAA,CAACa,iBAAAA,EAAAA;oBAAKC,OAAAA,EAAS,CAAA;oBAAGC,SAAAA,EAAU,QAAA;oBAASC,GAAAA,EAAK,CAAA;;AACxC,sCAAAZ,cAAA,CAACa,mBAAMf,IAAI,EAAA;4BAACgB,KAAAA,EAAO;gCAAEC,OAAAA,EAAS,MAAA;gCAAQC,MAAAA,EAAQ;AAAQ,6BAAA;AACpD,4BAAA,QAAA,gBAAApB,eAAA,CAACa,iBAAAA,EAAAA;gCAAKE,SAAAA,EAAU,QAAA;gCAASC,GAAAA,EAAK,CAAA;gCAAGK,UAAAA,EAAW,SAAA;;AAC1C,kDAAAjB,cAAA,CAACa,mBAAMK,KAAK,EAAA;kDACTpE,aAAAA,CAAc;4CACbqE,EAAAA,EAAI,gCAAA;4CACJC,cAAAA,EAAgB;AAClB,yCAAA;;AAEF,kDAAApB,cAAA,CAACa,mBAAMQ,KAAK,EAAA;wCACVC,IAAAA,EAAK,MAAA;AACLC,wCAAAA,WAAAA,EAAazE,aAAAA,CAAc;4CACzBqE,EAAAA,EAAI,4CAAA;4CACJC,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACAxC,KAAAA,EAAOf,QAAAA;AACP2D,wCAAAA,QAAAA,EAAU,CAAC7C,CAAAA,GAAAA;4CACTb,WAAAA,CAAYa,CAAAA,CAAEzD,MAAM,CAAC0D,KAAK,CAAA;AAC5B,wCAAA;;;;;AAIN,sCAAAoB,cAAA,CAACa,mBAAMf,IAAI,EAAA;4BAACgB,KAAAA,EAAO;gCAAEC,OAAAA,EAAS,MAAA;gCAAQC,MAAAA,EAAQ;AAAQ,6BAAA;AACpD,4BAAA,QAAA,gBAAApB,eAAA,CAACa,iBAAAA,EAAAA;gCAAKE,SAAAA,EAAU,QAAA;gCAASC,GAAAA,EAAK,CAAA;gCAAGK,UAAAA,EAAW,SAAA;;AAC1C,kDAAAjB,cAAA,CAACa,mBAAMK,KAAK,EAAA;kDACTpE,aAAAA,CAAc;4CACbqE,EAAAA,EAAI,gCAAA;4CACJC,cAAAA,EAAgB;AAClB,yCAAA;;AAEF,kDAAApB,cAAA,CAACa,mBAAMQ,KAAK,EAAA;wCACVnB,GAAAA,EAAK7B,YAAAA;wCACLiD,IAAAA,EAAK,KAAA;AACLC,wCAAAA,WAAAA,EAAazE,aAAAA,CAAc;4CACzBqE,EAAAA,EAAI,4CAAA;4CACJC,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACAxC,KAAAA,EAAOb,OAAAA;wCACPyD,QAAAA,EAAU9C;;;;;AAIhB,sCAAAsB,cAAA,CAACa,mBAAMf,IAAI,EAAA;4BAACgB,KAAAA,EAAO;gCAAEC,OAAAA,EAAS,MAAA;gCAAQC,MAAAA,EAAQ;AAAQ,6BAAA;AACpD,4BAAA,QAAA,gBAAApB,eAAA,CAACa,iBAAAA,EAAAA;gCAAKE,SAAAA,EAAU,QAAA;gCAASC,GAAAA,EAAK,CAAA;gCAAGK,UAAAA,EAAW,SAAA;;AAC1C,kDAAAjB,cAAA,CAACa,mBAAMK,KAAK,EAAA;kDACTpE,aAAAA,CAAc;4CACbqE,EAAAA,EAAI,oCAAA;4CACJC,cAAAA,EAAgB;AAClB,yCAAA;;AAEF,kDAAApB,cAAA,CAACa,mBAAMQ,KAAK,EAAA;wCACVC,IAAAA,EAAK,KAAA;AACLC,wCAAAA,WAAAA,EAAazE,aAAAA,CAAc;4CACzBqE,EAAAA,EAAI,gDAAA;4CACJC,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACAxC,KAAAA,EAAOX,OAAAA;wCACPuD,QAAAA,EAAUxC;;;;;AAIhB,sCAAAgB,cAAA,CAACa,mBAAMf,IAAI,EAAA;4BAACgB,KAAAA,EAAO;gCAAEC,OAAAA,EAAS,MAAA;gCAAQC,MAAAA,EAAQ;AAAQ,6BAAA;AACpD,4BAAA,QAAA,gBAAApB,eAAA,CAACa,iBAAAA,EAAAA;gCAAKE,SAAAA,EAAU,QAAA;gCAASC,GAAAA,EAAK,CAAA;gCAAGK,UAAAA,EAAW,SAAA;;AAC1C,kDAAAjB,cAAA,CAACa,mBAAMK,KAAK,EAAA;kDACTpE,aAAAA,CAAc;4CACbqE,EAAAA,EAAI,uCAAA;4CACJC,cAAAA,EAAgB;AAClB,yCAAA;;AAEF,kDAAApB,cAAA,CAACa,mBAAMQ,KAAK,EAAA;wCACVC,IAAAA,EAAK,QAAA;AACLC,wCAAAA,WAAAA,EAAazE,aAAAA,CAAc;4CACzBqE,EAAAA,EAAI,mDAAA;4CACJC,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACAxC,KAAAA,EAAOT,UAAAA;wCACPqD,QAAAA,EAAUvC;;;;;sCAIhBW,eAAA,CAACa,iBAAAA,EAAAA;4BAAKgB,cAAAA,EAAe,eAAA;4BAAgBX,KAAAA,EAAO;gCAAEC,OAAAA,EAAS,MAAA;gCAAQC,MAAAA,EAAQ;AAAQ,6BAAA;;8CAC7EhB,cAAA,CAAC3D,YAAAA,EAAAA;oCACCqF,OAAAA,EAAQ,cAAA;AACRrB,oCAAAA,OAAAA,EAAS,IAAM7G,UAAAA,CAAWC,MAAAA,CAAAA;oCAC1B+C,QAAAA,EAAU+B,kBAAAA;8CAETzB,aAAAA,CAAc;wCACbqE,EAAAA,EAAI,kCAAA;wCACJC,cAAAA,EAAgB;AAClB,qCAAA;;8CAEFxB,eAAA,CAACa,iBAAAA,EAAAA;oCAAKG,GAAAA,EAAK,CAAA;;sDACTZ,cAAA,CAAC1D,mBAAAA,EAAAA;4CAAOoF,OAAAA,EAAQ,UAAA;4CAAWrB,OAAAA,EAASb,WAAAA;sDACjC1C,aAAAA,CAAc;gDACbqE,EAAAA,EAAI,eAAA;gDACJC,cAAAA,EAAgB;AAClB,6CAAA;;sDAEFpB,cAAA,CAAC1D,mBAAAA,EAAAA;AAAOqF,4CAAAA,QAAAA,EAAUC,QAAQjC,aAAAA,CAAAA,IAAkBnB,cAAAA;4CAAgB6B,OAAAA,EAASnB,UAAAA;sDAClEpC,aAAAA,CAAc;gDACbqE,EAAAA,EAAI,aAAA;gDACJC,cAAAA,EAAgB;AAClB,6CAAA;;;;;;;;;;;AAQhB,CAAA,CAAA;AAGF,MAAMS,IAAAA,iBAAOnF,gBAAAA,CAAMC,UAAU,CAAwC,CAACJ,KAAAA,EAAOM,YAAAA,GAAAA;AAC3E,IAAA,IAAI,CAACxD,UAAAA,CAAWkD,KAAAA,CAAMjD,OAAO,CAAA,EAAG;QAC9B,OAAO,IAAA;AACT,IAAA;;;;AAKA,IAAA,qBAAO0G,cAAA,CAACvD,WAAAA,EAAAA;AAAa,QAAA,GAAGF,KAAK;AAAEzB,QAAAA,IAAAA,EAAMyB,MAAMjD,OAAO;QAAE4G,GAAAA,EAAKrD;;AAC3D,CAAA,CAAA;AAEA,MAAMiF,YAAY,CAACrI,MAAAA,GAAAA;IACjB,MAAM,EAAEsI,QAAQ,EAAEC,KAAK,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGzI,MAAAA;;IAGpDA,MAAAA,CAAOsI,QAAQ,GAAG,CAACzI,OAAAA,GAAAA;AACjB,QAAA,OAAOA,OAAAA,CAAQC,IAAI,KAAK,MAAA,GAAS,OAAOwI,QAAAA,CAASzI,OAAAA,CAAAA;AACnD,IAAA,CAAA;;;AAIAG,IAAAA,MAAAA,CAAO6D,oBAAoB,GAAG,IAAA;;IAG9B7D,MAAAA,CAAOuI,KAAK,GAAG,CAACG,SAAAA,GAAAA;QACd,IAAIA,SAAAA,CAAU5I,IAAI,KAAK,aAAA,EAAe;AACpC,YAAA,IACE,CAACO,YAAAA,CAAOC,QAAQ,CAACoI,UAAUtI,IAAI,CAAA,IAC/BsI,SAAAA,CAAUtI,IAAI,CAACN,IAAI,KAAK,MAAA,IACxBE,MAAAA,CAAO2I,kBAAkB,EACzB;gBACA3I,MAAAA,CAAO6D,oBAAoB,GAAG6E,SAAAA,CAAUxH,IAAI;AAC9C,YAAA;AACF,QAAA,CAAA,MAAO,IAAIwH,SAAAA,CAAU5I,IAAI,KAAK,WAAA,EAAa;;;YAGzC,IACEgE,UAAAA,CAAK8E,WAAW,CAACF,SAAAA,CAAUxH,IAAI,CAAA,IAC/BlB,MAAAA,CAAO6D,oBAAoB,IAC3B7D,MAAAA,CAAO2I,kBAAkB,EACzB;AACA3I,gBAAAA,MAAAA,CAAO6D,oBAAoB,GAAGC,UAAAA,CAAK+E,SAAS,CAAC7I,MAAAA,CAAO6D,oBAAoB,EAAE6E,SAAAA,CAAAA;AAC5E,YAAA;AACF,QAAA;QAEAH,KAAAA,CAAMG,SAAAA,CAAAA;AACR,IAAA,CAAA;IAEA1I,MAAAA,CAAOwI,UAAU,GAAG,CAACjH,IAAAA,GAAAA;;QAEnB,IAAIvB,MAAAA,CAAOW,SAAS,IAAIQ,WAAAA,CAAMC,WAAW,CAACpB,MAAAA,CAAOW,SAAS,CAAA,IAAKY,IAAAA,KAAS,GAAA,EAAK;AAC3E,YAAA,MAAMuH,mBAAmBjI,KAAAA,CAAMC,IAAI,CACjCT,YAAAA,CAAOU,KAAK,CAACf,MAAAA,EAAQ;AACnBgB,gBAAAA,EAAAA,EAAIhB,OAAOW,SAAS;gBACpBR,KAAAA,EAAO,CAACC,OAAS,CAACC,YAAAA,CAAOC,QAAQ,CAACF,IAAAA,CAAAA,IAASA,IAAAA,CAAKN,IAAI,KAAK;AAC3D,aAAA,CAAA,CAAA;AAGF,YAAA,MAAMiJ,oBAAoB/I,MAAAA,CAAOW,SAAS,IAAImI,gBAAAA,CAAiBE,MAAM,GAAG,CAAA;AACxE,YAAA,MAAMC,yBACJF,iBAAAA,IACAG,WAAAA,CAAMnF,MAAM,CAAC/D,MAAAA,CAAOW,SAAS,CAACwI,MAAM,EAAE9I,YAAAA,CAAO+I,GAAG,CAACpJ,MAAAA,EAAQ8I,gBAAgB,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,CAAA,CAAA;AAEjF,YAAA,IAAIG,sBAAAA,EAAwB;gBAC1BhJ,gBAAAA,CAAWyB,WAAW,CACpB1B,MAAAA,EACA;oBAAEuB,IAAAA,EAAM,GAAA;oBAAKzB,IAAAA,EAAM;iBAAO,EAC1B;AAAEkB,oBAAAA,EAAAA,EAAI8C,WAAKuF,IAAI,CAACP,gBAAgB,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,CAAA;oBAAGhD,MAAAA,EAAQ;AAAK,iBAAA,CAAA;AAGxD,gBAAA;AACF,YAAA;AACF,QAAA;QAEA0C,UAAAA,CAAWjH,IAAAA,CAAAA;AACb,IAAA,CAAA;;IAGAvB,MAAAA,CAAOyI,UAAU,GAAG,CAACa,IAAAA,GAAAA;QACnB,MAAMC,UAAAA,GAAaD,IAAAA,CAAKE,OAAO,CAAC,YAAA,CAAA;AAEhC,QAAA,IAAID,UAAAA,EAAY;YACd,IAAI;;AAEF,gBAAA,IAAInE,GAAAA,CAAImE,UAAAA,CAAAA;;AAERvJ,gBAAAA,MAAAA,CAAO2I,kBAAkB,GAAG,KAAA;AAC5BlI,gBAAAA,UAAAA,CAAWT,MAAAA,EAAQ;oBAAEU,GAAAA,EAAK6I;AAAW,iBAAA,CAAA;AACrC,gBAAA;AACF,YAAA,CAAA,CAAE,OAAOjE,KAAAA,EAAO;;AAEhB,YAAA;AACF,QAAA;QAEAmD,UAAAA,CAAWa,IAAAA,CAAAA;AACb,IAAA,CAAA;IAEA,OAAOtJ,MAAAA;AACT,CAAA;AAEA,MAAMyJ,UAAAA,GAAwC;IAC5CpI,IAAAA,EAAM;QACJqI,aAAAA,EAAe,CAAC5G,sBACdyD,cAAA,CAAC6B,IAAAA,EAAAA;AAAKvI,gBAAAA,OAAAA,EAASiD,MAAMjD,OAAO;AAAEsD,gBAAAA,UAAAA,EAAYL,MAAMK,UAAU;AACvDL,gBAAAA,QAAAA,EAAAA,KAAAA,CAAMxB;;;AAIXqI,QAAAA,SAAAA,EAAW,CAACvJ,IAAAA,GAASA,IAAAA,CAAKN,IAAI,KAAK,MAAA;QACnC8J,kBAAAA,EAAoB,KAAA;QACpBC,MAAAA,EAAQxB,SAAAA;AACRyB,QAAAA,WAAAA,EAAa,IAAM;AACrB;AACF;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Link.mjs","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Flex, Popover } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport {\n BaseEditor,\n Editor,\n Element,\n Path,\n Point,\n Range,\n Transforms,\n Element as SlateElement,\n Node,\n} from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore, useBlocksEditorContext } from '../BlocksEditor';\nimport { type Block } from '../utils/types';\n\nimport type { Schema } from '@strapi/types';\n\nconst isLinkNode = (element: Element): element is Schema.Attribute.LinkInlineNode => {\n return element.type === 'link';\n};\n\nconst removeLink = (editor: Editor) => {\n Transforms.unwrapNodes(editor, {\n match: (node) => !Editor.isEditor(node) && SlateElement.isElement(node) && node.type === 'link',\n });\n};\n\nconst insertLink = (editor: Editor, { url }: { url: string }) => {\n if (editor.selection) {\n // We want to remove all link on the selection\n const linkNodes = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n linkNodes.forEach(([, path]) => {\n Transforms.unwrapNodes(editor, { at: path });\n });\n\n if (Range.isCollapsed(editor.selection)) {\n const link: Block<'link'> = {\n type: 'link',\n url: url ?? '',\n children: [{ type: 'text', text: url }],\n rel: '',\n target: '',\n };\n\n Transforms.insertNodes(editor, link);\n } else {\n Transforms.wrapNodes(editor, { type: 'link', url: url ?? '' } as Block<'link'>, {\n split: true,\n });\n }\n }\n};\n\nconst editLink = (\n editor: Editor,\n link: { url: string; text: string; rel: string; target: string }\n) => {\n const { url, text, rel, target } = link;\n\n if (!editor.selection) {\n return;\n }\n\n const linkEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n });\n\n if (linkEntry) {\n const [, linkPath] = linkEntry;\n Transforms.setNodes(editor, { url, rel, target }, { at: linkPath });\n\n // If link text is different, we remove the old text and insert the new one\n if (text !== '' && text !== Editor.string(editor, linkPath)) {\n const linkNodeChildrens = Array.from(Node.children(editor, linkPath, { reverse: true }));\n\n linkNodeChildrens.forEach(([, childPath]) => {\n Transforms.removeNodes(editor, { at: childPath });\n });\n\n Transforms.insertNodes(editor, [{ type: 'text', text }], { at: linkPath.concat(0) });\n }\n }\n};\n\nconst StyledLink = styled(Box)`\n text-decoration: none;\n`;\n\nconst RemoveButton = styled(Button)<{ $visible: boolean }>`\n visibility: ${(props) => (props.$visible ? 'visible' : 'hidden')};\n`;\n\ninterface LinkContentProps extends RenderElementProps {\n link: Block<'link'>;\n}\n\nconst LinkContent = React.forwardRef<HTMLAnchorElement, LinkContentProps>(\n ({ link, children, attributes }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { editor } = useBlocksEditorContext('Link');\n const path = ReactEditor.findPath(editor, link);\n const [popoverOpen, setPopoverOpen] = React.useState(\n editor.lastInsertedLinkPath ? Path.equals(path, editor.lastInsertedLinkPath) : false\n );\n const elementText = link.children.map((child) => child.text).join('');\n const [linkText, setLinkText] = React.useState(elementText);\n const [linkUrl, setLinkUrl] = React.useState(link.url);\n const [linkRel, setLinRel] = React.useState(link.rel);\n const [linkTarget, setLinkTarget] = React.useState(link.target);\n const linkInputRef = React.useRef<HTMLInputElement>(null);\n const isLastInsertedLink = editor.lastInsertedLinkPath\n ? !Path.equals(path, editor.lastInsertedLinkPath)\n : true;\n const [isSaveDisabled, setIsSaveDisabled] = React.useState(false);\n\n const onLinkChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkUrl(e.target.value);\n\n try {\n // eslint-disable-next-line no-new\n new URL(\n e.target.value?.startsWith('/') ? `https://strapi.io${e.target.value}` : e.target.value\n );\n } catch (error) {\n setIsSaveDisabled(true);\n }\n };\n\n const onLinkRelChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinRel(e.target.value);\n };\n\n const onLinkTargetChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkTarget(e.target.value);\n };\n\n const handleSave: React.FormEventHandler = (e) => {\n e.stopPropagation();\n\n // If the selection is collapsed, we select the parent node because we want all the link to be replaced)\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n const [, parentPath] = Editor.parent(editor, editor.selection.focus?.path);\n Transforms.select(editor, parentPath);\n }\n\n editLink(editor, { url: linkUrl, text: linkText, rel: linkRel, target: linkTarget });\n setPopoverOpen(false);\n editor.lastInsertedLinkPath = null;\n ReactEditor.focus(editor);\n };\n\n const handleClose = () => {\n if (link.url === '') {\n removeLink(editor);\n }\n\n setPopoverOpen(false);\n ReactEditor.focus(editor);\n };\n\n React.useEffect(() => {\n // Focus on the link input element when the popover opens\n if (popoverOpen) linkInputRef.current?.focus();\n }, [popoverOpen]);\n\n const inputNotDirty =\n !linkText ||\n !linkUrl ||\n (link.url &&\n link.url === linkUrl &&\n elementText &&\n elementText === linkText &&\n link.rel === linkRel &&\n link.target === linkTarget);\n\n return (\n <Popover.Root open={popoverOpen}>\n <Popover.Trigger>\n <StyledLink\n {...attributes}\n ref={forwardedRef}\n tag=\"a\"\n href={link.url}\n rel={link.rel}\n target={link.target}\n onClick={() => setPopoverOpen(true)}\n color=\"primary600\"\n >\n {children}\n </StyledLink>\n </Popover.Trigger>\n <Popover.Content onPointerDownOutside={handleClose}>\n <Flex padding={4} direction=\"column\" gap={4}>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.text',\n defaultMessage: 'Text',\n })}\n </Field.Label>\n <Field.Input\n name=\"text\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.text.placeholder',\n defaultMessage: 'Enter link text',\n })}\n value={linkText}\n onChange={(e) => {\n setLinkText(e.target.value);\n }}\n />\n </Flex>\n </Field.Root>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Field.Label>\n <Field.Input\n ref={linkInputRef}\n name=\"url\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.placeholder',\n defaultMessage: 'Paste link',\n })}\n value={linkUrl}\n onChange={onLinkChange}\n />\n </Flex>\n </Field.Root>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link.rel',\n defaultMessage: 'Rel (optional)',\n })}\n </Field.Label>\n <Field.Input\n name=\"rel\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.rel.placeholder',\n defaultMessage: 'noopener, nofollow, noreferrer',\n })}\n value={linkRel}\n onChange={onLinkRelChange}\n />\n </Flex>\n </Field.Root>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link.target',\n defaultMessage: 'Target (optional)',\n })}\n </Field.Label>\n <Field.Input\n name=\"target\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.target.placeholder',\n defaultMessage: '_blank, _self, _parent, _top',\n })}\n value={linkTarget}\n onChange={onLinkTargetChange}\n />\n </Flex>\n </Field.Root>\n <Flex justifyContent=\"space-between\" width={{ initial: '100%', medium: '368px' }}>\n <RemoveButton\n variant=\"danger-light\"\n onClick={() => removeLink(editor)}\n $visible={isLastInsertedLink}\n >\n {formatMessage({\n id: 'components.Blocks.popover.remove',\n defaultMessage: 'Remove',\n })}\n </RemoveButton>\n <Flex gap={2}>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'global.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button disabled={Boolean(inputNotDirty) || isSaveDisabled} onClick={handleSave}>\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Popover.Content>\n </Popover.Root>\n );\n }\n);\n\nconst Link = React.forwardRef<HTMLAnchorElement, RenderElementProps>((props, forwardedRef) => {\n if (!isLinkNode(props.element)) {\n return null;\n }\n\n // LinkContent uses React hooks that rely on props.element being a link. If the type guard above\n // doesn't pass, those hooks would be called conditionnally, which is not allowed.\n // Hence the need for a separate component.\n return <LinkContent {...props} link={props.element} ref={forwardedRef} />;\n});\n\nconst withLinks = (editor: Editor) => {\n const { isInline, apply, insertText, insertData } = editor;\n\n // Links are inline elements, so we need to override the isInline method for slate\n editor.isInline = (element) => {\n return element.type === 'link' ? true : isInline(element);\n };\n\n // We keep a track of the last inserted link path\n // So we can show the popover on the link component if that link is the last one inserted\n editor.lastInsertedLinkPath = null;\n\n // We intercept the apply method, so everytime we insert a new link, we save its path\n editor.apply = (operation) => {\n if (operation.type === 'insert_node') {\n if (\n !Editor.isEditor(operation.node) &&\n operation.node.type === 'link' &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = operation.path;\n }\n } else if (operation.type === 'move_node') {\n // We need to update the last inserted link path when link is moved\n // If link is the first word in the paragraph we dont need to update the path\n if (\n Path.hasPrevious(operation.path) &&\n editor.lastInsertedLinkPath &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = Path.transform(editor.lastInsertedLinkPath, operation);\n }\n }\n\n apply(operation);\n };\n\n editor.insertText = (text) => {\n // When selection is at the end of a link and user types a space, we want to break the link\n if (editor.selection && Range.isCollapsed(editor.selection) && text === ' ') {\n const linksInSelection = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n const selectionIsInLink = editor.selection && linksInSelection.length > 0;\n const selectionIsAtEndOfLink =\n selectionIsInLink &&\n Point.equals(editor.selection.anchor, Editor.end(editor, linksInSelection[0][1]));\n\n if (selectionIsAtEndOfLink) {\n Transforms.insertNodes(\n editor,\n { text: ' ', type: 'text' },\n { at: Path.next(linksInSelection[0][1]), select: true }\n );\n\n return;\n }\n }\n\n insertText(text);\n };\n\n // Add data as a clickable link if its a valid URL\n editor.insertData = (data) => {\n const pastedText = data.getData('text/plain');\n\n if (pastedText) {\n try {\n // eslint-disable-next-line no-new\n new URL(pastedText);\n // Do not show link popup on copy-paste a link, so do not save its path\n editor.shouldSaveLinkPath = false;\n insertLink(editor, { url: pastedText });\n return;\n } catch (error) {\n // continue normal data insertion\n }\n }\n\n insertData(data);\n };\n\n return editor;\n};\n\nconst linkBlocks: Pick<BlocksStore, 'link'> = {\n link: {\n renderElement: (props) => (\n <Link element={props.element} attributes={props.attributes}>\n {props.children}\n </Link>\n ),\n // No handleConvert here, links are created via the link button in the toolbar\n matchNode: (node) => node.type === 'link',\n isInBlocksSelector: false,\n plugin: withLinks,\n isDraggable: () => false,\n },\n};\n\nexport interface LinkEditor extends BaseEditor {\n lastInsertedLinkPath: Path | null;\n shouldSaveLinkPath: boolean;\n}\n\nexport { linkBlocks, insertLink };\n"],"names":["isLinkNode","element","type","removeLink","editor","Transforms","unwrapNodes","match","node","Editor","isEditor","SlateElement","isElement","insertLink","url","selection","linkNodes","Array","from","nodes","at","forEach","path","Range","isCollapsed","link","children","text","rel","target","insertNodes","wrapNodes","split","editLink","linkEntry","above","linkPath","setNodes","string","linkNodeChildrens","Node","reverse","childPath","removeNodes","concat","StyledLink","styled","Box","RemoveButton","Button","props","$visible","LinkContent","React","forwardRef","attributes","forwardedRef","formatMessage","useIntl","useBlocksEditorContext","ReactEditor","findPath","popoverOpen","setPopoverOpen","useState","lastInsertedLinkPath","Path","equals","elementText","map","child","join","linkText","setLinkText","linkUrl","setLinkUrl","linkRel","setLinRel","linkTarget","setLinkTarget","linkInputRef","useRef","isLastInsertedLink","isSaveDisabled","setIsSaveDisabled","onLinkChange","e","value","URL","startsWith","error","onLinkRelChange","onLinkTargetChange","handleSave","stopPropagation","parentPath","parent","focus","select","handleClose","useEffect","current","inputNotDirty","_jsxs","Popover","Root","open","_jsx","Trigger","ref","tag","href","onClick","color","Content","onPointerDownOutside","Flex","padding","direction","gap","Field","width","initial","medium","alignItems","Label","id","defaultMessage","Input","name","placeholder","onChange","justifyContent","variant","disabled","Boolean","Link","withLinks","isInline","apply","insertText","insertData","operation","shouldSaveLinkPath","hasPrevious","transform","linksInSelection","selectionIsInLink","length","selectionIsAtEndOfLink","Point","anchor","end","next","data","pastedText","getData","linkBlocks","renderElement","matchNode","isInBlocksSelector","plugin","isDraggable"],"mappings":";;;;;;;;;AAuBA,MAAMA,aAAa,CAACC,OAAAA,GAAAA;IAClB,OAAOA,OAAAA,CAAQC,IAAI,KAAK,MAAA;AAC1B,CAAA;AAEA,MAAMC,aAAa,CAACC,MAAAA,GAAAA;IAClBC,UAAWC,CAAAA,WAAW,CAACF,MAAQ,EAAA;AAC7BG,QAAAA,KAAAA,EAAO,CAACC,IAAAA,GAAS,CAACC,MAAAA,CAAOC,QAAQ,CAACF,IAASG,CAAAA,IAAAA,OAAAA,CAAaC,SAAS,CAACJ,IAASA,CAAAA,IAAAA,IAAAA,CAAKN,IAAI,KAAK;AAC3F,KAAA,CAAA;AACF,CAAA;AAEA,MAAMW,UAAa,GAAA,CAACT,MAAgB,EAAA,EAAEU,GAAG,EAAmB,GAAA;IAC1D,IAAIV,MAAAA,CAAOW,SAAS,EAAE;;AAEpB,QAAA,MAAMC,YAAYC,KAAMC,CAAAA,IAAI,CAC1BT,MAAOU,CAAAA,KAAK,CAACf,MAAQ,EAAA;AACnBgB,YAAAA,EAAAA,EAAIhB,OAAOW,SAAS;YACpBR,KAAO,EAAA,CAACC,OAAS,CAACC,MAAAA,CAAOC,QAAQ,CAACF,IAAAA,CAAAA,IAASA,IAAKN,CAAAA,IAAI,KAAK;AAC3D,SAAA,CAAA,CAAA;AAGFc,QAAAA,SAAAA,CAAUK,OAAO,CAAC,CAAC,GAAGC,IAAK,CAAA,GAAA;YACzBjB,UAAWC,CAAAA,WAAW,CAACF,MAAQ,EAAA;gBAAEgB,EAAIE,EAAAA;AAAK,aAAA,CAAA;AAC5C,SAAA,CAAA;AAEA,QAAA,IAAIC,KAAMC,CAAAA,WAAW,CAACpB,MAAAA,CAAOW,SAAS,CAAG,EAAA;AACvC,YAAA,MAAMU,IAAsB,GAAA;gBAC1BvB,IAAM,EAAA,MAAA;AACNY,gBAAAA,GAAAA,EAAKA,GAAO,IAAA,EAAA;gBACZY,QAAU,EAAA;AAAC,oBAAA;wBAAExB,IAAM,EAAA,MAAA;wBAAQyB,IAAMb,EAAAA;AAAI;AAAE,iBAAA;gBACvCc,GAAK,EAAA,EAAA;gBACLC,MAAQ,EAAA;AACV,aAAA;YAEAxB,UAAWyB,CAAAA,WAAW,CAAC1B,MAAQqB,EAAAA,IAAAA,CAAAA;SAC1B,MAAA;YACLpB,UAAW0B,CAAAA,SAAS,CAAC3B,MAAQ,EAAA;gBAAEF,IAAM,EAAA,MAAA;AAAQY,gBAAAA,GAAAA,EAAKA,GAAO,IAAA;aAAuB,EAAA;gBAC9EkB,KAAO,EAAA;AACT,aAAA,CAAA;AACF;AACF;AACF;AAEA,MAAMC,QAAAA,GAAW,CACf7B,MACAqB,EAAAA,IAAAA,GAAAA;IAEA,MAAM,EAAEX,GAAG,EAAEa,IAAI,EAAEC,GAAG,EAAEC,MAAM,EAAE,GAAGJ,IAAAA;IAEnC,IAAI,CAACrB,MAAOW,CAAAA,SAAS,EAAE;AACrB,QAAA;AACF;AAEA,IAAA,MAAMmB,SAAYzB,GAAAA,MAAAA,CAAO0B,KAAK,CAAC/B,MAAQ,EAAA;QACrCG,KAAO,EAAA,CAACC,OAAS,CAACC,MAAAA,CAAOC,QAAQ,CAACF,IAAAA,CAAAA,IAASA,IAAKN,CAAAA,IAAI,KAAK;AAC3D,KAAA,CAAA;AAEA,IAAA,IAAIgC,SAAW,EAAA;QACb,MAAM,GAAGE,SAAS,GAAGF,SAAAA;QACrB7B,UAAWgC,CAAAA,QAAQ,CAACjC,MAAQ,EAAA;AAAEU,YAAAA,GAAAA;AAAKc,YAAAA,GAAAA;AAAKC,YAAAA;SAAU,EAAA;YAAET,EAAIgB,EAAAA;AAAS,SAAA,CAAA;;AAGjE,QAAA,IAAIT,SAAS,EAAMA,IAAAA,IAAAA,KAASlB,OAAO6B,MAAM,CAAClC,QAAQgC,QAAW,CAAA,EAAA;YAC3D,MAAMG,iBAAAA,GAAoBtB,MAAMC,IAAI,CAACsB,KAAKd,QAAQ,CAACtB,QAAQgC,QAAU,EAAA;gBAAEK,OAAS,EAAA;AAAK,aAAA,CAAA,CAAA;AAErFF,YAAAA,iBAAAA,CAAkBlB,OAAO,CAAC,CAAC,GAAGqB,SAAU,CAAA,GAAA;gBACtCrC,UAAWsC,CAAAA,WAAW,CAACvC,MAAQ,EAAA;oBAAEgB,EAAIsB,EAAAA;AAAU,iBAAA,CAAA;AACjD,aAAA,CAAA;YAEArC,UAAWyB,CAAAA,WAAW,CAAC1B,MAAQ,EAAA;AAAC,gBAAA;oBAAEF,IAAM,EAAA,MAAA;AAAQyB,oBAAAA;AAAK;aAAE,EAAE;gBAAEP,EAAIgB,EAAAA,QAAAA,CAASQ,MAAM,CAAC,CAAA;AAAG,aAAA,CAAA;AACpF;AACF;AACF,CAAA;AAEA,MAAMC,UAAAA,GAAaC,MAAOC,CAAAA,GAAAA,CAAI;;AAE9B,CAAC;AAED,MAAMC,YAAAA,GAAeF,MAAOG,CAAAA,MAAAA,CAA8B;AAC5C,cAAA,EAAE,CAACC,KAAWA,GAAAA,KAAAA,CAAMC,QAAQ,GAAG,YAAY,QAAU,CAAA;AACnE,CAAC;AAMD,MAAMC,WAAcC,iBAAAA,KAAAA,CAAMC,UAAU,CAClC,CAAC,EAAE7B,IAAI,EAAEC,QAAQ,EAAE6B,UAAU,EAAE,EAAEC,YAAAA,GAAAA;IAC/B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEtD,MAAM,EAAE,GAAGuD,sBAAuB,CAAA,MAAA,CAAA;AAC1C,IAAA,MAAMrC,IAAOsC,GAAAA,WAAAA,CAAYC,QAAQ,CAACzD,MAAQqB,EAAAA,IAAAA,CAAAA;AAC1C,IAAA,MAAM,CAACqC,WAAaC,EAAAA,cAAAA,CAAe,GAAGV,KAAAA,CAAMW,QAAQ,CAClD5D,MAAAA,CAAO6D,oBAAoB,GAAGC,KAAKC,MAAM,CAAC7C,IAAMlB,EAAAA,MAAAA,CAAO6D,oBAAoB,CAAI,GAAA,KAAA,CAAA;AAEjF,IAAA,MAAMG,WAAc3C,GAAAA,IAAAA,CAAKC,QAAQ,CAAC2C,GAAG,CAAC,CAACC,KAAAA,GAAUA,KAAM3C,CAAAA,IAAI,CAAE4C,CAAAA,IAAI,CAAC,EAAA,CAAA;AAClE,IAAA,MAAM,CAACC,QAAUC,EAAAA,WAAAA,CAAY,GAAGpB,KAAAA,CAAMW,QAAQ,CAACI,WAAAA,CAAAA;IAC/C,MAAM,CAACM,SAASC,UAAW,CAAA,GAAGtB,MAAMW,QAAQ,CAACvC,KAAKX,GAAG,CAAA;IACrD,MAAM,CAAC8D,SAASC,SAAU,CAAA,GAAGxB,MAAMW,QAAQ,CAACvC,KAAKG,GAAG,CAAA;IACpD,MAAM,CAACkD,YAAYC,aAAc,CAAA,GAAG1B,MAAMW,QAAQ,CAACvC,KAAKI,MAAM,CAAA;IAC9D,MAAMmD,YAAAA,GAAe3B,KAAM4B,CAAAA,MAAM,CAAmB,IAAA,CAAA;IACpD,MAAMC,kBAAAA,GAAqB9E,MAAO6D,CAAAA,oBAAoB,GAClD,CAACC,IAAKC,CAAAA,MAAM,CAAC7C,IAAAA,EAAMlB,MAAO6D,CAAAA,oBAAoB,CAC9C,GAAA,IAAA;AACJ,IAAA,MAAM,CAACkB,cAAgBC,EAAAA,iBAAAA,CAAkB,GAAG/B,KAAAA,CAAMW,QAAQ,CAAC,KAAA,CAAA;AAE3D,IAAA,MAAMqB,eAAe,CAACC,CAAAA,GAAAA;QACpBF,iBAAkB,CAAA,KAAA,CAAA;QAClBT,UAAWW,CAAAA,CAAAA,CAAEzD,MAAM,CAAC0D,KAAK,CAAA;QAEzB,IAAI;;YAEF,IAAIC,GAAAA,CACFF,EAAEzD,MAAM,CAAC0D,KAAK,EAAEE,UAAAA,CAAW,OAAO,CAAC,iBAAiB,EAAEH,CAAEzD,CAAAA,MAAM,CAAC0D,KAAK,CAAA,CAAE,GAAGD,CAAEzD,CAAAA,MAAM,CAAC0D,KAAK,CAAA;AAE3F,SAAA,CAAE,OAAOG,KAAO,EAAA;YACdN,iBAAkB,CAAA,IAAA,CAAA;AACpB;AACF,KAAA;AAEA,IAAA,MAAMO,kBAAkB,CAACL,CAAAA,GAAAA;QACvBF,iBAAkB,CAAA,KAAA,CAAA;QAClBP,SAAUS,CAAAA,CAAAA,CAAEzD,MAAM,CAAC0D,KAAK,CAAA;AAC1B,KAAA;AAEA,IAAA,MAAMK,qBAAqB,CAACN,CAAAA,GAAAA;QAC1BF,iBAAkB,CAAA,KAAA,CAAA;QAClBL,aAAcO,CAAAA,CAAAA,CAAEzD,MAAM,CAAC0D,KAAK,CAAA;AAC9B,KAAA;AAEA,IAAA,MAAMM,aAAqC,CAACP,CAAAA,GAAAA;AAC1CA,QAAAA,CAAAA,CAAEQ,eAAe,EAAA;;QAGjB,IAAI1F,MAAAA,CAAOW,SAAS,IAAIQ,KAAAA,CAAMC,WAAW,CAACpB,MAAAA,CAAOW,SAAS,CAAG,EAAA;YAC3D,MAAM,GAAGgF,UAAW,CAAA,GAAGtF,MAAOuF,CAAAA,MAAM,CAAC5F,MAAAA,EAAQA,MAAOW,CAAAA,SAAS,CAACkF,KAAK,EAAE3E,IAAAA,CAAAA;YACrEjB,UAAW6F,CAAAA,MAAM,CAAC9F,MAAQ2F,EAAAA,UAAAA,CAAAA;AAC5B;AAEA9D,QAAAA,QAAAA,CAAS7B,MAAQ,EAAA;YAAEU,GAAK4D,EAAAA,OAAAA;YAAS/C,IAAM6C,EAAAA,QAAAA;YAAU5C,GAAKgD,EAAAA,OAAAA;YAAS/C,MAAQiD,EAAAA;AAAW,SAAA,CAAA;QAClFf,cAAe,CAAA,KAAA,CAAA;AACf3D,QAAAA,MAAAA,CAAO6D,oBAAoB,GAAG,IAAA;AAC9BL,QAAAA,WAAAA,CAAYqC,KAAK,CAAC7F,MAAAA,CAAAA;AACpB,KAAA;AAEA,IAAA,MAAM+F,WAAc,GAAA,IAAA;QAClB,IAAI1E,IAAAA,CAAKX,GAAG,KAAK,EAAI,EAAA;YACnBX,UAAWC,CAAAA,MAAAA,CAAAA;AACb;QAEA2D,cAAe,CAAA,KAAA,CAAA;AACfH,QAAAA,WAAAA,CAAYqC,KAAK,CAAC7F,MAAAA,CAAAA;AACpB,KAAA;AAEAiD,IAAAA,KAAAA,CAAM+C,SAAS,CAAC,IAAA;;QAEd,IAAItC,WAAAA,EAAakB,YAAaqB,CAAAA,OAAO,EAAEJ,KAAAA,EAAAA;KACtC,EAAA;AAACnC,QAAAA;AAAY,KAAA,CAAA;IAEhB,MAAMwC,aAAAA,GACJ,CAAC9B,QACD,IAAA,CAACE,WACAjD,IAAKX,CAAAA,GAAG,IACPW,IAAKX,CAAAA,GAAG,KAAK4D,OACbN,IAAAA,WAAAA,IACAA,gBAAgBI,QAChB/C,IAAAA,IAAAA,CAAKG,GAAG,KAAKgD,OAAAA,IACbnD,IAAKI,CAAAA,MAAM,KAAKiD,UAAAA;IAEpB,qBACEyB,IAAA,CAACC,QAAQC,IAAI,EAAA;QAACC,IAAM5C,EAAAA,WAAAA;;AAClB,0BAAA6C,GAAA,CAACH,QAAQI,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAD,GAAC9D,CAAAA,UAAAA,EAAAA;AACE,oBAAA,GAAGU,UAAU;oBACdsD,GAAKrD,EAAAA,YAAAA;oBACLsD,GAAI,EAAA,GAAA;AACJC,oBAAAA,IAAAA,EAAMtF,KAAKX,GAAG;AACdc,oBAAAA,GAAAA,EAAKH,KAAKG,GAAG;AACbC,oBAAAA,MAAAA,EAAQJ,KAAKI,MAAM;AACnBmF,oBAAAA,OAAAA,EAAS,IAAMjD,cAAe,CAAA,IAAA,CAAA;oBAC9BkD,KAAM,EAAA,YAAA;AAELvF,oBAAAA,QAAAA,EAAAA;;;AAGL,0BAAAiF,GAAA,CAACH,QAAQU,OAAO,EAAA;gBAACC,oBAAsBhB,EAAAA,WAAAA;AACrC,gBAAA,QAAA,gBAAAI,IAACa,CAAAA,IAAAA,EAAAA;oBAAKC,OAAS,EAAA,CAAA;oBAAGC,SAAU,EAAA,QAAA;oBAASC,GAAK,EAAA,CAAA;;AACxC,sCAAAZ,GAAA,CAACa,MAAMf,IAAI,EAAA;4BAACgB,KAAO,EAAA;gCAAEC,OAAS,EAAA,MAAA;gCAAQC,MAAQ,EAAA;AAAQ,6BAAA;AACpD,4BAAA,QAAA,gBAAApB,IAACa,CAAAA,IAAAA,EAAAA;gCAAKE,SAAU,EAAA,QAAA;gCAASC,GAAK,EAAA,CAAA;gCAAGK,UAAW,EAAA,SAAA;;AAC1C,kDAAAjB,GAAA,CAACa,MAAMK,KAAK,EAAA;kDACTpE,aAAc,CAAA;4CACbqE,EAAI,EAAA,gCAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;AAEF,kDAAApB,GAAA,CAACa,MAAMQ,KAAK,EAAA;wCACVC,IAAK,EAAA,MAAA;AACLC,wCAAAA,WAAAA,EAAazE,aAAc,CAAA;4CACzBqE,EAAI,EAAA,4CAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA,CAAA;wCACAxC,KAAOf,EAAAA,QAAAA;AACP2D,wCAAAA,QAAAA,EAAU,CAAC7C,CAAAA,GAAAA;4CACTb,WAAYa,CAAAA,CAAAA,CAAEzD,MAAM,CAAC0D,KAAK,CAAA;AAC5B;;;;;AAIN,sCAAAoB,GAAA,CAACa,MAAMf,IAAI,EAAA;4BAACgB,KAAO,EAAA;gCAAEC,OAAS,EAAA,MAAA;gCAAQC,MAAQ,EAAA;AAAQ,6BAAA;AACpD,4BAAA,QAAA,gBAAApB,IAACa,CAAAA,IAAAA,EAAAA;gCAAKE,SAAU,EAAA,QAAA;gCAASC,GAAK,EAAA,CAAA;gCAAGK,UAAW,EAAA,SAAA;;AAC1C,kDAAAjB,GAAA,CAACa,MAAMK,KAAK,EAAA;kDACTpE,aAAc,CAAA;4CACbqE,EAAI,EAAA,gCAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;AAEF,kDAAApB,GAAA,CAACa,MAAMQ,KAAK,EAAA;wCACVnB,GAAK7B,EAAAA,YAAAA;wCACLiD,IAAK,EAAA,KAAA;AACLC,wCAAAA,WAAAA,EAAazE,aAAc,CAAA;4CACzBqE,EAAI,EAAA,4CAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA,CAAA;wCACAxC,KAAOb,EAAAA,OAAAA;wCACPyD,QAAU9C,EAAAA;;;;;AAIhB,sCAAAsB,GAAA,CAACa,MAAMf,IAAI,EAAA;4BAACgB,KAAO,EAAA;gCAAEC,OAAS,EAAA,MAAA;gCAAQC,MAAQ,EAAA;AAAQ,6BAAA;AACpD,4BAAA,QAAA,gBAAApB,IAACa,CAAAA,IAAAA,EAAAA;gCAAKE,SAAU,EAAA,QAAA;gCAASC,GAAK,EAAA,CAAA;gCAAGK,UAAW,EAAA,SAAA;;AAC1C,kDAAAjB,GAAA,CAACa,MAAMK,KAAK,EAAA;kDACTpE,aAAc,CAAA;4CACbqE,EAAI,EAAA,oCAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;AAEF,kDAAApB,GAAA,CAACa,MAAMQ,KAAK,EAAA;wCACVC,IAAK,EAAA,KAAA;AACLC,wCAAAA,WAAAA,EAAazE,aAAc,CAAA;4CACzBqE,EAAI,EAAA,gDAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA,CAAA;wCACAxC,KAAOX,EAAAA,OAAAA;wCACPuD,QAAUxC,EAAAA;;;;;AAIhB,sCAAAgB,GAAA,CAACa,MAAMf,IAAI,EAAA;4BAACgB,KAAO,EAAA;gCAAEC,OAAS,EAAA,MAAA;gCAAQC,MAAQ,EAAA;AAAQ,6BAAA;AACpD,4BAAA,QAAA,gBAAApB,IAACa,CAAAA,IAAAA,EAAAA;gCAAKE,SAAU,EAAA,QAAA;gCAASC,GAAK,EAAA,CAAA;gCAAGK,UAAW,EAAA,SAAA;;AAC1C,kDAAAjB,GAAA,CAACa,MAAMK,KAAK,EAAA;kDACTpE,aAAc,CAAA;4CACbqE,EAAI,EAAA,uCAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;AAEF,kDAAApB,GAAA,CAACa,MAAMQ,KAAK,EAAA;wCACVC,IAAK,EAAA,QAAA;AACLC,wCAAAA,WAAAA,EAAazE,aAAc,CAAA;4CACzBqE,EAAI,EAAA,mDAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA,CAAA;wCACAxC,KAAOT,EAAAA,UAAAA;wCACPqD,QAAUvC,EAAAA;;;;;sCAIhBW,IAACa,CAAAA,IAAAA,EAAAA;4BAAKgB,cAAe,EAAA,eAAA;4BAAgBX,KAAO,EAAA;gCAAEC,OAAS,EAAA,MAAA;gCAAQC,MAAQ,EAAA;AAAQ,6BAAA;;8CAC7EhB,GAAC3D,CAAAA,YAAAA,EAAAA;oCACCqF,OAAQ,EAAA,cAAA;AACRrB,oCAAAA,OAAAA,EAAS,IAAM7G,UAAWC,CAAAA,MAAAA,CAAAA;oCAC1B+C,QAAU+B,EAAAA,kBAAAA;8CAETzB,aAAc,CAAA;wCACbqE,EAAI,EAAA,kCAAA;wCACJC,cAAgB,EAAA;AAClB,qCAAA;;8CAEFxB,IAACa,CAAAA,IAAAA,EAAAA;oCAAKG,GAAK,EAAA,CAAA;;sDACTZ,GAAC1D,CAAAA,MAAAA,EAAAA;4CAAOoF,OAAQ,EAAA,UAAA;4CAAWrB,OAASb,EAAAA,WAAAA;sDACjC1C,aAAc,CAAA;gDACbqE,EAAI,EAAA,eAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;sDAEFpB,GAAC1D,CAAAA,MAAAA,EAAAA;AAAOqF,4CAAAA,QAAAA,EAAUC,QAAQjC,aAAkBnB,CAAAA,IAAAA,cAAAA;4CAAgB6B,OAASnB,EAAAA,UAAAA;sDAClEpC,aAAc,CAAA;gDACbqE,EAAI,EAAA,aAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;;;;;;;;;;AAQhB,CAAA,CAAA;AAGF,MAAMS,IAAOnF,iBAAAA,KAAAA,CAAMC,UAAU,CAAwC,CAACJ,KAAOM,EAAAA,YAAAA,GAAAA;AAC3E,IAAA,IAAI,CAACxD,UAAAA,CAAWkD,KAAMjD,CAAAA,OAAO,CAAG,EAAA;QAC9B,OAAO,IAAA;AACT;;;;AAKA,IAAA,qBAAO0G,GAACvD,CAAAA,WAAAA,EAAAA;AAAa,QAAA,GAAGF,KAAK;AAAEzB,QAAAA,IAAAA,EAAMyB,MAAMjD,OAAO;QAAE4G,GAAKrD,EAAAA;;AAC3D,CAAA,CAAA;AAEA,MAAMiF,YAAY,CAACrI,MAAAA,GAAAA;IACjB,MAAM,EAAEsI,QAAQ,EAAEC,KAAK,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGzI,MAAAA;;IAGpDA,MAAOsI,CAAAA,QAAQ,GAAG,CAACzI,OAAAA,GAAAA;AACjB,QAAA,OAAOA,OAAQC,CAAAA,IAAI,KAAK,MAAA,GAAS,OAAOwI,QAASzI,CAAAA,OAAAA,CAAAA;AACnD,KAAA;;;AAIAG,IAAAA,MAAAA,CAAO6D,oBAAoB,GAAG,IAAA;;IAG9B7D,MAAOuI,CAAAA,KAAK,GAAG,CAACG,SAAAA,GAAAA;QACd,IAAIA,SAAAA,CAAU5I,IAAI,KAAK,aAAe,EAAA;AACpC,YAAA,IACE,CAACO,MAAAA,CAAOC,QAAQ,CAACoI,UAAUtI,IAAI,CAAA,IAC/BsI,SAAUtI,CAAAA,IAAI,CAACN,IAAI,KAAK,MACxBE,IAAAA,MAAAA,CAAO2I,kBAAkB,EACzB;gBACA3I,MAAO6D,CAAAA,oBAAoB,GAAG6E,SAAAA,CAAUxH,IAAI;AAC9C;AACF,SAAA,MAAO,IAAIwH,SAAAA,CAAU5I,IAAI,KAAK,WAAa,EAAA;;;YAGzC,IACEgE,IAAAA,CAAK8E,WAAW,CAACF,SAAUxH,CAAAA,IAAI,CAC/BlB,IAAAA,MAAAA,CAAO6D,oBAAoB,IAC3B7D,MAAO2I,CAAAA,kBAAkB,EACzB;AACA3I,gBAAAA,MAAAA,CAAO6D,oBAAoB,GAAGC,IAAAA,CAAK+E,SAAS,CAAC7I,MAAAA,CAAO6D,oBAAoB,EAAE6E,SAAAA,CAAAA;AAC5E;AACF;QAEAH,KAAMG,CAAAA,SAAAA,CAAAA;AACR,KAAA;IAEA1I,MAAOwI,CAAAA,UAAU,GAAG,CAACjH,IAAAA,GAAAA;;QAEnB,IAAIvB,MAAAA,CAAOW,SAAS,IAAIQ,KAAMC,CAAAA,WAAW,CAACpB,MAAOW,CAAAA,SAAS,CAAKY,IAAAA,IAAAA,KAAS,GAAK,EAAA;AAC3E,YAAA,MAAMuH,mBAAmBjI,KAAMC,CAAAA,IAAI,CACjCT,MAAOU,CAAAA,KAAK,CAACf,MAAQ,EAAA;AACnBgB,gBAAAA,EAAAA,EAAIhB,OAAOW,SAAS;gBACpBR,KAAO,EAAA,CAACC,OAAS,CAACC,MAAAA,CAAOC,QAAQ,CAACF,IAAAA,CAAAA,IAASA,IAAKN,CAAAA,IAAI,KAAK;AAC3D,aAAA,CAAA,CAAA;AAGF,YAAA,MAAMiJ,oBAAoB/I,MAAOW,CAAAA,SAAS,IAAImI,gBAAAA,CAAiBE,MAAM,GAAG,CAAA;AACxE,YAAA,MAAMC,yBACJF,iBACAG,IAAAA,KAAAA,CAAMnF,MAAM,CAAC/D,MAAAA,CAAOW,SAAS,CAACwI,MAAM,EAAE9I,MAAAA,CAAO+I,GAAG,CAACpJ,MAAAA,EAAQ8I,gBAAgB,CAAC,CAAA,CAAE,CAAC,CAAE,CAAA,CAAA,CAAA;AAEjF,YAAA,IAAIG,sBAAwB,EAAA;gBAC1BhJ,UAAWyB,CAAAA,WAAW,CACpB1B,MACA,EAAA;oBAAEuB,IAAM,EAAA,GAAA;oBAAKzB,IAAM,EAAA;iBACnB,EAAA;AAAEkB,oBAAAA,EAAAA,EAAI8C,KAAKuF,IAAI,CAACP,gBAAgB,CAAC,CAAA,CAAE,CAAC,CAAE,CAAA,CAAA;oBAAGhD,MAAQ,EAAA;AAAK,iBAAA,CAAA;AAGxD,gBAAA;AACF;AACF;QAEA0C,UAAWjH,CAAAA,IAAAA,CAAAA;AACb,KAAA;;IAGAvB,MAAOyI,CAAAA,UAAU,GAAG,CAACa,IAAAA,GAAAA;QACnB,MAAMC,UAAAA,GAAaD,IAAKE,CAAAA,OAAO,CAAC,YAAA,CAAA;AAEhC,QAAA,IAAID,UAAY,EAAA;YACd,IAAI;;AAEF,gBAAA,IAAInE,GAAImE,CAAAA,UAAAA,CAAAA;;AAERvJ,gBAAAA,MAAAA,CAAO2I,kBAAkB,GAAG,KAAA;AAC5BlI,gBAAAA,UAAAA,CAAWT,MAAQ,EAAA;oBAAEU,GAAK6I,EAAAA;AAAW,iBAAA,CAAA;AACrC,gBAAA;AACF,aAAA,CAAE,OAAOjE,KAAO,EAAA;;AAEhB;AACF;QAEAmD,UAAWa,CAAAA,IAAAA,CAAAA;AACb,KAAA;IAEA,OAAOtJ,MAAAA;AACT,CAAA;AAEA,MAAMyJ,UAAwC,GAAA;IAC5CpI,IAAM,EAAA;QACJqI,aAAe,EAAA,CAAC5G,sBACdyD,GAAC6B,CAAAA,IAAAA,EAAAA;AAAKvI,gBAAAA,OAAAA,EAASiD,MAAMjD,OAAO;AAAEsD,gBAAAA,UAAAA,EAAYL,MAAMK,UAAU;AACvDL,gBAAAA,QAAAA,EAAAA,KAAAA,CAAMxB;;;AAIXqI,QAAAA,SAAAA,EAAW,CAACvJ,IAAAA,GAASA,IAAKN,CAAAA,IAAI,KAAK,MAAA;QACnC8J,kBAAoB,EAAA,KAAA;QACpBC,MAAQxB,EAAAA,SAAAA;AACRyB,QAAAA,WAAAA,EAAa,IAAM;AACrB;AACF;;;;"}
1
+ {"version":3,"file":"Link.mjs","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Flex, Popover } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport {\n BaseEditor,\n Editor,\n Element,\n Path,\n Point,\n Range,\n Transforms,\n Element as SlateElement,\n Node,\n} from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled } from 'styled-components';\n\nimport { type BlocksStore, useBlocksEditorContext } from '../BlocksEditor';\nimport { type Block } from '../utils/types';\n\nimport type { Schema } from '@strapi/types';\n\nconst isLinkNode = (element: Element): element is Schema.Attribute.LinkInlineNode => {\n return element.type === 'link';\n};\n\nconst removeLink = (editor: Editor) => {\n Transforms.unwrapNodes(editor, {\n match: (node) => !Editor.isEditor(node) && SlateElement.isElement(node) && node.type === 'link',\n });\n};\n\nconst insertLink = (editor: Editor, { url }: { url: string }) => {\n if (editor.selection) {\n // We want to remove all link on the selection\n const linkNodes = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n linkNodes.forEach(([, path]) => {\n Transforms.unwrapNodes(editor, { at: path });\n });\n\n if (Range.isCollapsed(editor.selection)) {\n const link: Block<'link'> = {\n type: 'link',\n url: url ?? '',\n children: [{ type: 'text', text: url }],\n rel: '',\n target: '',\n };\n\n Transforms.insertNodes(editor, link);\n } else {\n Transforms.wrapNodes(editor, { type: 'link', url: url ?? '' } as Block<'link'>, {\n split: true,\n });\n }\n }\n};\n\nconst editLink = (\n editor: Editor,\n link: { url: string; text: string; rel: string; target: string }\n) => {\n const { url, text, rel, target } = link;\n\n if (!editor.selection) {\n return;\n }\n\n const linkEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n });\n\n if (linkEntry) {\n const [, linkPath] = linkEntry;\n Transforms.setNodes(editor, { url, rel, target }, { at: linkPath });\n\n // If link text is different, we remove the old text and insert the new one\n if (text !== '' && text !== Editor.string(editor, linkPath)) {\n const linkNodeChildrens = Array.from(Node.children(editor, linkPath, { reverse: true }));\n\n linkNodeChildrens.forEach(([, childPath]) => {\n Transforms.removeNodes(editor, { at: childPath });\n });\n\n Transforms.insertNodes(editor, [{ type: 'text', text }], { at: linkPath.concat(0) });\n }\n }\n};\n\nconst StyledLink = styled(Box)`\n text-decoration: none;\n`;\n\nconst RemoveButton = styled(Button)<{ $visible: boolean }>`\n visibility: ${(props) => (props.$visible ? 'visible' : 'hidden')};\n`;\n\ninterface LinkContentProps extends RenderElementProps {\n link: Block<'link'>;\n}\n\nconst LinkContent = React.forwardRef<HTMLAnchorElement, LinkContentProps>(\n ({ link, children, attributes }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { editor } = useBlocksEditorContext('Link');\n const path = ReactEditor.findPath(editor, link);\n const [popoverOpen, setPopoverOpen] = React.useState(\n editor.lastInsertedLinkPath ? Path.equals(path, editor.lastInsertedLinkPath) : false\n );\n const elementText = link.children.map((child) => child.text).join('');\n const [linkText, setLinkText] = React.useState(elementText);\n const [linkUrl, setLinkUrl] = React.useState(link.url);\n const [linkRel, setLinRel] = React.useState(link.rel);\n const [linkTarget, setLinkTarget] = React.useState(link.target);\n const linkInputRef = React.useRef<HTMLInputElement>(null);\n const isLastInsertedLink = editor.lastInsertedLinkPath\n ? !Path.equals(path, editor.lastInsertedLinkPath)\n : true;\n const [isSaveDisabled, setIsSaveDisabled] = React.useState(false);\n\n const onLinkChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkUrl(e.target.value);\n\n try {\n // eslint-disable-next-line no-new\n new URL(\n e.target.value?.startsWith('/') ? `https://strapi.io${e.target.value}` : e.target.value\n );\n } catch (error) {\n setIsSaveDisabled(true);\n }\n };\n\n const onLinkRelChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinRel(e.target.value);\n };\n\n const onLinkTargetChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setIsSaveDisabled(false);\n setLinkTarget(e.target.value);\n };\n\n const handleSave: React.FormEventHandler = (e) => {\n e.stopPropagation();\n\n // If the selection is collapsed, we select the parent node because we want all the link to be replaced)\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n const [, parentPath] = Editor.parent(editor, editor.selection.focus?.path);\n Transforms.select(editor, parentPath);\n }\n\n editLink(editor, { url: linkUrl, text: linkText, rel: linkRel, target: linkTarget });\n setPopoverOpen(false);\n editor.lastInsertedLinkPath = null;\n ReactEditor.focus(editor);\n };\n\n const handleClose = () => {\n if (link.url === '') {\n removeLink(editor);\n }\n\n setPopoverOpen(false);\n ReactEditor.focus(editor);\n };\n\n React.useEffect(() => {\n // Focus on the link input element when the popover opens\n if (popoverOpen) linkInputRef.current?.focus();\n }, [popoverOpen]);\n\n const inputNotDirty =\n !linkText ||\n !linkUrl ||\n (link.url &&\n link.url === linkUrl &&\n elementText &&\n elementText === linkText &&\n link.rel === linkRel &&\n link.target === linkTarget);\n\n return (\n <Popover.Root open={popoverOpen}>\n <Popover.Trigger>\n <StyledLink\n {...attributes}\n ref={forwardedRef}\n tag=\"a\"\n href={link.url}\n rel={link.rel}\n target={link.target}\n onClick={() => setPopoverOpen(true)}\n color=\"primary600\"\n >\n {children}\n </StyledLink>\n </Popover.Trigger>\n <Popover.Content onPointerDownOutside={handleClose}>\n <Flex padding={4} direction=\"column\" gap={4}>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.text',\n defaultMessage: 'Text',\n })}\n </Field.Label>\n <Field.Input\n name=\"text\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.text.placeholder',\n defaultMessage: 'Enter link text',\n })}\n value={linkText}\n onChange={(e) => {\n setLinkText(e.target.value);\n }}\n />\n </Flex>\n </Field.Root>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Field.Label>\n <Field.Input\n ref={linkInputRef}\n name=\"url\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.placeholder',\n defaultMessage: 'Paste link',\n })}\n value={linkUrl}\n onChange={onLinkChange}\n />\n </Flex>\n </Field.Root>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link.rel',\n defaultMessage: 'Rel (optional)',\n })}\n </Field.Label>\n <Field.Input\n name=\"rel\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.rel.placeholder',\n defaultMessage: 'noopener, nofollow, noreferrer',\n })}\n value={linkRel}\n onChange={onLinkRelChange}\n />\n </Flex>\n </Field.Root>\n <Field.Root width={{ initial: '100%', medium: '368px' }}>\n <Flex direction=\"column\" gap={1} alignItems=\"stretch\">\n <Field.Label>\n {formatMessage({\n id: 'components.Blocks.popover.link.target',\n defaultMessage: 'Target (optional)',\n })}\n </Field.Label>\n <Field.Input\n name=\"target\"\n placeholder={formatMessage({\n id: 'components.Blocks.popover.link.target.placeholder',\n defaultMessage: '_blank, _self, _parent, _top',\n })}\n value={linkTarget}\n onChange={onLinkTargetChange}\n />\n </Flex>\n </Field.Root>\n <Flex justifyContent=\"space-between\" width={{ initial: '100%', medium: '368px' }}>\n <RemoveButton\n variant=\"danger-light\"\n onClick={() => removeLink(editor)}\n $visible={isLastInsertedLink}\n >\n {formatMessage({\n id: 'components.Blocks.popover.remove',\n defaultMessage: 'Remove',\n })}\n </RemoveButton>\n <Flex gap={2}>\n <Button variant=\"tertiary\" onClick={handleClose}>\n {formatMessage({\n id: 'global.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Button disabled={Boolean(inputNotDirty) || isSaveDisabled} onClick={handleSave}>\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Popover.Content>\n </Popover.Root>\n );\n }\n);\n\nconst Link = React.forwardRef<HTMLAnchorElement, RenderElementProps>((props, forwardedRef) => {\n if (!isLinkNode(props.element)) {\n return null;\n }\n\n // LinkContent uses React hooks that rely on props.element being a link. If the type guard above\n // doesn't pass, those hooks would be called conditionnally, which is not allowed.\n // Hence the need for a separate component.\n return <LinkContent {...props} link={props.element} ref={forwardedRef} />;\n});\n\nconst withLinks = (editor: Editor) => {\n const { isInline, apply, insertText, insertData } = editor;\n\n // Links are inline elements, so we need to override the isInline method for slate\n editor.isInline = (element) => {\n return element.type === 'link' ? true : isInline(element);\n };\n\n // We keep a track of the last inserted link path\n // So we can show the popover on the link component if that link is the last one inserted\n editor.lastInsertedLinkPath = null;\n\n // We intercept the apply method, so everytime we insert a new link, we save its path\n editor.apply = (operation) => {\n if (operation.type === 'insert_node') {\n if (\n !Editor.isEditor(operation.node) &&\n operation.node.type === 'link' &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = operation.path;\n }\n } else if (operation.type === 'move_node') {\n // We need to update the last inserted link path when link is moved\n // If link is the first word in the paragraph we dont need to update the path\n if (\n Path.hasPrevious(operation.path) &&\n editor.lastInsertedLinkPath &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = Path.transform(editor.lastInsertedLinkPath, operation);\n }\n }\n\n apply(operation);\n };\n\n editor.insertText = (text) => {\n // When selection is at the end of a link and user types a space, we want to break the link\n if (editor.selection && Range.isCollapsed(editor.selection) && text === ' ') {\n const linksInSelection = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n const selectionIsInLink = editor.selection && linksInSelection.length > 0;\n const selectionIsAtEndOfLink =\n selectionIsInLink &&\n Point.equals(editor.selection.anchor, Editor.end(editor, linksInSelection[0][1]));\n\n if (selectionIsAtEndOfLink) {\n Transforms.insertNodes(\n editor,\n { text: ' ', type: 'text' },\n { at: Path.next(linksInSelection[0][1]), select: true }\n );\n\n return;\n }\n }\n\n insertText(text);\n };\n\n // Add data as a clickable link if its a valid URL\n editor.insertData = (data) => {\n const pastedText = data.getData('text/plain');\n\n if (pastedText) {\n try {\n // eslint-disable-next-line no-new\n new URL(pastedText);\n // Do not show link popup on copy-paste a link, so do not save its path\n editor.shouldSaveLinkPath = false;\n insertLink(editor, { url: pastedText });\n return;\n } catch (error) {\n // continue normal data insertion\n }\n }\n\n insertData(data);\n };\n\n return editor;\n};\n\nconst linkBlocks: Pick<BlocksStore, 'link'> = {\n link: {\n renderElement: (props) => (\n <Link element={props.element} attributes={props.attributes}>\n {props.children}\n </Link>\n ),\n // No handleConvert here, links are created via the link button in the toolbar\n matchNode: (node) => node.type === 'link',\n isInBlocksSelector: false,\n plugin: withLinks,\n isDraggable: () => false,\n },\n};\n\nexport interface LinkEditor extends BaseEditor {\n lastInsertedLinkPath: Path | null;\n shouldSaveLinkPath: boolean;\n}\n\nexport { linkBlocks, insertLink };\n"],"names":["isLinkNode","element","type","removeLink","editor","Transforms","unwrapNodes","match","node","Editor","isEditor","SlateElement","isElement","insertLink","url","selection","linkNodes","Array","from","nodes","at","forEach","path","Range","isCollapsed","link","children","text","rel","target","insertNodes","wrapNodes","split","editLink","linkEntry","above","linkPath","setNodes","string","linkNodeChildrens","Node","reverse","childPath","removeNodes","concat","StyledLink","styled","Box","RemoveButton","Button","props","$visible","LinkContent","React","forwardRef","attributes","forwardedRef","formatMessage","useIntl","useBlocksEditorContext","ReactEditor","findPath","popoverOpen","setPopoverOpen","useState","lastInsertedLinkPath","Path","equals","elementText","map","child","join","linkText","setLinkText","linkUrl","setLinkUrl","linkRel","setLinRel","linkTarget","setLinkTarget","linkInputRef","useRef","isLastInsertedLink","isSaveDisabled","setIsSaveDisabled","onLinkChange","e","value","URL","startsWith","error","onLinkRelChange","onLinkTargetChange","handleSave","stopPropagation","parentPath","parent","focus","select","handleClose","useEffect","current","inputNotDirty","_jsxs","Popover","Root","open","_jsx","Trigger","ref","tag","href","onClick","color","Content","onPointerDownOutside","Flex","padding","direction","gap","Field","width","initial","medium","alignItems","Label","id","defaultMessage","Input","name","placeholder","onChange","justifyContent","variant","disabled","Boolean","Link","withLinks","isInline","apply","insertText","insertData","operation","shouldSaveLinkPath","hasPrevious","transform","linksInSelection","selectionIsInLink","length","selectionIsAtEndOfLink","Point","anchor","end","next","data","pastedText","getData","linkBlocks","renderElement","matchNode","isInBlocksSelector","plugin","isDraggable"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Typography } from '@strapi/design-system';\nimport { BulletList, NumberList } from '@strapi/icons';\nimport { Schema } from '@strapi/types';\nimport { type Text, Editor, Node, Transforms, Path, Element } from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled, type CSSProperties, css } from 'styled-components';\n\nimport { type BlocksStore } from '../BlocksEditor';\nimport { baseHandleConvert } from '../utils/conversions';\nimport { type Block } from '../utils/types';\n\nconst listStyle = css`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spaces[2]};\n margin-inline-start: ${({ theme }) => theme.spaces[0]};\n margin-inline-end: ${({ theme }) => theme.spaces[0]};\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n\n ol,\n ul {\n margin-block-start: ${({ theme }) => theme.spaces[0]};\n margin-block-end: ${({ theme }) => theme.spaces[0]};\n }\n\n li {\n margin-inline-start: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst Orderedlist = styled.ol<{ $listStyleType: CSSProperties['listStyleType'] }>`\n list-style-type: ${(props) => props.$listStyleType};\n ${listStyle}\n`;\n\nconst Unorderedlist = styled.ul<{ $listStyleType: CSSProperties['listStyleType'] }>`\n list-style-type: ${(props) => props.$listStyleType};\n ${listStyle}\n`;\n\nconst orderedStyles = ['decimal', 'lower-alpha', 'upper-roman'];\nconst unorderedStyles = ['disc', 'circle', 'square'];\n\nconst isListNode = (element: Element): element is Schema.Attribute.ListBlockNode => {\n return element.type === 'list';\n};\n\nconst List = ({ attributes, children, element }: RenderElementProps) => {\n if (!isListNode(element)) {\n return null;\n }\n\n // Decide the subsequent style by referencing the given styles according to the format,\n // allowing for infinite nested lists\n const listStyles = element.format === 'ordered' ? orderedStyles : unorderedStyles;\n const nextIndex = (element.indentLevel || 0) % listStyles!.length;\n const listStyleType = listStyles![nextIndex];\n\n if (element.format === 'ordered') {\n return (\n <Orderedlist $listStyleType={listStyleType} {...attributes}>\n {children}\n </Orderedlist>\n );\n }\n\n return (\n <Unorderedlist $listStyleType={listStyleType} {...attributes}>\n {children}\n </Unorderedlist>\n );\n};\n\nconst replaceListWithEmptyBlock = (editor: Editor, currentListPath: Path) => {\n // Delete the empty list\n Transforms.removeNodes(editor, { at: currentListPath });\n\n if (currentListPath[0] === 0) {\n // If the list was the only (or first) block element then insert empty paragraph as editor needs default value\n Transforms.insertNodes(\n editor,\n {\n type: 'paragraph',\n children: [{ type: 'text', text: '' }],\n },\n { at: currentListPath }\n );\n Transforms.select(editor, currentListPath);\n }\n};\n\nconst isText = (node: unknown): node is Text => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'text';\n};\n\n/**\n * Common handler for the backspace event on ordered and unordered lists\n */\nconst handleBackspaceKeyOnList = (editor: Editor, event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) return;\n\n const [currentListItem, currentListItemPath] = Editor.parent(editor, editor.selection.anchor);\n const [currentList, currentListPath] = Editor.parent(editor, currentListItemPath);\n const isListEmpty =\n currentList.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isListItemEmpty =\n currentListItem.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isFocusAtTheBeginningOfAChild =\n editor.selection.focus.offset === 0 && editor.selection.focus.path.at(-2) === 0;\n\n if (isListEmpty) {\n const parentListEntry = Editor.above(editor, {\n at: currentListPath,\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n if (!parentListEntry) {\n event.preventDefault();\n replaceListWithEmptyBlock(editor, currentListPath);\n }\n } else if (isFocusAtTheBeginningOfAChild) {\n // If the focus is at the beginning of a child node we need to replace it with a paragraph\n Transforms.liftNodes(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n Transforms.setNodes(editor, { type: 'paragraph' });\n } else if (isListItemEmpty) {\n const previousEntry = Editor.previous(editor, {\n at: currentListItemPath,\n });\n const nextEntry = Editor.next(editor, {\n at: currentListItemPath,\n });\n\n if (previousEntry && nextEntry) {\n // If previous and next nodes are lists or list-items, delete empty list item\n event.preventDefault();\n Transforms.removeNodes(editor, {\n at: currentListItemPath,\n });\n\n // If previous and next nodes are lists with same format and indent Levels, then merge the nodes\n const [previousList] = previousEntry;\n const [nextList] = nextEntry;\n if (\n !Editor.isEditor(previousList) &&\n !isText(previousList) &&\n isListNode(previousList) &&\n !Editor.isEditor(nextList) &&\n !isText(nextList) &&\n isListNode(nextList)\n ) {\n if (\n previousList.type === 'list' &&\n nextList.type === 'list' &&\n previousList.format === nextList.format &&\n previousList.indentLevel === nextList.indentLevel\n ) {\n Transforms.mergeNodes(editor, {\n at: currentListItemPath,\n });\n }\n }\n }\n }\n};\n\n/**\n * Common handler for the enter key on ordered and unordered lists\n */\nconst handleEnterKeyOnList = (editor: Editor) => {\n const currentListItemEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n\n if (!currentListItemEntry || !editor.selection) {\n return;\n }\n\n const [currentListItem, currentListItemPath] = currentListItemEntry;\n const [currentList, currentListPath] = Editor.parent(editor, currentListItemPath);\n const isListEmpty =\n currentList.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isListItemEmpty =\n currentListItem.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isFocusAtTheBeginningOfAChild =\n editor.selection.focus.offset === 0 && editor.selection.focus.path.at(-1) === 0;\n\n if (isListEmpty) {\n replaceListWithEmptyBlock(editor, currentListPath);\n } else if (isFocusAtTheBeginningOfAChild && !isListItemEmpty) {\n // If the focus is at the beginning of a child node, shift below the list item and create a new list-item\n const currentNode = Editor.above(editor, { at: editor.selection.anchor });\n Transforms.insertNodes(editor, { type: 'list-item', children: [{ type: 'text', text: '' }] });\n if (currentNode) {\n const path = currentNode[1];\n const updatedPath = [...path.slice(0, -1), path[path.length - 1] + 1];\n Transforms.select(editor, {\n anchor: { path: updatedPath.concat(0), offset: 0 },\n focus: { path: updatedPath.concat(0), offset: 0 },\n });\n }\n } else if (isListItemEmpty) {\n // Check if there is a list above the current list and shift list-item under it\n if (\n !Editor.isEditor(currentList) &&\n isListNode(currentList) &&\n currentList?.indentLevel &&\n currentList.indentLevel > 0\n ) {\n const previousIndentLevel = currentList.indentLevel - 1;\n\n const parentListNodeEntry = Editor.above(editor, {\n match: (node) =>\n !Editor.isEditor(node) &&\n node.type === 'list' &&\n (node.indentLevel || 0) === previousIndentLevel,\n });\n\n if (parentListNodeEntry) {\n // Get the parent list path and add 1 to it to exit from the current list\n const modifiedPath = currentListItemPath.slice(0, -1);\n if (modifiedPath.length > 0) {\n modifiedPath[modifiedPath.length - 1] += 1;\n }\n\n // Shift list-item under parent list\n Transforms.moveNodes(editor, {\n at: currentListItemPath,\n to: modifiedPath,\n });\n return;\n }\n }\n\n // Otherwise delete the empty list item and create a new paragraph below the parent list\n Transforms.removeNodes(editor, { at: currentListItemPath });\n\n const createdParagraphPath = Path.next(currentListPath);\n Transforms.insertNodes(\n editor,\n {\n type: 'paragraph',\n children: [{ type: 'text', text: '' }],\n },\n { at: createdParagraphPath }\n );\n\n // Move the selection to the newly created paragraph\n Transforms.select(editor, createdParagraphPath);\n } else {\n // Check if the cursor is at the end of the list item\n const isNodeEnd = Editor.isEnd(editor, editor.selection.anchor, currentListItemPath);\n\n if (isNodeEnd) {\n // If there was nothing after the cursor, create a fresh new list item,\n // in order to avoid carrying over the modifiers from the previous list item\n Transforms.insertNodes(editor, { type: 'list-item', children: [{ type: 'text', text: '' }] });\n } else {\n // If there is something after the cursor, split the current list item,\n // so that we keep the content and the modifiers\n Transforms.splitNodes(editor);\n }\n }\n};\n\n/**\n * Common handler for converting a node to a list\n */\nconst handleConvertToList = (editor: Editor, format: Block<'list'>['format']) => {\n const convertedPath = baseHandleConvert<Block<'list-item'>>(editor, { type: 'list-item' });\n\n if (!convertedPath) return;\n\n Transforms.wrapNodes(editor, { type: 'list', format, children: [] }, { at: convertedPath });\n};\n\n/**\n * Common handler for the tab key on ordered and unordered lists\n */\nconst handleTabOnList = (editor: Editor) => {\n const currentListItemEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n\n if (!currentListItemEntry || !editor.selection) {\n return;\n }\n\n const [currentListItem, currentListItemPath] = currentListItemEntry;\n const [currentList] = Editor.parent(editor, currentListItemPath);\n\n // Skip tabbing if list-item is the first item in the list\n if (currentListItem === currentList.children[0]) return;\n\n const currentListItemIndex = currentList.children.findIndex((item) => item === currentListItem);\n const previousNode = currentList.children[currentListItemIndex - 1];\n\n // If previous node is a list block then move the list-item under it\n if (previousNode.type === 'list') {\n const nodePath = ReactEditor.findPath(editor, previousNode);\n const insertAtPath = previousNode.children.length;\n\n Transforms.moveNodes(editor, {\n at: currentListItemPath,\n to: nodePath.concat(insertAtPath),\n });\n return;\n }\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n // Wrap list-item with list block on tab\n Transforms.wrapNodes(editor, {\n type: 'list',\n format: currentList.format,\n indentLevel: (currentList.indentLevel || 0) + 1,\n children: [],\n });\n }\n};\n\n// All that's in common between ordered and unordered list blocks\nconst baseListBlock = {\n renderElement: (props) => <List {...props} />,\n isInBlocksSelector: true,\n handleEnterKey: handleEnterKeyOnList,\n handleBackspaceKey: handleBackspaceKeyOnList,\n handleTab: handleTabOnList,\n isDraggable: (element) => {\n if (!isListNode(element)) {\n throw Error();\n }\n const indentLevel = element.indentLevel ?? 0;\n return indentLevel === 0;\n },\n} satisfies Partial<BlocksStore['list-ordered' | 'list-unordered']>;\n\nconst listBlocks: Pick<BlocksStore, 'list-ordered' | 'list-unordered' | 'list-item'> = {\n 'list-ordered': {\n ...baseListBlock,\n label: {\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n },\n icon: NumberList,\n matchNode: (node) => node.type === 'list' && node.format === 'ordered',\n handleConvert: (editor) => handleConvertToList(editor, 'ordered'),\n snippets: ['1.'],\n },\n 'list-unordered': {\n ...baseListBlock,\n label: {\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n },\n icon: BulletList,\n matchNode: (node) => node.type === 'list' && node.format === 'unordered',\n handleConvert: (editor) => handleConvertToList(editor, 'unordered'),\n snippets: ['-', '*', '+'],\n },\n 'list-item': {\n renderElement: (props) => (\n <Typography tag=\"li\" {...props.attributes}>\n {props.children}\n </Typography>\n ),\n // No handleConvert, list items are created when converting to the parent list\n matchNode: (node) => node.type === 'list-item',\n isInBlocksSelector: false,\n dragHandleTopMargin: '-2px',\n isDraggable: () => false,\n },\n};\n\nexport { listBlocks };\n"],"names":["listStyle","css","theme","spaces","Orderedlist","styled","ol","props","$listStyleType","Unorderedlist","ul","orderedStyles","unorderedStyles","isListNode","element","type","List","attributes","children","listStyles","format","nextIndex","indentLevel","length","listStyleType","_jsx","replaceListWithEmptyBlock","editor","currentListPath","Transforms","removeNodes","at","insertNodes","text","select","isText","node","Node","isNode","Editor","isEditor","handleBackspaceKeyOnList","event","selection","currentListItem","currentListItemPath","parent","anchor","currentList","isListEmpty","isListItemEmpty","isFocusAtTheBeginningOfAChild","focus","offset","path","parentListEntry","above","match","preventDefault","liftNodes","setNodes","previousEntry","previous","nextEntry","next","previousList","nextList","mergeNodes","handleEnterKeyOnList","currentListItemEntry","currentNode","updatedPath","slice","concat","previousIndentLevel","parentListNodeEntry","modifiedPath","moveNodes","to","createdParagraphPath","Path","isNodeEnd","isEnd","splitNodes","handleConvertToList","convertedPath","baseHandleConvert","wrapNodes","handleTabOnList","currentListItemIndex","findIndex","item","previousNode","nodePath","ReactEditor","findPath","insertAtPath","baseListBlock","renderElement","isInBlocksSelector","handleEnterKey","handleBackspaceKey","handleTab","isDraggable","Error","listBlocks","label","id","defaultMessage","icon","NumberList","matchNode","handleConvert","snippets","BulletList","Typography","tag","dragHandleTopMargin"],"mappings":"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"}
1
+ {"version":3,"file":"List.js","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Typography } from '@strapi/design-system';\nimport { BulletList, NumberList } from '@strapi/icons';\nimport { Schema } from '@strapi/types';\nimport { type Text, Editor, Node, Transforms, Path, Element } from 'slate';\nimport { type RenderElementProps, ReactEditor } from 'slate-react';\nimport { styled, type CSSProperties, css } from 'styled-components';\n\nimport { type BlocksStore } from '../BlocksEditor';\nimport { baseHandleConvert } from '../utils/conversions';\nimport { type Block } from '../utils/types';\n\nconst listStyle = css`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.spaces[2]};\n margin-inline-start: ${({ theme }) => theme.spaces[0]};\n margin-inline-end: ${({ theme }) => theme.spaces[0]};\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n\n ol,\n ul {\n margin-block-start: ${({ theme }) => theme.spaces[0]};\n margin-block-end: ${({ theme }) => theme.spaces[0]};\n }\n\n li {\n margin-inline-start: ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst Orderedlist = styled.ol<{ $listStyleType: CSSProperties['listStyleType'] }>`\n list-style-type: ${(props) => props.$listStyleType};\n ${listStyle}\n`;\n\nconst Unorderedlist = styled.ul<{ $listStyleType: CSSProperties['listStyleType'] }>`\n list-style-type: ${(props) => props.$listStyleType};\n ${listStyle}\n`;\n\nconst orderedStyles = ['decimal', 'lower-alpha', 'upper-roman'];\nconst unorderedStyles = ['disc', 'circle', 'square'];\n\nconst isListNode = (element: Element): element is Schema.Attribute.ListBlockNode => {\n return element.type === 'list';\n};\n\nconst List = ({ attributes, children, element }: RenderElementProps) => {\n if (!isListNode(element)) {\n return null;\n }\n\n // Decide the subsequent style by referencing the given styles according to the format,\n // allowing for infinite nested lists\n const listStyles = element.format === 'ordered' ? orderedStyles : unorderedStyles;\n const nextIndex = (element.indentLevel || 0) % listStyles!.length;\n const listStyleType = listStyles![nextIndex];\n\n if (element.format === 'ordered') {\n return (\n <Orderedlist $listStyleType={listStyleType} {...attributes}>\n {children}\n </Orderedlist>\n );\n }\n\n return (\n <Unorderedlist $listStyleType={listStyleType} {...attributes}>\n {children}\n </Unorderedlist>\n );\n};\n\nconst replaceListWithEmptyBlock = (editor: Editor, currentListPath: Path) => {\n // Delete the empty list\n Transforms.removeNodes(editor, { at: currentListPath });\n\n if (currentListPath[0] === 0) {\n // If the list was the only (or first) block element then insert empty paragraph as editor needs default value\n Transforms.insertNodes(\n editor,\n {\n type: 'paragraph',\n children: [{ type: 'text', text: '' }],\n },\n { at: currentListPath }\n );\n Transforms.select(editor, currentListPath);\n }\n};\n\nconst isText = (node: unknown): node is Text => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'text';\n};\n\n/**\n * Common handler for the backspace event on ordered and unordered lists\n */\nconst handleBackspaceKeyOnList = (editor: Editor, event: React.KeyboardEvent<HTMLElement>) => {\n if (!editor.selection) return;\n\n const [currentListItem, currentListItemPath] = Editor.parent(editor, editor.selection.anchor);\n const [currentList, currentListPath] = Editor.parent(editor, currentListItemPath);\n const isListEmpty =\n currentList.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isListItemEmpty =\n currentListItem.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isFocusAtTheBeginningOfAChild =\n editor.selection.focus.offset === 0 && editor.selection.focus.path.at(-2) === 0;\n\n if (isListEmpty) {\n const parentListEntry = Editor.above(editor, {\n at: currentListPath,\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n if (!parentListEntry) {\n event.preventDefault();\n replaceListWithEmptyBlock(editor, currentListPath);\n }\n } else if (isFocusAtTheBeginningOfAChild) {\n // If the focus is at the beginning of a child node we need to replace it with a paragraph\n Transforms.liftNodes(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n Transforms.setNodes(editor, { type: 'paragraph' });\n } else if (isListItemEmpty) {\n const previousEntry = Editor.previous(editor, {\n at: currentListItemPath,\n });\n const nextEntry = Editor.next(editor, {\n at: currentListItemPath,\n });\n\n if (previousEntry && nextEntry) {\n // If previous and next nodes are lists or list-items, delete empty list item\n event.preventDefault();\n Transforms.removeNodes(editor, {\n at: currentListItemPath,\n });\n\n // If previous and next nodes are lists with same format and indent Levels, then merge the nodes\n const [previousList] = previousEntry;\n const [nextList] = nextEntry;\n if (\n !Editor.isEditor(previousList) &&\n !isText(previousList) &&\n isListNode(previousList) &&\n !Editor.isEditor(nextList) &&\n !isText(nextList) &&\n isListNode(nextList)\n ) {\n if (\n previousList.type === 'list' &&\n nextList.type === 'list' &&\n previousList.format === nextList.format &&\n previousList.indentLevel === nextList.indentLevel\n ) {\n Transforms.mergeNodes(editor, {\n at: currentListItemPath,\n });\n }\n }\n }\n }\n};\n\n/**\n * Common handler for the enter key on ordered and unordered lists\n */\nconst handleEnterKeyOnList = (editor: Editor) => {\n const currentListItemEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n\n if (!currentListItemEntry || !editor.selection) {\n return;\n }\n\n const [currentListItem, currentListItemPath] = currentListItemEntry;\n const [currentList, currentListPath] = Editor.parent(editor, currentListItemPath);\n const isListEmpty =\n currentList.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isListItemEmpty =\n currentListItem.children.length === 1 &&\n isText(currentListItem.children[0]) &&\n currentListItem.children[0].text === '';\n const isFocusAtTheBeginningOfAChild =\n editor.selection.focus.offset === 0 && editor.selection.focus.path.at(-1) === 0;\n\n if (isListEmpty) {\n replaceListWithEmptyBlock(editor, currentListPath);\n } else if (isFocusAtTheBeginningOfAChild && !isListItemEmpty) {\n // If the focus is at the beginning of a child node, shift below the list item and create a new list-item\n const currentNode = Editor.above(editor, { at: editor.selection.anchor });\n Transforms.insertNodes(editor, { type: 'list-item', children: [{ type: 'text', text: '' }] });\n if (currentNode) {\n const path = currentNode[1];\n const updatedPath = [...path.slice(0, -1), path[path.length - 1] + 1];\n Transforms.select(editor, {\n anchor: { path: updatedPath.concat(0), offset: 0 },\n focus: { path: updatedPath.concat(0), offset: 0 },\n });\n }\n } else if (isListItemEmpty) {\n // Check if there is a list above the current list and shift list-item under it\n if (\n !Editor.isEditor(currentList) &&\n isListNode(currentList) &&\n currentList?.indentLevel &&\n currentList.indentLevel > 0\n ) {\n const previousIndentLevel = currentList.indentLevel - 1;\n\n const parentListNodeEntry = Editor.above(editor, {\n match: (node) =>\n !Editor.isEditor(node) &&\n node.type === 'list' &&\n (node.indentLevel || 0) === previousIndentLevel,\n });\n\n if (parentListNodeEntry) {\n // Get the parent list path and add 1 to it to exit from the current list\n const modifiedPath = currentListItemPath.slice(0, -1);\n if (modifiedPath.length > 0) {\n modifiedPath[modifiedPath.length - 1] += 1;\n }\n\n // Shift list-item under parent list\n Transforms.moveNodes(editor, {\n at: currentListItemPath,\n to: modifiedPath,\n });\n return;\n }\n }\n\n // Otherwise delete the empty list item and create a new paragraph below the parent list\n Transforms.removeNodes(editor, { at: currentListItemPath });\n\n const createdParagraphPath = Path.next(currentListPath);\n Transforms.insertNodes(\n editor,\n {\n type: 'paragraph',\n children: [{ type: 'text', text: '' }],\n },\n { at: createdParagraphPath }\n );\n\n // Move the selection to the newly created paragraph\n Transforms.select(editor, createdParagraphPath);\n } else {\n // Check if the cursor is at the end of the list item\n const isNodeEnd = Editor.isEnd(editor, editor.selection.anchor, currentListItemPath);\n\n if (isNodeEnd) {\n // If there was nothing after the cursor, create a fresh new list item,\n // in order to avoid carrying over the modifiers from the previous list item\n Transforms.insertNodes(editor, { type: 'list-item', children: [{ type: 'text', text: '' }] });\n } else {\n // If there is something after the cursor, split the current list item,\n // so that we keep the content and the modifiers\n Transforms.splitNodes(editor);\n }\n }\n};\n\n/**\n * Common handler for converting a node to a list\n */\nconst handleConvertToList = (editor: Editor, format: Block<'list'>['format']) => {\n const convertedPath = baseHandleConvert<Block<'list-item'>>(editor, { type: 'list-item' });\n\n if (!convertedPath) return;\n\n Transforms.wrapNodes(editor, { type: 'list', format, children: [] }, { at: convertedPath });\n};\n\n/**\n * Common handler for the tab key on ordered and unordered lists\n */\nconst handleTabOnList = (editor: Editor) => {\n const currentListItemEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list-item',\n });\n\n if (!currentListItemEntry || !editor.selection) {\n return;\n }\n\n const [currentListItem, currentListItemPath] = currentListItemEntry;\n const [currentList] = Editor.parent(editor, currentListItemPath);\n\n // Skip tabbing if list-item is the first item in the list\n if (currentListItem === currentList.children[0]) return;\n\n const currentListItemIndex = currentList.children.findIndex((item) => item === currentListItem);\n const previousNode = currentList.children[currentListItemIndex - 1];\n\n // If previous node is a list block then move the list-item under it\n if (previousNode.type === 'list') {\n const nodePath = ReactEditor.findPath(editor, previousNode);\n const insertAtPath = previousNode.children.length;\n\n Transforms.moveNodes(editor, {\n at: currentListItemPath,\n to: nodePath.concat(insertAtPath),\n });\n return;\n }\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n // Wrap list-item with list block on tab\n Transforms.wrapNodes(editor, {\n type: 'list',\n format: currentList.format,\n indentLevel: (currentList.indentLevel || 0) + 1,\n children: [],\n });\n }\n};\n\n// All that's in common between ordered and unordered list blocks\nconst baseListBlock = {\n renderElement: (props) => <List {...props} />,\n isInBlocksSelector: true,\n handleEnterKey: handleEnterKeyOnList,\n handleBackspaceKey: handleBackspaceKeyOnList,\n handleTab: handleTabOnList,\n isDraggable: (element) => {\n if (!isListNode(element)) {\n throw Error();\n }\n const indentLevel = element.indentLevel ?? 0;\n return indentLevel === 0;\n },\n} satisfies Partial<BlocksStore['list-ordered' | 'list-unordered']>;\n\nconst listBlocks: Pick<BlocksStore, 'list-ordered' | 'list-unordered' | 'list-item'> = {\n 'list-ordered': {\n ...baseListBlock,\n label: {\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n },\n icon: NumberList,\n matchNode: (node) => node.type === 'list' && node.format === 'ordered',\n handleConvert: (editor) => handleConvertToList(editor, 'ordered'),\n snippets: ['1.'],\n },\n 'list-unordered': {\n ...baseListBlock,\n label: {\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n },\n icon: BulletList,\n matchNode: (node) => node.type === 'list' && node.format === 'unordered',\n handleConvert: (editor) => handleConvertToList(editor, 'unordered'),\n snippets: ['-', '*', '+'],\n },\n 'list-item': {\n renderElement: (props) => (\n <Typography tag=\"li\" {...props.attributes}>\n {props.children}\n </Typography>\n ),\n // No handleConvert, list items are created when converting to the parent list\n matchNode: (node) => node.type === 'list-item',\n isInBlocksSelector: false,\n dragHandleTopMargin: '-2px',\n isDraggable: () => false,\n },\n};\n\nexport { listBlocks };\n"],"names":["listStyle","css","theme","spaces","Orderedlist","styled","ol","props","$listStyleType","Unorderedlist","ul","orderedStyles","unorderedStyles","isListNode","element","type","List","attributes","children","listStyles","format","nextIndex","indentLevel","length","listStyleType","_jsx","replaceListWithEmptyBlock","editor","currentListPath","Transforms","removeNodes","at","insertNodes","text","select","isText","node","Node","isNode","Editor","isEditor","handleBackspaceKeyOnList","event","selection","currentListItem","currentListItemPath","parent","anchor","currentList","isListEmpty","isListItemEmpty","isFocusAtTheBeginningOfAChild","focus","offset","path","parentListEntry","above","match","preventDefault","liftNodes","setNodes","previousEntry","previous","nextEntry","next","previousList","nextList","mergeNodes","handleEnterKeyOnList","currentListItemEntry","currentNode","updatedPath","slice","concat","previousIndentLevel","parentListNodeEntry","modifiedPath","moveNodes","to","createdParagraphPath","Path","isNodeEnd","isEnd","splitNodes","handleConvertToList","convertedPath","baseHandleConvert","wrapNodes","handleTabOnList","currentListItemIndex","findIndex","item","previousNode","nodePath","ReactEditor","findPath","insertAtPath","baseListBlock","renderElement","isInBlocksSelector","handleEnterKey","handleBackspaceKey","handleTab","isDraggable","Error","listBlocks","label","id","defaultMessage","icon","NumberList","matchNode","handleConvert","snippets","BulletList","Typography","tag","dragHandleTopMargin"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import 'react';
3
3
  import { Typography } from '@strapi/design-system';
4
- import { NumberList, BulletList } from '@strapi/icons';
5
- import { Transforms, Editor, Path, Node } from 'slate';
4
+ import { BulletList, NumberList } from '@strapi/icons';
5
+ import { Editor, Transforms, Path, Node } from 'slate';
6
6
  import { ReactEditor } from 'slate-react';
7
7
  import { css, styled } from 'styled-components';
8
8
  import { baseHandleConvert } from '../utils/conversions.mjs';