@strapi/content-manager 5.29.0 → 5.30.1

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 (199) hide show
  1. package/dist/admin/components/ComponentIcon.js +3 -0
  2. package/dist/admin/components/ComponentIcon.js.map +1 -1
  3. package/dist/admin/components/ComponentIcon.mjs +3 -0
  4. package/dist/admin/components/ComponentIcon.mjs.map +1 -1
  5. package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
  6. package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
  7. package/dist/admin/components/RelativeTime.js.map +1 -1
  8. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  9. package/dist/admin/components/Widgets.js.map +1 -1
  10. package/dist/admin/components/Widgets.mjs.map +1 -1
  11. package/dist/admin/content-manager.js.map +1 -1
  12. package/dist/admin/content-manager.mjs.map +1 -1
  13. package/dist/admin/history/components/HistoryAction.js.map +1 -1
  14. package/dist/admin/history/components/HistoryAction.mjs.map +1 -1
  15. package/dist/admin/history/components/VersionHeader.js.map +1 -1
  16. package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
  17. package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
  18. package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
  19. package/dist/admin/history/components/VersionsList.js.map +1 -1
  20. package/dist/admin/history/components/VersionsList.mjs.map +1 -1
  21. package/dist/admin/history/pages/History.js.map +1 -1
  22. package/dist/admin/history/pages/History.mjs.map +1 -1
  23. package/dist/admin/history/services/historyVersion.js.map +1 -1
  24. package/dist/admin/history/services/historyVersion.mjs.map +1 -1
  25. package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
  26. package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
  27. package/dist/admin/hooks/useDocumentActions.js +24 -5
  28. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  29. package/dist/admin/hooks/useDocumentActions.mjs +24 -5
  30. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  31. package/dist/admin/index.js.map +1 -1
  32. package/dist/admin/index.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/components/DocumentActions.js +5 -3
  34. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  35. package/dist/admin/pages/EditView/components/DocumentActions.mjs +5 -3
  36. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  37. package/dist/admin/pages/EditView/components/DocumentStatus.js.map +1 -1
  38. package/dist/admin/pages/EditView/components/DocumentStatus.mjs.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
  40. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +66 -2
  42. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +66 -2
  44. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.js.map +1 -1
  46. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.mjs.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  48. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  50. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  52. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +7 -3
  54. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +7 -3
  56. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
  58. package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  60. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
  62. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  64. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  65. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
  66. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  67. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
  68. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  69. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  70. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  71. package/dist/admin/pages/EditView/components/FormInputs/UID.js +2 -1
  72. package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
  73. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +2 -1
  74. package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
  75. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  76. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  77. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  78. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  79. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  80. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  81. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.js.map +1 -1
  82. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs.map +1 -1
  83. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
  84. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
  85. package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
  86. package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
  87. package/dist/admin/pages/EditView/components/Header.js +10 -5
  88. package/dist/admin/pages/EditView/components/Header.js.map +1 -1
  89. package/dist/admin/pages/EditView/components/Header.mjs +10 -5
  90. package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
  91. package/dist/admin/pages/EditView/components/InputRenderer.js +12 -11
  92. package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
  93. package/dist/admin/pages/EditView/components/InputRenderer.mjs +12 -11
  94. package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
  95. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  96. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  97. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
  98. package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
  99. package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
  100. package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
  101. package/dist/admin/pages/ListConfiguration/components/Header.js.map +1 -1
  102. package/dist/admin/pages/ListConfiguration/components/Header.mjs.map +1 -1
  103. package/dist/admin/pages/ListView/ListViewPage.js +0 -2
  104. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  105. package/dist/admin/pages/ListView/ListViewPage.mjs +0 -2
  106. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  107. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.js.map +1 -1
  108. package/dist/admin/pages/ListView/components/AutoCloneFailureModal.mjs.map +1 -1
  109. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
  110. package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
  111. package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
  112. package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
  113. package/dist/admin/pages/ListView/components/TableCells/Media.js.map +1 -1
  114. package/dist/admin/pages/ListView/components/TableCells/Media.mjs.map +1 -1
  115. package/dist/admin/preview/services/preview.js.map +1 -1
  116. package/dist/admin/preview/services/preview.mjs.map +1 -1
  117. package/dist/admin/preview/utils/fieldUtils.js.map +1 -1
  118. package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -1
  119. package/dist/admin/preview/utils/previewScript.js.map +1 -1
  120. package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
  121. package/dist/admin/router.js.map +1 -1
  122. package/dist/admin/router.mjs.map +1 -1
  123. package/dist/admin/services/api.js +2 -1
  124. package/dist/admin/services/api.js.map +1 -1
  125. package/dist/admin/services/api.mjs +2 -1
  126. package/dist/admin/services/api.mjs.map +1 -1
  127. package/dist/admin/services/documents.js +10 -2
  128. package/dist/admin/services/documents.js.map +1 -1
  129. package/dist/admin/services/documents.mjs +10 -2
  130. package/dist/admin/services/documents.mjs.map +1 -1
  131. package/dist/admin/services/homepage.js.map +1 -1
  132. package/dist/admin/services/homepage.mjs.map +1 -1
  133. package/dist/admin/services/relations.js.map +1 -1
  134. package/dist/admin/services/relations.mjs.map +1 -1
  135. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  136. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +2 -0
  137. package/dist/admin/src/pages/EditView/components/Header.d.ts +12 -1
  138. package/dist/admin/src/preview/services/preview.d.ts +1 -1
  139. package/dist/admin/src/services/api.d.ts +1 -1
  140. package/dist/admin/src/services/components.d.ts +2 -2
  141. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  142. package/dist/admin/src/services/documents.d.ts +16 -16
  143. package/dist/admin/src/services/homepage.d.ts +1 -1
  144. package/dist/admin/src/services/init.d.ts +1 -1
  145. package/dist/admin/src/services/relations.d.ts +2 -2
  146. package/dist/admin/src/services/uid.d.ts +3 -3
  147. package/dist/admin/translations/fr.json.js +1 -1
  148. package/dist/admin/translations/fr.json.mjs +1 -1
  149. package/dist/admin/utils/translations.js.map +1 -1
  150. package/dist/admin/utils/translations.mjs.map +1 -1
  151. package/dist/admin/utils/urls.js.map +1 -1
  152. package/dist/admin/utils/urls.mjs.map +1 -1
  153. package/dist/admin/utils/users.js.map +1 -1
  154. package/dist/admin/utils/users.mjs.map +1 -1
  155. package/dist/admin/utils/validation.js.map +1 -1
  156. package/dist/admin/utils/validation.mjs.map +1 -1
  157. package/dist/server/controllers/collection-types.js +2 -1
  158. package/dist/server/controllers/collection-types.js.map +1 -1
  159. package/dist/server/controllers/collection-types.mjs +2 -1
  160. package/dist/server/controllers/collection-types.mjs.map +1 -1
  161. package/dist/server/controllers/relations.js.map +1 -1
  162. package/dist/server/controllers/relations.mjs.map +1 -1
  163. package/dist/server/controllers/single-types.js.map +1 -1
  164. package/dist/server/controllers/single-types.mjs.map +1 -1
  165. package/dist/server/controllers/validation/dimensions.js.map +1 -1
  166. package/dist/server/controllers/validation/dimensions.mjs.map +1 -1
  167. package/dist/server/controllers/validation/index.js.map +1 -1
  168. package/dist/server/controllers/validation/index.mjs.map +1 -1
  169. package/dist/server/history/utils.js.map +1 -1
  170. package/dist/server/history/utils.mjs.map +1 -1
  171. package/dist/server/homepage/services/homepage.js.map +1 -1
  172. package/dist/server/homepage/services/homepage.mjs.map +1 -1
  173. package/dist/server/middlewares/routing.js.map +1 -1
  174. package/dist/server/middlewares/routing.mjs.map +1 -1
  175. package/dist/server/preview/services/preview-config.js +8 -33
  176. package/dist/server/preview/services/preview-config.js.map +1 -1
  177. package/dist/server/preview/services/preview-config.mjs +9 -34
  178. package/dist/server/preview/services/preview-config.mjs.map +1 -1
  179. package/dist/server/preview/services/preview.js.map +1 -1
  180. package/dist/server/preview/services/preview.mjs.map +1 -1
  181. package/dist/server/preview/utils.js.map +1 -1
  182. package/dist/server/preview/utils.mjs.map +1 -1
  183. package/dist/server/services/configuration.js.map +1 -1
  184. package/dist/server/services/configuration.mjs.map +1 -1
  185. package/dist/server/services/document-metadata.js +23 -1
  186. package/dist/server/services/document-metadata.js.map +1 -1
  187. package/dist/server/services/document-metadata.mjs +23 -1
  188. package/dist/server/services/document-metadata.mjs.map +1 -1
  189. package/dist/server/services/field-sizes.js.map +1 -1
  190. package/dist/server/services/field-sizes.mjs.map +1 -1
  191. package/dist/server/services/uid.js.map +1 -1
  192. package/dist/server/services/uid.mjs.map +1 -1
  193. package/dist/server/services/utils/store.js.map +1 -1
  194. package/dist/server/services/utils/store.mjs.map +1 -1
  195. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  196. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  197. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  198. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  199. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksToolbar.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as Toolbar from '@radix-ui/react-toolbar';\nimport {\n Flex,\n Tooltip,\n SingleSelect,\n SingleSelectOption,\n Box,\n FlexComponent,\n BoxComponent,\n Menu,\n} from '@strapi/design-system';\nimport { Link } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { Editor, Transforms, Element as SlateElement, Node, type Ancestor } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { css, styled } from 'styled-components';\n\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport {\n type BlocksStore,\n type SelectorBlockKey,\n isSelectorBlockKey,\n useBlocksEditorContext,\n} from './BlocksEditor';\nimport { insertLink } from './utils/links';\nimport { type Block, getEntries, getKeys } from './utils/types';\n\nconst ToolbarWrapper = styled<FlexComponent>(Flex)`\n &[aria-disabled='true'] {\n cursor: not-allowed;\n background: ${({ theme }) => theme.colors.neutral150};\n }\n`;\n\nconst ToolbarSeparator = styled(Toolbar.Separator)`\n background: ${({ theme }) => theme.colors.neutral150};\n width: 1px;\n height: 2.4rem;\n margin-left: 0.8rem;\n margin-right: 0.8rem;\n`;\n\nconst FlexButton = styled<FlexComponent<'button'>>(Flex)`\n // Inherit the not-allowed cursor from ToolbarWrapper when disabled\n &[aria-disabled] {\n cursor: not-allowed;\n }\n\n &[aria-disabled='false'] {\n cursor: pointer;\n\n // Only apply hover styles if the button is enabled\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n }\n`;\n\nconst SelectWrapper = styled<BoxComponent>(Box)`\n // Styling changes to SingleSelect component don't work, so adding wrapper to target SingleSelect\n div[role='combobox'] {\n border: none;\n cursor: pointer;\n min-height: unset;\n padding-top: 6px;\n padding-bottom: 6px;\n\n &[aria-disabled='false']:hover {\n cursor: pointer;\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &[aria-disabled] {\n background: transparent;\n cursor: inherit;\n\n // Select text and icons should also have disabled color\n span {\n color: ${({ theme }) => theme.colors.neutral600};\n }\n }\n }\n`;\n\n/**\n * Handles the modal component that may be returned by a block when converting it\n */\nfunction useConversionModal() {\n const [modalElement, setModalComponent] = React.useState<React.JSX.Element | null>(null);\n\n const handleConversionResult = (renderModal: void | (() => React.JSX.Element) | undefined) => {\n // Not all blocks return a modal\n if (renderModal) {\n // Use cloneElement to apply a key because to create a new instance of the component\n // Without the new key, the state is kept from previous times that option was picked\n setModalComponent(React.cloneElement(renderModal(), { key: Date.now() }));\n }\n };\n\n return { modalElement, handleConversionResult };\n}\n\ninterface ToolbarButtonProps {\n icon: React.ComponentType<React.SVGProps<SVGSVGElement>>;\n name: string;\n label: MessageDescriptor;\n isActive: boolean;\n disabled: boolean;\n handleClick: () => void;\n}\n\nconst ToolbarButton = ({\n icon: Icon,\n name,\n label,\n isActive,\n disabled,\n handleClick,\n}: ToolbarButtonProps) => {\n const { editor } = useBlocksEditorContext('ToolbarButton');\n const { formatMessage } = useIntl();\n const labelMessage = formatMessage(label);\n\n const enabledColor = isActive ? 'primary600' : 'neutral600';\n\n return (\n <Tooltip label={labelMessage}>\n <Toolbar.ToggleItem\n value={name}\n data-state={isActive ? 'on' : 'off'}\n onMouseDown={(e) => {\n e.preventDefault();\n handleClick();\n ReactEditor.focus(editor);\n }}\n aria-disabled={disabled}\n disabled={disabled}\n aria-label={labelMessage}\n asChild\n >\n <FlexButton\n tag=\"button\"\n background={isActive ? 'primary100' : ''}\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n >\n <Icon fill={disabled ? 'neutral300' : enabledColor} />\n </FlexButton>\n </Toolbar.ToggleItem>\n </Tooltip>\n );\n};\n\nconst BlocksDropdown = () => {\n const { editor, blocks, disabled } = useBlocksEditorContext('BlocksDropdown');\n const { formatMessage } = useIntl();\n const { modalElement, handleConversionResult } = useConversionModal();\n\n const blockKeysToInclude: SelectorBlockKey[] = getEntries(blocks).reduce<\n ReturnType<typeof getEntries>\n >((currentKeys, entry) => {\n const [key, block] = entry;\n\n return block.isInBlocksSelector ? [...currentKeys, key] : currentKeys;\n }, []);\n\n const [blockSelected, setBlockSelected] = React.useState<SelectorBlockKey>('paragraph');\n\n const handleSelect = (optionKey: unknown) => {\n if (!isSelectorBlockKey(optionKey)) {\n return;\n }\n\n const editorIsEmpty =\n editor.children.length === 1 && Editor.isEmpty(editor, editor.children[0]);\n\n if (!editor.selection && !editorIsEmpty) {\n // When there is no selection, create an empty block at the end of the editor\n // so that it can be converted to the selected block\n Transforms.insertNodes(\n editor,\n {\n type: 'quote',\n children: [{ type: 'text', text: '' }],\n },\n {\n select: true,\n // Since there's no selection, Slate will automatically insert the node at the end\n }\n );\n } else if (!editor.selection && editorIsEmpty) {\n // When there is no selection and the editor is empty,\n // select the empty paragraph from Slate's initialValue so it gets converted\n Transforms.select(editor, Editor.start(editor, [0, 0]));\n }\n\n // If selection is already a list block, toggle its format\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n\n if (currentListEntry && ['list-ordered', 'list-unordered'].includes(optionKey)) {\n const [currentList, currentListPath] = currentListEntry;\n const format = optionKey === 'list-ordered' ? 'ordered' : 'unordered';\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n // Format is different, toggle list format\n if (currentList.format !== format) {\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n }\n }\n return;\n }\n\n // Let the block handle the Slate conversion logic\n const maybeRenderModal = blocks[optionKey].handleConvert?.(editor);\n handleConversionResult(maybeRenderModal);\n\n setBlockSelected(optionKey);\n\n ReactEditor.focus(editor);\n };\n\n /**\n * Prevent the select from focusing itself so ReactEditor.focus(editor) can focus the editor instead.\n *\n * The editor first loses focus to a blur event when clicking the select button. However,\n * refocusing the editor is not enough since the select's default behavior is to refocus itself\n * after an option is selected.\n *\n */\n const preventSelectFocus = (e: Event) => e.preventDefault();\n\n // Listen to the selection change and update the selected block in the dropdown\n React.useEffect(() => {\n if (editor.selection) {\n let selectedNode: Ancestor;\n\n // If selection anchor is a list-item, get its parent\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n selectedNode = currentList;\n } else {\n // Get the parent node of the anchor other than list-item\n const [anchorNode] = Editor.parent(editor, editor.selection.anchor, {\n edge: 'start',\n depth: 2,\n });\n\n // @ts-expect-error slate's delete behaviour creates an exceptional type\n if (anchorNode.type === 'list-item') {\n // When the last node in the selection is a list item,\n // slate's default delete operation leaves an empty list-item instead of converting it into a paragraph.\n // Issue: https://github.com/ianstormtaylor/slate/issues/2500\n\n Transforms.setNodes(editor, { type: 'paragraph' });\n // @ts-expect-error convert explicitly type to paragraph\n selectedNode = { ...anchorNode, type: 'paragraph' };\n } else {\n selectedNode = anchorNode;\n }\n }\n\n // Find the block key that matches the anchor node\n const anchorBlockKey = getKeys(blocks).find(\n (blockKey) => !Editor.isEditor(selectedNode) && blocks[blockKey].matchNode(selectedNode)\n );\n\n // Change the value selected in the dropdown if it doesn't match the anchor block key\n if (anchorBlockKey && anchorBlockKey !== blockSelected) {\n setBlockSelected(anchorBlockKey as SelectorBlockKey);\n }\n }\n }, [editor.selection, editor, blocks, blockSelected]);\n\n const Icon = blocks[blockSelected].icon;\n\n return (\n <>\n <SelectWrapper>\n <SingleSelect\n startIcon={<Icon />}\n onChange={handleSelect}\n placeholder={formatMessage(blocks[blockSelected].label)}\n value={blockSelected}\n onCloseAutoFocus={preventSelectFocus}\n aria-label={formatMessage({\n id: 'components.Blocks.blocks.selectBlock',\n defaultMessage: 'Select a block',\n })}\n disabled={disabled}\n >\n {blockKeysToInclude.map((key) => (\n <BlockOption\n key={key}\n value={key}\n label={blocks[key].label}\n icon={blocks[key].icon}\n blockSelected={blockSelected}\n />\n ))}\n </SingleSelect>\n </SelectWrapper>\n {modalElement}\n </>\n );\n};\n\ninterface BlockOptionProps {\n value: string;\n icon: React.ComponentType<React.SVGProps<SVGElement>>;\n label: MessageDescriptor;\n blockSelected: string;\n}\n\nconst BlockOption = ({ value, icon: Icon, label, blockSelected }: BlockOptionProps) => {\n const { formatMessage } = useIntl();\n\n const isSelected = value === blockSelected;\n\n return (\n <SingleSelectOption\n startIcon={<Icon fill={isSelected ? 'primary600' : 'neutral500'} />}\n value={value}\n >\n {formatMessage(label)}\n </SingleSelectOption>\n );\n};\n\nconst isListNode = (node: unknown): node is Block<'list'> => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'list';\n};\n\ninterface ListButtonProps {\n block: BlocksStore['list-ordered'] | BlocksStore['list-unordered'];\n format: Block<'list'>['format'];\n location?: 'toolbar' | 'menu';\n}\n\nconst ListButton = ({ block, format, location = 'toolbar' }: ListButtonProps) => {\n const { formatMessage } = useIntl();\n const { editor, disabled, blocks } = useBlocksEditorContext('ListButton');\n\n const isListActive = () => {\n if (!editor.selection) return false;\n\n // Get the parent list at selection anchor node\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n if (!Editor.isEditor(currentList) && isListNode(currentList) && currentList.format === format)\n return true;\n }\n\n return false;\n };\n\n /**\n * @TODO: Currently, applying list while multiple blocks are selected is not supported.\n * We should implement this feature in the future.\n */\n const isListDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const toggleList = (format: Block<'list'>['format']) => {\n let currentListEntry;\n if (editor.selection) {\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n } else {\n // If no selection, toggle last inserted node\n const [_, lastNodePath] = Editor.last(editor, []);\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: lastNodePath,\n });\n }\n\n if (!currentListEntry) {\n // If selection is not a list then convert it to list\n blocks[`list-${format}`].handleConvert!(editor);\n return;\n }\n\n // If selection is already a list then toggle format\n const [currentList, currentListPath] = currentListEntry;\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n if (currentList.format !== format) {\n // Format is different, toggle list format\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n } else {\n // Format is same, convert selected list-item to paragraph\n blocks['paragraph'].handleConvert!(editor);\n }\n }\n };\n\n if (location === 'menu') {\n const Icon = block.icon;\n\n return (\n <StyledMenuItem\n startIcon={<Icon />}\n onSelect={() => toggleList(format)}\n isActive={isListActive()}\n disabled={isListDisabled()}\n >\n {formatMessage(block.label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={block.icon}\n name={format}\n label={block.label}\n isActive={isListActive()}\n disabled={isListDisabled()}\n handleClick={() => toggleList(format)}\n />\n );\n};\n\nconst LinkButton = ({\n disabled,\n location = 'toolbar',\n}: {\n disabled: boolean;\n location?: 'toolbar' | 'menu';\n}) => {\n const { editor } = useBlocksEditorContext('LinkButton');\n const { formatMessage } = useIntl();\n\n const isLinkActive = () => {\n const { selection } = editor;\n\n if (!selection) return false;\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: (node) => SlateElement.isElement(node) && node.type === 'link',\n })\n );\n\n return Boolean(match);\n };\n\n const isLinkDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const addLink = () => {\n editor.shouldSaveLinkPath = true;\n // We insert an empty anchor, so we split the DOM to have a element we can use as reference for the popover\n insertLink(editor, { url: '' });\n };\n\n const label = {\n id: 'components.Blocks.link',\n defaultMessage: 'Link',\n } as MessageDescriptor;\n\n if (location === 'menu') {\n return (\n <StyledMenuItem\n startIcon={<Link />}\n onSelect={addLink}\n isActive={isLinkActive()}\n disabled={isLinkDisabled()}\n >\n {formatMessage(label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={Link}\n name=\"link\"\n label={label}\n isActive={isLinkActive()}\n handleClick={addLink}\n disabled={isLinkDisabled()}\n />\n );\n};\n\nconst StyledMenuItem = styled(Menu.Item)<{ isActive: boolean }>`\n ${(props) =>\n props.isActive &&\n css`\n color: ${({ theme }) => theme.colors.primary600};\n font-weight: 600;\n `}\n\n svg {\n fill: ${({ theme, isActive }) =>\n isActive ? theme.colors.primary600 : theme.colors.neutral500};\n }\n`;\n\nconst BlocksToolbar = () => {\n const { editor, blocks, modifiers, disabled } = useBlocksEditorContext('BlocksToolbar');\n const { formatMessage } = useIntl();\n\n /**\n * The modifier buttons are disabled when an image is selected.\n */\n const checkButtonDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n if (!editor.selection) {\n return false;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n if (!selectedNode) return true;\n\n if (['image', 'code'].includes(selectedNode.type)) {\n return true;\n }\n\n return false;\n };\n\n const isButtonDisabled = checkButtonDisabled();\n\n /**\n * Observed components are ones that may or may not be visible in the toolbar, depending on the\n * available space. They provide two render props:\n * - renderInToolbar: for when we try to render the component in the toolbar (may be hidden)\n * - renderInMenu: for when the component didn't fit in the toolbar and is relegated\n * to the \"more\" menu\n */\n const observedComponents: ObservedComponent[] = [\n ...Object.entries(modifiers).map(([name, modifier]) => {\n const Icon = modifier.icon;\n const isActive = modifier.checkIsActive(editor);\n const handleSelect = () => modifier.handleToggle(editor);\n\n return {\n toolbar: (\n <ToolbarButton\n key={name}\n name={name}\n icon={modifier.icon}\n label={modifier.label}\n isActive={modifier.checkIsActive(editor)}\n handleClick={handleSelect}\n disabled={isButtonDisabled}\n />\n ),\n menu: (\n <StyledMenuItem startIcon={<Icon />} onSelect={handleSelect} isActive={isActive}>\n {formatMessage(modifier.label)}\n </StyledMenuItem>\n ),\n key: `modifier.${name}`,\n };\n }),\n {\n toolbar: <LinkButton disabled={isButtonDisabled} location=\"toolbar\" />,\n menu: <LinkButton disabled={isButtonDisabled} location=\"menu\" />,\n key: 'block.link',\n },\n {\n // List buttons can only be rendered together when in the toolbar\n toolbar: (\n <Flex direction=\"row\">\n <ToolbarSeparator style={{ marginLeft: '0.4rem' }} />\n <Toolbar.ToggleGroup type=\"single\" asChild>\n <Flex gap={1}>\n <ListButton block={blocks['list-unordered']} format=\"unordered\" location=\"toolbar\" />\n <ListButton block={blocks['list-ordered']} format=\"ordered\" location=\"toolbar\" />\n </Flex>\n </Toolbar.ToggleGroup>\n </Flex>\n ),\n menu: (\n <>\n <Menu.Separator />\n <ListButton block={blocks['list-unordered']} format=\"unordered\" location=\"menu\" />\n <ListButton block={blocks['list-ordered']} format=\"ordered\" location=\"menu\" />\n </>\n ),\n key: 'block.list',\n },\n ];\n\n return (\n <Toolbar.Root aria-disabled={disabled} asChild>\n <ToolbarWrapper padding={2} width=\"100%\">\n <BlocksDropdown />\n <ToolbarSeparator />\n <Toolbar.ToggleGroup type=\"multiple\" asChild>\n <Flex direction=\"row\" gap={1} grow={1} overflow=\"hidden\">\n <EditorToolbarObserver observedComponents={observedComponents} />\n </Flex>\n </Toolbar.ToggleGroup>\n </ToolbarWrapper>\n </Toolbar.Root>\n );\n};\n\nexport { BlocksToolbar, useConversionModal };\n"],"names":["ToolbarWrapper","styled","Flex","theme","colors","neutral150","ToolbarSeparator","Toolbar","Separator","FlexButton","primary100","SelectWrapper","Box","neutral600","useConversionModal","modalElement","setModalComponent","React","useState","handleConversionResult","renderModal","cloneElement","key","Date","now","ToolbarButton","icon","Icon","name","label","isActive","disabled","handleClick","editor","useBlocksEditorContext","formatMessage","useIntl","labelMessage","enabledColor","_jsx","Tooltip","ToggleItem","value","data-state","onMouseDown","e","preventDefault","ReactEditor","focus","aria-disabled","aria-label","asChild","tag","background","alignItems","justifyContent","width","height","hasRadius","fill","BlocksDropdown","blocks","blockKeysToInclude","getEntries","reduce","currentKeys","entry","block","isInBlocksSelector","blockSelected","setBlockSelected","handleSelect","optionKey","isSelectorBlockKey","editorIsEmpty","children","length","Editor","isEmpty","selection","Transforms","insertNodes","type","text","select","start","currentListEntry","above","match","node","isEditor","includes","currentList","currentListPath","format","isListNode","setNodes","at","maybeRenderModal","handleConvert","preventSelectFocus","useEffect","selectedNode","anchor","anchorNode","parent","edge","depth","anchorBlockKey","getKeys","find","blockKey","matchNode","_jsxs","_Fragment","SingleSelect","startIcon","onChange","placeholder","onCloseAutoFocus","id","defaultMessage","map","BlockOption","isSelected","SingleSelectOption","Node","isNode","ListButton","location","isListActive","isListDisabled","anchorNodeEntry","focusNodeEntry","toggleList","_","lastNodePath","last","StyledMenuItem","onSelect","LinkButton","isLinkActive","Array","from","nodes","unhangRange","SlateElement","isElement","Boolean","isLinkDisabled","addLink","shouldSaveLinkPath","insertLink","url","Link","Menu","Item","props","css","primary600","neutral500","BlocksToolbar","modifiers","checkButtonDisabled","path","isButtonDisabled","observedComponents","Object","entries","modifier","checkIsActive","handleToggle","toolbar","menu","direction","style","marginLeft","ToggleGroup","gap","Root","padding","grow","overflow","EditorToolbarObserver"],"mappings":"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"}
1
+ {"version":3,"file":"BlocksToolbar.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as Toolbar from '@radix-ui/react-toolbar';\nimport {\n Flex,\n Tooltip,\n SingleSelect,\n SingleSelectOption,\n Box,\n FlexComponent,\n BoxComponent,\n Menu,\n} from '@strapi/design-system';\nimport { Link } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { Editor, Transforms, Element as SlateElement, Node, type Ancestor } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { css, styled } from 'styled-components';\n\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport {\n type BlocksStore,\n type SelectorBlockKey,\n isSelectorBlockKey,\n useBlocksEditorContext,\n} from './BlocksEditor';\nimport { insertLink } from './utils/links';\nimport { type Block, getEntries, getKeys } from './utils/types';\n\nconst ToolbarWrapper = styled<FlexComponent>(Flex)`\n &[aria-disabled='true'] {\n cursor: not-allowed;\n background: ${({ theme }) => theme.colors.neutral150};\n }\n`;\n\nconst ToolbarSeparator = styled(Toolbar.Separator)`\n background: ${({ theme }) => theme.colors.neutral150};\n width: 1px;\n height: 2.4rem;\n margin-left: 0.8rem;\n margin-right: 0.8rem;\n`;\n\nconst FlexButton = styled<FlexComponent<'button'>>(Flex)`\n // Inherit the not-allowed cursor from ToolbarWrapper when disabled\n &[aria-disabled] {\n cursor: not-allowed;\n }\n\n &[aria-disabled='false'] {\n cursor: pointer;\n\n // Only apply hover styles if the button is enabled\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n }\n`;\n\nconst SelectWrapper = styled<BoxComponent>(Box)`\n // Styling changes to SingleSelect component don't work, so adding wrapper to target SingleSelect\n div[role='combobox'] {\n border: none;\n cursor: pointer;\n min-height: unset;\n padding-top: 6px;\n padding-bottom: 6px;\n\n &[aria-disabled='false']:hover {\n cursor: pointer;\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &[aria-disabled] {\n background: transparent;\n cursor: inherit;\n\n // Select text and icons should also have disabled color\n span {\n color: ${({ theme }) => theme.colors.neutral600};\n }\n }\n }\n`;\n\n/**\n * Handles the modal component that may be returned by a block when converting it\n */\nfunction useConversionModal() {\n const [modalElement, setModalComponent] = React.useState<React.JSX.Element | null>(null);\n\n const handleConversionResult = (renderModal: void | (() => React.JSX.Element) | undefined) => {\n // Not all blocks return a modal\n if (renderModal) {\n // Use cloneElement to apply a key because to create a new instance of the component\n // Without the new key, the state is kept from previous times that option was picked\n setModalComponent(React.cloneElement(renderModal(), { key: Date.now() }));\n }\n };\n\n return { modalElement, handleConversionResult };\n}\n\ninterface ToolbarButtonProps {\n icon: React.ComponentType<React.SVGProps<SVGSVGElement>>;\n name: string;\n label: MessageDescriptor;\n isActive: boolean;\n disabled: boolean;\n handleClick: () => void;\n}\n\nconst ToolbarButton = ({\n icon: Icon,\n name,\n label,\n isActive,\n disabled,\n handleClick,\n}: ToolbarButtonProps) => {\n const { editor } = useBlocksEditorContext('ToolbarButton');\n const { formatMessage } = useIntl();\n const labelMessage = formatMessage(label);\n\n const enabledColor = isActive ? 'primary600' : 'neutral600';\n\n return (\n <Tooltip label={labelMessage}>\n <Toolbar.ToggleItem\n value={name}\n data-state={isActive ? 'on' : 'off'}\n onMouseDown={(e) => {\n e.preventDefault();\n handleClick();\n ReactEditor.focus(editor);\n }}\n aria-disabled={disabled}\n disabled={disabled}\n aria-label={labelMessage}\n asChild\n >\n <FlexButton\n tag=\"button\"\n background={isActive ? 'primary100' : ''}\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n >\n <Icon fill={disabled ? 'neutral300' : enabledColor} />\n </FlexButton>\n </Toolbar.ToggleItem>\n </Tooltip>\n );\n};\n\nconst BlocksDropdown = () => {\n const { editor, blocks, disabled } = useBlocksEditorContext('BlocksDropdown');\n const { formatMessage } = useIntl();\n const { modalElement, handleConversionResult } = useConversionModal();\n\n const blockKeysToInclude: SelectorBlockKey[] = getEntries(blocks).reduce<\n ReturnType<typeof getEntries>\n >((currentKeys, entry) => {\n const [key, block] = entry;\n\n return block.isInBlocksSelector ? [...currentKeys, key] : currentKeys;\n }, []);\n\n const [blockSelected, setBlockSelected] = React.useState<SelectorBlockKey>('paragraph');\n\n const handleSelect = (optionKey: unknown) => {\n if (!isSelectorBlockKey(optionKey)) {\n return;\n }\n\n const editorIsEmpty =\n editor.children.length === 1 && Editor.isEmpty(editor, editor.children[0]);\n\n if (!editor.selection && !editorIsEmpty) {\n // When there is no selection, create an empty block at the end of the editor\n // so that it can be converted to the selected block\n Transforms.insertNodes(\n editor,\n {\n type: 'quote',\n children: [{ type: 'text', text: '' }],\n },\n {\n select: true,\n // Since there's no selection, Slate will automatically insert the node at the end\n }\n );\n } else if (!editor.selection && editorIsEmpty) {\n // When there is no selection and the editor is empty,\n // select the empty paragraph from Slate's initialValue so it gets converted\n Transforms.select(editor, Editor.start(editor, [0, 0]));\n }\n\n // If selection is already a list block, toggle its format\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n\n if (currentListEntry && ['list-ordered', 'list-unordered'].includes(optionKey)) {\n const [currentList, currentListPath] = currentListEntry;\n const format = optionKey === 'list-ordered' ? 'ordered' : 'unordered';\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n // Format is different, toggle list format\n if (currentList.format !== format) {\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n }\n }\n return;\n }\n\n // Let the block handle the Slate conversion logic\n const maybeRenderModal = blocks[optionKey].handleConvert?.(editor);\n handleConversionResult(maybeRenderModal);\n\n setBlockSelected(optionKey);\n\n ReactEditor.focus(editor);\n };\n\n /**\n * Prevent the select from focusing itself so ReactEditor.focus(editor) can focus the editor instead.\n *\n * The editor first loses focus to a blur event when clicking the select button. However,\n * refocusing the editor is not enough since the select's default behavior is to refocus itself\n * after an option is selected.\n *\n */\n const preventSelectFocus = (e: Event) => e.preventDefault();\n\n // Listen to the selection change and update the selected block in the dropdown\n React.useEffect(() => {\n if (editor.selection) {\n let selectedNode: Ancestor;\n\n // If selection anchor is a list-item, get its parent\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n selectedNode = currentList;\n } else {\n // Get the parent node of the anchor other than list-item\n const [anchorNode] = Editor.parent(editor, editor.selection.anchor, {\n edge: 'start',\n depth: 2,\n });\n\n // @ts-expect-error slate's delete behaviour creates an exceptional type\n if (anchorNode.type === 'list-item') {\n // When the last node in the selection is a list item,\n // slate's default delete operation leaves an empty list-item instead of converting it into a paragraph.\n // Issue: https://github.com/ianstormtaylor/slate/issues/2500\n\n Transforms.setNodes(editor, { type: 'paragraph' });\n // @ts-expect-error convert explicitly type to paragraph\n selectedNode = { ...anchorNode, type: 'paragraph' };\n } else {\n selectedNode = anchorNode;\n }\n }\n\n // Find the block key that matches the anchor node\n const anchorBlockKey = getKeys(blocks).find(\n (blockKey) => !Editor.isEditor(selectedNode) && blocks[blockKey].matchNode(selectedNode)\n );\n\n // Change the value selected in the dropdown if it doesn't match the anchor block key\n if (anchorBlockKey && anchorBlockKey !== blockSelected) {\n setBlockSelected(anchorBlockKey as SelectorBlockKey);\n }\n }\n }, [editor.selection, editor, blocks, blockSelected]);\n\n const Icon = blocks[blockSelected].icon;\n\n return (\n <>\n <SelectWrapper>\n <SingleSelect\n startIcon={<Icon />}\n onChange={handleSelect}\n placeholder={formatMessage(blocks[blockSelected].label)}\n value={blockSelected}\n onCloseAutoFocus={preventSelectFocus}\n aria-label={formatMessage({\n id: 'components.Blocks.blocks.selectBlock',\n defaultMessage: 'Select a block',\n })}\n disabled={disabled}\n >\n {blockKeysToInclude.map((key) => (\n <BlockOption\n key={key}\n value={key}\n label={blocks[key].label}\n icon={blocks[key].icon}\n blockSelected={blockSelected}\n />\n ))}\n </SingleSelect>\n </SelectWrapper>\n {modalElement}\n </>\n );\n};\n\ninterface BlockOptionProps {\n value: string;\n icon: React.ComponentType<React.SVGProps<SVGElement>>;\n label: MessageDescriptor;\n blockSelected: string;\n}\n\nconst BlockOption = ({ value, icon: Icon, label, blockSelected }: BlockOptionProps) => {\n const { formatMessage } = useIntl();\n\n const isSelected = value === blockSelected;\n\n return (\n <SingleSelectOption\n startIcon={<Icon fill={isSelected ? 'primary600' : 'neutral500'} />}\n value={value}\n >\n {formatMessage(label)}\n </SingleSelectOption>\n );\n};\n\nconst isListNode = (node: unknown): node is Block<'list'> => {\n return Node.isNode(node) && !Editor.isEditor(node) && node.type === 'list';\n};\n\ninterface ListButtonProps {\n block: BlocksStore['list-ordered'] | BlocksStore['list-unordered'];\n format: Block<'list'>['format'];\n location?: 'toolbar' | 'menu';\n}\n\nconst ListButton = ({ block, format, location = 'toolbar' }: ListButtonProps) => {\n const { formatMessage } = useIntl();\n const { editor, disabled, blocks } = useBlocksEditorContext('ListButton');\n\n const isListActive = () => {\n if (!editor.selection) return false;\n\n // Get the parent list at selection anchor node\n const currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: editor.selection.anchor,\n });\n\n if (currentListEntry) {\n const [currentList] = currentListEntry;\n if (!Editor.isEditor(currentList) && isListNode(currentList) && currentList.format === format)\n return true;\n }\n\n return false;\n };\n\n /**\n * @TODO: Currently, applying list while multiple blocks are selected is not supported.\n * We should implement this feature in the future.\n */\n const isListDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const toggleList = (format: Block<'list'>['format']) => {\n let currentListEntry;\n if (editor.selection) {\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n });\n } else {\n // If no selection, toggle last inserted node\n const [_, lastNodePath] = Editor.last(editor, []);\n currentListEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'list',\n at: lastNodePath,\n });\n }\n\n if (!currentListEntry) {\n // If selection is not a list then convert it to list\n blocks[`list-${format}`].handleConvert!(editor);\n return;\n }\n\n // If selection is already a list then toggle format\n const [currentList, currentListPath] = currentListEntry;\n\n if (!Editor.isEditor(currentList) && isListNode(currentList)) {\n if (currentList.format !== format) {\n // Format is different, toggle list format\n Transforms.setNodes(editor, { format }, { at: currentListPath });\n } else {\n // Format is same, convert selected list-item to paragraph\n blocks['paragraph'].handleConvert!(editor);\n }\n }\n };\n\n if (location === 'menu') {\n const Icon = block.icon;\n\n return (\n <StyledMenuItem\n startIcon={<Icon />}\n onSelect={() => toggleList(format)}\n isActive={isListActive()}\n disabled={isListDisabled()}\n >\n {formatMessage(block.label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={block.icon}\n name={format}\n label={block.label}\n isActive={isListActive()}\n disabled={isListDisabled()}\n handleClick={() => toggleList(format)}\n />\n );\n};\n\nconst LinkButton = ({\n disabled,\n location = 'toolbar',\n}: {\n disabled: boolean;\n location?: 'toolbar' | 'menu';\n}) => {\n const { editor } = useBlocksEditorContext('LinkButton');\n const { formatMessage } = useIntl();\n\n const isLinkActive = () => {\n const { selection } = editor;\n\n if (!selection) return false;\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: (node) => SlateElement.isElement(node) && node.type === 'link',\n })\n );\n\n return Boolean(match);\n };\n\n const isLinkDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n // Always enabled when there's no selection\n if (!editor.selection) {\n return false;\n }\n\n // Get the block node closest to the anchor and focus\n const anchorNodeEntry = Editor.above(editor, {\n at: editor.selection.anchor,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n const focusNodeEntry = Editor.above(editor, {\n at: editor.selection.focus,\n match: (node) => !Editor.isEditor(node) && node.type !== 'text',\n });\n\n if (!anchorNodeEntry || !focusNodeEntry) {\n return false;\n }\n\n // Disabled if the anchor and focus are not in the same block\n return anchorNodeEntry[0] !== focusNodeEntry[0];\n };\n\n const addLink = () => {\n editor.shouldSaveLinkPath = true;\n // We insert an empty anchor, so we split the DOM to have a element we can use as reference for the popover\n insertLink(editor, { url: '' });\n };\n\n const label = {\n id: 'components.Blocks.link',\n defaultMessage: 'Link',\n } as MessageDescriptor;\n\n if (location === 'menu') {\n return (\n <StyledMenuItem\n startIcon={<Link />}\n onSelect={addLink}\n isActive={isLinkActive()}\n disabled={isLinkDisabled()}\n >\n {formatMessage(label)}\n </StyledMenuItem>\n );\n }\n\n return (\n <ToolbarButton\n icon={Link}\n name=\"link\"\n label={label}\n isActive={isLinkActive()}\n handleClick={addLink}\n disabled={isLinkDisabled()}\n />\n );\n};\n\nconst StyledMenuItem = styled(Menu.Item)<{ isActive: boolean }>`\n ${(props) =>\n props.isActive &&\n css`\n color: ${({ theme }) => theme.colors.primary600};\n font-weight: 600;\n `}\n\n svg {\n fill: ${({ theme, isActive }) =>\n isActive ? theme.colors.primary600 : theme.colors.neutral500};\n }\n`;\n\nconst BlocksToolbar = () => {\n const { editor, blocks, modifiers, disabled } = useBlocksEditorContext('BlocksToolbar');\n const { formatMessage } = useIntl();\n\n /**\n * The modifier buttons are disabled when an image is selected.\n */\n const checkButtonDisabled = () => {\n // Always disabled when the whole editor is disabled\n if (disabled) {\n return true;\n }\n\n if (!editor.selection) {\n return false;\n }\n\n const selectedNode = editor.children[editor.selection.anchor.path[0]];\n if (!selectedNode) return true;\n\n if (['image', 'code'].includes(selectedNode.type)) {\n return true;\n }\n\n return false;\n };\n\n const isButtonDisabled = checkButtonDisabled();\n\n /**\n * Observed components are ones that may or may not be visible in the toolbar, depending on the\n * available space. They provide two render props:\n * - renderInToolbar: for when we try to render the component in the toolbar (may be hidden)\n * - renderInMenu: for when the component didn't fit in the toolbar and is relegated\n * to the \"more\" menu\n */\n const observedComponents: ObservedComponent[] = [\n ...Object.entries(modifiers).map(([name, modifier]) => {\n const Icon = modifier.icon;\n const isActive = modifier.checkIsActive(editor);\n const handleSelect = () => modifier.handleToggle(editor);\n\n return {\n toolbar: (\n <ToolbarButton\n key={name}\n name={name}\n icon={modifier.icon}\n label={modifier.label}\n isActive={modifier.checkIsActive(editor)}\n handleClick={handleSelect}\n disabled={isButtonDisabled}\n />\n ),\n menu: (\n <StyledMenuItem startIcon={<Icon />} onSelect={handleSelect} isActive={isActive}>\n {formatMessage(modifier.label)}\n </StyledMenuItem>\n ),\n key: `modifier.${name}`,\n };\n }),\n {\n toolbar: <LinkButton disabled={isButtonDisabled} location=\"toolbar\" />,\n menu: <LinkButton disabled={isButtonDisabled} location=\"menu\" />,\n key: 'block.link',\n },\n {\n // List buttons can only be rendered together when in the toolbar\n toolbar: (\n <Flex direction=\"row\">\n <ToolbarSeparator style={{ marginLeft: '0.4rem' }} />\n <Toolbar.ToggleGroup type=\"single\" asChild>\n <Flex gap={1}>\n <ListButton block={blocks['list-unordered']} format=\"unordered\" location=\"toolbar\" />\n <ListButton block={blocks['list-ordered']} format=\"ordered\" location=\"toolbar\" />\n </Flex>\n </Toolbar.ToggleGroup>\n </Flex>\n ),\n menu: (\n <>\n <Menu.Separator />\n <ListButton block={blocks['list-unordered']} format=\"unordered\" location=\"menu\" />\n <ListButton block={blocks['list-ordered']} format=\"ordered\" location=\"menu\" />\n </>\n ),\n key: 'block.list',\n },\n ];\n\n return (\n <Toolbar.Root aria-disabled={disabled} asChild>\n <ToolbarWrapper padding={2} width=\"100%\">\n <BlocksDropdown />\n <ToolbarSeparator />\n <Toolbar.ToggleGroup type=\"multiple\" asChild>\n <Flex direction=\"row\" gap={1} grow={1} overflow=\"hidden\">\n <EditorToolbarObserver observedComponents={observedComponents} />\n </Flex>\n </Toolbar.ToggleGroup>\n </ToolbarWrapper>\n </Toolbar.Root>\n );\n};\n\nexport { BlocksToolbar, useConversionModal };\n"],"names":["ToolbarWrapper","styled","Flex","theme","colors","neutral150","ToolbarSeparator","Toolbar","Separator","FlexButton","primary100","SelectWrapper","Box","neutral600","useConversionModal","modalElement","setModalComponent","React","useState","handleConversionResult","renderModal","cloneElement","key","Date","now","ToolbarButton","icon","Icon","name","label","isActive","disabled","handleClick","editor","useBlocksEditorContext","formatMessage","useIntl","labelMessage","enabledColor","_jsx","Tooltip","ToggleItem","value","data-state","onMouseDown","e","preventDefault","ReactEditor","focus","aria-disabled","aria-label","asChild","tag","background","alignItems","justifyContent","width","height","hasRadius","fill","BlocksDropdown","blocks","blockKeysToInclude","getEntries","reduce","currentKeys","entry","block","isInBlocksSelector","blockSelected","setBlockSelected","handleSelect","optionKey","isSelectorBlockKey","editorIsEmpty","children","length","Editor","isEmpty","selection","Transforms","insertNodes","type","text","select","start","currentListEntry","above","match","node","isEditor","includes","currentList","currentListPath","format","isListNode","setNodes","at","maybeRenderModal","handleConvert","preventSelectFocus","useEffect","selectedNode","anchor","anchorNode","parent","edge","depth","anchorBlockKey","getKeys","find","blockKey","matchNode","_jsxs","_Fragment","SingleSelect","startIcon","onChange","placeholder","onCloseAutoFocus","id","defaultMessage","map","BlockOption","isSelected","SingleSelectOption","Node","isNode","ListButton","location","isListActive","isListDisabled","anchorNodeEntry","focusNodeEntry","toggleList","_","lastNodePath","last","StyledMenuItem","onSelect","LinkButton","isLinkActive","Array","from","nodes","unhangRange","SlateElement","isElement","Boolean","isLinkDisabled","addLink","shouldSaveLinkPath","insertLink","url","Link","Menu","Item","props","css","primary600","neutral500","BlocksToolbar","modifiers","checkButtonDisabled","path","isButtonDisabled","observedComponents","Object","entries","modifier","checkIsActive","handleToggle","toolbar","menu","direction","style","marginLeft","ToggleGroup","gap","Root","padding","grow","overflow","EditorToolbarObserver"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Modifiers.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Modifiers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Typography, TypographyComponent } from '@strapi/design-system';\nimport { Bold, Italic, Underline, StrikeThrough, Code } from '@strapi/icons';\nimport { type MessageDescriptor } from 'react-intl';\nimport { Editor, Text, Transforms } from 'slate';\nimport { styled, css } from 'styled-components';\n\nconst stylesToInherit = css`\n font-size: inherit;\n color: inherit;\n line-height: inherit;\n`;\n\nconst BoldText = styled<TypographyComponent>(Typography).attrs({ fontWeight: 'bold' })`\n ${stylesToInherit}\n`;\n\nconst ItalicText = styled<TypographyComponent>(Typography)`\n font-style: italic;\n ${stylesToInherit}\n`;\n\nconst UnderlineText = styled<TypographyComponent>(Typography).attrs({\n textDecoration: 'underline',\n})`\n ${stylesToInherit}\n`;\n\nconst StrikeThroughText = styled<TypographyComponent>(Typography).attrs({\n textDecoration: 'line-through',\n})`\n ${stylesToInherit}\n`;\n\nconst InlineCode = styled.code`\n background-color: ${({ theme }) => theme.colors.neutral150};\n border-radius: ${({ theme }) => theme.borderRadius};\n padding: ${({ theme }) => `0 ${theme.spaces[2]}`};\n font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,\n monospace;\n color: inherit;\n`;\n\ntype ModifierKey = Exclude<keyof Text, 'type' | 'text'>;\n\ntype ModifiersStore = {\n [K in ModifierKey]: {\n icon: React.ComponentType;\n isValidEventKey: (event: React.KeyboardEvent<HTMLElement>) => boolean;\n label: MessageDescriptor;\n checkIsActive: (editor: Editor) => boolean;\n handleToggle: (editor: Editor) => void;\n renderLeaf: (children: React.JSX.Element | string) => React.JSX.Element;\n };\n};\n\n/**\n * The default handler for checking if a modifier is active\n */\nconst baseCheckIsActive = (editor: Editor, name: ModifierKey) => {\n const marks = Editor.marks(editor);\n if (!marks) return false;\n\n return Boolean(marks[name]);\n};\n\n/**\n * The default handler for toggling a modifier\n */\nconst baseHandleToggle = (editor: Editor, name: ModifierKey) => {\n const marks = Editor.marks(editor);\n\n // If there is no selection, set selection to the end of line\n if (!editor.selection) {\n const endOfEditor = Editor.end(editor, []);\n Transforms.select(editor, endOfEditor);\n }\n\n // Toggle the modifier\n if (marks?.[name]) {\n Editor.removeMark(editor, name);\n } else {\n Editor.addMark(editor, name, true);\n }\n};\n\nconst modifiers: ModifiersStore = {\n bold: {\n icon: Bold,\n isValidEventKey: (event) => event.key === 'b',\n label: { id: 'components.Blocks.modifiers.bold', defaultMessage: 'Bold' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'bold'),\n handleToggle: (editor) => baseHandleToggle(editor, 'bold'),\n renderLeaf: (children) => <BoldText>{children}</BoldText>,\n },\n italic: {\n icon: Italic,\n isValidEventKey: (event) => event.key === 'i',\n label: { id: 'components.Blocks.modifiers.italic', defaultMessage: 'Italic' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'italic'),\n handleToggle: (editor) => baseHandleToggle(editor, 'italic'),\n renderLeaf: (children) => <ItalicText>{children}</ItalicText>,\n },\n underline: {\n icon: Underline,\n isValidEventKey: (event) => event.key === 'u',\n label: { id: 'components.Blocks.modifiers.underline', defaultMessage: 'Underline' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'underline'),\n handleToggle: (editor) => baseHandleToggle(editor, 'underline'),\n renderLeaf: (children) => <UnderlineText>{children}</UnderlineText>,\n },\n strikethrough: {\n icon: StrikeThrough,\n isValidEventKey: (event) => event.key === 'S' && event.shiftKey,\n label: { id: 'components.Blocks.modifiers.strikethrough', defaultMessage: 'Strikethrough' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'strikethrough'),\n handleToggle: (editor) => baseHandleToggle(editor, 'strikethrough'),\n renderLeaf: (children) => <StrikeThroughText>{children}</StrikeThroughText>,\n },\n code: {\n icon: Code,\n isValidEventKey: (event) => event.key === 'e',\n label: { id: 'components.Blocks.modifiers.code', defaultMessage: 'Inline code' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'code'),\n handleToggle: (editor) => baseHandleToggle(editor, 'code'),\n renderLeaf: (children) => <InlineCode>{children}</InlineCode>,\n },\n};\n\nexport { type ModifiersStore, modifiers };\n"],"names":["stylesToInherit","css","BoldText","styled","Typography","attrs","fontWeight","ItalicText","UnderlineText","textDecoration","StrikeThroughText","InlineCode","code","theme","colors","neutral150","borderRadius","spaces","baseCheckIsActive","editor","name","marks","Editor","Boolean","baseHandleToggle","selection","endOfEditor","end","Transforms","select","removeMark","addMark","modifiers","bold","icon","Bold","isValidEventKey","event","key","label","id","defaultMessage","checkIsActive","handleToggle","renderLeaf","children","_jsx","italic","Italic","underline","Underline","strikethrough","StrikeThrough","shiftKey","Code"],"mappings":"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"}
1
+ {"version":3,"file":"Modifiers.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Modifiers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Typography, TypographyComponent } from '@strapi/design-system';\nimport { Bold, Italic, Underline, StrikeThrough, Code } from '@strapi/icons';\nimport { type MessageDescriptor } from 'react-intl';\nimport { Editor, Text, Transforms } from 'slate';\nimport { styled, css } from 'styled-components';\n\nconst stylesToInherit = css`\n font-size: inherit;\n color: inherit;\n line-height: inherit;\n`;\n\nconst BoldText = styled<TypographyComponent>(Typography).attrs({ fontWeight: 'bold' })`\n ${stylesToInherit}\n`;\n\nconst ItalicText = styled<TypographyComponent>(Typography)`\n font-style: italic;\n ${stylesToInherit}\n`;\n\nconst UnderlineText = styled<TypographyComponent>(Typography).attrs({\n textDecoration: 'underline',\n})`\n ${stylesToInherit}\n`;\n\nconst StrikeThroughText = styled<TypographyComponent>(Typography).attrs({\n textDecoration: 'line-through',\n})`\n ${stylesToInherit}\n`;\n\nconst InlineCode = styled.code`\n background-color: ${({ theme }) => theme.colors.neutral150};\n border-radius: ${({ theme }) => theme.borderRadius};\n padding: ${({ theme }) => `0 ${theme.spaces[2]}`};\n font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,\n monospace;\n color: inherit;\n`;\n\ntype ModifierKey = Exclude<keyof Text, 'type' | 'text'>;\n\ntype ModifiersStore = {\n [K in ModifierKey]: {\n icon: React.ComponentType;\n isValidEventKey: (event: React.KeyboardEvent<HTMLElement>) => boolean;\n label: MessageDescriptor;\n checkIsActive: (editor: Editor) => boolean;\n handleToggle: (editor: Editor) => void;\n renderLeaf: (children: React.JSX.Element | string) => React.JSX.Element;\n };\n};\n\n/**\n * The default handler for checking if a modifier is active\n */\nconst baseCheckIsActive = (editor: Editor, name: ModifierKey) => {\n const marks = Editor.marks(editor);\n if (!marks) return false;\n\n return Boolean(marks[name]);\n};\n\n/**\n * The default handler for toggling a modifier\n */\nconst baseHandleToggle = (editor: Editor, name: ModifierKey) => {\n const marks = Editor.marks(editor);\n\n // If there is no selection, set selection to the end of line\n if (!editor.selection) {\n const endOfEditor = Editor.end(editor, []);\n Transforms.select(editor, endOfEditor);\n }\n\n // Toggle the modifier\n if (marks?.[name]) {\n Editor.removeMark(editor, name);\n } else {\n Editor.addMark(editor, name, true);\n }\n};\n\nconst modifiers: ModifiersStore = {\n bold: {\n icon: Bold,\n isValidEventKey: (event) => event.key === 'b',\n label: { id: 'components.Blocks.modifiers.bold', defaultMessage: 'Bold' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'bold'),\n handleToggle: (editor) => baseHandleToggle(editor, 'bold'),\n renderLeaf: (children) => <BoldText>{children}</BoldText>,\n },\n italic: {\n icon: Italic,\n isValidEventKey: (event) => event.key === 'i',\n label: { id: 'components.Blocks.modifiers.italic', defaultMessage: 'Italic' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'italic'),\n handleToggle: (editor) => baseHandleToggle(editor, 'italic'),\n renderLeaf: (children) => <ItalicText>{children}</ItalicText>,\n },\n underline: {\n icon: Underline,\n isValidEventKey: (event) => event.key === 'u',\n label: { id: 'components.Blocks.modifiers.underline', defaultMessage: 'Underline' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'underline'),\n handleToggle: (editor) => baseHandleToggle(editor, 'underline'),\n renderLeaf: (children) => <UnderlineText>{children}</UnderlineText>,\n },\n strikethrough: {\n icon: StrikeThrough,\n isValidEventKey: (event) => event.key === 'S' && event.shiftKey,\n label: { id: 'components.Blocks.modifiers.strikethrough', defaultMessage: 'Strikethrough' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'strikethrough'),\n handleToggle: (editor) => baseHandleToggle(editor, 'strikethrough'),\n renderLeaf: (children) => <StrikeThroughText>{children}</StrikeThroughText>,\n },\n code: {\n icon: Code,\n isValidEventKey: (event) => event.key === 'e',\n label: { id: 'components.Blocks.modifiers.code', defaultMessage: 'Inline code' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'code'),\n handleToggle: (editor) => baseHandleToggle(editor, 'code'),\n renderLeaf: (children) => <InlineCode>{children}</InlineCode>,\n },\n};\n\nexport { type ModifiersStore, modifiers };\n"],"names":["stylesToInherit","css","BoldText","styled","Typography","attrs","fontWeight","ItalicText","UnderlineText","textDecoration","StrikeThroughText","InlineCode","code","theme","colors","neutral150","borderRadius","spaces","baseCheckIsActive","editor","name","marks","Editor","Boolean","baseHandleToggle","selection","endOfEditor","end","Transforms","select","removeMark","addMark","modifiers","bold","icon","Bold","isValidEventKey","event","key","label","id","defaultMessage","checkIsActive","handleToggle","renderLeaf","children","_jsx","italic","Italic","underline","Underline","strikethrough","StrikeThrough","shiftKey","Code"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Modifiers.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Modifiers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Typography, TypographyComponent } from '@strapi/design-system';\nimport { Bold, Italic, Underline, StrikeThrough, Code } from '@strapi/icons';\nimport { type MessageDescriptor } from 'react-intl';\nimport { Editor, Text, Transforms } from 'slate';\nimport { styled, css } from 'styled-components';\n\nconst stylesToInherit = css`\n font-size: inherit;\n color: inherit;\n line-height: inherit;\n`;\n\nconst BoldText = styled<TypographyComponent>(Typography).attrs({ fontWeight: 'bold' })`\n ${stylesToInherit}\n`;\n\nconst ItalicText = styled<TypographyComponent>(Typography)`\n font-style: italic;\n ${stylesToInherit}\n`;\n\nconst UnderlineText = styled<TypographyComponent>(Typography).attrs({\n textDecoration: 'underline',\n})`\n ${stylesToInherit}\n`;\n\nconst StrikeThroughText = styled<TypographyComponent>(Typography).attrs({\n textDecoration: 'line-through',\n})`\n ${stylesToInherit}\n`;\n\nconst InlineCode = styled.code`\n background-color: ${({ theme }) => theme.colors.neutral150};\n border-radius: ${({ theme }) => theme.borderRadius};\n padding: ${({ theme }) => `0 ${theme.spaces[2]}`};\n font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,\n monospace;\n color: inherit;\n`;\n\ntype ModifierKey = Exclude<keyof Text, 'type' | 'text'>;\n\ntype ModifiersStore = {\n [K in ModifierKey]: {\n icon: React.ComponentType;\n isValidEventKey: (event: React.KeyboardEvent<HTMLElement>) => boolean;\n label: MessageDescriptor;\n checkIsActive: (editor: Editor) => boolean;\n handleToggle: (editor: Editor) => void;\n renderLeaf: (children: React.JSX.Element | string) => React.JSX.Element;\n };\n};\n\n/**\n * The default handler for checking if a modifier is active\n */\nconst baseCheckIsActive = (editor: Editor, name: ModifierKey) => {\n const marks = Editor.marks(editor);\n if (!marks) return false;\n\n return Boolean(marks[name]);\n};\n\n/**\n * The default handler for toggling a modifier\n */\nconst baseHandleToggle = (editor: Editor, name: ModifierKey) => {\n const marks = Editor.marks(editor);\n\n // If there is no selection, set selection to the end of line\n if (!editor.selection) {\n const endOfEditor = Editor.end(editor, []);\n Transforms.select(editor, endOfEditor);\n }\n\n // Toggle the modifier\n if (marks?.[name]) {\n Editor.removeMark(editor, name);\n } else {\n Editor.addMark(editor, name, true);\n }\n};\n\nconst modifiers: ModifiersStore = {\n bold: {\n icon: Bold,\n isValidEventKey: (event) => event.key === 'b',\n label: { id: 'components.Blocks.modifiers.bold', defaultMessage: 'Bold' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'bold'),\n handleToggle: (editor) => baseHandleToggle(editor, 'bold'),\n renderLeaf: (children) => <BoldText>{children}</BoldText>,\n },\n italic: {\n icon: Italic,\n isValidEventKey: (event) => event.key === 'i',\n label: { id: 'components.Blocks.modifiers.italic', defaultMessage: 'Italic' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'italic'),\n handleToggle: (editor) => baseHandleToggle(editor, 'italic'),\n renderLeaf: (children) => <ItalicText>{children}</ItalicText>,\n },\n underline: {\n icon: Underline,\n isValidEventKey: (event) => event.key === 'u',\n label: { id: 'components.Blocks.modifiers.underline', defaultMessage: 'Underline' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'underline'),\n handleToggle: (editor) => baseHandleToggle(editor, 'underline'),\n renderLeaf: (children) => <UnderlineText>{children}</UnderlineText>,\n },\n strikethrough: {\n icon: StrikeThrough,\n isValidEventKey: (event) => event.key === 'S' && event.shiftKey,\n label: { id: 'components.Blocks.modifiers.strikethrough', defaultMessage: 'Strikethrough' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'strikethrough'),\n handleToggle: (editor) => baseHandleToggle(editor, 'strikethrough'),\n renderLeaf: (children) => <StrikeThroughText>{children}</StrikeThroughText>,\n },\n code: {\n icon: Code,\n isValidEventKey: (event) => event.key === 'e',\n label: { id: 'components.Blocks.modifiers.code', defaultMessage: 'Inline code' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'code'),\n handleToggle: (editor) => baseHandleToggle(editor, 'code'),\n renderLeaf: (children) => <InlineCode>{children}</InlineCode>,\n },\n};\n\nexport { type ModifiersStore, modifiers };\n"],"names":["stylesToInherit","css","BoldText","styled","Typography","attrs","fontWeight","ItalicText","UnderlineText","textDecoration","StrikeThroughText","InlineCode","code","theme","colors","neutral150","borderRadius","spaces","baseCheckIsActive","editor","name","marks","Editor","Boolean","baseHandleToggle","selection","endOfEditor","end","Transforms","select","removeMark","addMark","modifiers","bold","icon","Bold","isValidEventKey","event","key","label","id","defaultMessage","checkIsActive","handleToggle","renderLeaf","children","_jsx","italic","Italic","underline","Underline","strikethrough","StrikeThrough","shiftKey","Code"],"mappings":"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"}
1
+ {"version":3,"file":"Modifiers.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/Modifiers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Typography, TypographyComponent } from '@strapi/design-system';\nimport { Bold, Italic, Underline, StrikeThrough, Code } from '@strapi/icons';\nimport { type MessageDescriptor } from 'react-intl';\nimport { Editor, Text, Transforms } from 'slate';\nimport { styled, css } from 'styled-components';\n\nconst stylesToInherit = css`\n font-size: inherit;\n color: inherit;\n line-height: inherit;\n`;\n\nconst BoldText = styled<TypographyComponent>(Typography).attrs({ fontWeight: 'bold' })`\n ${stylesToInherit}\n`;\n\nconst ItalicText = styled<TypographyComponent>(Typography)`\n font-style: italic;\n ${stylesToInherit}\n`;\n\nconst UnderlineText = styled<TypographyComponent>(Typography).attrs({\n textDecoration: 'underline',\n})`\n ${stylesToInherit}\n`;\n\nconst StrikeThroughText = styled<TypographyComponent>(Typography).attrs({\n textDecoration: 'line-through',\n})`\n ${stylesToInherit}\n`;\n\nconst InlineCode = styled.code`\n background-color: ${({ theme }) => theme.colors.neutral150};\n border-radius: ${({ theme }) => theme.borderRadius};\n padding: ${({ theme }) => `0 ${theme.spaces[2]}`};\n font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,\n monospace;\n color: inherit;\n`;\n\ntype ModifierKey = Exclude<keyof Text, 'type' | 'text'>;\n\ntype ModifiersStore = {\n [K in ModifierKey]: {\n icon: React.ComponentType;\n isValidEventKey: (event: React.KeyboardEvent<HTMLElement>) => boolean;\n label: MessageDescriptor;\n checkIsActive: (editor: Editor) => boolean;\n handleToggle: (editor: Editor) => void;\n renderLeaf: (children: React.JSX.Element | string) => React.JSX.Element;\n };\n};\n\n/**\n * The default handler for checking if a modifier is active\n */\nconst baseCheckIsActive = (editor: Editor, name: ModifierKey) => {\n const marks = Editor.marks(editor);\n if (!marks) return false;\n\n return Boolean(marks[name]);\n};\n\n/**\n * The default handler for toggling a modifier\n */\nconst baseHandleToggle = (editor: Editor, name: ModifierKey) => {\n const marks = Editor.marks(editor);\n\n // If there is no selection, set selection to the end of line\n if (!editor.selection) {\n const endOfEditor = Editor.end(editor, []);\n Transforms.select(editor, endOfEditor);\n }\n\n // Toggle the modifier\n if (marks?.[name]) {\n Editor.removeMark(editor, name);\n } else {\n Editor.addMark(editor, name, true);\n }\n};\n\nconst modifiers: ModifiersStore = {\n bold: {\n icon: Bold,\n isValidEventKey: (event) => event.key === 'b',\n label: { id: 'components.Blocks.modifiers.bold', defaultMessage: 'Bold' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'bold'),\n handleToggle: (editor) => baseHandleToggle(editor, 'bold'),\n renderLeaf: (children) => <BoldText>{children}</BoldText>,\n },\n italic: {\n icon: Italic,\n isValidEventKey: (event) => event.key === 'i',\n label: { id: 'components.Blocks.modifiers.italic', defaultMessage: 'Italic' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'italic'),\n handleToggle: (editor) => baseHandleToggle(editor, 'italic'),\n renderLeaf: (children) => <ItalicText>{children}</ItalicText>,\n },\n underline: {\n icon: Underline,\n isValidEventKey: (event) => event.key === 'u',\n label: { id: 'components.Blocks.modifiers.underline', defaultMessage: 'Underline' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'underline'),\n handleToggle: (editor) => baseHandleToggle(editor, 'underline'),\n renderLeaf: (children) => <UnderlineText>{children}</UnderlineText>,\n },\n strikethrough: {\n icon: StrikeThrough,\n isValidEventKey: (event) => event.key === 'S' && event.shiftKey,\n label: { id: 'components.Blocks.modifiers.strikethrough', defaultMessage: 'Strikethrough' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'strikethrough'),\n handleToggle: (editor) => baseHandleToggle(editor, 'strikethrough'),\n renderLeaf: (children) => <StrikeThroughText>{children}</StrikeThroughText>,\n },\n code: {\n icon: Code,\n isValidEventKey: (event) => event.key === 'e',\n label: { id: 'components.Blocks.modifiers.code', defaultMessage: 'Inline code' },\n checkIsActive: (editor) => baseCheckIsActive(editor, 'code'),\n handleToggle: (editor) => baseHandleToggle(editor, 'code'),\n renderLeaf: (children) => <InlineCode>{children}</InlineCode>,\n },\n};\n\nexport { type ModifiersStore, modifiers };\n"],"names":["stylesToInherit","css","BoldText","styled","Typography","attrs","fontWeight","ItalicText","UnderlineText","textDecoration","StrikeThroughText","InlineCode","code","theme","colors","neutral150","borderRadius","spaces","baseCheckIsActive","editor","name","marks","Editor","Boolean","baseHandleToggle","selection","endOfEditor","end","Transforms","select","removeMark","addMark","modifiers","bold","icon","Bold","isValidEventKey","event","key","label","id","defaultMessage","checkIsActive","handleToggle","renderLeaf","children","_jsx","italic","Italic","underline","Underline","strikethrough","StrikeThrough","shiftKey","Code"],"mappings":"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"}
@@ -28,7 +28,9 @@ const insertLink = (editor, { url })=>{
28
28
  type: 'text',
29
29
  text: url
30
30
  }
31
- ]
31
+ ],
32
+ rel: '',
33
+ target: ''
32
34
  };
