@wordpress/block-editor
Version:
8 lines (7 loc) • 16.1 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/components/list-view/drop-indicator.js"],
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tPopover,\n} from '@wordpress/components';\n\nimport { getScrollContainer } from '@wordpress/dom';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { isRTL } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport ListViewExpander from './expander';\n\nexport default function ListViewDropIndicatorPreview( {\n\tdraggedBlockClientId,\n\tlistViewRef,\n\tblockDropTarget,\n} ) {\n\tconst blockInformation = useBlockDisplayInformation( draggedBlockClientId );\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: draggedBlockClientId,\n\t\tcontext: 'list-view',\n\t} );\n\n\tconst { rootClientId, clientId, dropPosition } = blockDropTarget || {};\n\n\tconst [ rootBlockElement, blockElement ] = useMemo( () => {\n\t\tif ( ! listViewRef.current ) {\n\t\t\treturn [];\n\t\t}\n\n\t\t// The rootClientId will be defined whenever dropping into inner\n\t\t// block lists, but is undefined when dropping at the root level.\n\t\tconst _rootBlockElement = rootClientId\n\t\t\t? listViewRef.current.querySelector(\n\t\t\t\t\t`[data-block=\"${ rootClientId }\"]`\n\t\t\t )\n\t\t\t: undefined;\n\n\t\t// The clientId represents the sibling block, the dragged block will\n\t\t// usually be inserted adjacent to it. It will be undefined when\n\t\t// dropping a block into an empty block list.\n\t\tconst _blockElement = clientId\n\t\t\t? listViewRef.current.querySelector(\n\t\t\t\t\t`[data-block=\"${ clientId }\"]`\n\t\t\t )\n\t\t\t: undefined;\n\n\t\treturn [ _rootBlockElement, _blockElement ];\n\t}, [ listViewRef, rootClientId, clientId ] );\n\n\t// The targetElement is the element that the drop indicator will appear\n\t// before or after. When dropping into an empty block list, blockElement\n\t// is undefined, so the indicator will appear after the rootBlockElement.\n\tconst targetElement = blockElement || rootBlockElement;\n\n\tconst rtl = isRTL();\n\n\tconst getDropIndicatorWidth = useCallback(\n\t\t( targetElementRect, indent ) => {\n\t\t\tif ( ! targetElement ) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// Default to assuming that the width of the drop indicator\n\t\t\t// should be the same as the target element.\n\t\t\tlet width = targetElement.offsetWidth;\n\n\t\t\t// In deeply nested lists, where a scrollbar is present,\n\t\t\t// the width of the drop indicator should be the width of\n\t\t\t// the scroll container, minus the distance from the left\n\t\t\t// edge of the scroll container to the left edge of the\n\t\t\t// target element.\n\t\t\tconst scrollContainer = getScrollContainer(\n\t\t\t\ttargetElement,\n\t\t\t\t'horizontal'\n\t\t\t);\n\n\t\t\tconst ownerDocument = targetElement.ownerDocument;\n\t\t\tconst windowScroll =\n\t\t\t\tscrollContainer === ownerDocument.body ||\n\t\t\t\tscrollContainer === ownerDocument.documentElement;\n\n\t\t\tif ( scrollContainer && ! windowScroll ) {\n\t\t\t\tconst scrollContainerRect =\n\t\t\t\t\tscrollContainer.getBoundingClientRect();\n\n\t\t\t\tconst distanceBetweenContainerAndTarget = isRTL()\n\t\t\t\t\t? scrollContainerRect.right - targetElementRect.right\n\t\t\t\t\t: targetElementRect.left - scrollContainerRect.left;\n\n\t\t\t\tconst scrollContainerWidth = scrollContainer.clientWidth;\n\n\t\t\t\tif (\n\t\t\t\t\tscrollContainerWidth <\n\t\t\t\t\twidth + distanceBetweenContainerAndTarget\n\t\t\t\t) {\n\t\t\t\t\twidth =\n\t\t\t\t\t\tscrollContainerWidth -\n\t\t\t\t\t\tdistanceBetweenContainerAndTarget;\n\t\t\t\t}\n\n\t\t\t\t// LTR logic for ensuring the drop indicator does not extend\n\t\t\t\t// beyond the right edge of the scroll container.\n\t\t\t\tif (\n\t\t\t\t\t! rtl &&\n\t\t\t\t\ttargetElementRect.left + indent < scrollContainerRect.left\n\t\t\t\t) {\n\t\t\t\t\twidth -= scrollContainerRect.left - targetElementRect.left;\n\t\t\t\t\treturn width;\n\t\t\t\t}\n\n\t\t\t\t// RTL logic for ensuring the drop indicator does not extend\n\t\t\t\t// beyond the right edge of the scroll container.\n\t\t\t\tif (\n\t\t\t\t\trtl &&\n\t\t\t\t\ttargetElementRect.right - indent > scrollContainerRect.right\n\t\t\t\t) {\n\t\t\t\t\twidth -=\n\t\t\t\t\t\ttargetElementRect.right - scrollContainerRect.right;\n\t\t\t\t\treturn width;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Subtract the indent from the final width of the indicator.\n\t\t\treturn width - indent;\n\t\t},\n\t\t[ rtl, targetElement ]\n\t);\n\n\tconst style = useMemo( () => {\n\t\tif ( ! targetElement ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst targetElementRect = targetElement.getBoundingClientRect();\n\n\t\treturn {\n\t\t\twidth: getDropIndicatorWidth( targetElementRect, 0 ),\n\t\t};\n\t}, [ getDropIndicatorWidth, targetElement ] );\n\n\tconst horizontalScrollOffsetStyle = useMemo( () => {\n\t\tif ( ! targetElement ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst scrollContainer = getScrollContainer( targetElement );\n\t\tconst ownerDocument = targetElement.ownerDocument;\n\t\tconst windowScroll =\n\t\t\tscrollContainer === ownerDocument.body ||\n\t\t\tscrollContainer === ownerDocument.documentElement;\n\n\t\tif ( scrollContainer && ! windowScroll ) {\n\t\t\tconst scrollContainerRect = scrollContainer.getBoundingClientRect();\n\t\t\tconst targetElementRect = targetElement.getBoundingClientRect();\n\n\t\t\tconst distanceBetweenContainerAndTarget = rtl\n\t\t\t\t? scrollContainerRect.right - targetElementRect.right\n\t\t\t\t: targetElementRect.left - scrollContainerRect.left;\n\n\t\t\tif ( ! rtl && scrollContainerRect.left > targetElementRect.left ) {\n\t\t\t\treturn {\n\t\t\t\t\ttransform: `translateX( ${ distanceBetweenContainerAndTarget }px )`,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( rtl && scrollContainerRect.right < targetElementRect.right ) {\n\t\t\t\treturn {\n\t\t\t\t\ttransform: `translateX( ${\n\t\t\t\t\t\tdistanceBetweenContainerAndTarget * -1\n\t\t\t\t\t}px )`,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn {};\n\t}, [ rtl, targetElement ] );\n\n\tconst ariaLevel = useMemo( () => {\n\t\tif ( ! rootBlockElement ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst _ariaLevel = parseInt(\n\t\t\trootBlockElement.getAttribute( 'aria-level' ),\n\t\t\t10\n\t\t);\n\n\t\treturn _ariaLevel ? _ariaLevel + 1 : 1;\n\t}, [ rootBlockElement ] );\n\n\tconst hasAdjacentSelectedBranch = useMemo( () => {\n\t\tif ( ! targetElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn targetElement.classList.contains( 'is-branch-selected' );\n\t}, [ targetElement ] );\n\n\tconst popoverAnchor = useMemo( () => {\n\t\tconst isValidDropPosition =\n\t\t\tdropPosition === 'top' ||\n\t\t\tdropPosition === 'bottom' ||\n\t\t\tdropPosition === 'inside';\n\t\tif ( ! targetElement || ! isValidDropPosition ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tcontextElement: targetElement,\n\t\t\tgetBoundingClientRect() {\n\t\t\t\tconst rect = targetElement.getBoundingClientRect();\n\t\t\t\t// In RTL languages, the drop indicator should be positioned\n\t\t\t\t// to the left of the target element, with the width of the\n\t\t\t\t// indicator determining the indent at the right edge of the\n\t\t\t\t// target element. In LTR languages, the drop indicator should\n\t\t\t\t// end at the right edge of the target element, with the indent\n\t\t\t\t// added to the position of the left edge of the target element.\n\t\t\t\t// let left = rtl ? rect.left : rect.left + indent;\n\t\t\t\tlet left = rect.left;\n\t\t\t\tlet top = 0;\n\n\t\t\t\t// In deeply nested lists, where a scrollbar is present,\n\t\t\t\t// the width of the drop indicator should be the width of\n\t\t\t\t// the visible area of the scroll container. Additionally,\n\t\t\t\t// the left edge of the drop indicator line needs to be\n\t\t\t\t// offset by the distance the left edge of the target element\n\t\t\t\t// and the left edge of the scroll container. The ensures\n\t\t\t\t// that the drop indicator position never breaks out of the\n\t\t\t\t// visible area of the scroll container.\n\t\t\t\tconst scrollContainer = getScrollContainer(\n\t\t\t\t\ttargetElement,\n\t\t\t\t\t'horizontal'\n\t\t\t\t);\n\n\t\t\t\tconst doc = targetElement.ownerDocument;\n\t\t\t\tconst windowScroll =\n\t\t\t\t\tscrollContainer === doc.body ||\n\t\t\t\t\tscrollContainer === doc.documentElement;\n\n\t\t\t\t// If the scroll container is not the window, offset the left position, if need be.\n\t\t\t\tif ( scrollContainer && ! windowScroll ) {\n\t\t\t\t\tconst scrollContainerRect =\n\t\t\t\t\t\tscrollContainer.getBoundingClientRect();\n\n\t\t\t\t\t// In RTL languages, a vertical scrollbar is present on the\n\t\t\t\t\t// left edge of the scroll container. The width of the\n\t\t\t\t\t// scrollbar needs to be accounted for when positioning the\n\t\t\t\t\t// drop indicator.\n\t\t\t\t\tconst scrollbarWidth = rtl\n\t\t\t\t\t\t? scrollContainer.offsetWidth -\n\t\t\t\t\t\t scrollContainer.clientWidth\n\t\t\t\t\t\t: 0;\n\n\t\t\t\t\tif ( left < scrollContainerRect.left + scrollbarWidth ) {\n\t\t\t\t\t\tleft = scrollContainerRect.left + scrollbarWidth;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( dropPosition === 'top' ) {\n\t\t\t\t\ttop = rect.top - rect.height * 2;\n\t\t\t\t} else {\n\t\t\t\t\t// `dropPosition` is either `bottom` or `inside`\n\t\t\t\t\ttop = rect.top;\n\t\t\t\t}\n\n\t\t\t\tconst width = getDropIndicatorWidth( rect, 0 );\n\t\t\t\tconst height = rect.height;\n\n\t\t\t\treturn new window.DOMRect( left, top, width, height );\n\t\t\t},\n\t\t};\n\t}, [ targetElement, dropPosition, getDropIndicatorWidth, rtl ] );\n\n\tif ( ! targetElement ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Popover\n\t\t\tanimate={ false }\n\t\t\tanchor={ popoverAnchor }\n\t\t\tfocusOnMount={ false }\n\t\t\tclassName=\"block-editor-list-view-drop-indicator--preview\"\n\t\t\tvariant=\"unstyled\"\n\t\t\tflip={ false }\n\t\t\tresize\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle={ style }\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-list-view-drop-indicator__line',\n\t\t\t\t\t{\n\t\t\t\t\t\t'block-editor-list-view-drop-indicator__line--darker':\n\t\t\t\t\t\t\thasAdjacentSelectedBranch,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"block-editor-list-view-leaf\"\n\t\t\t\t\taria-level={ ariaLevel }\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'block-editor-list-view-block-select-button',\n\t\t\t\t\t\t\t'block-editor-list-view-block-contents'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tstyle={ horizontalScrollOffsetStyle }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ListViewExpander onClick={ () => {} } />\n\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\ticon={ blockInformation?.icon }\n\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\tcontext=\"list-view\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<HStack\n\t\t\t\t\t\t\talignment=\"center\"\n\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__label-wrapper\"\n\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__title\">\n\t\t\t\t\t\t\t\t<Truncate ellipsizeMode=\"auto\">\n\t\t\t\t\t\t\t\t\t{ blockTitle }\n\t\t\t\t\t\t\t\t</Truncate>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"block-editor-list-view-block__menu-cell\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Popover>\n\t);\n}\n"],
"mappings": "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",
"names": ["useBlockDisplayInformation", "useBlockDisplayTitle", "clsx", "ListViewExpander", "BlockIcon", "HStack", "Truncate"]
}