@wordpress/block-editor 14.6.0 → 14.7.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/CHANGELOG.md +2 -0
- package/build/components/block-list/block.js +14 -28
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-patterns-list/index.js +23 -26
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-popover/index.js +1 -1
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/async.js +51 -0
- package/build/components/block-preview/async.js.map +1 -0
- package/build/components/block-preview/index.js +4 -1
- package/build/components/block-preview/index.js.map +1 -1
- package/build/components/block-toolbar/change-design.js +1 -4
- package/build/components/block-toolbar/change-design.js.map +1 -1
- package/build/components/block-tools/index.js +12 -9
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +4 -1
- package/build/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +26 -14
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/iframe/get-compatibility-styles.js +4 -4
- package/build/components/iframe/get-compatibility-styles.js.map +1 -1
- package/build/components/iframe/index.js +16 -0
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
- package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/index.js +1 -2
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +3 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +3 -0
- package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/utils.js +5 -1
- package/build/components/inserter/block-patterns-tab/utils.js.map +1 -1
- package/build/components/inserter/hooks/use-block-types-state.js +1 -1
- package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-paging.js +0 -5
- package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -1
- package/build/components/inserter/search-results.js +0 -2
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/media-placeholder/index.js +4 -4
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/rich-text/index.js +1 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/tabbed-sidebar/index.js +1 -1
- package/build/components/tabbed-sidebar/index.js.map +1 -1
- package/build/components/url-input/index.js +3 -1
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-block-commands/index.js +5 -6
- package/build/components/use-block-commands/index.js.map +1 -1
- package/build/hooks/font-family.js +1 -1
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/supports.js +6 -6
- package/build/hooks/supports.js.map +1 -1
- package/build/hooks/typography.js +5 -5
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/utils.js +2 -2
- package/build/hooks/utils.js.map +1 -1
- package/build/lock-unlock.js.map +1 -1
- package/build/store/private-selectors.js +2 -2
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/selectors.js +9 -8
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +5 -4
- package/build/store/utils.js.map +1 -1
- package/build/utils/dom.js +27 -22
- package/build/utils/dom.js.map +1 -1
- package/build-module/components/block-list/block.js +15 -27
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +23 -26
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-popover/index.js +2 -2
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/async.js +44 -0
- package/build-module/components/block-preview/async.js.map +1 -0
- package/build-module/components/block-preview/index.js +4 -1
- package/build-module/components/block-preview/index.js.map +1 -1
- package/build-module/components/block-toolbar/change-design.js +1 -4
- package/build-module/components/block-toolbar/change-design.js.map +1 -1
- package/build-module/components/block-tools/index.js +13 -10
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js +2 -2
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +4 -1
- package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +26 -14
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/iframe/get-compatibility-styles.js +4 -4
- package/build-module/components/iframe/get-compatibility-styles.js.map +1 -1
- package/build-module/components/iframe/index.js +16 -0
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js +1 -2
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +4 -2
- package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +4 -1
- package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/utils.js +4 -0
- package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-types-state.js +1 -1
- package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-paging.js +1 -6
- package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -1
- package/build-module/components/inserter/search-results.js +0 -2
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +4 -4
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +1 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/tabbed-sidebar/index.js +1 -1
- package/build-module/components/tabbed-sidebar/index.js.map +1 -1
- package/build-module/components/url-input/index.js +3 -1
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-block-commands/index.js +4 -4
- package/build-module/components/use-block-commands/index.js.map +1 -1
- package/build-module/hooks/font-family.js +1 -1
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/supports.js +6 -6
- package/build-module/hooks/supports.js.map +1 -1
- package/build-module/hooks/typography.js +5 -5
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/utils.js +2 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/lock-unlock.js.map +1 -1
- package/build-module/store/private-selectors.js +2 -2
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/selectors.js +9 -8
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +3 -3
- package/build-module/store/utils.js.map +1 -1
- package/build-module/utils/dom.js +25 -21
- package/build-module/utils/dom.js.map +1 -1
- package/build-style/content-rtl.css +7 -6
- package/build-style/content.css +7 -6
- package/build-style/style-rtl.css +14 -3
- package/build-style/style.css +14 -3
- package/build-types/utils/dom.d.ts +7 -9
- package/build-types/utils/dom.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/components/block-canvas/style.scss +1 -1
- package/src/components/block-inspector/style.scss +2 -1
- package/src/components/block-list/block.js +28 -48
- package/src/components/block-patterns-list/README.md +8 -8
- package/src/components/block-patterns-list/index.js +35 -51
- package/src/components/block-patterns-list/stories/index.story.js +2 -19
- package/src/components/block-popover/index.js +4 -4
- package/src/components/block-preview/async.js +43 -0
- package/src/components/block-preview/index.js +6 -1
- package/src/components/block-toolbar/change-design.js +1 -7
- package/src/components/block-tools/index.js +26 -10
- package/src/components/block-tools/style.scss +12 -0
- package/src/components/block-tools/use-block-toolbar-popover-props.js +2 -2
- package/src/components/block-tools/use-show-block-tools.js +3 -1
- package/src/components/default-block-appender/content.scss +13 -19
- package/src/components/global-styles/dimensions-panel.js +22 -16
- package/src/components/iframe/get-compatibility-styles.js +4 -9
- package/src/components/iframe/index.js +17 -0
- package/src/components/inserter/block-patterns-explorer/pattern-list.js +3 -6
- package/src/components/inserter/block-patterns-tab/index.js +0 -1
- package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +8 -1
- package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +8 -0
- package/src/components/inserter/block-patterns-tab/utils.js +5 -0
- package/src/components/inserter/hooks/use-block-types-state.js +6 -1
- package/src/components/inserter/hooks/use-patterns-paging.js +1 -6
- package/src/components/inserter/search-results.js +0 -6
- package/src/components/media-placeholder/index.js +4 -4
- package/src/components/rich-text/index.js +8 -1
- package/src/components/tabbed-sidebar/index.js +1 -1
- package/src/components/tabbed-sidebar/style.scss +1 -1
- package/src/components/url-input/index.js +3 -4
- package/src/components/use-block-commands/index.js +245 -234
- package/src/hooks/font-family.js +1 -1
- package/src/hooks/supports.js +6 -6
- package/src/hooks/typography.js +5 -5
- package/src/hooks/utils.js +7 -2
- package/src/store/private-selectors.js +5 -6
- package/src/store/selectors.js +57 -45
- package/src/store/test/private-selectors.js +5 -0
- package/src/store/utils.js +12 -11
- package/src/utils/dom.js +26 -21
- package/src/utils/test/dom.js +224 -0
- package/tsconfig.json +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- /package/src/{lock-unlock.js → lock-unlock.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRefEffect","useSelect","getScrollContainer","useCallback","useLayoutEffect","useMemo","useState","store","blockEditorStore","useBlockElement","hasStickyOrFixedPositionValue","getVisibleElementBounds","COMMON_PROPS","placement","DEFAULT_PROPS","flip","shift","RESTRICTED_HEIGHT_PROPS","getProps","contentElement","selectedBlockElement","scrollContainer","toolbarHeight","isSticky","scrollTop","blockRect","contentRect","getBoundingClientRect","topOfContentElementInViewport","top","viewportHeight","ownerDocument","documentElement","clientHeight","restrictedTopArea","hasSpaceForToolbarAbove","isBlockTallerThanViewport","height","useBlockToolbarPopoverProps","clientId","setToolbarHeight","blockIndex","select","getBlockIndex","getBlockAttributes","props","setProps","popoverRef","popoverNode","offsetHeight","updateProps","contentView","defaultView","addEventHandler","resizeObserver","blockView","ResizeObserver","observe","removeEventHandler","disconnect","ref"],"sources":["@wordpress/block-editor/src/components/block-tools/use-block-toolbar-popover-props.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { getScrollContainer } from '@wordpress/dom';\nimport {\n\tuseCallback,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseState,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport { hasStickyOrFixedPositionValue } from '../../hooks/position';\nimport { getVisibleElementBounds } from '../../utils/dom';\n\nconst COMMON_PROPS = {\n\tplacement: 'top-start',\n};\n\n// By default the toolbar sets the `shift` prop. If the user scrolls the page\n// down the toolbar will stay on screen by adopting a sticky position at the\n// top of the viewport.\nconst DEFAULT_PROPS = {\n\t...COMMON_PROPS,\n\tflip: false,\n\tshift: true,\n};\n\n// When there isn't enough height between the top of the block and the editor\n// canvas, the `shift` prop is set to `false`, as it will cause the block to be\n// obscured. The `flip` behavior is enabled, which positions the toolbar below\n// the block. This only happens if the block is smaller than the viewport, as\n// otherwise the toolbar will be off-screen.\nconst RESTRICTED_HEIGHT_PROPS = {\n\t...COMMON_PROPS,\n\tflip: true,\n\tshift: false,\n};\n\n/**\n * Get the popover props for the block toolbar, determined by the space at the top of the canvas and the toolbar height.\n *\n * @param {Element} contentElement The DOM element that represents the editor content or canvas.\n * @param {Element} selectedBlockElement The outer DOM element of the first selected block.\n * @param {Element} scrollContainer The scrollable container for the contentElement.\n * @param {number} toolbarHeight The height of the toolbar in pixels.\n * @param {boolean} isSticky Whether or not the selected block is sticky or fixed.\n *\n * @return {Object} The popover props used to determine the position of the toolbar.\n */\nfunction getProps(\n\tcontentElement,\n\tselectedBlockElement,\n\tscrollContainer,\n\ttoolbarHeight,\n\tisSticky\n) {\n\tif ( ! contentElement || ! selectedBlockElement ) {\n\t\treturn DEFAULT_PROPS;\n\t}\n\n\t// Get how far the content area has been scrolled.\n\tconst scrollTop = scrollContainer?.scrollTop || 0;\n\n\tconst blockRect = getVisibleElementBounds( selectedBlockElement );\n\tconst contentRect = contentElement.getBoundingClientRect();\n\n\t// Get the vertical position of top of the visible content area.\n\tconst topOfContentElementInViewport = scrollTop + contentRect.top;\n\n\t// The document element's clientHeight represents the viewport height.\n\tconst viewportHeight =\n\t\tcontentElement.ownerDocument.documentElement.clientHeight;\n\n\t// The restricted height area is calculated as the sum of the\n\t// vertical position of the visible content area, plus the height\n\t// of the block toolbar.\n\tconst restrictedTopArea = topOfContentElementInViewport + toolbarHeight;\n\tconst hasSpaceForToolbarAbove = blockRect.top > restrictedTopArea;\n\n\tconst isBlockTallerThanViewport =\n\t\tblockRect.height > viewportHeight - toolbarHeight;\n\n\t// Sticky blocks are treated as if they will never have enough space for the toolbar above.\n\tif (\n\t\t! isSticky &&\n\t\t( hasSpaceForToolbarAbove || isBlockTallerThanViewport )\n\t) {\n\t\treturn DEFAULT_PROPS;\n\t}\n\n\treturn RESTRICTED_HEIGHT_PROPS;\n}\n\n/**\n * Determines the desired popover positioning behavior, returning a set of appropriate props.\n *\n * @param {Object} elements\n * @param {Element} elements.contentElement The DOM element that represents the editor content or canvas.\n * @param {string} elements.clientId The clientId of the first selected block.\n *\n * @return {Object} The popover props used to determine the position of the toolbar.\n */\nexport default function useBlockToolbarPopoverProps( {\n\tcontentElement,\n\tclientId,\n} ) {\n\tconst selectedBlockElement = useBlockElement( clientId );\n\tconst [ toolbarHeight, setToolbarHeight ] = useState( 0 );\n\tconst { blockIndex, isSticky } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockIndex, getBlockAttributes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tblockIndex: getBlockIndex( clientId ),\n\t\t\t\tisSticky: hasStickyOrFixedPositionValue(\n\t\t\t\t\tgetBlockAttributes( clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst scrollContainer = useMemo( () => {\n\t\tif ( ! contentElement ) {\n\t\t\treturn;\n\t\t}\n\t\treturn getScrollContainer( contentElement );\n\t}, [ contentElement ] );\n\tconst [ props, setProps ] = useState( () =>\n\t\tgetProps(\n\t\t\tcontentElement,\n\t\t\tselectedBlockElement,\n\t\t\tscrollContainer,\n\t\t\ttoolbarHeight,\n\t\t\tisSticky\n\t\t)\n\t);\n\n\tconst popoverRef = useRefEffect( ( popoverNode ) => {\n\t\tsetToolbarHeight( popoverNode.offsetHeight );\n\t}, [] );\n\n\tconst updateProps = useCallback(\n\t\t() =>\n\t\t\tsetProps(\n\t\t\t\tgetProps(\n\t\t\t\t\tcontentElement,\n\t\t\t\t\tselectedBlockElement,\n\t\t\t\t\tscrollContainer,\n\t\t\t\t\ttoolbarHeight,\n\t\t\t\t\tisSticky\n\t\t\t\t)\n\t\t\t),\n\t\t[ contentElement, selectedBlockElement, scrollContainer, toolbarHeight ]\n\t);\n\n\t// Update props when the block is moved. This also ensures the props are\n\t// correct on initial mount, and when the selected block or content element\n\t// changes (since the callback ref will update).\n\tuseLayoutEffect( updateProps, [ blockIndex, updateProps ] );\n\n\t// Update props when the viewport is resized or the block is resized.\n\tuseLayoutEffect( () => {\n\t\tif ( ! contentElement || ! selectedBlockElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Update the toolbar props on viewport resize.\n\t\tconst contentView = contentElement?.ownerDocument?.defaultView;\n\t\tcontentView?.addEventHandler?.( 'resize', updateProps );\n\n\t\t// Update the toolbar props on block resize.\n\t\tlet resizeObserver;\n\t\tconst blockView = selectedBlockElement?.ownerDocument?.defaultView;\n\t\tif ( blockView.ResizeObserver ) {\n\t\t\tresizeObserver = new blockView.ResizeObserver( updateProps );\n\t\t\tresizeObserver.observe( selectedBlockElement );\n\t\t}\n\n\t\treturn () => {\n\t\t\tcontentView?.removeEventHandler?.( 'resize', updateProps );\n\n\t\t\tif ( resizeObserver ) {\n\t\t\t\tresizeObserver.disconnect();\n\t\t\t}\n\t\t};\n\t}, [ updateProps, contentElement, selectedBlockElement ] );\n\n\treturn {\n\t\t...props,\n\t\tref: popoverRef,\n\t};\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useRefEffect","useSelect","getScrollContainer","useCallback","useLayoutEffect","useMemo","useState","store","blockEditorStore","useBlockElement","hasStickyOrFixedPositionValue","getElementBounds","COMMON_PROPS","placement","DEFAULT_PROPS","flip","shift","RESTRICTED_HEIGHT_PROPS","getProps","contentElement","selectedBlockElement","scrollContainer","toolbarHeight","isSticky","scrollTop","blockRect","contentRect","getBoundingClientRect","topOfContentElementInViewport","top","viewportHeight","ownerDocument","documentElement","clientHeight","restrictedTopArea","hasSpaceForToolbarAbove","isBlockTallerThanViewport","height","useBlockToolbarPopoverProps","clientId","setToolbarHeight","blockIndex","select","getBlockIndex","getBlockAttributes","props","setProps","popoverRef","popoverNode","offsetHeight","updateProps","contentView","defaultView","addEventHandler","resizeObserver","blockView","ResizeObserver","observe","removeEventHandler","disconnect","ref"],"sources":["@wordpress/block-editor/src/components/block-tools/use-block-toolbar-popover-props.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { getScrollContainer } from '@wordpress/dom';\nimport {\n\tuseCallback,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseState,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport { hasStickyOrFixedPositionValue } from '../../hooks/position';\nimport { getElementBounds } from '../../utils/dom';\n\nconst COMMON_PROPS = {\n\tplacement: 'top-start',\n};\n\n// By default the toolbar sets the `shift` prop. If the user scrolls the page\n// down the toolbar will stay on screen by adopting a sticky position at the\n// top of the viewport.\nconst DEFAULT_PROPS = {\n\t...COMMON_PROPS,\n\tflip: false,\n\tshift: true,\n};\n\n// When there isn't enough height between the top of the block and the editor\n// canvas, the `shift` prop is set to `false`, as it will cause the block to be\n// obscured. The `flip` behavior is enabled, which positions the toolbar below\n// the block. This only happens if the block is smaller than the viewport, as\n// otherwise the toolbar will be off-screen.\nconst RESTRICTED_HEIGHT_PROPS = {\n\t...COMMON_PROPS,\n\tflip: true,\n\tshift: false,\n};\n\n/**\n * Get the popover props for the block toolbar, determined by the space at the top of the canvas and the toolbar height.\n *\n * @param {Element} contentElement The DOM element that represents the editor content or canvas.\n * @param {Element} selectedBlockElement The outer DOM element of the first selected block.\n * @param {Element} scrollContainer The scrollable container for the contentElement.\n * @param {number} toolbarHeight The height of the toolbar in pixels.\n * @param {boolean} isSticky Whether or not the selected block is sticky or fixed.\n *\n * @return {Object} The popover props used to determine the position of the toolbar.\n */\nfunction getProps(\n\tcontentElement,\n\tselectedBlockElement,\n\tscrollContainer,\n\ttoolbarHeight,\n\tisSticky\n) {\n\tif ( ! contentElement || ! selectedBlockElement ) {\n\t\treturn DEFAULT_PROPS;\n\t}\n\n\t// Get how far the content area has been scrolled.\n\tconst scrollTop = scrollContainer?.scrollTop || 0;\n\n\tconst blockRect = getElementBounds( selectedBlockElement );\n\tconst contentRect = contentElement.getBoundingClientRect();\n\n\t// Get the vertical position of top of the visible content area.\n\tconst topOfContentElementInViewport = scrollTop + contentRect.top;\n\n\t// The document element's clientHeight represents the viewport height.\n\tconst viewportHeight =\n\t\tcontentElement.ownerDocument.documentElement.clientHeight;\n\n\t// The restricted height area is calculated as the sum of the\n\t// vertical position of the visible content area, plus the height\n\t// of the block toolbar.\n\tconst restrictedTopArea = topOfContentElementInViewport + toolbarHeight;\n\tconst hasSpaceForToolbarAbove = blockRect.top > restrictedTopArea;\n\n\tconst isBlockTallerThanViewport =\n\t\tblockRect.height > viewportHeight - toolbarHeight;\n\n\t// Sticky blocks are treated as if they will never have enough space for the toolbar above.\n\tif (\n\t\t! isSticky &&\n\t\t( hasSpaceForToolbarAbove || isBlockTallerThanViewport )\n\t) {\n\t\treturn DEFAULT_PROPS;\n\t}\n\n\treturn RESTRICTED_HEIGHT_PROPS;\n}\n\n/**\n * Determines the desired popover positioning behavior, returning a set of appropriate props.\n *\n * @param {Object} elements\n * @param {Element} elements.contentElement The DOM element that represents the editor content or canvas.\n * @param {string} elements.clientId The clientId of the first selected block.\n *\n * @return {Object} The popover props used to determine the position of the toolbar.\n */\nexport default function useBlockToolbarPopoverProps( {\n\tcontentElement,\n\tclientId,\n} ) {\n\tconst selectedBlockElement = useBlockElement( clientId );\n\tconst [ toolbarHeight, setToolbarHeight ] = useState( 0 );\n\tconst { blockIndex, isSticky } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockIndex, getBlockAttributes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tblockIndex: getBlockIndex( clientId ),\n\t\t\t\tisSticky: hasStickyOrFixedPositionValue(\n\t\t\t\t\tgetBlockAttributes( clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst scrollContainer = useMemo( () => {\n\t\tif ( ! contentElement ) {\n\t\t\treturn;\n\t\t}\n\t\treturn getScrollContainer( contentElement );\n\t}, [ contentElement ] );\n\tconst [ props, setProps ] = useState( () =>\n\t\tgetProps(\n\t\t\tcontentElement,\n\t\t\tselectedBlockElement,\n\t\t\tscrollContainer,\n\t\t\ttoolbarHeight,\n\t\t\tisSticky\n\t\t)\n\t);\n\n\tconst popoverRef = useRefEffect( ( popoverNode ) => {\n\t\tsetToolbarHeight( popoverNode.offsetHeight );\n\t}, [] );\n\n\tconst updateProps = useCallback(\n\t\t() =>\n\t\t\tsetProps(\n\t\t\t\tgetProps(\n\t\t\t\t\tcontentElement,\n\t\t\t\t\tselectedBlockElement,\n\t\t\t\t\tscrollContainer,\n\t\t\t\t\ttoolbarHeight,\n\t\t\t\t\tisSticky\n\t\t\t\t)\n\t\t\t),\n\t\t[ contentElement, selectedBlockElement, scrollContainer, toolbarHeight ]\n\t);\n\n\t// Update props when the block is moved. This also ensures the props are\n\t// correct on initial mount, and when the selected block or content element\n\t// changes (since the callback ref will update).\n\tuseLayoutEffect( updateProps, [ blockIndex, updateProps ] );\n\n\t// Update props when the viewport is resized or the block is resized.\n\tuseLayoutEffect( () => {\n\t\tif ( ! contentElement || ! selectedBlockElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Update the toolbar props on viewport resize.\n\t\tconst contentView = contentElement?.ownerDocument?.defaultView;\n\t\tcontentView?.addEventHandler?.( 'resize', updateProps );\n\n\t\t// Update the toolbar props on block resize.\n\t\tlet resizeObserver;\n\t\tconst blockView = selectedBlockElement?.ownerDocument?.defaultView;\n\t\tif ( blockView.ResizeObserver ) {\n\t\t\tresizeObserver = new blockView.ResizeObserver( updateProps );\n\t\t\tresizeObserver.observe( selectedBlockElement );\n\t\t}\n\n\t\treturn () => {\n\t\t\tcontentView?.removeEventHandler?.( 'resize', updateProps );\n\n\t\t\tif ( resizeObserver ) {\n\t\t\t\tresizeObserver.disconnect();\n\t\t\t}\n\t\t};\n\t}, [ updateProps, contentElement, selectedBlockElement ] );\n\n\treturn {\n\t\t...props,\n\t\tref: popoverRef,\n\t};\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -31,7 +31,10 @@ export function useShowBlockTools() {
|
|
|
31
31
|
const editorMode = __unstableGetEditorMode();
|
|
32
32
|
const hasSelectedBlock = !!clientId && !!block;
|
|
33
33
|
const isEmptyDefaultBlock = hasSelectedBlock && isUnmodifiedDefaultBlock(block) && getBlockMode(clientId) !== 'html';
|
|
34
|
-
const _showEmptyBlockSideInserter = clientId && !isTyping() &&
|
|
34
|
+
const _showEmptyBlockSideInserter = clientId && !isTyping() &&
|
|
35
|
+
// Hide the block inserter on the navigation mode.
|
|
36
|
+
// See https://github.com/WordPress/gutenberg/pull/66636#discussion_r1824728483.
|
|
37
|
+
editorMode !== 'navigation' && isEmptyDefaultBlock;
|
|
35
38
|
const _showBlockToolbarPopover = !getSettings().hasFixedToolbar && !_showEmptyBlockSideInserter && hasSelectedBlock && !isEmptyDefaultBlock;
|
|
36
39
|
return {
|
|
37
40
|
showEmptyBlockSideInserter: _showEmptyBlockSideInserter,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSelect","isUnmodifiedDefaultBlock","store","blockEditorStore","unlock","useShowBlockTools","select","getSelectedBlockClientId","getFirstMultiSelectedBlockClientId","getBlock","getBlockMode","getSettings","__unstableGetEditorMode","isTyping","clientId","block","editorMode","hasSelectedBlock","isEmptyDefaultBlock","_showEmptyBlockSideInserter","_showBlockToolbarPopover","hasFixedToolbar","showEmptyBlockSideInserter","showBlockToolbarPopover"],"sources":["@wordpress/block-editor/src/components/block-tools/use-show-block-tools.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Source of truth for which block tools are showing in the block editor.\n *\n * @return {Object} Object of which block tools will be shown.\n */\nexport function useShowBlockTools() {\n\treturn useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetFirstMultiSelectedBlockClientId,\n\t\t\tgetBlock,\n\t\t\tgetBlockMode,\n\t\t\tgetSettings,\n\t\t\t__unstableGetEditorMode,\n\t\t\tisTyping,\n\t\t} = unlock( select( blockEditorStore ) );\n\n\t\tconst clientId =\n\t\t\tgetSelectedBlockClientId() || getFirstMultiSelectedBlockClientId();\n\n\t\tconst block = getBlock( clientId );\n\t\tconst editorMode = __unstableGetEditorMode();\n\t\tconst hasSelectedBlock = !! clientId && !! block;\n\t\tconst isEmptyDefaultBlock =\n\t\t\thasSelectedBlock &&\n\t\t\tisUnmodifiedDefaultBlock( block ) &&\n\t\t\tgetBlockMode( clientId ) !== 'html';\n\t\tconst _showEmptyBlockSideInserter =\n\t\t\tclientId &&\n\t\t\t! isTyping() &&\n\t\t\teditorMode
|
|
1
|
+
{"version":3,"names":["useSelect","isUnmodifiedDefaultBlock","store","blockEditorStore","unlock","useShowBlockTools","select","getSelectedBlockClientId","getFirstMultiSelectedBlockClientId","getBlock","getBlockMode","getSettings","__unstableGetEditorMode","isTyping","clientId","block","editorMode","hasSelectedBlock","isEmptyDefaultBlock","_showEmptyBlockSideInserter","_showBlockToolbarPopover","hasFixedToolbar","showEmptyBlockSideInserter","showBlockToolbarPopover"],"sources":["@wordpress/block-editor/src/components/block-tools/use-show-block-tools.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Source of truth for which block tools are showing in the block editor.\n *\n * @return {Object} Object of which block tools will be shown.\n */\nexport function useShowBlockTools() {\n\treturn useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetFirstMultiSelectedBlockClientId,\n\t\t\tgetBlock,\n\t\t\tgetBlockMode,\n\t\t\tgetSettings,\n\t\t\t__unstableGetEditorMode,\n\t\t\tisTyping,\n\t\t} = unlock( select( blockEditorStore ) );\n\n\t\tconst clientId =\n\t\t\tgetSelectedBlockClientId() || getFirstMultiSelectedBlockClientId();\n\n\t\tconst block = getBlock( clientId );\n\t\tconst editorMode = __unstableGetEditorMode();\n\t\tconst hasSelectedBlock = !! clientId && !! block;\n\t\tconst isEmptyDefaultBlock =\n\t\t\thasSelectedBlock &&\n\t\t\tisUnmodifiedDefaultBlock( block ) &&\n\t\t\tgetBlockMode( clientId ) !== 'html';\n\t\tconst _showEmptyBlockSideInserter =\n\t\t\tclientId &&\n\t\t\t! isTyping() &&\n\t\t\t// Hide the block inserter on the navigation mode.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/66636#discussion_r1824728483.\n\t\t\teditorMode !== 'navigation' &&\n\t\t\tisEmptyDefaultBlock;\n\t\tconst _showBlockToolbarPopover =\n\t\t\t! getSettings().hasFixedToolbar &&\n\t\t\t! _showEmptyBlockSideInserter &&\n\t\t\thasSelectedBlock &&\n\t\t\t! isEmptyDefaultBlock;\n\n\t\treturn {\n\t\t\tshowEmptyBlockSideInserter: _showEmptyBlockSideInserter,\n\t\t\tshowBlockToolbarPopover: _showBlockToolbarPopover,\n\t\t};\n\t}, [] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,wBAAwB,QAAQ,mBAAmB;;AAE5D;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,MAAM,QAAQ,mBAAmB;;AAE1C;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAAA,EAAG;EACnC,OAAOL,SAAS,CAAIM,MAAM,IAAM;IAC/B,MAAM;MACLC,wBAAwB;MACxBC,kCAAkC;MAClCC,QAAQ;MACRC,YAAY;MACZC,WAAW;MACXC,uBAAuB;MACvBC;IACD,CAAC,GAAGT,MAAM,CAAEE,MAAM,CAAEH,gBAAiB,CAAE,CAAC;IAExC,MAAMW,QAAQ,GACbP,wBAAwB,CAAC,CAAC,IAAIC,kCAAkC,CAAC,CAAC;IAEnE,MAAMO,KAAK,GAAGN,QAAQ,CAAEK,QAAS,CAAC;IAClC,MAAME,UAAU,GAAGJ,uBAAuB,CAAC,CAAC;IAC5C,MAAMK,gBAAgB,GAAG,CAAC,CAAEH,QAAQ,IAAI,CAAC,CAAEC,KAAK;IAChD,MAAMG,mBAAmB,GACxBD,gBAAgB,IAChBhB,wBAAwB,CAAEc,KAAM,CAAC,IACjCL,YAAY,CAAEI,QAAS,CAAC,KAAK,MAAM;IACpC,MAAMK,2BAA2B,GAChCL,QAAQ,IACR,CAAED,QAAQ,CAAC,CAAC;IACZ;IACA;IACAG,UAAU,KAAK,YAAY,IAC3BE,mBAAmB;IACpB,MAAME,wBAAwB,GAC7B,CAAET,WAAW,CAAC,CAAC,CAACU,eAAe,IAC/B,CAAEF,2BAA2B,IAC7BF,gBAAgB,IAChB,CAAEC,mBAAmB;IAEtB,OAAO;MACNI,0BAA0B,EAAEH,2BAA2B;MACvDI,uBAAuB,EAAEH;IAC1B,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR","ignoreList":[]}
|
|
@@ -109,22 +109,34 @@ function splitStyleValue(value) {
|
|
|
109
109
|
}
|
|
110
110
|
return value;
|
|
111
111
|
}
|
|
112
|
-
function splitGapValue(value) {
|
|
112
|
+
function splitGapValue(value, isAxialGap) {
|
|
113
|
+
if (!value) {
|
|
114
|
+
return value;
|
|
115
|
+
}
|
|
116
|
+
|
|
113
117
|
// Check for shorthand value (a string value).
|
|
114
|
-
if (
|
|
115
|
-
|
|
116
|
-
|
|
118
|
+
if (typeof value === 'string') {
|
|
119
|
+
/*
|
|
120
|
+
* Map the string value to appropriate sides for the spacing control depending
|
|
121
|
+
* on whether the current block has axial gap support or not.
|
|
122
|
+
*
|
|
123
|
+
* Note: The axial value pairs must match for the spacing control to display
|
|
124
|
+
* the appropriate horizontal/vertical sliders.
|
|
125
|
+
*/
|
|
126
|
+
return isAxialGap ? {
|
|
127
|
+
top: value,
|
|
128
|
+
right: value,
|
|
129
|
+
bottom: value,
|
|
130
|
+
left: value
|
|
131
|
+
} : {
|
|
117
132
|
top: value
|
|
118
133
|
};
|
|
119
134
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
return value;
|
|
135
|
+
return {
|
|
136
|
+
...value,
|
|
137
|
+
right: value?.left,
|
|
138
|
+
bottom: value?.top
|
|
139
|
+
};
|
|
128
140
|
}
|
|
129
141
|
function DimensionsToolsPanel({
|
|
130
142
|
resetAllFilter,
|
|
@@ -250,10 +262,10 @@ export default function DimensionsPanel({
|
|
|
250
262
|
|
|
251
263
|
// Block Gap
|
|
252
264
|
const showGapControl = useHasGap(settings);
|
|
253
|
-
const gapValue = decodeValue(inheritedValue?.spacing?.blockGap);
|
|
254
|
-
const gapValues = splitGapValue(gapValue);
|
|
255
265
|
const gapSides = Array.isArray(settings?.spacing?.blockGap) ? settings?.spacing?.blockGap : settings?.spacing?.blockGap?.sides;
|
|
256
266
|
const isAxialGap = gapSides && gapSides.some(side => AXIAL_SIDES.includes(side));
|
|
267
|
+
const gapValue = decodeValue(inheritedValue?.spacing?.blockGap);
|
|
268
|
+
const gapValues = splitGapValue(gapValue, isAxialGap);
|
|
257
269
|
const setGapValue = newGapValue => {
|
|
258
270
|
onChange(setImmutably(value, ['spacing', 'blockGap'], newGapValue));
|
|
259
271
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","__","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","BoxControl","__experimentalUnitControl","UnitControl","__experimentalUseCustomUnits","useCustomUnits","__experimentalInputControlPrefixWrapper","InputControlPrefixWrapper","Icon","alignNone","stretchWide","useCallback","useState","Platform","getValueFromVariable","useToolsPanelDropdownMenuProps","SpacingSizesControl","HeightControl","ChildLayoutControl","AspectRatioTool","cleanEmptyObject","setImmutably","jsx","_jsx","jsxs","_jsxs","AXIAL_SIDES","useHasDimensionsPanel","settings","hasContentSize","useHasContentSize","hasWideSize","useHasWideSize","hasPadding","useHasPadding","hasMargin","useHasMargin","hasGap","useHasGap","hasMinHeight","useHasMinHeight","hasAspectRatio","useHasAspectRatio","hasChildLayout","useHasChildLayout","OS","layout","contentSize","wideSize","spacing","padding","margin","blockGap","dimensions","minHeight","aspectRatio","_settings$parentLayou","type","parentLayoutType","default","defaultParentLayoutType","allowSizingOnChildren","parentLayout","support","useHasSpacingPresets","defaultSpacingSizes","spacingSizes","length","theme","custom","filterValuesBySides","values","sides","filteredValues","forEach","side","top","bottom","left","right","splitStyleValue","value","splitGapValue","DimensionsToolsPanel","resetAllFilter","onChange","panelId","children","dropdownMenuProps","resetAll","updatedValue","label","DEFAULT_CONTROLS","childLayout","DimensionsPanel","as","Wrapper","inheritedValue","defaultControls","onVisualize","includeLayoutControls","_defaultControls$cont","_defaultControls$wide","_defaultControls$padd","_defaultControls$marg","_defaultControls$bloc","_defaultControls$chil","_defaultControls$minH","_defaultControls$aspe","decodeValue","rawValue","Object","keys","reduce","acc","key","showSpacingPresetsControl","units","availableUnits","minimumMargin","Infinity","minMarginValue","setMinMarginValue","showContentSizeControl","contentSizeValue","setContentSizeValue","newValue","undefined","hasUserSetContentSizeValue","resetContentSizeValue","showWideSizeControl","wideSizeValue","setWideSizeValue","hasUserSetWideSizeValue","resetWideSizeValue","showPaddingControl","rawPadding","paddingValues","paddingSides","Array","isArray","isAxialPadding","some","includes","setPaddingValues","newPaddingValues","hasPaddingValue","resetPaddingValue","onMouseOverPadding","showMarginControl","rawMargin","marginValues","marginSides","isAxialMargin","setMarginValues","newMarginValues","hasMarginValue","resetMarginValue","onMouseOverMargin","showGapControl","gapValue","gapValues","gapSides","isAxialGap","setGapValue","newGapValue","setGapValues","nextBoxGapValue","hasOwnProperty","resetGapValue","hasGapValue","showMinHeightControl","minHeightValue","setMinHeightValue","tempValue","resetMinHeightValue","hasMinHeightValue","showAspectRatioControl","aspectRatioValue","setAspectRatioValue","hasAspectRatioValue","showChildLayoutControl","setChildLayout","newChildLayout","previousValue","selfStretch","flexSize","columnStart","rowStart","columnSpan","rowSpan","onMouseLeaveControls","inputProps","min","onDragStart","onDragEnd","className","hasValue","onDeselect","isShownByDefault","__next40pxDefaultSize","labelPosition","nextContentSize","prefix","variant","icon","nextWideSize","allowReset","splitOnAxis","onMouseOver","onMouseOut","minimumCustomValue","showSideInLabel"],"sources":["@wordpress/block-editor/src/components/global-styles/dimensions-panel.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tBoxControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { Icon, alignNone, stretchWide } from '@wordpress/icons';\nimport { useCallback, useState, Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getValueFromVariable, useToolsPanelDropdownMenuProps } from './utils';\nimport SpacingSizesControl from '../spacing-sizes-control';\nimport HeightControl from '../height-control';\nimport ChildLayoutControl from '../child-layout-control';\nimport AspectRatioTool from '../dimensions-tool/aspect-ratio-tool';\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport { setImmutably } from '../../utils/object';\n\nconst AXIAL_SIDES = [ 'horizontal', 'vertical' ];\n\nexport function useHasDimensionsPanel( settings ) {\n\tconst hasContentSize = useHasContentSize( settings );\n\tconst hasWideSize = useHasWideSize( settings );\n\tconst hasPadding = useHasPadding( settings );\n\tconst hasMargin = useHasMargin( settings );\n\tconst hasGap = useHasGap( settings );\n\tconst hasMinHeight = useHasMinHeight( settings );\n\tconst hasAspectRatio = useHasAspectRatio( settings );\n\tconst hasChildLayout = useHasChildLayout( settings );\n\n\treturn (\n\t\tPlatform.OS === 'web' &&\n\t\t( hasContentSize ||\n\t\t\thasWideSize ||\n\t\t\thasPadding ||\n\t\t\thasMargin ||\n\t\t\thasGap ||\n\t\t\thasMinHeight ||\n\t\t\thasAspectRatio ||\n\t\t\thasChildLayout )\n\t);\n}\n\nfunction useHasContentSize( settings ) {\n\treturn settings?.layout?.contentSize;\n}\n\nfunction useHasWideSize( settings ) {\n\treturn settings?.layout?.wideSize;\n}\n\nfunction useHasPadding( settings ) {\n\treturn settings?.spacing?.padding;\n}\n\nfunction useHasMargin( settings ) {\n\treturn settings?.spacing?.margin;\n}\n\nfunction useHasGap( settings ) {\n\treturn settings?.spacing?.blockGap;\n}\n\nfunction useHasMinHeight( settings ) {\n\treturn settings?.dimensions?.minHeight;\n}\n\nfunction useHasAspectRatio( settings ) {\n\treturn settings?.dimensions?.aspectRatio;\n}\n\nfunction useHasChildLayout( settings ) {\n\tconst {\n\t\ttype: parentLayoutType = 'default',\n\t\tdefault: { type: defaultParentLayoutType = 'default' } = {},\n\t\tallowSizingOnChildren = false,\n\t} = settings?.parentLayout ?? {};\n\n\tconst support =\n\t\t( defaultParentLayoutType === 'flex' ||\n\t\t\tparentLayoutType === 'flex' ||\n\t\t\tdefaultParentLayoutType === 'grid' ||\n\t\t\tparentLayoutType === 'grid' ) &&\n\t\tallowSizingOnChildren;\n\treturn !! settings?.layout && support;\n}\n\nfunction useHasSpacingPresets( settings ) {\n\tconst { defaultSpacingSizes, spacingSizes } = settings?.spacing || {};\n\treturn (\n\t\t( defaultSpacingSizes !== false &&\n\t\t\tspacingSizes?.default?.length > 0 ) ||\n\t\tspacingSizes?.theme?.length > 0 ||\n\t\tspacingSizes?.custom?.length > 0\n\t);\n}\n\nfunction filterValuesBySides( values, sides ) {\n\t// If no custom side configuration, all sides are opted into by default.\n\t// Without any values, we have nothing to filter either.\n\tif ( ! sides || ! values ) {\n\t\treturn values;\n\t}\n\n\t// Only include sides opted into within filtered values.\n\tconst filteredValues = {};\n\tsides.forEach( ( side ) => {\n\t\tif ( side === 'vertical' ) {\n\t\t\tfilteredValues.top = values.top;\n\t\t\tfilteredValues.bottom = values.bottom;\n\t\t}\n\t\tif ( side === 'horizontal' ) {\n\t\t\tfilteredValues.left = values.left;\n\t\t\tfilteredValues.right = values.right;\n\t\t}\n\t\tfilteredValues[ side ] = values?.[ side ];\n\t} );\n\n\treturn filteredValues;\n}\n\nfunction splitStyleValue( value ) {\n\t// Check for shorthand value (a string value).\n\tif ( value && typeof value === 'string' ) {\n\t\t// Convert to value for individual sides for BoxControl.\n\t\treturn {\n\t\t\ttop: value,\n\t\t\tright: value,\n\t\t\tbottom: value,\n\t\t\tleft: value,\n\t\t};\n\t}\n\n\treturn value;\n}\n\nfunction splitGapValue( value ) {\n\t// Check for shorthand value (a string value).\n\tif ( value && typeof value === 'string' ) {\n\t\t// If the value is a string, treat it as a single side (top) for the spacing controls.\n\t\treturn {\n\t\t\ttop: value,\n\t\t};\n\t}\n\n\tif ( value ) {\n\t\treturn {\n\t\t\t...value,\n\t\t\tright: value?.left,\n\t\t\tbottom: value?.top,\n\t\t};\n\t}\n\n\treturn value;\n}\n\nfunction DimensionsToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tcontentSize: true,\n\twideSize: true,\n\tpadding: true,\n\tmargin: true,\n\tblockGap: true,\n\tminHeight: true,\n\taspectRatio: true,\n\tchildLayout: true,\n};\n\nexport default function DimensionsPanel( {\n\tas: Wrapper = DimensionsToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tonVisualize = () => {},\n\t// Special case because the layout controls are not part of the dimensions panel\n\t// in global styles but not in block inspector.\n\tincludeLayoutControls = false,\n} ) {\n\tconst { dimensions, spacing } = settings;\n\n\tconst decodeValue = ( rawValue ) => {\n\t\tif ( rawValue && typeof rawValue === 'object' ) {\n\t\t\treturn Object.keys( rawValue ).reduce( ( acc, key ) => {\n\t\t\t\tacc[ key ] = getValueFromVariable(\n\t\t\t\t\t{ settings: { dimensions, spacing } },\n\t\t\t\t\t'',\n\t\t\t\t\trawValue[ key ]\n\t\t\t\t);\n\t\t\t\treturn acc;\n\t\t\t}, {} );\n\t\t}\n\t\treturn getValueFromVariable(\n\t\t\t{ settings: { dimensions, spacing } },\n\t\t\t'',\n\t\t\trawValue\n\t\t);\n\t};\n\n\tconst showSpacingPresetsControl = useHasSpacingPresets( settings );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: settings?.spacing?.units || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t],\n\t} );\n\n\t//Minimum Margin Value\n\tconst minimumMargin = -Infinity;\n\tconst [ minMarginValue, setMinMarginValue ] = useState( minimumMargin );\n\n\t// Content Width\n\tconst showContentSizeControl =\n\t\tuseHasContentSize( settings ) && includeLayoutControls;\n\tconst contentSizeValue = decodeValue( inheritedValue?.layout?.contentSize );\n\tconst setContentSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'layout', 'contentSize' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetContentSizeValue = () => !! value?.layout?.contentSize;\n\tconst resetContentSizeValue = () => setContentSizeValue( undefined );\n\n\t// Wide Width\n\tconst showWideSizeControl =\n\t\tuseHasWideSize( settings ) && includeLayoutControls;\n\tconst wideSizeValue = decodeValue( inheritedValue?.layout?.wideSize );\n\tconst setWideSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'layout', 'wideSize' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetWideSizeValue = () => !! value?.layout?.wideSize;\n\tconst resetWideSizeValue = () => setWideSizeValue( undefined );\n\n\t// Padding\n\tconst showPaddingControl = useHasPadding( settings );\n\tconst rawPadding = decodeValue( inheritedValue?.spacing?.padding );\n\tconst paddingValues = splitStyleValue( rawPadding );\n\tconst paddingSides = Array.isArray( settings?.spacing?.padding )\n\t\t? settings?.spacing?.padding\n\t\t: settings?.spacing?.padding?.sides;\n\tconst isAxialPadding =\n\t\tpaddingSides &&\n\t\tpaddingSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setPaddingValues = ( newPaddingValues ) => {\n\t\tconst padding = filterValuesBySides( newPaddingValues, paddingSides );\n\t\tonChange( setImmutably( value, [ 'spacing', 'padding' ], padding ) );\n\t};\n\tconst hasPaddingValue = () =>\n\t\t!! value?.spacing?.padding &&\n\t\tObject.keys( value?.spacing?.padding ).length;\n\tconst resetPaddingValue = () => setPaddingValues( undefined );\n\tconst onMouseOverPadding = () => onVisualize( 'padding' );\n\n\t// Margin\n\tconst showMarginControl = useHasMargin( settings );\n\tconst rawMargin = decodeValue( inheritedValue?.spacing?.margin );\n\tconst marginValues = splitStyleValue( rawMargin );\n\tconst marginSides = Array.isArray( settings?.spacing?.margin )\n\t\t? settings?.spacing?.margin\n\t\t: settings?.spacing?.margin?.sides;\n\tconst isAxialMargin =\n\t\tmarginSides &&\n\t\tmarginSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setMarginValues = ( newMarginValues ) => {\n\t\tconst margin = filterValuesBySides( newMarginValues, marginSides );\n\t\tonChange( setImmutably( value, [ 'spacing', 'margin' ], margin ) );\n\t};\n\tconst hasMarginValue = () =>\n\t\t!! value?.spacing?.margin &&\n\t\tObject.keys( value?.spacing?.margin ).length;\n\tconst resetMarginValue = () => setMarginValues( undefined );\n\tconst onMouseOverMargin = () => onVisualize( 'margin' );\n\n\t// Block Gap\n\tconst showGapControl = useHasGap( settings );\n\tconst gapValue = decodeValue( inheritedValue?.spacing?.blockGap );\n\tconst gapValues = splitGapValue( gapValue );\n\tconst gapSides = Array.isArray( settings?.spacing?.blockGap )\n\t\t? settings?.spacing?.blockGap\n\t\t: settings?.spacing?.blockGap?.sides;\n\tconst isAxialGap =\n\t\tgapSides && gapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setGapValue = ( newGapValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably( value, [ 'spacing', 'blockGap' ], newGapValue )\n\t\t);\n\t};\n\tconst setGapValues = ( nextBoxGapValue ) => {\n\t\tif ( ! nextBoxGapValue ) {\n\t\t\tsetGapValue( null );\n\t\t}\n\t\t// If axial gap is not enabled, treat the 'top' value as the shorthand gap value.\n\t\tif ( ! isAxialGap && nextBoxGapValue?.hasOwnProperty( 'top' ) ) {\n\t\t\tsetGapValue( nextBoxGapValue.top );\n\t\t} else {\n\t\t\tsetGapValue( {\n\t\t\t\ttop: nextBoxGapValue?.top,\n\t\t\t\tleft: nextBoxGapValue?.left,\n\t\t\t} );\n\t\t}\n\t};\n\tconst resetGapValue = () => setGapValue( undefined );\n\tconst hasGapValue = () => !! value?.spacing?.blockGap;\n\n\t// Min Height\n\tconst showMinHeightControl = useHasMinHeight( settings );\n\tconst minHeightValue = decodeValue( inheritedValue?.dimensions?.minHeight );\n\tconst setMinHeightValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'minHeight' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply min-height, while removing any applied aspect ratio.\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\ttempValue,\n\t\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\t};\n\tconst resetMinHeightValue = () => {\n\t\tsetMinHeightValue( undefined );\n\t};\n\tconst hasMinHeightValue = () => !! value?.dimensions?.minHeight;\n\n\t// Aspect Ratio\n\tconst showAspectRatioControl = useHasAspectRatio( settings );\n\tconst aspectRatioValue = decodeValue(\n\t\tinheritedValue?.dimensions?.aspectRatio\n\t);\n\tconst setAspectRatioValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply aspect-ratio, while removing any applied min-height.\n\t\tonChange(\n\t\t\tsetImmutably( tempValue, [ 'dimensions', 'minHeight' ], undefined )\n\t\t);\n\t};\n\tconst hasAspectRatioValue = () => !! value?.dimensions?.aspectRatio;\n\n\t// Child Layout\n\tconst showChildLayoutControl = useHasChildLayout( settings );\n\tconst childLayout = inheritedValue?.layout;\n\n\tconst setChildLayout = ( newChildLayout ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tlayout: {\n\t\t\t\t...newChildLayout,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tlayout: cleanEmptyObject( {\n\t\t\t\t...previousValue?.layout,\n\t\t\t\tcontentSize: undefined,\n\t\t\t\twideSize: undefined,\n\t\t\t\tselfStretch: undefined,\n\t\t\t\tflexSize: undefined,\n\t\t\t\tcolumnStart: undefined,\n\t\t\t\trowStart: undefined,\n\t\t\t\tcolumnSpan: undefined,\n\t\t\t\trowSpan: undefined,\n\t\t\t} ),\n\t\t\tspacing: {\n\t\t\t\t...previousValue?.spacing,\n\t\t\t\tpadding: undefined,\n\t\t\t\tmargin: undefined,\n\t\t\t\tblockGap: undefined,\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\t...previousValue?.dimensions,\n\t\t\t\tminHeight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\tconst onMouseLeaveControls = () => onVisualize( false );\n\n\tconst inputProps = {\n\t\tmin: minMarginValue,\n\t\tonDragStart: () => {\n\t\t\t//Reset to 0 in case the value was negative.\n\t\t\tsetMinMarginValue( 0 );\n\t\t},\n\t\tonDragEnd: () => {\n\t\t\tsetMinMarginValue( minimumMargin );\n\t\t},\n\t};\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ ( showContentSizeControl || showWideSizeControl ) && (\n\t\t\t\t<span className=\"span-columns\">\n\t\t\t\t\t{ __( 'Set the width of the main content area.' ) }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t\t{ showContentSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Content width' ) }\n\t\t\t\t\thasValue={ hasUserSetContentSizeValue }\n\t\t\t\t\tonDeselect={ resetContentSizeValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.contentSize ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.contentSize\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Content width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ contentSizeValue || '' }\n\t\t\t\t\t\tonChange={ ( nextContentSize ) => {\n\t\t\t\t\t\t\tsetContentSizeValue( nextContentSize );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t\t\t<Icon icon={ alignNone } />\n\t\t\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showWideSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\thasValue={ hasUserSetWideSizeValue }\n\t\t\t\t\tonDeselect={ resetWideSizeValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.wideSize ?? DEFAULT_CONTROLS.wideSize\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ wideSizeValue || '' }\n\t\t\t\t\t\tonChange={ ( nextWideSize ) => {\n\t\t\t\t\t\t\tsetWideSizeValue( nextWideSize );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t\t\t<Icon icon={ stretchWide } />\n\t\t\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showPaddingControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasPaddingValue }\n\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\tonDeselect={ resetPaddingValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.padding ?? DEFAULT_CONTROLS.padding\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialPadding }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverPadding }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverPadding }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showMarginControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMarginValue }\n\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\tonDeselect={ resetMarginValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.margin ?? DEFAULT_CONTROLS.margin\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\t\tinputProps={ inputProps }\n\t\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialMargin }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverMargin }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\t\tminimumCustomValue={ -Infinity }\n\t\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverMargin }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showGapControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasGapValue }\n\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\tonDeselect={ resetGapValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.blockGap ?? DEFAULT_CONTROLS.blockGap\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t\t'single-column':\n\t\t\t\t\t\t\t// If UnitControl is used, should be single-column.\n\t\t\t\t\t\t\t! showSpacingPresetsControl && ! isAxialGap,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl &&\n\t\t\t\t\t\t( isAxialGap ? (\n\t\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValues }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tsides={ gapSides }\n\t\t\t\t\t\t\t\tvalues={ gapValues }\n\t\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\t\tsplitOnAxis={ isAxialGap }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValue }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tvalue={ gapValue }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tonChange={ setGapValues }\n\t\t\t\t\t\t\tshowSideInLabel={ false }\n\t\t\t\t\t\t\tsides={ isAxialGap ? gapSides : [ 'top' ] } // Use 'top' as the shorthand property in non-axial configurations.\n\t\t\t\t\t\t\tvalues={ gapValues }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showChildLayoutControl && (\n\t\t\t\t<ChildLayoutControl\n\t\t\t\t\tvalue={ childLayout }\n\t\t\t\t\tonChange={ setChildLayout }\n\t\t\t\t\tparentLayout={ settings?.parentLayout }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.childLayout ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.childLayout\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showMinHeightControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMinHeightValue }\n\t\t\t\t\tlabel={ __( 'Minimum height' ) }\n\t\t\t\t\tonDeselect={ resetMinHeightValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.minHeight ?? DEFAULT_CONTROLS.minHeight\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<HeightControl\n\t\t\t\t\t\tlabel={ __( 'Minimum height' ) }\n\t\t\t\t\t\tvalue={ minHeightValue }\n\t\t\t\t\t\tonChange={ setMinHeightValue }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showAspectRatioControl && (\n\t\t\t\t<AspectRatioTool\n\t\t\t\t\thasValue={ hasAspectRatioValue }\n\t\t\t\t\tvalue={ aspectRatioValue }\n\t\t\t\t\tonChange={ setAspectRatioValue }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.aspectRatio ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.aspectRatio\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","__","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","BoxControl","__experimentalUnitControl","UnitControl","__experimentalUseCustomUnits","useCustomUnits","__experimentalInputControlPrefixWrapper","InputControlPrefixWrapper","Icon","alignNone","stretchWide","useCallback","useState","Platform","getValueFromVariable","useToolsPanelDropdownMenuProps","SpacingSizesControl","HeightControl","ChildLayoutControl","AspectRatioTool","cleanEmptyObject","setImmutably","jsx","_jsx","jsxs","_jsxs","AXIAL_SIDES","useHasDimensionsPanel","settings","hasContentSize","useHasContentSize","hasWideSize","useHasWideSize","hasPadding","useHasPadding","hasMargin","useHasMargin","hasGap","useHasGap","hasMinHeight","useHasMinHeight","hasAspectRatio","useHasAspectRatio","hasChildLayout","useHasChildLayout","OS","layout","contentSize","wideSize","spacing","padding","margin","blockGap","dimensions","minHeight","aspectRatio","_settings$parentLayou","type","parentLayoutType","default","defaultParentLayoutType","allowSizingOnChildren","parentLayout","support","useHasSpacingPresets","defaultSpacingSizes","spacingSizes","length","theme","custom","filterValuesBySides","values","sides","filteredValues","forEach","side","top","bottom","left","right","splitStyleValue","value","splitGapValue","isAxialGap","DimensionsToolsPanel","resetAllFilter","onChange","panelId","children","dropdownMenuProps","resetAll","updatedValue","label","DEFAULT_CONTROLS","childLayout","DimensionsPanel","as","Wrapper","inheritedValue","defaultControls","onVisualize","includeLayoutControls","_defaultControls$cont","_defaultControls$wide","_defaultControls$padd","_defaultControls$marg","_defaultControls$bloc","_defaultControls$chil","_defaultControls$minH","_defaultControls$aspe","decodeValue","rawValue","Object","keys","reduce","acc","key","showSpacingPresetsControl","units","availableUnits","minimumMargin","Infinity","minMarginValue","setMinMarginValue","showContentSizeControl","contentSizeValue","setContentSizeValue","newValue","undefined","hasUserSetContentSizeValue","resetContentSizeValue","showWideSizeControl","wideSizeValue","setWideSizeValue","hasUserSetWideSizeValue","resetWideSizeValue","showPaddingControl","rawPadding","paddingValues","paddingSides","Array","isArray","isAxialPadding","some","includes","setPaddingValues","newPaddingValues","hasPaddingValue","resetPaddingValue","onMouseOverPadding","showMarginControl","rawMargin","marginValues","marginSides","isAxialMargin","setMarginValues","newMarginValues","hasMarginValue","resetMarginValue","onMouseOverMargin","showGapControl","gapSides","gapValue","gapValues","setGapValue","newGapValue","setGapValues","nextBoxGapValue","hasOwnProperty","resetGapValue","hasGapValue","showMinHeightControl","minHeightValue","setMinHeightValue","tempValue","resetMinHeightValue","hasMinHeightValue","showAspectRatioControl","aspectRatioValue","setAspectRatioValue","hasAspectRatioValue","showChildLayoutControl","setChildLayout","newChildLayout","previousValue","selfStretch","flexSize","columnStart","rowStart","columnSpan","rowSpan","onMouseLeaveControls","inputProps","min","onDragStart","onDragEnd","className","hasValue","onDeselect","isShownByDefault","__next40pxDefaultSize","labelPosition","nextContentSize","prefix","variant","icon","nextWideSize","allowReset","splitOnAxis","onMouseOver","onMouseOut","minimumCustomValue","showSideInLabel"],"sources":["@wordpress/block-editor/src/components/global-styles/dimensions-panel.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tBoxControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { Icon, alignNone, stretchWide } from '@wordpress/icons';\nimport { useCallback, useState, Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getValueFromVariable, useToolsPanelDropdownMenuProps } from './utils';\nimport SpacingSizesControl from '../spacing-sizes-control';\nimport HeightControl from '../height-control';\nimport ChildLayoutControl from '../child-layout-control';\nimport AspectRatioTool from '../dimensions-tool/aspect-ratio-tool';\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport { setImmutably } from '../../utils/object';\n\nconst AXIAL_SIDES = [ 'horizontal', 'vertical' ];\n\nexport function useHasDimensionsPanel( settings ) {\n\tconst hasContentSize = useHasContentSize( settings );\n\tconst hasWideSize = useHasWideSize( settings );\n\tconst hasPadding = useHasPadding( settings );\n\tconst hasMargin = useHasMargin( settings );\n\tconst hasGap = useHasGap( settings );\n\tconst hasMinHeight = useHasMinHeight( settings );\n\tconst hasAspectRatio = useHasAspectRatio( settings );\n\tconst hasChildLayout = useHasChildLayout( settings );\n\n\treturn (\n\t\tPlatform.OS === 'web' &&\n\t\t( hasContentSize ||\n\t\t\thasWideSize ||\n\t\t\thasPadding ||\n\t\t\thasMargin ||\n\t\t\thasGap ||\n\t\t\thasMinHeight ||\n\t\t\thasAspectRatio ||\n\t\t\thasChildLayout )\n\t);\n}\n\nfunction useHasContentSize( settings ) {\n\treturn settings?.layout?.contentSize;\n}\n\nfunction useHasWideSize( settings ) {\n\treturn settings?.layout?.wideSize;\n}\n\nfunction useHasPadding( settings ) {\n\treturn settings?.spacing?.padding;\n}\n\nfunction useHasMargin( settings ) {\n\treturn settings?.spacing?.margin;\n}\n\nfunction useHasGap( settings ) {\n\treturn settings?.spacing?.blockGap;\n}\n\nfunction useHasMinHeight( settings ) {\n\treturn settings?.dimensions?.minHeight;\n}\n\nfunction useHasAspectRatio( settings ) {\n\treturn settings?.dimensions?.aspectRatio;\n}\n\nfunction useHasChildLayout( settings ) {\n\tconst {\n\t\ttype: parentLayoutType = 'default',\n\t\tdefault: { type: defaultParentLayoutType = 'default' } = {},\n\t\tallowSizingOnChildren = false,\n\t} = settings?.parentLayout ?? {};\n\n\tconst support =\n\t\t( defaultParentLayoutType === 'flex' ||\n\t\t\tparentLayoutType === 'flex' ||\n\t\t\tdefaultParentLayoutType === 'grid' ||\n\t\t\tparentLayoutType === 'grid' ) &&\n\t\tallowSizingOnChildren;\n\treturn !! settings?.layout && support;\n}\n\nfunction useHasSpacingPresets( settings ) {\n\tconst { defaultSpacingSizes, spacingSizes } = settings?.spacing || {};\n\treturn (\n\t\t( defaultSpacingSizes !== false &&\n\t\t\tspacingSizes?.default?.length > 0 ) ||\n\t\tspacingSizes?.theme?.length > 0 ||\n\t\tspacingSizes?.custom?.length > 0\n\t);\n}\n\nfunction filterValuesBySides( values, sides ) {\n\t// If no custom side configuration, all sides are opted into by default.\n\t// Without any values, we have nothing to filter either.\n\tif ( ! sides || ! values ) {\n\t\treturn values;\n\t}\n\n\t// Only include sides opted into within filtered values.\n\tconst filteredValues = {};\n\tsides.forEach( ( side ) => {\n\t\tif ( side === 'vertical' ) {\n\t\t\tfilteredValues.top = values.top;\n\t\t\tfilteredValues.bottom = values.bottom;\n\t\t}\n\t\tif ( side === 'horizontal' ) {\n\t\t\tfilteredValues.left = values.left;\n\t\t\tfilteredValues.right = values.right;\n\t\t}\n\t\tfilteredValues[ side ] = values?.[ side ];\n\t} );\n\n\treturn filteredValues;\n}\n\nfunction splitStyleValue( value ) {\n\t// Check for shorthand value (a string value).\n\tif ( value && typeof value === 'string' ) {\n\t\t// Convert to value for individual sides for BoxControl.\n\t\treturn {\n\t\t\ttop: value,\n\t\t\tright: value,\n\t\t\tbottom: value,\n\t\t\tleft: value,\n\t\t};\n\t}\n\n\treturn value;\n}\n\nfunction splitGapValue( value, isAxialGap ) {\n\tif ( ! value ) {\n\t\treturn value;\n\t}\n\n\t// Check for shorthand value (a string value).\n\tif ( typeof value === 'string' ) {\n\t\t/*\n\t\t * Map the string value to appropriate sides for the spacing control depending\n\t\t * on whether the current block has axial gap support or not.\n\t\t *\n\t\t * Note: The axial value pairs must match for the spacing control to display\n\t\t * the appropriate horizontal/vertical sliders.\n\t\t */\n\t\treturn isAxialGap\n\t\t\t? { top: value, right: value, bottom: value, left: value }\n\t\t\t: { top: value };\n\t}\n\n\treturn {\n\t\t...value,\n\t\tright: value?.left,\n\t\tbottom: value?.top,\n\t};\n}\n\nfunction DimensionsToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tcontentSize: true,\n\twideSize: true,\n\tpadding: true,\n\tmargin: true,\n\tblockGap: true,\n\tminHeight: true,\n\taspectRatio: true,\n\tchildLayout: true,\n};\n\nexport default function DimensionsPanel( {\n\tas: Wrapper = DimensionsToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tonVisualize = () => {},\n\t// Special case because the layout controls are not part of the dimensions panel\n\t// in global styles but not in block inspector.\n\tincludeLayoutControls = false,\n} ) {\n\tconst { dimensions, spacing } = settings;\n\n\tconst decodeValue = ( rawValue ) => {\n\t\tif ( rawValue && typeof rawValue === 'object' ) {\n\t\t\treturn Object.keys( rawValue ).reduce( ( acc, key ) => {\n\t\t\t\tacc[ key ] = getValueFromVariable(\n\t\t\t\t\t{ settings: { dimensions, spacing } },\n\t\t\t\t\t'',\n\t\t\t\t\trawValue[ key ]\n\t\t\t\t);\n\t\t\t\treturn acc;\n\t\t\t}, {} );\n\t\t}\n\t\treturn getValueFromVariable(\n\t\t\t{ settings: { dimensions, spacing } },\n\t\t\t'',\n\t\t\trawValue\n\t\t);\n\t};\n\n\tconst showSpacingPresetsControl = useHasSpacingPresets( settings );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: settings?.spacing?.units || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t],\n\t} );\n\n\t//Minimum Margin Value\n\tconst minimumMargin = -Infinity;\n\tconst [ minMarginValue, setMinMarginValue ] = useState( minimumMargin );\n\n\t// Content Width\n\tconst showContentSizeControl =\n\t\tuseHasContentSize( settings ) && includeLayoutControls;\n\tconst contentSizeValue = decodeValue( inheritedValue?.layout?.contentSize );\n\tconst setContentSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'layout', 'contentSize' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetContentSizeValue = () => !! value?.layout?.contentSize;\n\tconst resetContentSizeValue = () => setContentSizeValue( undefined );\n\n\t// Wide Width\n\tconst showWideSizeControl =\n\t\tuseHasWideSize( settings ) && includeLayoutControls;\n\tconst wideSizeValue = decodeValue( inheritedValue?.layout?.wideSize );\n\tconst setWideSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'layout', 'wideSize' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetWideSizeValue = () => !! value?.layout?.wideSize;\n\tconst resetWideSizeValue = () => setWideSizeValue( undefined );\n\n\t// Padding\n\tconst showPaddingControl = useHasPadding( settings );\n\tconst rawPadding = decodeValue( inheritedValue?.spacing?.padding );\n\tconst paddingValues = splitStyleValue( rawPadding );\n\tconst paddingSides = Array.isArray( settings?.spacing?.padding )\n\t\t? settings?.spacing?.padding\n\t\t: settings?.spacing?.padding?.sides;\n\tconst isAxialPadding =\n\t\tpaddingSides &&\n\t\tpaddingSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setPaddingValues = ( newPaddingValues ) => {\n\t\tconst padding = filterValuesBySides( newPaddingValues, paddingSides );\n\t\tonChange( setImmutably( value, [ 'spacing', 'padding' ], padding ) );\n\t};\n\tconst hasPaddingValue = () =>\n\t\t!! value?.spacing?.padding &&\n\t\tObject.keys( value?.spacing?.padding ).length;\n\tconst resetPaddingValue = () => setPaddingValues( undefined );\n\tconst onMouseOverPadding = () => onVisualize( 'padding' );\n\n\t// Margin\n\tconst showMarginControl = useHasMargin( settings );\n\tconst rawMargin = decodeValue( inheritedValue?.spacing?.margin );\n\tconst marginValues = splitStyleValue( rawMargin );\n\tconst marginSides = Array.isArray( settings?.spacing?.margin )\n\t\t? settings?.spacing?.margin\n\t\t: settings?.spacing?.margin?.sides;\n\tconst isAxialMargin =\n\t\tmarginSides &&\n\t\tmarginSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setMarginValues = ( newMarginValues ) => {\n\t\tconst margin = filterValuesBySides( newMarginValues, marginSides );\n\t\tonChange( setImmutably( value, [ 'spacing', 'margin' ], margin ) );\n\t};\n\tconst hasMarginValue = () =>\n\t\t!! value?.spacing?.margin &&\n\t\tObject.keys( value?.spacing?.margin ).length;\n\tconst resetMarginValue = () => setMarginValues( undefined );\n\tconst onMouseOverMargin = () => onVisualize( 'margin' );\n\n\t// Block Gap\n\tconst showGapControl = useHasGap( settings );\n\tconst gapSides = Array.isArray( settings?.spacing?.blockGap )\n\t\t? settings?.spacing?.blockGap\n\t\t: settings?.spacing?.blockGap?.sides;\n\tconst isAxialGap =\n\t\tgapSides && gapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst gapValue = decodeValue( inheritedValue?.spacing?.blockGap );\n\tconst gapValues = splitGapValue( gapValue, isAxialGap );\n\tconst setGapValue = ( newGapValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably( value, [ 'spacing', 'blockGap' ], newGapValue )\n\t\t);\n\t};\n\tconst setGapValues = ( nextBoxGapValue ) => {\n\t\tif ( ! nextBoxGapValue ) {\n\t\t\tsetGapValue( null );\n\t\t}\n\t\t// If axial gap is not enabled, treat the 'top' value as the shorthand gap value.\n\t\tif ( ! isAxialGap && nextBoxGapValue?.hasOwnProperty( 'top' ) ) {\n\t\t\tsetGapValue( nextBoxGapValue.top );\n\t\t} else {\n\t\t\tsetGapValue( {\n\t\t\t\ttop: nextBoxGapValue?.top,\n\t\t\t\tleft: nextBoxGapValue?.left,\n\t\t\t} );\n\t\t}\n\t};\n\tconst resetGapValue = () => setGapValue( undefined );\n\tconst hasGapValue = () => !! value?.spacing?.blockGap;\n\n\t// Min Height\n\tconst showMinHeightControl = useHasMinHeight( settings );\n\tconst minHeightValue = decodeValue( inheritedValue?.dimensions?.minHeight );\n\tconst setMinHeightValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'minHeight' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply min-height, while removing any applied aspect ratio.\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\ttempValue,\n\t\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\t};\n\tconst resetMinHeightValue = () => {\n\t\tsetMinHeightValue( undefined );\n\t};\n\tconst hasMinHeightValue = () => !! value?.dimensions?.minHeight;\n\n\t// Aspect Ratio\n\tconst showAspectRatioControl = useHasAspectRatio( settings );\n\tconst aspectRatioValue = decodeValue(\n\t\tinheritedValue?.dimensions?.aspectRatio\n\t);\n\tconst setAspectRatioValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply aspect-ratio, while removing any applied min-height.\n\t\tonChange(\n\t\t\tsetImmutably( tempValue, [ 'dimensions', 'minHeight' ], undefined )\n\t\t);\n\t};\n\tconst hasAspectRatioValue = () => !! value?.dimensions?.aspectRatio;\n\n\t// Child Layout\n\tconst showChildLayoutControl = useHasChildLayout( settings );\n\tconst childLayout = inheritedValue?.layout;\n\n\tconst setChildLayout = ( newChildLayout ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tlayout: {\n\t\t\t\t...newChildLayout,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tlayout: cleanEmptyObject( {\n\t\t\t\t...previousValue?.layout,\n\t\t\t\tcontentSize: undefined,\n\t\t\t\twideSize: undefined,\n\t\t\t\tselfStretch: undefined,\n\t\t\t\tflexSize: undefined,\n\t\t\t\tcolumnStart: undefined,\n\t\t\t\trowStart: undefined,\n\t\t\t\tcolumnSpan: undefined,\n\t\t\t\trowSpan: undefined,\n\t\t\t} ),\n\t\t\tspacing: {\n\t\t\t\t...previousValue?.spacing,\n\t\t\t\tpadding: undefined,\n\t\t\t\tmargin: undefined,\n\t\t\t\tblockGap: undefined,\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\t...previousValue?.dimensions,\n\t\t\t\tminHeight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\tconst onMouseLeaveControls = () => onVisualize( false );\n\n\tconst inputProps = {\n\t\tmin: minMarginValue,\n\t\tonDragStart: () => {\n\t\t\t//Reset to 0 in case the value was negative.\n\t\t\tsetMinMarginValue( 0 );\n\t\t},\n\t\tonDragEnd: () => {\n\t\t\tsetMinMarginValue( minimumMargin );\n\t\t},\n\t};\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ ( showContentSizeControl || showWideSizeControl ) && (\n\t\t\t\t<span className=\"span-columns\">\n\t\t\t\t\t{ __( 'Set the width of the main content area.' ) }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t\t{ showContentSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Content width' ) }\n\t\t\t\t\thasValue={ hasUserSetContentSizeValue }\n\t\t\t\t\tonDeselect={ resetContentSizeValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.contentSize ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.contentSize\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Content width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ contentSizeValue || '' }\n\t\t\t\t\t\tonChange={ ( nextContentSize ) => {\n\t\t\t\t\t\t\tsetContentSizeValue( nextContentSize );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t\t\t<Icon icon={ alignNone } />\n\t\t\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showWideSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\thasValue={ hasUserSetWideSizeValue }\n\t\t\t\t\tonDeselect={ resetWideSizeValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.wideSize ?? DEFAULT_CONTROLS.wideSize\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ wideSizeValue || '' }\n\t\t\t\t\t\tonChange={ ( nextWideSize ) => {\n\t\t\t\t\t\t\tsetWideSizeValue( nextWideSize );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t\t\t<Icon icon={ stretchWide } />\n\t\t\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showPaddingControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasPaddingValue }\n\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\tonDeselect={ resetPaddingValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.padding ?? DEFAULT_CONTROLS.padding\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialPadding }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverPadding }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverPadding }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showMarginControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMarginValue }\n\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\tonDeselect={ resetMarginValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.margin ?? DEFAULT_CONTROLS.margin\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\t\tinputProps={ inputProps }\n\t\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialMargin }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverMargin }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\t\tminimumCustomValue={ -Infinity }\n\t\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tonMouseOver={ onMouseOverMargin }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showGapControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasGapValue }\n\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\tonDeselect={ resetGapValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.blockGap ?? DEFAULT_CONTROLS.blockGap\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t\t'single-column':\n\t\t\t\t\t\t\t// If UnitControl is used, should be single-column.\n\t\t\t\t\t\t\t! showSpacingPresetsControl && ! isAxialGap,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl &&\n\t\t\t\t\t\t( isAxialGap ? (\n\t\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValues }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tsides={ gapSides }\n\t\t\t\t\t\t\t\tvalues={ gapValues }\n\t\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\t\tsplitOnAxis={ isAxialGap }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValue }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tvalue={ gapValue }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tonChange={ setGapValues }\n\t\t\t\t\t\t\tshowSideInLabel={ false }\n\t\t\t\t\t\t\tsides={ isAxialGap ? gapSides : [ 'top' ] } // Use 'top' as the shorthand property in non-axial configurations.\n\t\t\t\t\t\t\tvalues={ gapValues }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showChildLayoutControl && (\n\t\t\t\t<ChildLayoutControl\n\t\t\t\t\tvalue={ childLayout }\n\t\t\t\t\tonChange={ setChildLayout }\n\t\t\t\t\tparentLayout={ settings?.parentLayout }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.childLayout ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.childLayout\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showMinHeightControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMinHeightValue }\n\t\t\t\t\tlabel={ __( 'Minimum height' ) }\n\t\t\t\t\tonDeselect={ resetMinHeightValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.minHeight ?? DEFAULT_CONTROLS.minHeight\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<HeightControl\n\t\t\t\t\t\tlabel={ __( 'Minimum height' ) }\n\t\t\t\t\t\tvalue={ minHeightValue }\n\t\t\t\t\t\tonChange={ setMinHeightValue }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showAspectRatioControl && (\n\t\t\t\t<AspectRatioTool\n\t\t\t\t\thasValue={ hasAspectRatioValue }\n\t\t\t\t\tvalue={ aspectRatioValue }\n\t\t\t\t\tonChange={ setAspectRatioValue }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.aspectRatio ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.aspectRatio\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -37,10 +37,10 @@ export function getCompatibilityStyles() {
|
|
|
37
37
|
return accumulator;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
// Don't try to add
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
if (
|
|
40
|
+
// Don't try to add core WP styles. We are responsible for adding
|
|
41
|
+
// them. This compatibility layer is only meant to add styles added
|
|
42
|
+
// by plugins or themes.
|
|
43
|
+
if (ownerNode.id.startsWith('wp-')) {
|
|
44
44
|
return accumulator;
|
|
45
45
|
}
|
|
46
46
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["compatibilityStyles","getCompatibilityStyles","Array","from","document","styleSheets","reduce","accumulator","styleSheet","cssRules","e","ownerNode","
|
|
1
|
+
{"version":3,"names":["compatibilityStyles","getCompatibilityStyles","Array","from","document","styleSheets","reduce","accumulator","styleSheet","cssRules","e","ownerNode","id","startsWith","matchFromRules","_cssRules","find","selectorText","conditionText","__cssRules","includes","isInline","tagName","mainStylesCssId","replace","mainStylesElement","getElementById","push","cloneNode","inlineStylesCssId","inlineStylesElement"],"sources":["@wordpress/block-editor/src/components/iframe/get-compatibility-styles.js"],"sourcesContent":["let compatibilityStyles = null;\n\n/**\n * Returns a list of stylesheets that target the editor canvas. A stylesheet is\n * considered targetting the editor a canvas if it contains the\n * `editor-styles-wrapper`, `wp-block`, or `wp-block-*` class selectors.\n *\n * Ideally, this hook should be removed in the future and styles should be added\n * explicitly as editor styles.\n */\nexport function getCompatibilityStyles() {\n\tif ( compatibilityStyles ) {\n\t\treturn compatibilityStyles;\n\t}\n\n\t// Only memoize the result once on load, since these stylesheets should not\n\t// change.\n\tcompatibilityStyles = Array.from( document.styleSheets ).reduce(\n\t\t( accumulator, styleSheet ) => {\n\t\t\ttry {\n\t\t\t\t// May fail for external styles.\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\tstyleSheet.cssRules;\n\t\t\t} catch ( e ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\n\t\t\tconst { ownerNode, cssRules } = styleSheet;\n\n\t\t\t// Stylesheet is added by another stylesheet. See\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet/ownerNode#notes.\n\t\t\tif ( ownerNode === null ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\n\t\t\tif ( ! cssRules ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\n\t\t\t// Don't try to add core WP styles. We are responsible for adding\n\t\t\t// them. This compatibility layer is only meant to add styles added\n\t\t\t// by plugins or themes.\n\t\t\tif ( ownerNode.id.startsWith( 'wp-' ) ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\n\t\t\t// Don't try to add styles without ID. Styles enqueued via the WP dependency system will always have IDs.\n\t\t\tif ( ! ownerNode.id ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\n\t\t\tfunction matchFromRules( _cssRules ) {\n\t\t\t\treturn Array.from( _cssRules ).find(\n\t\t\t\t\t( {\n\t\t\t\t\t\tselectorText,\n\t\t\t\t\t\tconditionText,\n\t\t\t\t\t\tcssRules: __cssRules,\n\t\t\t\t\t} ) => {\n\t\t\t\t\t\t// If the rule is conditional then it will not have selector text.\n\t\t\t\t\t\t// Recurse into child CSS ruleset to determine selector eligibility.\n\t\t\t\t\t\tif ( conditionText ) {\n\t\t\t\t\t\t\treturn matchFromRules( __cssRules );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tselectorText &&\n\t\t\t\t\t\t\t( selectorText.includes(\n\t\t\t\t\t\t\t\t'.editor-styles-wrapper'\n\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\t\tselectorText.includes( '.wp-block' ) )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( matchFromRules( cssRules ) ) {\n\t\t\t\tconst isInline = ownerNode.tagName === 'STYLE';\n\n\t\t\t\tif ( isInline ) {\n\t\t\t\t\t// If the current target is inline,\n\t\t\t\t\t// it could be a dependency of an existing stylesheet.\n\t\t\t\t\t// Look for that dependency and add it BEFORE the current target.\n\t\t\t\t\tconst mainStylesCssId = ownerNode.id.replace(\n\t\t\t\t\t\t'-inline-css',\n\t\t\t\t\t\t'-css'\n\t\t\t\t\t);\n\t\t\t\t\tconst mainStylesElement =\n\t\t\t\t\t\tdocument.getElementById( mainStylesCssId );\n\t\t\t\t\tif ( mainStylesElement ) {\n\t\t\t\t\t\taccumulator.push( mainStylesElement.cloneNode( true ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\taccumulator.push( ownerNode.cloneNode( true ) );\n\n\t\t\t\tif ( ! isInline ) {\n\t\t\t\t\t// If the current target is not inline,\n\t\t\t\t\t// we still look for inline styles that could be relevant for the current target.\n\t\t\t\t\t// If they exist, add them AFTER the current target.\n\t\t\t\t\tconst inlineStylesCssId = ownerNode.id.replace(\n\t\t\t\t\t\t'-css',\n\t\t\t\t\t\t'-inline-css'\n\t\t\t\t\t);\n\t\t\t\t\tconst inlineStylesElement =\n\t\t\t\t\t\tdocument.getElementById( inlineStylesCssId );\n\t\t\t\t\tif ( inlineStylesElement ) {\n\t\t\t\t\t\taccumulator.push(\n\t\t\t\t\t\t\tinlineStylesElement.cloneNode( true )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\n\treturn compatibilityStyles;\n}\n"],"mappings":"AAAA,IAAIA,mBAAmB,GAAG,IAAI;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CAAA,EAAG;EACxC,IAAKD,mBAAmB,EAAG;IAC1B,OAAOA,mBAAmB;EAC3B;;EAEA;EACA;EACAA,mBAAmB,GAAGE,KAAK,CAACC,IAAI,CAAEC,QAAQ,CAACC,WAAY,CAAC,CAACC,MAAM,CAC9D,CAAEC,WAAW,EAAEC,UAAU,KAAM;IAC9B,IAAI;MACH;MACA;MACAA,UAAU,CAACC,QAAQ;IACpB,CAAC,CAAC,OAAQC,CAAC,EAAG;MACb,OAAOH,WAAW;IACnB;IAEA,MAAM;MAAEI,SAAS;MAAEF;IAAS,CAAC,GAAGD,UAAU;;IAE1C;IACA;IACA,IAAKG,SAAS,KAAK,IAAI,EAAG;MACzB,OAAOJ,WAAW;IACnB;IAEA,IAAK,CAAEE,QAAQ,EAAG;MACjB,OAAOF,WAAW;IACnB;;IAEA;IACA;IACA;IACA,IAAKI,SAAS,CAACC,EAAE,CAACC,UAAU,CAAE,KAAM,CAAC,EAAG;MACvC,OAAON,WAAW;IACnB;;IAEA;IACA,IAAK,CAAEI,SAAS,CAACC,EAAE,EAAG;MACrB,OAAOL,WAAW;IACnB;IAEA,SAASO,cAAcA,CAAEC,SAAS,EAAG;MACpC,OAAOb,KAAK,CAACC,IAAI,CAAEY,SAAU,CAAC,CAACC,IAAI,CAClC,CAAE;QACDC,YAAY;QACZC,aAAa;QACbT,QAAQ,EAAEU;MACX,CAAC,KAAM;QACN;QACA;QACA,IAAKD,aAAa,EAAG;UACpB,OAAOJ,cAAc,CAAEK,UAAW,CAAC;QACpC;QAEA,OACCF,YAAY,KACVA,YAAY,CAACG,QAAQ,CACtB,wBACD,CAAC,IACAH,YAAY,CAACG,QAAQ,CAAE,WAAY,CAAC,CAAE;MAEzC,CACD,CAAC;IACF;IAEA,IAAKN,cAAc,CAAEL,QAAS,CAAC,EAAG;MACjC,MAAMY,QAAQ,GAAGV,SAAS,CAACW,OAAO,KAAK,OAAO;MAE9C,IAAKD,QAAQ,EAAG;QACf;QACA;QACA;QACA,MAAME,eAAe,GAAGZ,SAAS,CAACC,EAAE,CAACY,OAAO,CAC3C,aAAa,EACb,MACD,CAAC;QACD,MAAMC,iBAAiB,GACtBrB,QAAQ,CAACsB,cAAc,CAAEH,eAAgB,CAAC;QAC3C,IAAKE,iBAAiB,EAAG;UACxBlB,WAAW,CAACoB,IAAI,CAAEF,iBAAiB,CAACG,SAAS,CAAE,IAAK,CAAE,CAAC;QACxD;MACD;MAEArB,WAAW,CAACoB,IAAI,CAAEhB,SAAS,CAACiB,SAAS,CAAE,IAAK,CAAE,CAAC;MAE/C,IAAK,CAAEP,QAAQ,EAAG;QACjB;QACA;QACA;QACA,MAAMQ,iBAAiB,GAAGlB,SAAS,CAACC,EAAE,CAACY,OAAO,CAC7C,MAAM,EACN,aACD,CAAC;QACD,MAAMM,mBAAmB,GACxB1B,QAAQ,CAACsB,cAAc,CAAEG,iBAAkB,CAAC;QAC7C,IAAKC,mBAAmB,EAAG;UAC1BvB,WAAW,CAACoB,IAAI,CACfG,mBAAmB,CAACF,SAAS,CAAE,IAAK,CACrC,CAAC;QACF;MACD;IACD;IAEA,OAAOrB,WAAW;EACnB,CAAC,EACD,EACD,CAAC;EAED,OAAOP,mBAAmB;AAC3B","ignoreList":[]}
|
|
@@ -166,6 +166,21 @@ function Iframe({
|
|
|
166
166
|
}
|
|
167
167
|
iFrameDocument.addEventListener('dragover', preventFileDropDefault, false);
|
|
168
168
|
iFrameDocument.addEventListener('drop', preventFileDropDefault, false);
|
|
169
|
+
// Prevent clicks on links from navigating away. Note that links
|
|
170
|
+
// inside `contenteditable` are already disabled by the browser, so
|
|
171
|
+
// this is for links in blocks outside of `contenteditable`.
|
|
172
|
+
iFrameDocument.addEventListener('click', event => {
|
|
173
|
+
if (event.target.tagName === 'A') {
|
|
174
|
+
event.preventDefault();
|
|
175
|
+
|
|
176
|
+
// Appending a hash to the current URL will not reload the
|
|
177
|
+
// page. This is useful for e.g. footnotes.
|
|
178
|
+
const href = event.target.getAttribute('href');
|
|
179
|
+
if (href.startsWith('#')) {
|
|
180
|
+
iFrameDocument.defaultView.location.hash = href.slice(1);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
});
|
|
169
184
|
}
|
|
170
185
|
node.addEventListener('load', onLoad);
|
|
171
186
|
return () => {
|
|
@@ -222,6 +237,7 @@ function Iframe({
|
|
|
222
237
|
<html>
|
|
223
238
|
<head>
|
|
224
239
|
<meta charset="utf-8">
|
|
240
|
+
<base href="${window.location.origin}">
|
|
225
241
|
<script>window.frameElement._load()</script>
|
|
226
242
|
<style>
|
|
227
243
|
html{
|