33
35
  slate.Transforms.insertNodes(editor, link);
34
36
  } else {
@@ -42,7 +44,7 @@ const insertLink = (editor, { url })=>{
42
44
  }
43
45
  };
44
46
  const editLink = (editor, link)=>{
45
- const { url, text } = link;
47
+ const { url, text, rel, target } = link;
46
48
  if (!editor.selection) {
47
49
  return;
48
50
  }
@@ -52,7 +54,9 @@ const editLink = (editor, link)=>{
52
54
  if (linkEntry) {
53
55
  const [, linkPath] = linkEntry;
54
56
  slate.Transforms.setNodes(editor, {
55
- url
57
+ url,
58
+ rel,
59
+ target
56
60
  }, {
57
61
  at: linkPath
58
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"links.js","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.ts"],"sourcesContent":["import { Transforms, Editor, Element as SlateElement, Node, Range } from 'slate';\n\nimport { type Block } from './types';\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 };\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 = (editor: Editor, link: { url: string; text: string }) => {\n const { url, text } = 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 }, { 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\nexport { insertLink, editLink, removeLink };\n"],"names":["removeLink","editor","Transforms","unwrapNodes","match","node","Editor","isEditor","SlateElement","isElement","type","insertLink","url","selection","linkNodes","Array","from","nodes","at","forEach","path","Range","isCollapsed","link","children","text","insertNodes","wrapNodes","split","editLink","linkEntry","above","linkPath","setNodes","string","linkNodeChildrens","Node","reverse","childPath","removeNodes","concat"],"mappings":"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"}
1
+ {"version":3,"file":"links.js","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.ts"],"sourcesContent":["import { Transforms, Editor, Element as SlateElement, Node, Range } from 'slate';\n\nimport { type Block } from './types';\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\nexport { insertLink, editLink, removeLink };\n"],"names":["removeLink","editor","Transforms","unwrapNodes","match","node","Editor","isEditor","SlateElement","isElement","type","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"],"mappings":";;;;AAIA,MAAMA,aAAa,CAACC,MAAAA,GAAAA;IAClBC,gBAAWC,CAAAA,WAAW,CAACF,MAAQ,EAAA;AAC7BG,QAAAA,KAAAA,EAAO,CAACC,IAAAA,GAAS,CAACC,YAAAA,CAAOC,QAAQ,CAACF,IAASG,CAAAA,IAAAA,aAAAA,CAAaC,SAAS,CAACJ,IAASA,CAAAA,IAAAA,IAAAA,CAAKK,IAAI,KAAK;AAC3F,KAAA,CAAA;AACF;AAEA,MAAMC,UAAa,GAAA,CAACV,MAAgB,EAAA,EAAEW,GAAG,EAAmB,GAAA;IAC1D,IAAIX,MAAAA,CAAOY,SAAS,EAAE;;AAEpB,QAAA,MAAMC,YAAYC,KAAMC,CAAAA,IAAI,CAC1BV,YAAOW,CAAAA,KAAK,CAAChB,MAAQ,EAAA;AACnBiB,YAAAA,EAAAA,EAAIjB,OAAOY,SAAS;YACpBT,KAAO,EAAA,CAACC,OAAS,CAACC,YAAAA,CAAOC,QAAQ,CAACF,IAAAA,CAAAA,IAASA,IAAKK,CAAAA,IAAI,KAAK;AAC3D,SAAA,CAAA,CAAA;AAGFI,QAAAA,SAAAA,CAAUK,OAAO,CAAC,CAAC,GAAGC,IAAK,CAAA,GAAA;YACzBlB,gBAAWC,CAAAA,WAAW,CAACF,MAAQ,EAAA;gBAAEiB,EAAIE,EAAAA;AAAK,aAAA,CAAA;AAC5C,SAAA,CAAA;AAEA,QAAA,IAAIC,WAAMC,CAAAA,WAAW,CAACrB,MAAAA,CAAOY,SAAS,CAAG,EAAA;AACvC,YAAA,MAAMU,IAAsB,GAAA;gBAC1Bb,IAAM,EAAA,MAAA;AACNE,gBAAAA,GAAAA,EAAKA,GAAO,IAAA,EAAA;gBACZY,QAAU,EAAA;AAAC,oBAAA;wBAAEd,IAAM,EAAA,MAAA;wBAAQe,IAAMb,EAAAA;AAAI;AAAE,iBAAA;gBACvCc,GAAK,EAAA,EAAA;gBACLC,MAAQ,EAAA;AACV,aAAA;YAEAzB,gBAAW0B,CAAAA,WAAW,CAAC3B,MAAQsB,EAAAA,IAAAA,CAAAA;SAC1B,MAAA;YACLrB,gBAAW2B,CAAAA,SAAS,CAAC5B,MAAQ,EAAA;gBAAES,IAAM,EAAA,MAAA;AAAQE,gBAAAA,GAAAA,EAAKA,GAAO,IAAA;aAAuB,EAAA;gBAC9EkB,KAAO,EAAA;AACT,aAAA,CAAA;AACF;AACF;AACF;AAEMC,MAAAA,QAAAA,GAAW,CACf9B,MACAsB,EAAAA,IAAAA,GAAAA;IAEA,MAAM,EAAEX,GAAG,EAAEa,IAAI,EAAEC,GAAG,EAAEC,MAAM,EAAE,GAAGJ,IAAAA;IAEnC,IAAI,CAACtB,MAAOY,CAAAA,SAAS,EAAE;AACrB,QAAA;AACF;AAEA,IAAA,MAAMmB,SAAY1B,GAAAA,YAAAA,CAAO2B,KAAK,CAAChC,MAAQ,EAAA;QACrCG,KAAO,EAAA,CAACC,OAAS,CAACC,YAAAA,CAAOC,QAAQ,CAACF,IAAAA,CAAAA,IAASA,IAAKK,CAAAA,IAAI,KAAK;AAC3D,KAAA,CAAA;AAEA,IAAA,IAAIsB,SAAW,EAAA;QACb,MAAM,GAAGE,SAAS,GAAGF,SAAAA;QACrB9B,gBAAWiC,CAAAA,QAAQ,CAAClC,MAAQ,EAAA;AAAEW,YAAAA,GAAAA;AAAKc,YAAAA,GAAAA;AAAKC,YAAAA;SAAU,EAAA;YAAET,EAAIgB,EAAAA;AAAS,SAAA,CAAA;;AAGjE,QAAA,IAAIT,SAAS,EAAMA,IAAAA,IAAAA,KAASnB,aAAO8B,MAAM,CAACnC,QAAQiC,QAAW,CAAA,EAAA;YAC3D,MAAMG,iBAAAA,GAAoBtB,MAAMC,IAAI,CAACsB,WAAKd,QAAQ,CAACvB,QAAQiC,QAAU,EAAA;gBAAEK,OAAS,EAAA;AAAK,aAAA,CAAA,CAAA;AAErFF,YAAAA,iBAAAA,CAAkBlB,OAAO,CAAC,CAAC,GAAGqB,SAAU,CAAA,GAAA;gBACtCtC,gBAAWuC,CAAAA,WAAW,CAACxC,MAAQ,EAAA;oBAAEiB,EAAIsB,EAAAA;AAAU,iBAAA,CAAA;AACjD,aAAA,CAAA;YAEAtC,gBAAW0B,CAAAA,WAAW,CAAC3B,MAAQ,EAAA;AAAC,gBAAA;oBAAES,IAAM,EAAA,MAAA;AAAQe,oBAAAA;AAAK;aAAE,EAAE;gBAAEP,EAAIgB,EAAAA,QAAAA,CAASQ,MAAM,CAAC,CAAA;AAAG,aAAA,CAAA;AACpF;AACF;AACF;;;;;;"}
@@ -26,7 +26,9 @@ const insertLink = (editor, { url })=>{
26
26
  type: 'text',
27
27
  text: url
28
28
  }
29
- ]
29
+ ],
30
+ rel: '',
31
+ target: ''
30
32
  };
