@strapi/content-manager 5.52.3 → 5.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/ActionsDrawer.js +17 -6
- package/dist/admin/components/ActionsDrawer.js.map +1 -1
- package/dist/admin/components/ActionsDrawer.mjs +19 -8
- package/dist/admin/components/ActionsDrawer.mjs.map +1 -1
- package/dist/admin/history/components/VersionsList.js +37 -43
- package/dist/admin/history/components/VersionsList.js.map +1 -1
- package/dist/admin/history/components/VersionsList.mjs +37 -43
- package/dist/admin/history/components/VersionsList.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +15 -20
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +15 -20
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +2 -0
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +2 -0
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.js +74 -7
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs +74 -7
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +25 -16
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +25 -16
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +7 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +7 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +59 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +60 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js +4 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs +4 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +4 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +4 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +25 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +5 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +5 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs +6 -2
- package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +1 -0
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +1 -0
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/preview/components/InputPopover.js +64 -46
- package/dist/admin/preview/components/InputPopover.js.map +1 -1
- package/dist/admin/preview/components/InputPopover.mjs +66 -49
- package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.js +23 -7
- package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs +25 -9
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -1
- package/dist/admin/preview/pages/Preview.js +19 -0
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +20 -1
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/utils/constants.js +9 -3
- package/dist/admin/preview/utils/constants.js.map +1 -1
- package/dist/admin/preview/utils/constants.mjs +9 -3
- package/dist/admin/preview/utils/constants.mjs.map +1 -1
- package/dist/admin/src/components/ActionsDrawer.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/EditorToolbarObserver.d.ts +2 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.d.ts +5 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +5 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.d.ts +5 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -1
- package/dist/admin/src/preview/components/InputPopover.d.ts +2 -1
- package/dist/admin/src/preview/pages/Preview.d.ts +1 -0
- package/dist/admin/src/preview/utils/constants.d.ts +8 -1
- package/dist/server/preview/controllers/previewScript.js +548 -22
- 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 { useIsMobile } from '@strapi/admin/strapi-admin';\nimport {\n Flex,\n Tooltip,\n SingleSelect,\n SingleSelectOption,\n Box,\n FlexComponent,\n BoxComponent,\n Menu,\n} from '@strapi/design-system';\nimport { Link, ArrowUp, ArrowDown } 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 { getTranslation } from '../../../../../utils/translations';\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { insertLink } from './Blocks/Link';\nimport { type BlocksStore, type SelectorBlock, useBlocksEditorContext } from './BlocksEditor';\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: ${({ theme }) => theme.spaces[1]};\n margin-right: ${({ theme }) => theme.spaces[1]};\n\n ${({ theme }) => theme.breakpoints.medium} {\n margin-left: ${({ theme }) => theme.spaces[2]};\n margin-right: ${({ theme }) => theme.spaces[2]};\n }\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 on desktop\n ${({ theme }) => theme.breakpoints.medium} {\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\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: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n padding-left: ${({ theme }) => theme.spaces[4]};\n padding-right: ${({ theme }) => theme.spaces[4]};\n gap: ${({ theme }) => theme.spaces[2]};\n \n ${({ theme }) => theme.breakpoints.medium} {\n padding-top: ${({ theme }) => theme.spaces[1]};\n padding-bottom: ${({ theme }) => theme.spaces[1]};\n gap: ${({ theme }) => theme.spaces[4]};\n }\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 & > span:first-child {\n gap: ${({ theme }) => theme.spaces[0]};\n\n ${({ theme }) => theme.breakpoints.medium} {\n gap: ${({ theme }) => theme.spaces[3]};\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 onPointerDown={(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 type=\"button\"\n >\n {Icon && <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 const isMobile = useIsMobile();\n\n const blockKeysToInclude: string[] = getEntries(blocks).reduce<string[]>(\n (currentKeys, [key, block]) => {\n return block?.isInBlocksSelector ? [...currentKeys, key] : currentKeys;\n },\n []\n );\n\n const [blockSelected, setBlockSelected] = React.useState<string>('paragraph');\n\n const handleSelect = (optionKey: unknown) => {\n if (typeof optionKey !== 'string' || !blocks[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 // Toolbar buttons steal focus in Playwright (and sometimes in real browsers), clearing\n // selection. Convert the last existing block — do not insert a new empty block, which\n // would leave the user's content behind and convert a blank node instead.\n const [, lastPath] = Editor.last(editor, []);\n Transforms.select(editor, Editor.range(editor, lastPath));\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);\n }\n }\n }, [editor.selection, editor, blocks, blockSelected]);\n\n React.useEffect(() => {\n // If the selected block is not in the list of blocks to include, change the selected block to the first one\n if (blockKeysToInclude.length > 0 && !blockKeysToInclude.includes(blockSelected)) {\n setBlockSelected(blockKeysToInclude[0]);\n }\n }, [blockKeysToInclude, blockSelected]);\n\n if (!blocks[blockSelected]) {\n return null;\n }\n\n const selectedBlock = blocks[blockSelected] as SelectorBlock;\n const Icon = selectedBlock.icon;\n\n return (\n <>\n <SelectWrapper>\n <SingleSelect\n startIcon={Icon && <Icon />}\n onChange={handleSelect}\n customizeContent={() => (isMobile ? '' : formatMessage(selectedBlock.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 const selectorBlock = blocks[key] as SelectorBlock;\n return (\n <BlockOption\n key={key}\n value={key}\n label={selectorBlock.label}\n icon={selectorBlock.icon}\n blockSelected={blockSelected}\n />\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 && <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 && <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 ReorderToolbarButtons = () => {\n const { editor, disabled, blocks, name, setLiveText } =\n useBlocksEditorContext('ReorderToolbarButtons');\n const { formatMessage } = useIntl();\n\n const selection = editor.selection;\n const totalBlocks = editor.children.length;\n\n const anchorIndex = selection ? selection.anchor.path[0] : null;\n const focusIndex = selection ? selection.focus.path[0] : null;\n const isSingleBlockSelection =\n anchorIndex !== null && focusIndex !== null && anchorIndex === focusIndex;\n\n const selectedTopLevelNode =\n isSingleBlockSelection && anchorIndex !== null ? editor.children[anchorIndex] : null;\n const selectedBlock =\n selectedTopLevelNode &&\n Object.values(blocks).find((block) => block.matchNode(selectedTopLevelNode));\n\n const isSelectedBlockDraggable =\n selectedTopLevelNode && selectedBlock\n ? (selectedBlock.isDraggable?.(selectedTopLevelNode) ?? true)\n : false;\n\n const canMoveUp =\n !disabled &&\n isSingleBlockSelection &&\n isSelectedBlockDraggable &&\n anchorIndex !== null &&\n anchorIndex > 0;\n const canMoveDown =\n !disabled &&\n isSingleBlockSelection &&\n isSelectedBlockDraggable &&\n anchorIndex !== null &&\n anchorIndex < totalBlocks - 1;\n\n const moveBlock = (direction: 'up' | 'down') => {\n if (!selection || anchorIndex === null) return;\n\n const currentIndex = [anchorIndex];\n const newIndex = [direction === 'up' ? anchorIndex - 1 : anchorIndex + 1];\n\n Transforms.moveNodes(editor, {\n at: currentIndex,\n to: newIndex,\n });\n\n // Keep the moved block focused so disabled states update immediately.\n Transforms.select(editor, Editor.start(editor, newIndex));\n ReactEditor.focus(editor);\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('components.Blocks.dnd.reorder'),\n defaultMessage: '{item}, moved. New position in the editor: {position}.',\n },\n {\n item: `${name}.${currentIndex[0] + 1}`,\n position: `${newIndex[0] + 1} of ${editor.children.length}`,\n }\n )\n );\n };\n\n return (\n <Flex direction=\"row\" gap={1}>\n <Tooltip\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n >\n <Toolbar.Button\n onPointerDown={(e) => {\n e.preventDefault();\n if (canMoveUp) moveBlock('up');\n }}\n aria-disabled={!canMoveUp}\n disabled={!canMoveUp}\n aria-label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n asChild\n >\n <FlexButton\n tag=\"button\"\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n <ArrowUp fill={!canMoveUp ? 'neutral300' : 'neutral600'} />\n </FlexButton>\n </Toolbar.Button>\n </Tooltip>\n\n <Tooltip\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n >\n <Toolbar.Button\n onPointerDown={(e) => {\n e.preventDefault();\n if (canMoveDown) moveBlock('down');\n }}\n aria-disabled={!canMoveDown}\n disabled={!canMoveDown}\n aria-label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n asChild\n >\n <FlexButton\n tag=\"button\"\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n <ArrowDown fill={!canMoveDown ? 'neutral300' : 'neutral600'} />\n </FlexButton>\n </Toolbar.Button>\n </Tooltip>\n </Flex>\n );\n};\n\nconst BlocksToolbar = () => {\n const { editor, blocks, modifiers, disabled } = useBlocksEditorContext('BlocksToolbar');\n const { formatMessage } = useIntl();\n const isMobile = useIsMobile();\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={{ initial: 1, medium: 2 }} width=\"100%\">\n <BlocksDropdown />\n {isMobile && (\n <>\n <ToolbarSeparator />\n <ReorderToolbarButtons />\n </>\n )}\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","spaces","breakpoints","medium","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","onPointerDown","e","preventDefault","ReactEditor","focus","aria-disabled","aria-label","asChild","tag","background","alignItems","justifyContent","width","height","hasRadius","type","fill","BlocksDropdown","blocks","isMobile","useIsMobile","blockKeysToInclude","getEntries","reduce","currentKeys","block","isInBlocksSelector","blockSelected","setBlockSelected","handleSelect","optionKey","editorIsEmpty","children","length","Editor","isEmpty","selection","lastPath","last","Transforms","select","range","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","selectedBlock","_jsxs","_Fragment","SingleSelect","startIcon","onChange","customizeContent","onCloseAutoFocus","id","defaultMessage","map","selectorBlock","BlockOption","isSelected","SingleSelectOption","Node","isNode","ListButton","location","isListActive","isListDisabled","anchorNodeEntry","focusNodeEntry","toggleList","_","lastNodePath","StyledMenuItem","onSelect","LinkButton","isLinkActive","Array","from","nodes","unhangRange","SlateElement","isElement","Boolean","isLinkDisabled","addLink","shouldSaveLinkPath","insertLink","url","Link","Menu","Item","props","css","primary600","neutral500","ReorderToolbarButtons","setLiveText","totalBlocks","anchorIndex","path","focusIndex","isSingleBlockSelection","selectedTopLevelNode","Object","values","isSelectedBlockDraggable","isDraggable","canMoveUp","canMoveDown","moveBlock","direction","currentIndex","newIndex","moveNodes","to","getTranslation","item","position","gap","Button","ArrowUp","ArrowDown","BlocksToolbar","modifiers","checkButtonDisabled","isButtonDisabled","observedComponents","entries","modifier","checkIsActive","handleToggle","toolbar","menu","style","marginLeft","ToggleGroup","Root","padding","initial","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 { useIsMobile } from '@strapi/admin/strapi-admin';\nimport {\n Flex,\n Tooltip,\n SingleSelect,\n SingleSelectOption,\n Box,\n FlexComponent,\n BoxComponent,\n Menu,\n} from '@strapi/design-system';\nimport { Link, ArrowUp, ArrowDown } 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 { getTranslation } from '../../../../../utils/translations';\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { insertLink } from './Blocks/Link';\nimport { type BlocksStore, type SelectorBlock, useBlocksEditorContext } from './BlocksEditor';\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: ${({ theme }) => theme.spaces[1]};\n margin-right: ${({ theme }) => theme.spaces[1]};\n\n ${({ theme }) => theme.breakpoints.medium} {\n margin-left: ${({ theme }) => theme.spaces[2]};\n margin-right: ${({ theme }) => theme.spaces[2]};\n }\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 on desktop\n ${({ theme }) => theme.breakpoints.medium} {\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\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: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n padding-left: ${({ theme }) => theme.spaces[4]};\n padding-right: ${({ theme }) => theme.spaces[4]};\n gap: ${({ theme }) => theme.spaces[2]};\n \n ${({ theme }) => theme.breakpoints.medium} {\n padding-top: ${({ theme }) => theme.spaces[1]};\n padding-bottom: ${({ theme }) => theme.spaces[1]};\n gap: ${({ theme }) => theme.spaces[4]};\n }\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 & > span:first-child {\n gap: ${({ theme }) => theme.spaces[0]};\n\n ${({ theme }) => theme.breakpoints.medium} {\n gap: ${({ theme }) => theme.spaces[3]};\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 onPointerDown={(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 type=\"button\"\n >\n {Icon && <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 const isMobile = useIsMobile();\n\n const blockKeysToInclude: string[] = getEntries(blocks).reduce<string[]>(\n (currentKeys, [key, block]) => {\n return block?.isInBlocksSelector ? [...currentKeys, key] : currentKeys;\n },\n []\n );\n\n const [blockSelected, setBlockSelected] = React.useState<string>('paragraph');\n\n const handleSelect = (optionKey: unknown) => {\n if (typeof optionKey !== 'string' || !blocks[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 // Toolbar buttons steal focus in Playwright (and sometimes in real browsers), clearing\n // selection. Convert the last existing block — do not insert a new empty block, which\n // would leave the user's content behind and convert a blank node instead.\n const [, lastPath] = Editor.last(editor, []);\n Transforms.select(editor, Editor.range(editor, lastPath));\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);\n }\n }\n }, [editor.selection, editor, blocks, blockSelected]);\n\n React.useEffect(() => {\n // If the selected block is not in the list of blocks to include, change the selected block to the first one\n if (blockKeysToInclude.length > 0 && !blockKeysToInclude.includes(blockSelected)) {\n setBlockSelected(blockKeysToInclude[0]);\n }\n }, [blockKeysToInclude, blockSelected]);\n\n if (!blocks[blockSelected]) {\n return null;\n }\n\n const selectedBlock = blocks[blockSelected] as SelectorBlock;\n const Icon = selectedBlock.icon;\n\n return (\n <>\n <SelectWrapper>\n <SingleSelect\n startIcon={Icon && <Icon />}\n onChange={handleSelect}\n customizeContent={() => (isMobile ? '' : formatMessage(selectedBlock.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 const selectorBlock = blocks[key] as SelectorBlock;\n return (\n <BlockOption\n key={key}\n value={key}\n label={selectorBlock.label}\n icon={selectorBlock.icon}\n blockSelected={blockSelected}\n />\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 && <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 && <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 ReorderToolbarButtons = () => {\n const { editor, disabled, blocks, name, setLiveText } =\n useBlocksEditorContext('ReorderToolbarButtons');\n const { formatMessage } = useIntl();\n\n const selection = editor.selection;\n const totalBlocks = editor.children.length;\n\n const anchorIndex = selection ? selection.anchor.path[0] : null;\n const focusIndex = selection ? selection.focus.path[0] : null;\n const isSingleBlockSelection =\n anchorIndex !== null && focusIndex !== null && anchorIndex === focusIndex;\n\n const selectedTopLevelNode =\n isSingleBlockSelection && anchorIndex !== null ? editor.children[anchorIndex] : null;\n const selectedBlock =\n selectedTopLevelNode &&\n Object.values(blocks).find((block) => block.matchNode(selectedTopLevelNode));\n\n const isSelectedBlockDraggable =\n selectedTopLevelNode && selectedBlock\n ? (selectedBlock.isDraggable?.(selectedTopLevelNode) ?? true)\n : false;\n\n const canMoveUp =\n !disabled &&\n isSingleBlockSelection &&\n isSelectedBlockDraggable &&\n anchorIndex !== null &&\n anchorIndex > 0;\n const canMoveDown =\n !disabled &&\n isSingleBlockSelection &&\n isSelectedBlockDraggable &&\n anchorIndex !== null &&\n anchorIndex < totalBlocks - 1;\n\n const moveBlock = (direction: 'up' | 'down') => {\n if (!selection || anchorIndex === null) return;\n\n const currentIndex = [anchorIndex];\n const newIndex = [direction === 'up' ? anchorIndex - 1 : anchorIndex + 1];\n\n Transforms.moveNodes(editor, {\n at: currentIndex,\n to: newIndex,\n });\n\n // Keep the moved block focused so disabled states update immediately.\n Transforms.select(editor, Editor.start(editor, newIndex));\n ReactEditor.focus(editor);\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('components.Blocks.dnd.reorder'),\n defaultMessage: '{item}, moved. New position in the editor: {position}.',\n },\n {\n item: `${name}.${currentIndex[0] + 1}`,\n position: `${newIndex[0] + 1} of ${editor.children.length}`,\n }\n )\n );\n };\n\n return (\n <Flex direction=\"row\" gap={1}>\n <Tooltip\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n >\n <Toolbar.Button\n onPointerDown={(e) => {\n e.preventDefault();\n if (canMoveUp) moveBlock('up');\n }}\n aria-disabled={!canMoveUp}\n disabled={!canMoveUp}\n aria-label={formatMessage({\n id: getTranslation('components.DynamicZone.move-up'),\n defaultMessage: 'Move up',\n })}\n asChild\n >\n <FlexButton\n tag=\"button\"\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n <ArrowUp fill={!canMoveUp ? 'neutral300' : 'neutral600'} />\n </FlexButton>\n </Toolbar.Button>\n </Tooltip>\n\n <Tooltip\n label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n >\n <Toolbar.Button\n onPointerDown={(e) => {\n e.preventDefault();\n if (canMoveDown) moveBlock('down');\n }}\n aria-disabled={!canMoveDown}\n disabled={!canMoveDown}\n aria-label={formatMessage({\n id: getTranslation('components.DynamicZone.move-down'),\n defaultMessage: 'Move down',\n })}\n asChild\n >\n <FlexButton\n tag=\"button\"\n alignItems=\"center\"\n justifyContent=\"center\"\n width={7}\n height={7}\n hasRadius\n type=\"button\"\n >\n <ArrowDown fill={!canMoveDown ? 'neutral300' : 'neutral600'} />\n </FlexButton>\n </Toolbar.Button>\n </Tooltip>\n </Flex>\n );\n};\n\nconst BlocksToolbar = () => {\n const { editor, blocks, modifiers, disabled } = useBlocksEditorContext('BlocksToolbar');\n const { formatMessage } = useIntl();\n const isMobile = useIsMobile();\n const toolbarContainerRef = React.useRef<HTMLElement>(null);\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={{ initial: 1, medium: 2 }} width=\"100%\">\n <BlocksDropdown />\n {isMobile && (\n <>\n <ToolbarSeparator />\n <ReorderToolbarButtons />\n </>\n )}\n <ToolbarSeparator />\n <Toolbar.ToggleGroup type=\"multiple\" asChild>\n <Flex ref={toolbarContainerRef} direction=\"row\" gap={1} grow={1} overflow=\"hidden\">\n <EditorToolbarObserver\n observedComponents={observedComponents}\n containerRef={toolbarContainerRef}\n />\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","spaces","breakpoints","medium","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","onPointerDown","e","preventDefault","ReactEditor","focus","aria-disabled","aria-label","asChild","tag","background","alignItems","justifyContent","width","height","hasRadius","type","fill","BlocksDropdown","blocks","isMobile","useIsMobile","blockKeysToInclude","getEntries","reduce","currentKeys","block","isInBlocksSelector","blockSelected","setBlockSelected","handleSelect","optionKey","editorIsEmpty","children","length","Editor","isEmpty","selection","lastPath","last","Transforms","select","range","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","selectedBlock","_jsxs","_Fragment","SingleSelect","startIcon","onChange","customizeContent","onCloseAutoFocus","id","defaultMessage","map","selectorBlock","BlockOption","isSelected","SingleSelectOption","Node","isNode","ListButton","location","isListActive","isListDisabled","anchorNodeEntry","focusNodeEntry","toggleList","_","lastNodePath","StyledMenuItem","onSelect","LinkButton","isLinkActive","Array","from","nodes","unhangRange","SlateElement","isElement","Boolean","isLinkDisabled","addLink","shouldSaveLinkPath","insertLink","url","Link","Menu","Item","props","css","primary600","neutral500","ReorderToolbarButtons","setLiveText","totalBlocks","anchorIndex","path","focusIndex","isSingleBlockSelection","selectedTopLevelNode","Object","values","isSelectedBlockDraggable","isDraggable","canMoveUp","canMoveDown","moveBlock","direction","currentIndex","newIndex","moveNodes","to","getTranslation","item","position","gap","Button","ArrowUp","ArrowDown","BlocksToolbar","modifiers","toolbarContainerRef","useRef","checkButtonDisabled","isButtonDisabled","observedComponents","entries","modifier","checkIsActive","handleToggle","toolbar","menu","style","marginLeft","ToggleGroup","Root","padding","initial","ref","grow","overflow","EditorToolbarObserver","containerRef"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ var styledComponents = require('styled-components');
|
|
|
9
9
|
var translations = require('../../../../../utils/translations.js');
|
|
10
10
|
var BlocksEditor = require('./BlocksEditor.js');
|
|
11
11
|
|
|
12
|
-
const EditorLayout = ({ children, error, disabled, onToggleExpand, ariaDescriptionId })=>{
|
|
12
|
+
const EditorLayout = ({ children, error, disabled, onToggleExpand, ariaDescriptionId, livePreviewSync = false })=>{
|
|
13
13
|
const { formatMessage } = reactIntl.useIntl();
|
|
14
14
|
const { isExpandedMode } = BlocksEditor.useBlocksEditorContext('editorLayout');
|
|
15
15
|
return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
@@ -51,6 +51,7 @@ const EditorLayout = ({ children, error, disabled, onToggleExpand, ariaDescripti
|
|
|
51
51
|
height: "512px",
|
|
52
52
|
$disabled: disabled,
|
|
53
53
|
$hasError: Boolean(error),
|
|
54
|
+
minHeight: livePreviewSync ? 0 : undefined,
|
|
54
55
|
style: {
|
|
55
56
|
overflow: 'hidden'
|
|
56
57
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorLayout.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, IconButton, FlexComponent, Modal } from '@strapi/design-system';\nimport { Collapse } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { css, styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\nimport { useBlocksEditorContext } from './BlocksEditor';\n\ninterface EditorLayoutProps {\n children: React.ReactNode;\n error?: string;\n onToggleExpand: () => void;\n disabled: boolean;\n ariaDescriptionId: string;\n}\n\nconst EditorLayout = ({\n children,\n error,\n disabled,\n onToggleExpand,\n ariaDescriptionId,\n}: EditorLayoutProps) => {\n const { formatMessage } = useIntl();\n const { isExpandedMode } = useBlocksEditorContext('editorLayout');\n\n return (\n <>\n {isExpandedMode && (\n <Modal.Root open={isExpandedMode} onOpenChange={onToggleExpand}>\n <Modal.Content style={{ maxWidth: 'unset', width: 'unset' }}>\n <Flex height=\"90dvh\" width=\"90dvw\" alignItems=\"flex-start\" direction=\"column\">\n {children}\n <IconButton\n position=\"absolute\"\n bottom=\"1.2rem\"\n right=\"1.2rem\"\n shadow=\"filterShadow\"\n label={formatMessage({\n id: getTranslation('components.Blocks.collapse'),\n defaultMessage: 'Collapse',\n })}\n onClick={onToggleExpand}\n >\n <Collapse />\n </IconButton>\n </Flex>\n </Modal.Content>\n </Modal.Root>\n )}\n <InputWrapper\n direction=\"column\"\n alignItems=\"flex-start\"\n height=\"512px\"\n $disabled={disabled}\n $hasError={Boolean(error)}\n style={{ overflow: 'hidden' }}\n aria-describedby={ariaDescriptionId}\n position=\"relative\"\n >\n {!isExpandedMode && children}\n </InputWrapper>\n </>\n );\n};\n\nconst InputWrapper = styled<FlexComponent>(Flex)<{ $disabled?: boolean; $hasError?: boolean }>`\n border: 1px solid\n ${({ theme, $hasError }) => ($hasError ? theme.colors.danger600 : theme.colors.neutral200)};\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) => theme.colors.neutral0};\n\n ${({ theme, $hasError = false }) => css`\n outline: none;\n box-shadow: 0;\n transition-property: border-color, box-shadow, fill;\n transition-duration: 0.2s;\n\n &:focus-within {\n border: 1px solid ${$hasError ? theme.colors.danger600 : theme.colors.primary600};\n box-shadow: ${$hasError ? theme.colors.danger600 : theme.colors.primary600} 0px 0px 0px 2px;\n }\n `}\n\n ${({ theme, $disabled }) =>\n $disabled\n ? css`\n color: ${theme.colors.neutral600};\n background: ${theme.colors.neutral150};\n `\n : undefined}\n`;\n\nexport { EditorLayout };\n"],"names":["EditorLayout","children","error","disabled","onToggleExpand","ariaDescriptionId","formatMessage","useIntl","isExpandedMode","useBlocksEditorContext","_jsxs","_Fragment","_jsx","Modal","Root","open","onOpenChange","Content","style","maxWidth","width","Flex","height","alignItems","direction","IconButton","position","bottom","right","shadow","label","id","getTranslation","defaultMessage","onClick","Collapse","InputWrapper","$disabled","$hasError","Boolean","overflow","aria-describedby","styled","theme","colors","danger600","neutral200","borderRadius","neutral0","css","primary600","neutral600","neutral150"
|
|
1
|
+
{"version":3,"file":"EditorLayout.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, IconButton, FlexComponent, Modal } from '@strapi/design-system';\nimport { Collapse } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { css, styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\nimport { useBlocksEditorContext } from './BlocksEditor';\n\ninterface EditorLayoutProps {\n children: React.ReactNode;\n error?: string;\n onToggleExpand: () => void;\n disabled: boolean;\n ariaDescriptionId: string;\n livePreviewSync?: boolean;\n}\n\nconst EditorLayout = ({\n children,\n error,\n disabled,\n onToggleExpand,\n ariaDescriptionId,\n livePreviewSync = false,\n}: EditorLayoutProps) => {\n const { formatMessage } = useIntl();\n const { isExpandedMode } = useBlocksEditorContext('editorLayout');\n\n return (\n <>\n {isExpandedMode && (\n <Modal.Root open={isExpandedMode} onOpenChange={onToggleExpand}>\n <Modal.Content style={{ maxWidth: 'unset', width: 'unset' }}>\n <Flex height=\"90dvh\" width=\"90dvw\" alignItems=\"flex-start\" direction=\"column\">\n {children}\n <IconButton\n position=\"absolute\"\n bottom=\"1.2rem\"\n right=\"1.2rem\"\n shadow=\"filterShadow\"\n label={formatMessage({\n id: getTranslation('components.Blocks.collapse'),\n defaultMessage: 'Collapse',\n })}\n onClick={onToggleExpand}\n >\n <Collapse />\n </IconButton>\n </Flex>\n </Modal.Content>\n </Modal.Root>\n )}\n <InputWrapper\n direction=\"column\"\n alignItems=\"flex-start\"\n height=\"512px\"\n $disabled={disabled}\n $hasError={Boolean(error)}\n minHeight={livePreviewSync ? 0 : undefined}\n style={{ overflow: 'hidden' }}\n aria-describedby={ariaDescriptionId}\n position=\"relative\"\n >\n {!isExpandedMode && children}\n </InputWrapper>\n </>\n );\n};\n\nconst InputWrapper = styled<FlexComponent>(Flex)<{ $disabled?: boolean; $hasError?: boolean }>`\n border: 1px solid\n ${({ theme, $hasError }) => ($hasError ? theme.colors.danger600 : theme.colors.neutral200)};\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) => theme.colors.neutral0};\n\n ${({ theme, $hasError = false }) => css`\n outline: none;\n box-shadow: 0;\n transition-property: border-color, box-shadow, fill;\n transition-duration: 0.2s;\n\n &:focus-within {\n border: 1px solid ${$hasError ? theme.colors.danger600 : theme.colors.primary600};\n box-shadow: ${$hasError ? theme.colors.danger600 : theme.colors.primary600} 0px 0px 0px 2px;\n }\n `}\n\n ${({ theme, $disabled }) =>\n $disabled\n ? css`\n color: ${theme.colors.neutral600};\n background: ${theme.colors.neutral150};\n `\n : undefined}\n`;\n\nexport { EditorLayout };\n"],"names":["EditorLayout","children","error","disabled","onToggleExpand","ariaDescriptionId","livePreviewSync","formatMessage","useIntl","isExpandedMode","useBlocksEditorContext","_jsxs","_Fragment","_jsx","Modal","Root","open","onOpenChange","Content","style","maxWidth","width","Flex","height","alignItems","direction","IconButton","position","bottom","right","shadow","label","id","getTranslation","defaultMessage","onClick","Collapse","InputWrapper","$disabled","$hasError","Boolean","minHeight","undefined","overflow","aria-describedby","styled","theme","colors","danger600","neutral200","borderRadius","neutral0","css","primary600","neutral600","neutral150"],"mappings":";;;;;;;;;;;AAoBA,MAAMA,YAAAA,GAAe,CAAC,EACpBC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,cAAc,EACdC,iBAAiB,EACjBC,eAAAA,GAAkB,KAAK,EACL,GAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,cAAc,EAAE,GAAGC,mCAAAA,CAAuB,cAAA,CAAA;IAElD,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;YACGH,cAAAA,kBACCI,cAAA,CAACC,mBAAMC,IAAI,EAAA;gBAACC,IAAAA,EAAMP,cAAAA;gBAAgBQ,YAAAA,EAAcb,cAAAA;wCAC9CS,cAAA,CAACC,mBAAMI,OAAO,EAAA;oBAACC,KAAAA,EAAO;wBAAEC,QAAAA,EAAU,OAAA;wBAASC,KAAAA,EAAO;AAAQ,qBAAA;AACxD,oBAAA,QAAA,gBAAAV,eAAA,CAACW,iBAAAA,EAAAA;wBAAKC,MAAAA,EAAO,OAAA;wBAAQF,KAAAA,EAAM,OAAA;wBAAQG,UAAAA,EAAW,YAAA;wBAAaC,SAAAA,EAAU,QAAA;;AAClExB,4BAAAA,QAAAA;0CACDY,cAAA,CAACa,uBAAAA,EAAAA;gCACCC,QAAAA,EAAS,UAAA;gCACTC,MAAAA,EAAO,QAAA;gCACPC,KAAAA,EAAM,QAAA;gCACNC,MAAAA,EAAO,cAAA;AACPC,gCAAAA,KAAAA,EAAOxB,aAAAA,CAAc;AACnByB,oCAAAA,EAAAA,EAAIC,2BAAAA,CAAe,4BAAA,CAAA;oCACnBC,cAAAA,EAAgB;AAClB,iCAAA,CAAA;gCACAC,OAAAA,EAAS/B,cAAAA;AAET,gCAAA,QAAA,gBAAAS,cAAA,CAACuB,cAAAA,EAAAA,EAAAA;;;;;;0BAMXvB,cAAA,CAACwB,YAAAA,EAAAA;gBACCZ,SAAAA,EAAU,QAAA;gBACVD,UAAAA,EAAW,YAAA;gBACXD,MAAAA,EAAO,OAAA;gBACPe,SAAAA,EAAWnC,QAAAA;AACXoC,gBAAAA,SAAAA,EAAWC,OAAAA,CAAQtC,KAAAA,CAAAA;AACnBuC,gBAAAA,SAAAA,EAAWnC,kBAAkB,CAAA,GAAIoC,SAAAA;gBACjCvB,KAAAA,EAAO;oBAAEwB,QAAAA,EAAU;AAAS,iBAAA;gBAC5BC,kBAAAA,EAAkBvC,iBAAAA;gBAClBsB,QAAAA,EAAS,UAAA;AAER,gBAAA,QAAA,EAAA,CAAClB,cAAAA,IAAkBR;;;;AAI5B;AAEA,MAAMoC,YAAAA,GAAeQ,uBAAAA,CAAsBvB,iBAAAA,CAAmD;;AAE1F,IAAA,EAAE,CAAC,EAAEwB,KAAK,EAAEP,SAAS,EAAE,GAAMA,SAAAA,GAAYO,KAAAA,CAAMC,MAAM,CAACC,SAAS,GAAGF,MAAMC,MAAM,CAACE,UAAU,CAAE;AAC9E,iBAAA,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAAA,CAAMI,YAAY,CAAC;cACvC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACI,QAAQ,CAAC;;EAEnD,EAAE,CAAC,EAAEL,KAAK,EAAEP,YAAY,KAAK,EAAE,GAAKa,oBAAG;;;;;;;wBAOjB,EAAEb,SAAAA,GAAYO,KAAAA,CAAMC,MAAM,CAACC,SAAS,GAAGF,KAAAA,CAAMC,MAAM,CAACM,UAAU,CAAC;kBACrE,EAAEd,SAAAA,GAAYO,KAAAA,CAAMC,MAAM,CAACC,SAAS,GAAGF,KAAAA,CAAMC,MAAM,CAACM,UAAU,CAAC;;AAE/E,EAAA,CAAC;;EAED,EAAE,CAAC,EAAEP,KAAK,EAAER,SAAS,EAAE,GACrBA,SAAAA,GACIc,oBAAG;AACM,iBAAA,EAAEN,KAAAA,CAAMC,MAAM,CAACO,UAAU,CAAC;AACrB,sBAAA,EAAER,KAAAA,CAAMC,MAAM,CAACQ,UAAU,CAAC;AACxC,QAAA,CAAC,GACDb,SAAAA;AACR,CAAC;;;;"}
|
|
@@ -7,7 +7,7 @@ import { css, styled } from 'styled-components';
|
|
|
7
7
|
import { getTranslation } from '../../../../../utils/translations.mjs';
|
|
8
8
|
import { useBlocksEditorContext } from './BlocksEditor.mjs';
|
|
9
9
|
|
|
10
|
-
const EditorLayout = ({ children, error, disabled, onToggleExpand, ariaDescriptionId })=>{
|
|
10
|
+
const EditorLayout = ({ children, error, disabled, onToggleExpand, ariaDescriptionId, livePreviewSync = false })=>{
|
|
11
11
|
const { formatMessage } = useIntl();
|
|
12
12
|
const { isExpandedMode } = useBlocksEditorContext('editorLayout');
|
|
13
13
|
return /*#__PURE__*/ jsxs(Fragment, {
|
|
@@ -49,6 +49,7 @@ const EditorLayout = ({ children, error, disabled, onToggleExpand, ariaDescripti
|
|
|
49
49
|
height: "512px",
|
|
50
50
|
$disabled: disabled,
|
|
51
51
|
$hasError: Boolean(error),
|
|
52
|
+
minHeight: livePreviewSync ? 0 : undefined,
|
|
52
53
|
style: {
|
|
53
54
|
overflow: 'hidden'
|
|
54
55
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorLayout.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, IconButton, FlexComponent, Modal } from '@strapi/design-system';\nimport { Collapse } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { css, styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\nimport { useBlocksEditorContext } from './BlocksEditor';\n\ninterface EditorLayoutProps {\n children: React.ReactNode;\n error?: string;\n onToggleExpand: () => void;\n disabled: boolean;\n ariaDescriptionId: string;\n}\n\nconst EditorLayout = ({\n children,\n error,\n disabled,\n onToggleExpand,\n ariaDescriptionId,\n}: EditorLayoutProps) => {\n const { formatMessage } = useIntl();\n const { isExpandedMode } = useBlocksEditorContext('editorLayout');\n\n return (\n <>\n {isExpandedMode && (\n <Modal.Root open={isExpandedMode} onOpenChange={onToggleExpand}>\n <Modal.Content style={{ maxWidth: 'unset', width: 'unset' }}>\n <Flex height=\"90dvh\" width=\"90dvw\" alignItems=\"flex-start\" direction=\"column\">\n {children}\n <IconButton\n position=\"absolute\"\n bottom=\"1.2rem\"\n right=\"1.2rem\"\n shadow=\"filterShadow\"\n label={formatMessage({\n id: getTranslation('components.Blocks.collapse'),\n defaultMessage: 'Collapse',\n })}\n onClick={onToggleExpand}\n >\n <Collapse />\n </IconButton>\n </Flex>\n </Modal.Content>\n </Modal.Root>\n )}\n <InputWrapper\n direction=\"column\"\n alignItems=\"flex-start\"\n height=\"512px\"\n $disabled={disabled}\n $hasError={Boolean(error)}\n style={{ overflow: 'hidden' }}\n aria-describedby={ariaDescriptionId}\n position=\"relative\"\n >\n {!isExpandedMode && children}\n </InputWrapper>\n </>\n );\n};\n\nconst InputWrapper = styled<FlexComponent>(Flex)<{ $disabled?: boolean; $hasError?: boolean }>`\n border: 1px solid\n ${({ theme, $hasError }) => ($hasError ? theme.colors.danger600 : theme.colors.neutral200)};\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) => theme.colors.neutral0};\n\n ${({ theme, $hasError = false }) => css`\n outline: none;\n box-shadow: 0;\n transition-property: border-color, box-shadow, fill;\n transition-duration: 0.2s;\n\n &:focus-within {\n border: 1px solid ${$hasError ? theme.colors.danger600 : theme.colors.primary600};\n box-shadow: ${$hasError ? theme.colors.danger600 : theme.colors.primary600} 0px 0px 0px 2px;\n }\n `}\n\n ${({ theme, $disabled }) =>\n $disabled\n ? css`\n color: ${theme.colors.neutral600};\n background: ${theme.colors.neutral150};\n `\n : undefined}\n`;\n\nexport { EditorLayout };\n"],"names":["EditorLayout","children","error","disabled","onToggleExpand","ariaDescriptionId","formatMessage","useIntl","isExpandedMode","useBlocksEditorContext","_jsxs","_Fragment","_jsx","Modal","Root","open","onOpenChange","Content","style","maxWidth","width","Flex","height","alignItems","direction","IconButton","position","bottom","right","shadow","label","id","getTranslation","defaultMessage","onClick","Collapse","InputWrapper","$disabled","$hasError","Boolean","overflow","aria-describedby","styled","theme","colors","danger600","neutral200","borderRadius","neutral0","css","primary600","neutral600","neutral150"
|
|
1
|
+
{"version":3,"file":"EditorLayout.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, IconButton, FlexComponent, Modal } from '@strapi/design-system';\nimport { Collapse } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { css, styled } from 'styled-components';\n\nimport { getTranslation } from '../../../../../utils/translations';\n\nimport { useBlocksEditorContext } from './BlocksEditor';\n\ninterface EditorLayoutProps {\n children: React.ReactNode;\n error?: string;\n onToggleExpand: () => void;\n disabled: boolean;\n ariaDescriptionId: string;\n livePreviewSync?: boolean;\n}\n\nconst EditorLayout = ({\n children,\n error,\n disabled,\n onToggleExpand,\n ariaDescriptionId,\n livePreviewSync = false,\n}: EditorLayoutProps) => {\n const { formatMessage } = useIntl();\n const { isExpandedMode } = useBlocksEditorContext('editorLayout');\n\n return (\n <>\n {isExpandedMode && (\n <Modal.Root open={isExpandedMode} onOpenChange={onToggleExpand}>\n <Modal.Content style={{ maxWidth: 'unset', width: 'unset' }}>\n <Flex height=\"90dvh\" width=\"90dvw\" alignItems=\"flex-start\" direction=\"column\">\n {children}\n <IconButton\n position=\"absolute\"\n bottom=\"1.2rem\"\n right=\"1.2rem\"\n shadow=\"filterShadow\"\n label={formatMessage({\n id: getTranslation('components.Blocks.collapse'),\n defaultMessage: 'Collapse',\n })}\n onClick={onToggleExpand}\n >\n <Collapse />\n </IconButton>\n </Flex>\n </Modal.Content>\n </Modal.Root>\n )}\n <InputWrapper\n direction=\"column\"\n alignItems=\"flex-start\"\n height=\"512px\"\n $disabled={disabled}\n $hasError={Boolean(error)}\n minHeight={livePreviewSync ? 0 : undefined}\n style={{ overflow: 'hidden' }}\n aria-describedby={ariaDescriptionId}\n position=\"relative\"\n >\n {!isExpandedMode && children}\n </InputWrapper>\n </>\n );\n};\n\nconst InputWrapper = styled<FlexComponent>(Flex)<{ $disabled?: boolean; $hasError?: boolean }>`\n border: 1px solid\n ${({ theme, $hasError }) => ($hasError ? theme.colors.danger600 : theme.colors.neutral200)};\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) => theme.colors.neutral0};\n\n ${({ theme, $hasError = false }) => css`\n outline: none;\n box-shadow: 0;\n transition-property: border-color, box-shadow, fill;\n transition-duration: 0.2s;\n\n &:focus-within {\n border: 1px solid ${$hasError ? theme.colors.danger600 : theme.colors.primary600};\n box-shadow: ${$hasError ? theme.colors.danger600 : theme.colors.primary600} 0px 0px 0px 2px;\n }\n `}\n\n ${({ theme, $disabled }) =>\n $disabled\n ? css`\n color: ${theme.colors.neutral600};\n background: ${theme.colors.neutral150};\n `\n : undefined}\n`;\n\nexport { EditorLayout };\n"],"names":["EditorLayout","children","error","disabled","onToggleExpand","ariaDescriptionId","livePreviewSync","formatMessage","useIntl","isExpandedMode","useBlocksEditorContext","_jsxs","_Fragment","_jsx","Modal","Root","open","onOpenChange","Content","style","maxWidth","width","Flex","height","alignItems","direction","IconButton","position","bottom","right","shadow","label","id","getTranslation","defaultMessage","onClick","Collapse","InputWrapper","$disabled","$hasError","Boolean","minHeight","undefined","overflow","aria-describedby","styled","theme","colors","danger600","neutral200","borderRadius","neutral0","css","primary600","neutral600","neutral150"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
require('react');
|
|
4
|
+
var React = require('react');
|
|
5
5
|
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
6
6
|
var designSystem = require('@strapi/design-system');
|
|
7
7
|
var Icons = require('@strapi/icons');
|
|
@@ -9,6 +9,26 @@ var reactIntl = require('react-intl');
|
|
|
9
9
|
var EditorToolbarObserver = require('../../EditorToolbarObserver.js');
|
|
10
10
|
var utils = require('./utils/utils.js');
|
|
11
11
|
|
|
12
|
+
function _interopNamespace(e) {
|
|
13
|
+
if (e && e.__esModule) return e;
|
|
14
|
+
var n = Object.create(null);
|
|
15
|
+
if (e) {
|
|
16
|
+
Object.keys(e).forEach(function (k) {
|
|
17
|
+
if (k !== 'default') {
|
|
18
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
19
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return e[k]; }
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
n.default = e;
|
|
27
|
+
return Object.freeze(n);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
31
|
+
|
|
12
32
|
const WysiwygPreviewToggleButton = ({ isPreviewMode, onTogglePreviewMode })=>{
|
|
13
33
|
const { formatMessage } = reactIntl.useIntl();
|
|
14
34
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
@@ -30,6 +50,7 @@ const WysiwygPreviewToggleButton = ({ isPreviewMode, onTogglePreviewMode })=>{
|
|
|
30
50
|
const { formatMessage } = reactIntl.useIntl();
|
|
31
51
|
const isMobile = strapiAdmin.useIsMobile();
|
|
32
52
|
const isDisabled = disabled || isPreviewMode;
|
|
53
|
+
const toolbarContainerRef = React__namespace.useRef(null);
|
|
33
54
|
const handleActionClick = (value, currentEditorRef)=>{
|
|
34
55
|
switch(value){
|
|
35
56
|
case 'Link':
|
|
@@ -486,6 +507,7 @@ const WysiwygPreviewToggleButton = ({ isPreviewMode, onTogglePreviewMode })=>{
|
|
|
486
507
|
overflow: "hidden",
|
|
487
508
|
children: [
|
|
488
509
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
510
|
+
ref: toolbarContainerRef,
|
|
489
511
|
gap: {
|
|
490
512
|
initial: 3,
|
|
491
513
|
medium: 2
|
|
@@ -495,7 +517,8 @@ const WysiwygPreviewToggleButton = ({ isPreviewMode, onTogglePreviewMode })=>{
|
|
|
495
517
|
"data-hide-toolbar-separator": "true",
|
|
496
518
|
children: /*#__PURE__*/ jsxRuntime.jsx(EditorToolbarObserver.EditorToolbarObserver, {
|
|
497
519
|
menuTriggerVariant: "tertiary",
|
|
498
|
-
observedComponents: observedComponents
|
|
520
|
+
observedComponents: observedComponents,
|
|
521
|
+
containerRef: toolbarContainerRef
|
|
499
522
|
})
|
|
500
523
|
}),
|
|
501
524
|
onTogglePreviewMode && !isMobile && /*#__PURE__*/ jsxRuntime.jsx(WysiwygPreviewToggleButton, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WysiwygNav.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useIsMobile } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n IconButton,\n IconButtonGroup,\n SingleSelectOption,\n SingleSelect,\n Field,\n Menu,\n} from '@strapi/design-system';\nimport {\n Bold,\n BulletList,\n Code,\n Italic,\n Link,\n NumberList,\n Image,\n Quotes,\n StrikeThrough,\n Underline,\n HeadingOne,\n HeadingTwo,\n HeadingThree,\n HeadingFour,\n HeadingFive,\n HeadingSix,\n} from '@strapi/icons';\nimport { EditorFromTextArea } from 'codemirror5';\nimport { useIntl } from 'react-intl';\n\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { listHandler, markdownHandler, quoteAndCodeHandler, titleHandler } from './utils/utils';\n\ninterface WysiwygNavProps {\n disabled?: boolean;\n editorRef: React.MutableRefObject<EditorFromTextArea>;\n isExpandMode?: boolean;\n isPreviewMode?: boolean;\n onToggleMediaLib: () => void;\n onTogglePreviewMode?: () => void;\n}\n\ninterface WysiwygPreviewToggleButtonProps {\n isPreviewMode?: boolean;\n onTogglePreviewMode: () => void;\n}\n\nconst WysiwygPreviewToggleButton = ({\n isPreviewMode,\n onTogglePreviewMode,\n}: WysiwygPreviewToggleButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Button onClick={onTogglePreviewMode} variant=\"tertiary\" minWidth=\"132px\">\n {isPreviewMode\n ? formatMessage({\n id: 'components.Wysiwyg.ToggleMode.markdown-mode',\n defaultMessage: 'Markdown mode',\n })\n : formatMessage({\n id: 'components.Wysiwyg.ToggleMode.preview-mode',\n defaultMessage: 'Preview mode',\n })}\n </Button>\n );\n};\n\n/**\n * TODO: refactor this mess.\n */\nconst WysiwygNav = ({\n disabled,\n editorRef,\n isPreviewMode,\n onToggleMediaLib,\n onTogglePreviewMode,\n}: WysiwygNavProps) => {\n const { formatMessage } = useIntl();\n const isMobile = useIsMobile();\n const isDisabled = disabled || isPreviewMode;\n\n const handleActionClick = (\n value: string,\n currentEditorRef: React.MutableRefObject<EditorFromTextArea>\n ) => {\n switch (value) {\n case 'Link': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'Code':\n case 'Quote': {\n quoteAndCodeHandler(currentEditorRef, value);\n break;\n }\n case 'Bold':\n case 'Italic':\n case 'Underline':\n case 'Strikethrough': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'BulletList':\n case 'NumberList': {\n listHandler(currentEditorRef, value);\n break;\n }\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6': {\n titleHandler(currentEditorRef, value);\n break;\n }\n default: {\n // Nothing\n }\n }\n };\n\n const observedComponents: ObservedComponent[] = [\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Bold', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n >\n <Bold />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Italic', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n >\n <Italic />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Underline', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n >\n <Underline />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Strikethrough', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n >\n <StrikeThrough />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Bold fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Bold', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Italic fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Italic', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Underline fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Underline', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<StrikeThrough fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Strikethrough', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-1',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('BulletList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n >\n <BulletList />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('NumberList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n >\n <NumberList />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<BulletList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('BulletList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<NumberList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('NumberList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-2',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Code', editorRef)}\n label={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n name={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n >\n <Code />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => {\n onToggleMediaLib();\n }}\n label={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n >\n <Image />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Link', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n name={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n >\n <Link />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Quote', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n >\n <Quotes />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Code fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Code', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Image fill=\"neutral500\" />}\n onSelect={() => {\n onToggleMediaLib();\n }}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Link fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Link', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Quotes fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Quote', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-3',\n },\n ];\n\n return (\n <Flex\n padding={2}\n background=\"neutral100\"\n justifyContent=\"space-between\"\n borderRadius=\"0.4rem 0.4rem 0 0\"\n width=\"100%\"\n gap={{ initial: 3, medium: 4 }}\n >\n <Field.Root>\n <SingleSelect\n disabled={isDisabled}\n placeholder={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n aria-label={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n // @ts-expect-error – DS v2 will only allow strings.\n onChange={(value) => handleActionClick(value, editorRef)}\n size=\"S\"\n >\n <SingleSelectOption value=\"h1\" startIcon={<HeadingOne fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H1',\n defaultMessage: 'Heading 1',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h2\" startIcon={<HeadingTwo fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H2',\n defaultMessage: 'Heading 2',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h3\" startIcon={<HeadingThree fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H3',\n defaultMessage: 'Heading 3',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h4\" startIcon={<HeadingFour fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H4',\n defaultMessage: 'Heading 4',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h5\" startIcon={<HeadingFive fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H5',\n defaultMessage: 'Heading 5',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h6\" startIcon={<HeadingSix fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H6',\n defaultMessage: 'Heading 6',\n })}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n <Flex width=\"100%\" justifyContent=\"space-between\" overflow=\"hidden\">\n <Flex\n gap={{ initial: 3, medium: 2 }}\n overflow=\"hidden\"\n width=\"100%\"\n data-hide-toolbar-separator=\"true\"\n >\n <EditorToolbarObserver\n menuTriggerVariant=\"tertiary\"\n observedComponents={observedComponents}\n />\n </Flex>\n\n {onTogglePreviewMode && !isMobile && (\n <WysiwygPreviewToggleButton\n isPreviewMode={isPreviewMode}\n onTogglePreviewMode={onTogglePreviewMode}\n />\n )}\n </Flex>\n </Flex>\n );\n};\n\nexport { WysiwygNav, WysiwygPreviewToggleButton };\nexport type { WysiwygNavProps, WysiwygPreviewToggleButtonProps };\n"],"names":["WysiwygPreviewToggleButton","isPreviewMode","onTogglePreviewMode","formatMessage","useIntl","_jsx","Button","onClick","variant","minWidth","id","defaultMessage","WysiwygNav","disabled","editorRef","onToggleMediaLib","isMobile","useIsMobile","isDisabled","handleActionClick","value","currentEditorRef","markdownHandler","quoteAndCodeHandler","listHandler","titleHandler","observedComponents","toolbar","_jsxs","IconButtonGroup","IconButton","label","name","Bold","Italic","Underline","StrikeThrough","menu","_Fragment","Menu","Separator","Item","startIcon","fill","onSelect","Flex","tag","gap","key","BulletList","NumberList","Code","Image","Link","Quotes","padding","background","justifyContent","borderRadius","width","initial","medium","Field","Root","SingleSelect","placeholder","aria-label","onChange","size","SingleSelectOption","HeadingOne","HeadingTwo","HeadingThree","HeadingFour","HeadingFive","HeadingSix","overflow","data-hide-toolbar-separator","EditorToolbarObserver","menuTriggerVariant"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WysiwygNav.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useIsMobile } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n IconButton,\n IconButtonGroup,\n SingleSelectOption,\n SingleSelect,\n Field,\n Menu,\n} from '@strapi/design-system';\nimport {\n Bold,\n BulletList,\n Code,\n Italic,\n Link,\n NumberList,\n Image,\n Quotes,\n StrikeThrough,\n Underline,\n HeadingOne,\n HeadingTwo,\n HeadingThree,\n HeadingFour,\n HeadingFive,\n HeadingSix,\n} from '@strapi/icons';\nimport { EditorFromTextArea } from 'codemirror5';\nimport { useIntl } from 'react-intl';\n\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { listHandler, markdownHandler, quoteAndCodeHandler, titleHandler } from './utils/utils';\n\ninterface WysiwygNavProps {\n disabled?: boolean;\n editorRef: React.MutableRefObject<EditorFromTextArea>;\n isExpandMode?: boolean;\n isPreviewMode?: boolean;\n onToggleMediaLib: () => void;\n onTogglePreviewMode?: () => void;\n}\n\ninterface WysiwygPreviewToggleButtonProps {\n isPreviewMode?: boolean;\n onTogglePreviewMode: () => void;\n}\n\nconst WysiwygPreviewToggleButton = ({\n isPreviewMode,\n onTogglePreviewMode,\n}: WysiwygPreviewToggleButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Button onClick={onTogglePreviewMode} variant=\"tertiary\" minWidth=\"132px\">\n {isPreviewMode\n ? formatMessage({\n id: 'components.Wysiwyg.ToggleMode.markdown-mode',\n defaultMessage: 'Markdown mode',\n })\n : formatMessage({\n id: 'components.Wysiwyg.ToggleMode.preview-mode',\n defaultMessage: 'Preview mode',\n })}\n </Button>\n );\n};\n\n/**\n * TODO: refactor this mess.\n */\nconst WysiwygNav = ({\n disabled,\n editorRef,\n isPreviewMode,\n onToggleMediaLib,\n onTogglePreviewMode,\n}: WysiwygNavProps) => {\n const { formatMessage } = useIntl();\n const isMobile = useIsMobile();\n const isDisabled = disabled || isPreviewMode;\n const toolbarContainerRef = React.useRef<HTMLElement>(null);\n\n const handleActionClick = (\n value: string,\n currentEditorRef: React.MutableRefObject<EditorFromTextArea>\n ) => {\n switch (value) {\n case 'Link': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'Code':\n case 'Quote': {\n quoteAndCodeHandler(currentEditorRef, value);\n break;\n }\n case 'Bold':\n case 'Italic':\n case 'Underline':\n case 'Strikethrough': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'BulletList':\n case 'NumberList': {\n listHandler(currentEditorRef, value);\n break;\n }\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6': {\n titleHandler(currentEditorRef, value);\n break;\n }\n default: {\n // Nothing\n }\n }\n };\n\n const observedComponents: ObservedComponent[] = [\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Bold', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n >\n <Bold />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Italic', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n >\n <Italic />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Underline', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n >\n <Underline />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Strikethrough', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n >\n <StrikeThrough />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Bold fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Bold', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Italic fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Italic', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Underline fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Underline', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<StrikeThrough fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Strikethrough', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-1',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('BulletList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n >\n <BulletList />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('NumberList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n >\n <NumberList />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<BulletList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('BulletList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<NumberList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('NumberList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-2',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Code', editorRef)}\n label={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n name={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n >\n <Code />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => {\n onToggleMediaLib();\n }}\n label={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n >\n <Image />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Link', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n name={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n >\n <Link />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Quote', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n >\n <Quotes />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Code fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Code', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Image fill=\"neutral500\" />}\n onSelect={() => {\n onToggleMediaLib();\n }}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Link fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Link', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Quotes fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Quote', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-3',\n },\n ];\n\n return (\n <Flex\n padding={2}\n background=\"neutral100\"\n justifyContent=\"space-between\"\n borderRadius=\"0.4rem 0.4rem 0 0\"\n width=\"100%\"\n gap={{ initial: 3, medium: 4 }}\n >\n <Field.Root>\n <SingleSelect\n disabled={isDisabled}\n placeholder={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n aria-label={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n // @ts-expect-error – DS v2 will only allow strings.\n onChange={(value) => handleActionClick(value, editorRef)}\n size=\"S\"\n >\n <SingleSelectOption value=\"h1\" startIcon={<HeadingOne fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H1',\n defaultMessage: 'Heading 1',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h2\" startIcon={<HeadingTwo fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H2',\n defaultMessage: 'Heading 2',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h3\" startIcon={<HeadingThree fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H3',\n defaultMessage: 'Heading 3',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h4\" startIcon={<HeadingFour fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H4',\n defaultMessage: 'Heading 4',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h5\" startIcon={<HeadingFive fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H5',\n defaultMessage: 'Heading 5',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h6\" startIcon={<HeadingSix fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H6',\n defaultMessage: 'Heading 6',\n })}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n <Flex width=\"100%\" justifyContent=\"space-between\" overflow=\"hidden\">\n <Flex\n ref={toolbarContainerRef}\n gap={{ initial: 3, medium: 2 }}\n overflow=\"hidden\"\n width=\"100%\"\n data-hide-toolbar-separator=\"true\"\n >\n <EditorToolbarObserver\n menuTriggerVariant=\"tertiary\"\n observedComponents={observedComponents}\n containerRef={toolbarContainerRef}\n />\n </Flex>\n\n {onTogglePreviewMode && !isMobile && (\n <WysiwygPreviewToggleButton\n isPreviewMode={isPreviewMode}\n onTogglePreviewMode={onTogglePreviewMode}\n />\n )}\n </Flex>\n </Flex>\n );\n};\n\nexport { WysiwygNav, WysiwygPreviewToggleButton };\nexport type { WysiwygNavProps, WysiwygPreviewToggleButtonProps };\n"],"names":["WysiwygPreviewToggleButton","isPreviewMode","onTogglePreviewMode","formatMessage","useIntl","_jsx","Button","onClick","variant","minWidth","id","defaultMessage","WysiwygNav","disabled","editorRef","onToggleMediaLib","isMobile","useIsMobile","isDisabled","toolbarContainerRef","React","useRef","handleActionClick","value","currentEditorRef","markdownHandler","quoteAndCodeHandler","listHandler","titleHandler","observedComponents","toolbar","_jsxs","IconButtonGroup","IconButton","label","name","Bold","Italic","Underline","StrikeThrough","menu","_Fragment","Menu","Separator","Item","startIcon","fill","onSelect","Flex","tag","gap","key","BulletList","NumberList","Code","Image","Link","Quotes","padding","background","justifyContent","borderRadius","width","initial","medium","Field","Root","SingleSelect","placeholder","aria-label","onChange","size","SingleSelectOption","HeadingOne","HeadingTwo","HeadingThree","HeadingFour","HeadingFive","HeadingSix","overflow","ref","data-hide-toolbar-separator","EditorToolbarObserver","menuTriggerVariant","containerRef"],"mappings":"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"}
|