31
33
  Transforms.insertNodes(editor, link);
32
34
  } else {
@@ -40,7 +42,7 @@ const insertLink = (editor, { url })=>{
40
42
  }
41
43
  };
42
44
  const editLink = (editor, link)=>{
43
- const { url, text } = link;
45
+ const { url, text, rel, target } = link;
44
46
  if (!editor.selection) {
45
47
  return;
46
48
  }
@@ -50,7 +52,9 @@ const editLink = (editor, link)=>{
50
52
  if (linkEntry) {
51
53
  const [, linkPath] = linkEntry;
52
54
  Transforms.setNodes(editor, {
53
- url
55
+ url,
56
+ rel,
57
+ target
54
58
  }, {
55
59
  at: linkPath
56
60
  });
@@ -1 +1 @@
1
- {"version":3,"file":"links.mjs","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.ts"],"sourcesContent":["import { Transforms, Editor, Element as SlateElement, Node, Range } from 'slate';\n\nimport { type Block } from './types';\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 };\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 = (editor: Editor, link: { url: string; text: string }) => {\n const { url, text } = 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 }, { 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\nexport { insertLink, editLink, removeLink };\n"],"names":["removeLink","editor","Transforms","unwrapNodes","match","node","Editor","isEditor","SlateElement","isElement","type","insertLink","url","selection","linkNodes","Array","from","nodes","at","forEach","path","Range","isCollapsed","link","children","text","insertNodes","wrapNodes","split","editLink","linkEntry","above","linkPath","setNodes","string","linkNodeChildrens","Node","reverse","childPath","removeNodes","concat"],"mappings":"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"}
1
+ {"version":3,"file":"links.mjs","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.ts"],"sourcesContent":["import { Transforms, Editor, Element as SlateElement, Node, Range } from 'slate';\n\nimport { type Block } from './types';\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\nexport { insertLink, editLink, removeLink };\n"],"names":["removeLink","editor","Transforms","unwrapNodes","match","node","Editor","isEditor","SlateElement","isElement","type","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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"NonRepeatable.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import { useField, createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport type { ComponentInputProps } from './Input';\n\ntype NonRepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst NonRepeatableComponent = ({\n attribute,\n name,\n children,\n layout,\n}: NonRepeatableComponentProps) => {\n const { formatMessage } = useIntl();\n const { value } = useField(name);\n const level = useComponent('NonRepeatableComponent', (state) => state.level);\n const isNested = level > 0;\n const { currentDocument } = useDocumentContext('NonRepeatableComponent');\n const rulesEngine = createRulesEngine();\n\n return (\n <ComponentProvider id={value?.id} uid={attribute.component} level={level + 1} type=\"component\">\n <Box\n background={'neutral100'}\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n hasRadius={isNested}\n borderColor={isNested ? 'neutral200' : undefined}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((row, index) => {\n const visibleFields = row.filter(({ ...field }) => {\n const condition = field.attribute.conditions?.visible;\n if (condition) {\n return rulesEngine.evaluate(condition, value);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {visibleFields.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${name}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n </ComponentProvider>\n );\n};\n\nexport { NonRepeatableComponent };\nexport type { NonRepeatableComponentProps };\n"],"names":["NonRepeatableComponent","attribute","name","children","layout","formatMessage","useIntl","value","useField","level","useComponent","state","isNested","currentDocument","useDocumentContext","rulesEngine","createRulesEngine","_jsx","ComponentProvider","id","uid","component","type","Box","background","paddingLeft","paddingRight","paddingTop","paddingBottom","hasRadius","borderColor","undefined","Flex","direction","alignItems","gap","map","row","index","visibleFields","filter","field","condition","conditions","visible","evaluate","length","ResponsiveGridRoot","size","completeFieldName","translatedLabel","defaultMessage","label","ResponsiveGridItem","col","s","xs","document"],"mappings":"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"}
1
+ {"version":3,"file":"NonRepeatable.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import { useField, createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport type { ComponentInputProps } from './Input';\n\ntype NonRepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst NonRepeatableComponent = ({\n attribute,\n name,\n children,\n layout,\n}: NonRepeatableComponentProps) => {\n const { formatMessage } = useIntl();\n const { value } = useField(name);\n const level = useComponent('NonRepeatableComponent', (state) => state.level);\n const isNested = level > 0;\n const { currentDocument } = useDocumentContext('NonRepeatableComponent');\n const rulesEngine = createRulesEngine();\n\n return (\n <ComponentProvider id={value?.id} uid={attribute.component} level={level + 1} type=\"component\">\n <Box\n background={'neutral100'}\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n hasRadius={isNested}\n borderColor={isNested ? 'neutral200' : undefined}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((row, index) => {\n const visibleFields = row.filter(({ ...field }) => {\n const condition = field.attribute.conditions?.visible;\n if (condition) {\n return rulesEngine.evaluate(condition, value);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {visibleFields.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${name}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n </ComponentProvider>\n );\n};\n\nexport { NonRepeatableComponent };\nexport type { NonRepeatableComponentProps };\n"],"names":["NonRepeatableComponent","attribute","name","children","layout","formatMessage","useIntl","value","useField","level","useComponent","state","isNested","currentDocument","useDocumentContext","rulesEngine","createRulesEngine","_jsx","ComponentProvider","id","uid","component","type","Box","background","paddingLeft","paddingRight","paddingTop","paddingBottom","hasRadius","borderColor","undefined","Flex","direction","alignItems","gap","map","row","index","visibleFields","filter","field","condition","conditions","visible","evaluate","length","ResponsiveGridRoot","size","completeFieldName","translatedLabel","defaultMessage","label","ResponsiveGridItem","col","s","xs","document"],"mappings":";;;;;;;;;;AAYMA,MAAAA,sBAAAA,GAAyB,CAAC,EAC9BC,SAAS,EACTC,IAAI,EACJC,QAAQ,EACRC,MAAM,EACsB,GAAA;IAC5B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGC,oBAASN,CAAAA,IAAAA,CAAAA;AAC3B,IAAA,MAAMO,QAAQC,6BAAa,CAAA,wBAAA,EAA0B,CAACC,KAAAA,GAAUA,MAAMF,KAAK,CAAA;AAC3E,IAAA,MAAMG,WAAWH,KAAQ,GAAA,CAAA;AACzB,IAAA,MAAM,EAAEI,eAAe,EAAE,GAAGC,qCAAmB,CAAA,wBAAA,CAAA;AAC/C,IAAA,MAAMC,WAAcC,GAAAA,6BAAAA,EAAAA;AAEpB,IAAA,qBACEC,cAACC,CAAAA,kCAAAA,EAAAA;AAAkBC,QAAAA,EAAAA,EAAIZ,KAAOY,EAAAA,EAAAA;AAAIC,QAAAA,GAAAA,EAAKnB,UAAUoB,SAAS;AAAEZ,QAAAA,KAAAA,EAAOA,KAAQ,GAAA,CAAA;QAAGa,IAAK,EAAA,WAAA;AACjF,QAAA,QAAA,gBAAAL,cAACM,CAAAA,gBAAAA,EAAAA;YACCC,UAAY,EAAA,YAAA;YACZC,WAAa,EAAA,CAAA;YACbC,YAAc,EAAA,CAAA;YACdC,UAAY,EAAA,CAAA;YACZC,aAAe,EAAA,CAAA;YACfC,SAAWjB,EAAAA,QAAAA;AACXkB,YAAAA,WAAAA,EAAalB,WAAW,YAAemB,GAAAA,SAAAA;AAEvC,YAAA,QAAA,gBAAAd,cAACe,CAAAA,iBAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;gBAAUC,GAAK,EAAA,CAAA;0BAChD/B,MAAOgC,CAAAA,GAAG,CAAC,CAACC,GAAKC,EAAAA,KAAAA,GAAAA;AAChB,oBAAA,MAAMC,gBAAgBF,GAAIG,CAAAA,MAAM,CAAC,CAAC,EAAE,GAAGC,KAAO,EAAA,GAAA;AAC5C,wBAAA,MAAMC,SAAYD,GAAAA,KAAAA,CAAMxC,SAAS,CAAC0C,UAAU,EAAEC,OAAAA;AAC9C,wBAAA,IAAIF,SAAW,EAAA;4BACb,OAAO3B,WAAAA,CAAY8B,QAAQ,CAACH,SAAWnC,EAAAA,KAAAA,CAAAA;AACzC;wBAEA,OAAO,IAAA;AACT,qBAAA,CAAA;oBAEA,IAAIgC,aAAAA,CAAcO,MAAM,KAAK,CAAG,EAAA;AAC9B,wBAAA,OAAO;AACT;AACA,oBAAA,qBACE7B,cAAC8B,CAAAA,6BAAAA,EAAAA;wBAAmBZ,GAAK,EAAA,CAAA;AACtBI,wBAAAA,QAAAA,EAAAA,aAAAA,CAAcH,GAAG,CAAC,CAAC,EAAEY,IAAI,EAAE,GAAGP,KAAO,EAAA,GAAA;AACpC;;;;;sBAMA,MAAMQ,oBAAoB,CAAG/C,EAAAA,IAAAA,CAAK,CAAC,EAAEuC,KAAAA,CAAMvC,IAAI,CAAE,CAAA;AAEjD,4BAAA,MAAMgD,kBAAkB7C,aAAc,CAAA;gCACpCc,EAAI,EAAA,CAAC,2BAA2B,EAAElB,SAAUoB,CAAAA,SAAS,CAAC,CAAC,EAAEoB,KAAMvC,CAAAA,IAAI,CAAE,CAAA;AACrEiD,gCAAAA,cAAAA,EAAgBV,MAAMW;AACxB,6BAAA,CAAA;AAEA,4BAAA,qBACEnC,cAACoC,CAAAA,6BAAAA,EAAAA;gCACCC,GAAKN,EAAAA,IAAAA;gCAELO,CAAG,EAAA,EAAA;gCACHC,EAAI,EAAA,EAAA;gCACJvB,SAAU,EAAA,QAAA;gCACVC,UAAW,EAAA,SAAA;0CAEV/B,QAAS,CAAA;AACR,oCAAA,GAAGsC,KAAK;oCACRW,KAAOF,EAAAA,eAAAA;oCACPhD,IAAM+C,EAAAA,iBAAAA;oCACNQ,QAAU5C,EAAAA;AACZ,iCAAA;AAXKoC,6BAAAA,EAAAA,iBAAAA,CAAAA;AAcX,yBAAA;AAhC+BX,qBAAAA,EAAAA,KAAAA,CAAAA;AAmCrC,iBAAA;;;;AAKV;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"NonRepeatable.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import { useField, createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport type { ComponentInputProps } from './Input';\n\ntype NonRepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst NonRepeatableComponent = ({\n attribute,\n name,\n children,\n layout,\n}: NonRepeatableComponentProps) => {\n const { formatMessage } = useIntl();\n const { value } = useField(name);\n const level = useComponent('NonRepeatableComponent', (state) => state.level);\n const isNested = level > 0;\n const { currentDocument } = useDocumentContext('NonRepeatableComponent');\n const rulesEngine = createRulesEngine();\n\n return (\n <ComponentProvider id={value?.id} uid={attribute.component} level={level + 1} type=\"component\">\n <Box\n background={'neutral100'}\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n hasRadius={isNested}\n borderColor={isNested ? 'neutral200' : undefined}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((row, index) => {\n const visibleFields = row.filter(({ ...field }) => {\n const condition = field.attribute.conditions?.visible;\n if (condition) {\n return rulesEngine.evaluate(condition, value);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {visibleFields.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${name}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n </ComponentProvider>\n );\n};\n\nexport { NonRepeatableComponent };\nexport type { NonRepeatableComponentProps };\n"],"names":["NonRepeatableComponent","attribute","name","children","layout","formatMessage","useIntl","value","useField","level","useComponent","state","isNested","currentDocument","useDocumentContext","rulesEngine","createRulesEngine","_jsx","ComponentProvider","id","uid","component","type","Box","background","paddingLeft","paddingRight","paddingTop","paddingBottom","hasRadius","borderColor","undefined","Flex","direction","alignItems","gap","map","row","index","visibleFields","filter","field","condition","conditions","visible","evaluate","length","ResponsiveGridRoot","size","completeFieldName","translatedLabel","defaultMessage","label","ResponsiveGridItem","col","s","xs","document"],"mappings":";;;;;;;;AAYMA,MAAAA,sBAAAA,GAAyB,CAAC,EAC9BC,SAAS,EACTC,IAAI,EACJC,QAAQ,EACRC,MAAM,EACsB,GAAA;IAC5B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGC,QAASN,CAAAA,IAAAA,CAAAA;AAC3B,IAAA,MAAMO,QAAQC,YAAa,CAAA,wBAAA,EAA0B,CAACC,KAAAA,GAAUA,MAAMF,KAAK,CAAA;AAC3E,IAAA,MAAMG,WAAWH,KAAQ,GAAA,CAAA;AACzB,IAAA,MAAM,EAAEI,eAAe,EAAE,GAAGC,kBAAmB,CAAA,wBAAA,CAAA;AAC/C,IAAA,MAAMC,WAAcC,GAAAA,iBAAAA,EAAAA;AAEpB,IAAA,qBACEC,GAACC,CAAAA,iBAAAA,EAAAA;AAAkBC,QAAAA,EAAAA,EAAIZ,KAAOY,EAAAA,EAAAA;AAAIC,QAAAA,GAAAA,EAAKnB,UAAUoB,SAAS;AAAEZ,QAAAA,KAAAA,EAAOA,KAAQ,GAAA,CAAA;QAAGa,IAAK,EAAA,WAAA;AACjF,QAAA,QAAA,gBAAAL,GAACM,CAAAA,GAAAA,EAAAA;YACCC,UAAY,EAAA,YAAA;YACZC,WAAa,EAAA,CAAA;YACbC,YAAc,EAAA,CAAA;YACdC,UAAY,EAAA,CAAA;YACZC,aAAe,EAAA,CAAA;YACfC,SAAWjB,EAAAA,QAAAA;AACXkB,YAAAA,WAAAA,EAAalB,WAAW,YAAemB,GAAAA,SAAAA;AAEvC,YAAA,QAAA,gBAAAd,GAACe,CAAAA,IAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,SAAA;gBAAUC,GAAK,EAAA,CAAA;0BAChD/B,MAAOgC,CAAAA,GAAG,CAAC,CAACC,GAAKC,EAAAA,KAAAA,GAAAA;AAChB,oBAAA,MAAMC,gBAAgBF,GAAIG,CAAAA,MAAM,CAAC,CAAC,EAAE,GAAGC,KAAO,EAAA,GAAA;AAC5C,wBAAA,MAAMC,SAAYD,GAAAA,KAAAA,CAAMxC,SAAS,CAAC0C,UAAU,EAAEC,OAAAA;AAC9C,wBAAA,IAAIF,SAAW,EAAA;4BACb,OAAO3B,WAAAA,CAAY8B,QAAQ,CAACH,SAAWnC,EAAAA,KAAAA,CAAAA;AACzC;wBAEA,OAAO,IAAA;AACT,qBAAA,CAAA;oBAEA,IAAIgC,aAAAA,CAAcO,MAAM,KAAK,CAAG,EAAA;AAC9B,wBAAA,OAAO;AACT;AACA,oBAAA,qBACE7B,GAAC8B,CAAAA,kBAAAA,EAAAA;wBAAmBZ,GAAK,EAAA,CAAA;AACtBI,wBAAAA,QAAAA,EAAAA,aAAAA,CAAcH,GAAG,CAAC,CAAC,EAAEY,IAAI,EAAE,GAAGP,KAAO,EAAA,GAAA;AACpC;;;;;sBAMA,MAAMQ,iBAAoB,GAAA,CAAC,EAAE/C,IAAAA,CAAK,CAAC,EAAEuC,KAAAA,CAAMvC,IAAI,CAAC,CAAC;AAEjD,4BAAA,MAAMgD,kBAAkB7C,aAAc,CAAA;gCACpCc,EAAI,EAAA,CAAC,2BAA2B,EAAElB,SAAUoB,CAAAA,SAAS,CAAC,CAAC,EAAEoB,KAAAA,CAAMvC,IAAI,CAAC,CAAC;AACrEiD,gCAAAA,cAAAA,EAAgBV,MAAMW;AACxB,6BAAA,CAAA;AAEA,4BAAA,qBACEnC,GAACoC,CAAAA,kBAAAA,EAAAA;gCACCC,GAAKN,EAAAA,IAAAA;gCAELO,CAAG,EAAA,EAAA;gCACHC,EAAI,EAAA,EAAA;gCACJvB,SAAU,EAAA,QAAA;gCACVC,UAAW,EAAA,SAAA;0CAEV/B,QAAS,CAAA;AACR,oCAAA,GAAGsC,KAAK;oCACRW,KAAOF,EAAAA,eAAAA;oCACPhD,IAAM+C,EAAAA,iBAAAA;oCACNQ,QAAU5C,EAAAA;AACZ,iCAAA;AAXKoC,6BAAAA,EAAAA,iBAAAA,CAAAA;AAcX,yBAAA;AAhC+BX,qBAAAA,EAAAA,KAAAA,CAAAA;AAmCrC,iBAAA;;;;AAKV;;;;"}
1
+ {"version":3,"file":"NonRepeatable.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import { useField, createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport type { ComponentInputProps } from './Input';\n\ntype NonRepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst NonRepeatableComponent = ({\n attribute,\n name,\n children,\n layout,\n}: NonRepeatableComponentProps) => {\n const { formatMessage } = useIntl();\n const { value } = useField(name);\n const level = useComponent('NonRepeatableComponent', (state) => state.level);\n const isNested = level > 0;\n const { currentDocument } = useDocumentContext('NonRepeatableComponent');\n const rulesEngine = createRulesEngine();\n\n return (\n <ComponentProvider id={value?.id} uid={attribute.component} level={level + 1} type=\"component\">\n <Box\n background={'neutral100'}\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n hasRadius={isNested}\n borderColor={isNested ? 'neutral200' : undefined}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((row, index) => {\n const visibleFields = row.filter(({ ...field }) => {\n const condition = field.attribute.conditions?.visible;\n if (condition) {\n return rulesEngine.evaluate(condition, value);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n return (\n <ResponsiveGridRoot gap={4} key={index}>\n {visibleFields.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${name}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n document: currentDocument,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n </ComponentProvider>\n );\n};\n\nexport { NonRepeatableComponent };\nexport type { NonRepeatableComponentProps };\n"],"names":["NonRepeatableComponent","attribute","name","children","layout","formatMessage","useIntl","value","useField","level","useComponent","state","isNested","currentDocument","useDocumentContext","rulesEngine","createRulesEngine","_jsx","ComponentProvider","id","uid","component","type","Box","background","paddingLeft","paddingRight","paddingTop","paddingBottom","hasRadius","borderColor","undefined","Flex","direction","alignItems","gap","map","row","index","visibleFields","filter","field","condition","conditions","visible","evaluate","length","ResponsiveGridRoot","size","completeFieldName","translatedLabel","defaultMessage","label","ResponsiveGridItem","col","s","xs","document"],"mappings":"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"}