@wordpress/block-editor 11.1.0 → 11.2.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 +7 -0
- package/LICENSE.md +1 -1
- package/build/components/block-actions/index.js +9 -0
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-inspector/index.js +4 -2
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-preview/auto.js +1 -4
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +4 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-styles/index.js +3 -1
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +43 -10
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build/components/default-style-picker/index.js +1 -0
- package/build/components/default-style-picker/index.js.map +1 -1
- package/build/components/font-sizes/with-font-sizes.js +5 -8
- package/build/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build/components/iframe/index.js +37 -8
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/iframe/use-compatibility-styles.js +6 -1
- package/build/components/iframe/use-compatibility-styles.js.map +1 -1
- package/build/components/image-size-control/index.js +1 -0
- package/build/components/image-size-control/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab.js +4 -4
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/index.js +3 -2
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/menu.js +11 -5
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inspector-controls/groups.js +3 -1
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/inspector-controls-tabs/position-controls-panel.js +46 -0
- package/build/components/inspector-controls-tabs/position-controls-panel.js.map +1 -0
- package/build/components/inspector-controls-tabs/settings-tab.js +3 -1
- package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +4 -11
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
- package/build/components/link-control/search-input.js +1 -0
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/off-canvas-editor/appender.js +2 -38
- package/build/components/off-canvas-editor/appender.js.map +1 -1
- package/build/components/off-canvas-editor/block-contents.js +38 -5
- package/build/components/off-canvas-editor/block-contents.js.map +1 -1
- package/build/components/off-canvas-editor/block.js +7 -25
- package/build/components/off-canvas-editor/block.js.map +1 -1
- package/build/components/off-canvas-editor/index.js +7 -4
- package/build/components/off-canvas-editor/index.js.map +1 -1
- package/build/components/provider/index.js +3 -1
- package/build/components/provider/index.js.map +1 -1
- package/build/components/rich-text/use-enter.js +4 -5
- package/build/components/rich-text/use-enter.js.map +1 -1
- package/build/components/url-input/button.js +1 -0
- package/build/components/url-input/button.js.map +1 -1
- package/build/components/url-input/index.js +15 -1
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/url-popover/link-editor.js +1 -0
- package/build/components/url-popover/link-editor.js.map +1 -1
- package/build/components/use-paste-styles/index.js +188 -0
- package/build/components/use-paste-styles/index.js.map +1 -0
- package/build/components/writing-flow/use-arrow-nav.js +22 -29
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/hooks/index.js +2 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/metadata.js +1 -1
- package/build/hooks/metadata.js.map +1 -1
- package/build/hooks/position.js +376 -0
- package/build/hooks/position.js.map +1 -0
- package/build/hooks/supports.js +328 -0
- package/build/hooks/supports.js.map +1 -0
- package/build/store/reducer.js +6 -2
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +8 -6
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/block-actions/index.js +6 -0
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-inspector/index.js +3 -2
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +1 -4
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +4 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-styles/index.js +2 -1
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js +42 -11
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build-module/components/default-style-picker/index.js +1 -0
- package/build-module/components/default-style-picker/index.js.map +1 -1
- package/build-module/components/font-sizes/with-font-sizes.js +5 -7
- package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build-module/components/iframe/index.js +36 -9
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/iframe/use-compatibility-styles.js +6 -1
- package/build-module/components/iframe/use-compatibility-styles.js.map +1 -1
- package/build-module/components/image-size-control/index.js +1 -0
- package/build-module/components/image-size-control/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab.js +4 -4
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/index.js +3 -2
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/menu.js +11 -5
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +3 -1
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/position-controls-panel.js +33 -0
- package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +1 -0
- package/build-module/components/inspector-controls-tabs/settings-tab.js +2 -1
- package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +4 -11
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
- package/build-module/components/link-control/search-input.js +1 -0
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/off-canvas-editor/appender.js +3 -36
- package/build-module/components/off-canvas-editor/appender.js.map +1 -1
- package/build-module/components/off-canvas-editor/block-contents.js +37 -7
- package/build-module/components/off-canvas-editor/block-contents.js.map +1 -1
- package/build-module/components/off-canvas-editor/block.js +9 -27
- package/build-module/components/off-canvas-editor/block.js.map +1 -1
- package/build-module/components/off-canvas-editor/index.js +7 -4
- package/build-module/components/off-canvas-editor/index.js.map +1 -1
- package/build-module/components/provider/index.js +3 -1
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/rich-text/use-enter.js +4 -5
- package/build-module/components/rich-text/use-enter.js.map +1 -1
- package/build-module/components/url-input/button.js +1 -0
- package/build-module/components/url-input/button.js.map +1 -1
- package/build-module/components/url-input/index.js +14 -1
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/url-popover/link-editor.js +1 -0
- package/build-module/components/url-popover/link-editor.js.map +1 -1
- package/build-module/components/use-paste-styles/index.js +174 -0
- package/build-module/components/use-paste-styles/index.js.map +1 -0
- package/build-module/components/writing-flow/use-arrow-nav.js +22 -29
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/hooks/index.js +1 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/metadata.js +1 -1
- package/build-module/hooks/metadata.js.map +1 -1
- package/build-module/hooks/position.js +337 -0
- package/build-module/hooks/position.js.map +1 -0
- package/build-module/hooks/supports.js +257 -0
- package/build-module/hooks/supports.js.map +1 -0
- package/build-module/store/reducer.js +6 -2
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +7 -5
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/content-rtl.css +57 -0
- package/build-style/content.css +57 -0
- package/build-style/style-rtl.css +27 -58
- package/build-style/style.css +27 -58
- package/package.json +29 -29
- package/src/components/block-actions/index.js +5 -0
- package/src/components/block-inspector/index.js +3 -1
- package/src/components/block-preview/auto.js +2 -4
- package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
- package/src/components/block-styles/index.js +4 -1
- package/src/components/block-tools/use-block-toolbar-popover-props.js +68 -12
- package/src/components/button-block-appender/{style.scss → content.scss} +0 -0
- package/src/components/default-style-picker/index.js +1 -0
- package/src/components/font-sizes/with-font-sizes.js +33 -33
- package/src/components/iframe/index.js +52 -19
- package/src/components/iframe/use-compatibility-styles.js +6 -0
- package/src/components/image-size-control/index.js +1 -0
- package/src/components/inserter/block-patterns-tab.js +7 -4
- package/src/components/inserter/index.js +46 -41
- package/src/components/inserter/menu.js +8 -4
- package/src/components/inserter/test/__snapshots__/index.native.js.snap +117 -0
- package/src/components/inserter/test/index.native.js +255 -1
- package/src/components/inspector-controls/groups.js +2 -0
- package/src/components/inspector-controls-tabs/position-controls-panel.js +37 -0
- package/src/components/inspector-controls-tabs/settings-tab.js +2 -0
- package/src/components/inspector-controls-tabs/style.scss +15 -0
- package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -8
- package/src/components/link-control/search-input.js +1 -0
- package/src/components/link-control/style.scss +1 -0
- package/src/components/list-view/style.scss +13 -3
- package/src/components/off-canvas-editor/appender.js +2 -52
- package/src/components/off-canvas-editor/block-contents.js +84 -23
- package/src/components/off-canvas-editor/block.js +28 -60
- package/src/components/off-canvas-editor/index.js +12 -2
- package/src/components/provider/index.js +4 -1
- package/src/components/rich-text/use-enter.js +4 -4
- package/src/components/url-input/README.md +5 -0
- package/src/components/url-input/button.js +1 -0
- package/src/components/url-input/index.js +15 -1
- package/src/components/url-popover/link-editor.js +1 -0
- package/src/components/use-paste-styles/index.js +230 -0
- package/src/components/writing-flow/use-arrow-nav.js +20 -28
- package/src/content.scss +1 -0
- package/src/hooks/index.js +1 -0
- package/src/hooks/metadata.js +1 -2
- package/src/hooks/position.js +375 -0
- package/src/hooks/position.scss +18 -0
- package/src/hooks/supports.js +302 -0
- package/src/hooks/test/__snapshots__/align.native.js.snap +73 -0
- package/src/hooks/test/align.native.js +133 -0
- package/src/store/reducer.js +7 -2
- package/src/store/selectors.js +5 -5
- package/src/store/test/reducer.js +45 -3
- package/src/store/test/selectors.js +12 -9
- package/src/style.scss +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/use-block-toolbar-popover-props.js"],"names":["useRefEffect","useSelect","useCallback","useLayoutEffect","useState","store","blockEditorStore","__unstableUseBlockElement","useBlockElement","COMMON_PROPS","placement","DEFAULT_PROPS","flip","shift","RESTRICTED_HEIGHT_PROPS","getProps","contentElement","selectedBlockElement","toolbarHeight","blockRect","getBoundingClientRect","contentRect","viewportHeight","ownerDocument","documentElement","clientHeight","hasSpaceForToolbarAbove","top","isBlockTallerThanViewport","height","useBlockToolbarPopoverProps","clientId","setToolbarHeight","props","setProps","blockIndex","select","getBlockIndex","popoverRef","popoverNode","offsetHeight","updateProps","contentView","defaultView","addEventHandler","resizeObserver","blockView","ResizeObserver","observe","removeEventHandler","disconnect","ref"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { useCallback, useLayoutEffect, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\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 {number} toolbarHeight The height of the toolbar in pixels.\n *\n * @return {Object} The popover props used to determine the position of the toolbar.\n */\nfunction getProps( contentElement, selectedBlockElement, toolbarHeight ) {\n\tif ( ! contentElement || ! selectedBlockElement ) {\n\t\treturn DEFAULT_PROPS;\n\t}\n\n\tconst blockRect = selectedBlockElement.getBoundingClientRect();\n\tconst contentRect = contentElement.getBoundingClientRect();\n\n\t// The document element's clientHeight represents the viewport height.\n\tconst viewportHeight =\n\t\tcontentElement.ownerDocument.documentElement.clientHeight;\n\n\tconst hasSpaceForToolbarAbove =\n\t\tblockRect.top - contentRect.top > toolbarHeight;\n\tconst isBlockTallerThanViewport =\n\t\tblockRect.height > viewportHeight - toolbarHeight;\n\n\tif ( hasSpaceForToolbarAbove || isBlockTallerThanViewport ) {\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 [ props, setProps ] = useState( () =>\n\t\tgetProps( contentElement, selectedBlockElement, toolbarHeight )\n\t);\n\tconst blockIndex = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlockIndex( clientId ),\n\t\t[ clientId ]\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( contentElement, selectedBlockElement, toolbarHeight )\n\t\t\t),\n\t\t[ contentElement, selectedBlockElement, 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"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/use-block-toolbar-popover-props.js"],"names":["useRefEffect","useSelect","getScrollContainer","useCallback","useLayoutEffect","useMemo","useState","store","blockEditorStore","__unstableUseBlockElement","useBlockElement","hasStickyOrFixedPositionValue","COMMON_PROPS","placement","DEFAULT_PROPS","flip","shift","RESTRICTED_HEIGHT_PROPS","getProps","contentElement","selectedBlockElement","scrollContainer","toolbarHeight","isSticky","scrollTop","blockRect","getBoundingClientRect","contentRect","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"],"mappings":"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","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 { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport { hasStickyOrFixedPositionValue } from '../../hooks/position';\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 = selectedBlockElement.getBoundingClientRect();\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"]}
|
|
@@ -63,6 +63,7 @@ export default function DefaultStylePicker(_ref) {
|
|
|
63
63
|
return onUpdatePreferredStyleVariations && createElement("div", {
|
|
64
64
|
className: "default-style-picker__default-switcher"
|
|
65
65
|
}, createElement(SelectControl, {
|
|
66
|
+
__nextHasNoMarginBottom: true,
|
|
66
67
|
options: selectOptions,
|
|
67
68
|
value: preferredStyle || '',
|
|
68
69
|
label: __('Default Style'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/default-style-picker/index.js"],"names":["store","blocksStore","useMemo","useCallback","__","SelectControl","useSelect","blockEditorStore","getDefaultStyle","DefaultStylePicker","blockName","preferredStyle","onUpdatePreferredStyleVariations","styles","select","settings","getSettings","preferredStyleVariations","__experimentalPreferredStyleVariations","value","onChange","getBlockStyles","selectOptions","label","map","name","defaultStyleName","selectOnChange","blockStyle"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,WAAlB,QAAqC,mBAArC;AACA,SAASC,OAAT,EAAkBC,WAAlB,QAAqC,oBAArC;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,aAAT,QAA8B,uBAA9B;AACA,SAASC,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,SAASN,KAAK,IAAIO,gBAAlB,QAA0C,aAA1C;AACA,SAASC,eAAT,QAAgC,uBAAhC;AAEA,eAAe,SAASC,kBAAT,OAA6C;AAAA,MAAhB;AAAEC,IAAAA;AAAF,GAAgB;AAC3D,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,gCAAlB;AAAoDC,IAAAA;AAApD,MACLP,SAAS,CACNQ,MAAF,IAAc;AAAA;;AACb,UAAMC,QAAQ,GAAGD,MAAM,CAAEP,gBAAF,CAAN,CAA2BS,WAA3B,EAAjB;AACA,UAAMC,wBAAwB,GAC7BF,QAAQ,CAACG,sCADV;AAEA,WAAO;AACNP,MAAAA,cAAc,EACbM,wBADa,aACbA,wBADa,gDACbA,wBAAwB,CAAEE,KADb,0DACb,sBAAmCT,SAAnC,CAFK;AAGNE,MAAAA,gCAAgC,4BAC/BK,wBAD+B,aAC/BA,wBAD+B,uBAC/BA,wBAAwB,CAAEG,QADK,2EACO,IAJjC;AAKNP,MAAAA,MAAM,EAAEC,MAAM,CAAEb,WAAF,CAAN,CAAsBoB,cAAtB,CAAsCX,SAAtC;AALF,KAAP;AAOA,GAZO,EAaR,CAAEA,SAAF,CAbQ,CADV;AAgBA,QAAMY,aAAa,GAAGpB,OAAO,CAC5B,MAAM,CACL;AAAEqB,IAAAA,KAAK,EAAEnB,EAAE,CAAE,SAAF,CAAX;AAA0Be,IAAAA,KAAK,EAAE;AAAjC,GADK,EAEL,GAAGN,MAAM,CAACW,GAAP,CAAY;AAAA,QAAE;AAAED,MAAAA,KAAF;AAASE,MAAAA;AAAT,KAAF;AAAA,WAAyB;AAAEF,MAAAA,KAAF;AAASJ,MAAAA,KAAK,EAAEM;AAAhB,KAAzB;AAAA,GAAZ,CAFE,CADsB,EAK5B,CAAEZ,MAAF,CAL4B,CAA7B;AAOA,QAAMa,gBAAgB,GAAGxB,OAAO,CAC/B;AAAA;;AAAA,+BAAMM,eAAe,CAAEK,MAAF,CAArB,qDAAM,iBAA2BY,IAAjC;AAAA,GAD+B,EAE/B,CAAEZ,MAAF,CAF+B,CAAhC;AAIA,QAAMc,cAAc,GAAGxB,WAAW,CAC/ByB,UAAF,IAAkB;AACjBhB,IAAAA,gCAAgC,CAAEF,SAAF,EAAakB,UAAb,CAAhC;AACA,GAHgC,EAIjC,CAAElB,SAAF,EAAaE,gCAAb,CAJiC,CAAlC,CA5B2D,CAmC3D;AACA;;AACA,MAAK,CAAED,cAAF,IAAoBA,cAAc,KAAKe,gBAA5C,EAA+D;AAC9D,WAAO,IAAP;AACA;;AAED,SACCd,gCAAgC,IAC/B;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,aAAD;AACC,IAAA,OAAO,EAAGU,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/default-style-picker/index.js"],"names":["store","blocksStore","useMemo","useCallback","__","SelectControl","useSelect","blockEditorStore","getDefaultStyle","DefaultStylePicker","blockName","preferredStyle","onUpdatePreferredStyleVariations","styles","select","settings","getSettings","preferredStyleVariations","__experimentalPreferredStyleVariations","value","onChange","getBlockStyles","selectOptions","label","map","name","defaultStyleName","selectOnChange","blockStyle"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,WAAlB,QAAqC,mBAArC;AACA,SAASC,OAAT,EAAkBC,WAAlB,QAAqC,oBAArC;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,aAAT,QAA8B,uBAA9B;AACA,SAASC,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,SAASN,KAAK,IAAIO,gBAAlB,QAA0C,aAA1C;AACA,SAASC,eAAT,QAAgC,uBAAhC;AAEA,eAAe,SAASC,kBAAT,OAA6C;AAAA,MAAhB;AAAEC,IAAAA;AAAF,GAAgB;AAC3D,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,gCAAlB;AAAoDC,IAAAA;AAApD,MACLP,SAAS,CACNQ,MAAF,IAAc;AAAA;;AACb,UAAMC,QAAQ,GAAGD,MAAM,CAAEP,gBAAF,CAAN,CAA2BS,WAA3B,EAAjB;AACA,UAAMC,wBAAwB,GAC7BF,QAAQ,CAACG,sCADV;AAEA,WAAO;AACNP,MAAAA,cAAc,EACbM,wBADa,aACbA,wBADa,gDACbA,wBAAwB,CAAEE,KADb,0DACb,sBAAmCT,SAAnC,CAFK;AAGNE,MAAAA,gCAAgC,4BAC/BK,wBAD+B,aAC/BA,wBAD+B,uBAC/BA,wBAAwB,CAAEG,QADK,2EACO,IAJjC;AAKNP,MAAAA,MAAM,EAAEC,MAAM,CAAEb,WAAF,CAAN,CAAsBoB,cAAtB,CAAsCX,SAAtC;AALF,KAAP;AAOA,GAZO,EAaR,CAAEA,SAAF,CAbQ,CADV;AAgBA,QAAMY,aAAa,GAAGpB,OAAO,CAC5B,MAAM,CACL;AAAEqB,IAAAA,KAAK,EAAEnB,EAAE,CAAE,SAAF,CAAX;AAA0Be,IAAAA,KAAK,EAAE;AAAjC,GADK,EAEL,GAAGN,MAAM,CAACW,GAAP,CAAY;AAAA,QAAE;AAAED,MAAAA,KAAF;AAASE,MAAAA;AAAT,KAAF;AAAA,WAAyB;AAAEF,MAAAA,KAAF;AAASJ,MAAAA,KAAK,EAAEM;AAAhB,KAAzB;AAAA,GAAZ,CAFE,CADsB,EAK5B,CAAEZ,MAAF,CAL4B,CAA7B;AAOA,QAAMa,gBAAgB,GAAGxB,OAAO,CAC/B;AAAA;;AAAA,+BAAMM,eAAe,CAAEK,MAAF,CAArB,qDAAM,iBAA2BY,IAAjC;AAAA,GAD+B,EAE/B,CAAEZ,MAAF,CAF+B,CAAhC;AAIA,QAAMc,cAAc,GAAGxB,WAAW,CAC/ByB,UAAF,IAAkB;AACjBhB,IAAAA,gCAAgC,CAAEF,SAAF,EAAakB,UAAb,CAAhC;AACA,GAHgC,EAIjC,CAAElB,SAAF,EAAaE,gCAAb,CAJiC,CAAlC,CA5B2D,CAmC3D;AACA;;AACA,MAAK,CAAED,cAAF,IAAoBA,cAAc,KAAKe,gBAA5C,EAA+D;AAC9D,WAAO,IAAP;AACA;;AAED,SACCd,gCAAgC,IAC/B;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,aAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,OAAO,EAAGU,aAFX;AAGC,IAAA,KAAK,EAAGX,cAAc,IAAI,EAH3B;AAIC,IAAA,KAAK,EAAGP,EAAE,CAAE,eAAF,CAJX;AAKC,IAAA,QAAQ,EAAGuB;AALZ,IADD,CAFF;AAaA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { SelectControl } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { getDefaultStyle } from '../block-styles/utils';\n\nexport default function DefaultStylePicker( { blockName } ) {\n\tconst { preferredStyle, onUpdatePreferredStyleVariations, styles } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\t\t\tconst preferredStyleVariations =\n\t\t\t\t\tsettings.__experimentalPreferredStyleVariations;\n\t\t\t\treturn {\n\t\t\t\t\tpreferredStyle:\n\t\t\t\t\t\tpreferredStyleVariations?.value?.[ blockName ],\n\t\t\t\t\tonUpdatePreferredStyleVariations:\n\t\t\t\t\t\tpreferredStyleVariations?.onChange ?? null,\n\t\t\t\t\tstyles: select( blocksStore ).getBlockStyles( blockName ),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ blockName ]\n\t\t);\n\tconst selectOptions = useMemo(\n\t\t() => [\n\t\t\t{ label: __( 'Not set' ), value: '' },\n\t\t\t...styles.map( ( { label, name } ) => ( { label, value: name } ) ),\n\t\t],\n\t\t[ styles ]\n\t);\n\tconst defaultStyleName = useMemo(\n\t\t() => getDefaultStyle( styles )?.name,\n\t\t[ styles ]\n\t);\n\tconst selectOnChange = useCallback(\n\t\t( blockStyle ) => {\n\t\t\tonUpdatePreferredStyleVariations( blockName, blockStyle );\n\t\t},\n\t\t[ blockName, onUpdatePreferredStyleVariations ]\n\t);\n\n\t// Until the functionality is migrated to global styles,\n\t// only show the default style picker if a non-default style has already been selected.\n\tif ( ! preferredStyle || preferredStyle === defaultStyleName ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\tonUpdatePreferredStyleVariations && (\n\t\t\t<div className=\"default-style-picker__default-switcher\">\n\t\t\t\t<SelectControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\toptions={ selectOptions }\n\t\t\t\t\tvalue={ preferredStyle || '' }\n\t\t\t\t\tlabel={ __( 'Default Style' ) }\n\t\t\t\t\tonChange={ selectOnChange }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t)\n\t);\n}\n"]}
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import { createElement } from "@wordpress/element";
|
|
3
3
|
|
|
4
|
-
/**
|
|
5
|
-
* External dependencies
|
|
6
|
-
*/
|
|
7
|
-
import { pickBy } from 'lodash';
|
|
8
4
|
/**
|
|
9
5
|
* WordPress dependencies
|
|
10
6
|
*/
|
|
11
|
-
|
|
12
7
|
import { createHigherOrderComponent, compose } from '@wordpress/compose';
|
|
13
8
|
import { Component } from '@wordpress/element';
|
|
14
9
|
/**
|
|
@@ -120,8 +115,11 @@ export default (function () {
|
|
|
120
115
|
return null;
|
|
121
116
|
}
|
|
122
117
|
|
|
123
|
-
const newState = Object.entries(
|
|
124
|
-
let [
|
|
118
|
+
const newState = Object.entries(fontSizeAttributeNames).filter(_ref5 => {
|
|
119
|
+
let [key, value] = _ref5;
|
|
120
|
+
return didAttributesChange(value, key);
|
|
121
|
+
}).reduce((newStateAccumulator, _ref6) => {
|
|
122
|
+
let [fontSizeAttributeName, customFontSizeAttributeName] = _ref6;
|
|
125
123
|
const fontSizeAttributeValue = attributes[fontSizeAttributeName];
|
|
126
124
|
const fontSizeObject = getFontSize(fontSizes, fontSizeAttributeValue, attributes[customFontSizeAttributeName]);
|
|
127
125
|
newStateAccumulator[fontSizeAttributeName] = { ...fontSizeObject,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/font-sizes/with-font-sizes.js"],"names":["pickBy","createHigherOrderComponent","compose","Component","getFontSize","getFontSizeClass","useSetting","DEFAULT_FONT_SIZES","upperFirst","firstLetter","rest","toUpperCase","join","fontSizeNames","fontSizeAttributeNames","reduce","fontSizeAttributeNamesAccumulator","fontSizeAttributeName","WrappedComponent","props","fontSizes","constructor","setters","createSetters","state","Object","entries","settersAccumulator","customFontSizeAttributeName","upperFirstFontSizeAttributeName","createSetFontSize","fontSizeValue","fontSizeObject","find","size","Number","setAttributes","slug","undefined","getDerivedStateFromProps","previousState","attributes","didAttributesChange","values","some","newState","newStateAccumulator","fontSizeAttributeValue","class","render"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { pickBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, compose } from '@wordpress/compose';\nimport { Component } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getFontSize, getFontSizeClass } from './utils';\nimport useSetting from '../use-setting';\n\nconst DEFAULT_FONT_SIZES = [];\n\n/**\n * Capitalizes the first letter in a string.\n *\n * @param {string} str The string whose first letter the function will capitalize.\n *\n * @return {string} Capitalized string.\n */\nconst upperFirst = ( [ firstLetter, ...rest ] ) =>\n\tfirstLetter.toUpperCase() + rest.join( '' );\n\n/**\n * Higher-order component, which handles font size logic for class generation,\n * font size value retrieval, and font size change handling.\n *\n * @param {...(Object|string)} fontSizeNames The arguments should all be strings.\n * Each string contains the font size\n * attribute name e.g: 'fontSize'.\n *\n * @return {Function} Higher-order component.\n */\nexport default ( ...fontSizeNames ) => {\n\t/*\n\t * Computes an object whose key is the font size attribute name as passed in the array,\n\t * and the value is the custom font size attribute name.\n\t * Custom font size is automatically compted by appending custom followed by the font size attribute name in with the first letter capitalized.\n\t */\n\tconst fontSizeAttributeNames = fontSizeNames.reduce(\n\t\t( fontSizeAttributeNamesAccumulator, fontSizeAttributeName ) => {\n\t\t\tfontSizeAttributeNamesAccumulator[\n\t\t\t\tfontSizeAttributeName\n\t\t\t] = `custom${ upperFirst( fontSizeAttributeName ) }`;\n\t\t\treturn fontSizeAttributeNamesAccumulator;\n\t\t},\n\t\t{}\n\t);\n\n\treturn createHigherOrderComponent(\n\t\tcompose( [\n\t\t\tcreateHigherOrderComponent(\n\t\t\t\t( WrappedComponent ) => ( props ) => {\n\t\t\t\t\tconst fontSizes =\n\t\t\t\t\t\tuseSetting( 'typography.fontSizes' ) ||\n\t\t\t\t\t\tDEFAULT_FONT_SIZES;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<WrappedComponent\n\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\tfontSizes={ fontSizes }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\t'withFontSizes'\n\t\t\t),\n\t\t\t( WrappedComponent ) => {\n\t\t\t\treturn class extends Component {\n\t\t\t\t\tconstructor( props ) {\n\t\t\t\t\t\tsuper( props );\n\n\t\t\t\t\t\tthis.setters = this.createSetters();\n\n\t\t\t\t\t\tthis.state = {};\n\t\t\t\t\t}\n\n\t\t\t\t\tcreateSetters() {\n\t\t\t\t\t\treturn Object.entries( fontSizeAttributeNames ).reduce(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\tsettersAccumulator,\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tfontSizeAttributeName,\n\t\t\t\t\t\t\t\t\tcustomFontSizeAttributeName,\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\tconst upperFirstFontSizeAttributeName =\n\t\t\t\t\t\t\t\t\tupperFirst( fontSizeAttributeName );\n\t\t\t\t\t\t\t\tsettersAccumulator[\n\t\t\t\t\t\t\t\t\t`set${ upperFirstFontSizeAttributeName }`\n\t\t\t\t\t\t\t\t] = this.createSetFontSize(\n\t\t\t\t\t\t\t\t\tfontSizeAttributeName,\n\t\t\t\t\t\t\t\t\tcustomFontSizeAttributeName\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn settersAccumulator;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tcreateSetFontSize(\n\t\t\t\t\t\tfontSizeAttributeName,\n\t\t\t\t\t\tcustomFontSizeAttributeName\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn ( fontSizeValue ) => {\n\t\t\t\t\t\t\tconst fontSizeObject = this.props.fontSizes?.find(\n\t\t\t\t\t\t\t\t( { size } ) => size === Number( fontSizeValue )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis.props.setAttributes( {\n\t\t\t\t\t\t\t\t[ fontSizeAttributeName ]:\n\t\t\t\t\t\t\t\t\tfontSizeObject && fontSizeObject.slug\n\t\t\t\t\t\t\t\t\t\t? fontSizeObject.slug\n\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t[ customFontSizeAttributeName ]:\n\t\t\t\t\t\t\t\t\tfontSizeObject && fontSizeObject.slug\n\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t: fontSizeValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tstatic getDerivedStateFromProps(\n\t\t\t\t\t\t{ attributes, fontSizes },\n\t\t\t\t\t\tpreviousState\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst didAttributesChange = (\n\t\t\t\t\t\t\tcustomFontSizeAttributeName,\n\t\t\t\t\t\t\tfontSizeAttributeName\n\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\tif ( previousState[ fontSizeAttributeName ] ) {\n\t\t\t\t\t\t\t\t// If new font size is name compare with the previous slug.\n\t\t\t\t\t\t\t\tif ( attributes[ fontSizeAttributeName ] ) {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\tattributes[ fontSizeAttributeName ] !==\n\t\t\t\t\t\t\t\t\t\tpreviousState[ fontSizeAttributeName ]\n\t\t\t\t\t\t\t\t\t\t\t.slug\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// If font size is not named, update when the font size value changes.\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\tpreviousState[ fontSizeAttributeName ]\n\t\t\t\t\t\t\t\t\t\t.size !==\n\t\t\t\t\t\t\t\t\tattributes[ customFontSizeAttributeName ]\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// In this case we need to build the font size object.\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! Object.values( fontSizeAttributeNames ).some(\n\t\t\t\t\t\t\t\tdidAttributesChange\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst newState = Object.entries(\n\t\t\t\t\t\t\tpickBy(\n\t\t\t\t\t\t\t\tfontSizeAttributeNames,\n\t\t\t\t\t\t\t\tdidAttributesChange\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t).reduce(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\tnewStateAccumulator,\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tfontSizeAttributeName,\n\t\t\t\t\t\t\t\t\tcustomFontSizeAttributeName,\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\tconst fontSizeAttributeValue =\n\t\t\t\t\t\t\t\t\tattributes[ fontSizeAttributeName ];\n\t\t\t\t\t\t\t\tconst fontSizeObject = getFontSize(\n\t\t\t\t\t\t\t\t\tfontSizes,\n\t\t\t\t\t\t\t\t\tfontSizeAttributeValue,\n\t\t\t\t\t\t\t\t\tattributes[ customFontSizeAttributeName ]\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tnewStateAccumulator[ fontSizeAttributeName ] = {\n\t\t\t\t\t\t\t\t\t...fontSizeObject,\n\t\t\t\t\t\t\t\t\tclass: getFontSizeClass(\n\t\t\t\t\t\t\t\t\t\tfontSizeAttributeValue\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\treturn newStateAccumulator;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...previousState,\n\t\t\t\t\t\t\t...newState,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\trender() {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<WrappedComponent\n\t\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\t\t...this.props,\n\t\t\t\t\t\t\t\t\tfontSizes: undefined,\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t...this.setters,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\t\t] ),\n\t\t'withFontSizes'\n\t);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/font-sizes/with-font-sizes.js"],"names":["createHigherOrderComponent","compose","Component","getFontSize","getFontSizeClass","useSetting","DEFAULT_FONT_SIZES","upperFirst","firstLetter","rest","toUpperCase","join","fontSizeNames","fontSizeAttributeNames","reduce","fontSizeAttributeNamesAccumulator","fontSizeAttributeName","WrappedComponent","props","fontSizes","constructor","setters","createSetters","state","Object","entries","settersAccumulator","customFontSizeAttributeName","upperFirstFontSizeAttributeName","createSetFontSize","fontSizeValue","fontSizeObject","find","size","Number","setAttributes","slug","undefined","getDerivedStateFromProps","previousState","attributes","didAttributesChange","values","some","newState","filter","key","value","newStateAccumulator","fontSizeAttributeValue","class","render"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, compose } from '@wordpress/compose';\nimport { Component } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getFontSize, getFontSizeClass } from './utils';\nimport useSetting from '../use-setting';\n\nconst DEFAULT_FONT_SIZES = [];\n\n/**\n * Capitalizes the first letter in a string.\n *\n * @param {string} str The string whose first letter the function will capitalize.\n *\n * @return {string} Capitalized string.\n */\nconst upperFirst = ( [ firstLetter, ...rest ] ) =>\n\tfirstLetter.toUpperCase() + rest.join( '' );\n\n/**\n * Higher-order component, which handles font size logic for class generation,\n * font size value retrieval, and font size change handling.\n *\n * @param {...(Object|string)} fontSizeNames The arguments should all be strings.\n * Each string contains the font size\n * attribute name e.g: 'fontSize'.\n *\n * @return {Function} Higher-order component.\n */\nexport default ( ...fontSizeNames ) => {\n\t/*\n\t * Computes an object whose key is the font size attribute name as passed in the array,\n\t * and the value is the custom font size attribute name.\n\t * Custom font size is automatically compted by appending custom followed by the font size attribute name in with the first letter capitalized.\n\t */\n\tconst fontSizeAttributeNames = fontSizeNames.reduce(\n\t\t( fontSizeAttributeNamesAccumulator, fontSizeAttributeName ) => {\n\t\t\tfontSizeAttributeNamesAccumulator[\n\t\t\t\tfontSizeAttributeName\n\t\t\t] = `custom${ upperFirst( fontSizeAttributeName ) }`;\n\t\t\treturn fontSizeAttributeNamesAccumulator;\n\t\t},\n\t\t{}\n\t);\n\n\treturn createHigherOrderComponent(\n\t\tcompose( [\n\t\t\tcreateHigherOrderComponent(\n\t\t\t\t( WrappedComponent ) => ( props ) => {\n\t\t\t\t\tconst fontSizes =\n\t\t\t\t\t\tuseSetting( 'typography.fontSizes' ) ||\n\t\t\t\t\t\tDEFAULT_FONT_SIZES;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<WrappedComponent\n\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\tfontSizes={ fontSizes }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\t'withFontSizes'\n\t\t\t),\n\t\t\t( WrappedComponent ) => {\n\t\t\t\treturn class extends Component {\n\t\t\t\t\tconstructor( props ) {\n\t\t\t\t\t\tsuper( props );\n\n\t\t\t\t\t\tthis.setters = this.createSetters();\n\n\t\t\t\t\t\tthis.state = {};\n\t\t\t\t\t}\n\n\t\t\t\t\tcreateSetters() {\n\t\t\t\t\t\treturn Object.entries( fontSizeAttributeNames ).reduce(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\tsettersAccumulator,\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tfontSizeAttributeName,\n\t\t\t\t\t\t\t\t\tcustomFontSizeAttributeName,\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\tconst upperFirstFontSizeAttributeName =\n\t\t\t\t\t\t\t\t\tupperFirst( fontSizeAttributeName );\n\t\t\t\t\t\t\t\tsettersAccumulator[\n\t\t\t\t\t\t\t\t\t`set${ upperFirstFontSizeAttributeName }`\n\t\t\t\t\t\t\t\t] = this.createSetFontSize(\n\t\t\t\t\t\t\t\t\tfontSizeAttributeName,\n\t\t\t\t\t\t\t\t\tcustomFontSizeAttributeName\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn settersAccumulator;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tcreateSetFontSize(\n\t\t\t\t\t\tfontSizeAttributeName,\n\t\t\t\t\t\tcustomFontSizeAttributeName\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn ( fontSizeValue ) => {\n\t\t\t\t\t\t\tconst fontSizeObject = this.props.fontSizes?.find(\n\t\t\t\t\t\t\t\t( { size } ) => size === Number( fontSizeValue )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis.props.setAttributes( {\n\t\t\t\t\t\t\t\t[ fontSizeAttributeName ]:\n\t\t\t\t\t\t\t\t\tfontSizeObject && fontSizeObject.slug\n\t\t\t\t\t\t\t\t\t\t? fontSizeObject.slug\n\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t[ customFontSizeAttributeName ]:\n\t\t\t\t\t\t\t\t\tfontSizeObject && fontSizeObject.slug\n\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t: fontSizeValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tstatic getDerivedStateFromProps(\n\t\t\t\t\t\t{ attributes, fontSizes },\n\t\t\t\t\t\tpreviousState\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst didAttributesChange = (\n\t\t\t\t\t\t\tcustomFontSizeAttributeName,\n\t\t\t\t\t\t\tfontSizeAttributeName\n\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\tif ( previousState[ fontSizeAttributeName ] ) {\n\t\t\t\t\t\t\t\t// If new font size is name compare with the previous slug.\n\t\t\t\t\t\t\t\tif ( attributes[ fontSizeAttributeName ] ) {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\tattributes[ fontSizeAttributeName ] !==\n\t\t\t\t\t\t\t\t\t\tpreviousState[ fontSizeAttributeName ]\n\t\t\t\t\t\t\t\t\t\t\t.slug\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// If font size is not named, update when the font size value changes.\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\tpreviousState[ fontSizeAttributeName ]\n\t\t\t\t\t\t\t\t\t\t.size !==\n\t\t\t\t\t\t\t\t\tattributes[ customFontSizeAttributeName ]\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// In this case we need to build the font size object.\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! Object.values( fontSizeAttributeNames ).some(\n\t\t\t\t\t\t\t\tdidAttributesChange\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst newState = Object.entries(\n\t\t\t\t\t\t\tfontSizeAttributeNames\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.filter( ( [ key, value ] ) =>\n\t\t\t\t\t\t\t\tdidAttributesChange( value, key )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.reduce(\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\tnewStateAccumulator,\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tfontSizeAttributeName,\n\t\t\t\t\t\t\t\t\t\tcustomFontSizeAttributeName,\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\tconst fontSizeAttributeValue =\n\t\t\t\t\t\t\t\t\t\tattributes[ fontSizeAttributeName ];\n\t\t\t\t\t\t\t\t\tconst fontSizeObject = getFontSize(\n\t\t\t\t\t\t\t\t\t\tfontSizes,\n\t\t\t\t\t\t\t\t\t\tfontSizeAttributeValue,\n\t\t\t\t\t\t\t\t\t\tattributes[\n\t\t\t\t\t\t\t\t\t\t\tcustomFontSizeAttributeName\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tnewStateAccumulator[\n\t\t\t\t\t\t\t\t\t\tfontSizeAttributeName\n\t\t\t\t\t\t\t\t\t] = {\n\t\t\t\t\t\t\t\t\t\t...fontSizeObject,\n\t\t\t\t\t\t\t\t\t\tclass: getFontSizeClass(\n\t\t\t\t\t\t\t\t\t\t\tfontSizeAttributeValue\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\treturn newStateAccumulator;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...previousState,\n\t\t\t\t\t\t\t...newState,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\trender() {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<WrappedComponent\n\t\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\t\t...this.props,\n\t\t\t\t\t\t\t\t\tfontSizes: undefined,\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t...this.setters,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\t\t] ),\n\t\t'withFontSizes'\n\t);\n};\n"]}
|
|
@@ -9,10 +9,11 @@ import classnames from 'classnames';
|
|
|
9
9
|
* WordPress dependencies
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
import { useState, createPortal, forwardRef, useMemo, useReducer } from '@wordpress/element';
|
|
12
|
+
import { useState, createPortal, forwardRef, useMemo, useReducer, renderToString } from '@wordpress/element';
|
|
13
13
|
import { __ } from '@wordpress/i18n';
|
|
14
14
|
import { useResizeObserver, useMergeRefs, useRefEffect } from '@wordpress/compose';
|
|
15
15
|
import { __experimentalStyleProvider as StyleProvider } from '@wordpress/components';
|
|
16
|
+
import { useSelect } from '@wordpress/data';
|
|
16
17
|
/**
|
|
17
18
|
* Internal dependencies
|
|
18
19
|
*/
|
|
@@ -20,6 +21,7 @@ import { __experimentalStyleProvider as StyleProvider } from '@wordpress/compone
|
|
|
20
21
|
import { useBlockSelectionClearer } from '../block-selection-clearer';
|
|
21
22
|
import { useWritingFlow } from '../writing-flow';
|
|
22
23
|
import { useCompatibilityStyles } from './use-compatibility-styles';
|
|
24
|
+
import { store as blockEditorStore } from '../../store';
|
|
23
25
|
/**
|
|
24
26
|
* Bubbles some event types (keydown, keypress, and dragover) to parent document
|
|
25
27
|
* document to ensure that the keyboard shortcuts and drag and drop work.
|
|
@@ -101,18 +103,19 @@ async function loadScript(head, _ref) {
|
|
|
101
103
|
});
|
|
102
104
|
}
|
|
103
105
|
|
|
104
|
-
function Iframe(_ref2
|
|
106
|
+
function Iframe(_ref2) {
|
|
105
107
|
let {
|
|
106
108
|
contentRef,
|
|
107
109
|
children,
|
|
108
110
|
head,
|
|
109
111
|
tabIndex = 0,
|
|
110
|
-
assets,
|
|
111
112
|
scale = 1,
|
|
112
113
|
frameSize = 0,
|
|
113
114
|
readonly,
|
|
115
|
+
forwardedRef: ref,
|
|
114
116
|
...props
|
|
115
117
|
} = _ref2;
|
|
118
|
+
const assets = useSelect(select => select(blockEditorStore).getSettings().__unstableResolvedAssets, []);
|
|
116
119
|
const [, forceRender] = useReducer(() => ({}));
|
|
117
120
|
const [iframeDocument, setIframeDocument] = useState();
|
|
118
121
|
const [bodyClasses, setBodyClasses] = useState([]);
|
|
@@ -181,7 +184,7 @@ function Iframe(_ref2, ref) {
|
|
|
181
184
|
});
|
|
182
185
|
}, []);
|
|
183
186
|
const bodyRef = useMergeRefs([contentRef, clearerRef, writingFlowRef]);
|
|
184
|
-
|
|
187
|
+
const styleAssets = createElement(Fragment, null, createElement("style", null, 'html{height:auto!important;}body{margin:0}'), [...styles, ...neededCompatStyles].map(_ref3 => {
|
|
185
188
|
let {
|
|
186
189
|
tagName,
|
|
187
190
|
href,
|
|
@@ -206,16 +209,24 @@ function Iframe(_ref2, ref) {
|
|
|
206
209
|
media,
|
|
207
210
|
key: id
|
|
208
211
|
});
|
|
209
|
-
})
|
|
212
|
+
})); // Correct doctype is required to enable rendering in standards
|
|
213
|
+
// mode. Also preload the styles to avoid a flash of unstyled
|
|
214
|
+
// content.
|
|
215
|
+
|
|
216
|
+
const srcDoc = useMemo(() => {
|
|
217
|
+
return '<!doctype html>' + renderToString(styleAssets);
|
|
218
|
+
}, []);
|
|
210
219
|
return createElement(Fragment, null, tabIndex >= 0 && before, createElement("iframe", _extends({}, props, {
|
|
211
220
|
ref: useMergeRefs([ref, setRef]),
|
|
212
|
-
tabIndex: tabIndex // Correct doctype is required to enable rendering in standards
|
|
221
|
+
tabIndex: tabIndex // Correct doctype is required to enable rendering in standards
|
|
222
|
+
// mode. Also preload the styles to avoid a flash of unstyled
|
|
223
|
+
// content.
|
|
213
224
|
,
|
|
214
|
-
srcDoc:
|
|
225
|
+
srcDoc: srcDoc,
|
|
215
226
|
title: __('Editor canvas')
|
|
216
227
|
}), iframeDocument && createPortal(createElement(Fragment, null, createElement("head", {
|
|
217
228
|
ref: headRef
|
|
218
|
-
}, head, createElement("style", null, `html { transition: background 5s; ${frameSize ? 'background: #2f2f2f; transition: background 0s;' : ''} }`)), createElement("body", {
|
|
229
|
+
}, styleAssets, head, createElement("style", null, `html { transition: background 5s; ${frameSize ? 'background: #2f2f2f; transition: background 0s;' : ''} }`)), createElement("body", {
|
|
219
230
|
ref: bodyRef,
|
|
220
231
|
className: classnames('block-editor-iframe__body', 'editor-styles-wrapper', ...bodyClasses),
|
|
221
232
|
style: {
|
|
@@ -232,5 +243,21 @@ function Iframe(_ref2, ref) {
|
|
|
232
243
|
}, children))), iframeDocument.documentElement)), tabIndex >= 0 && after);
|
|
233
244
|
}
|
|
234
245
|
|
|
235
|
-
|
|
246
|
+
function IframeIfReady(props, ref) {
|
|
247
|
+
const isInitialised = useSelect(select => select(blockEditorStore).getSettings().__internalIsInitialized, []); // We shouldn't render the iframe until the editor settings are initialised.
|
|
248
|
+
// The initial settings are needed to get the styles for the srcDoc, which
|
|
249
|
+
// cannot be changed after the iframe is mounted. srcDoc is used to to set
|
|
250
|
+
// the initial iframe HTML, which is required to avoid a flash of unstyled
|
|
251
|
+
// content.
|
|
252
|
+
|
|
253
|
+
if (!isInitialised) {
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return createElement(Iframe, _extends({}, props, {
|
|
258
|
+
forwardedRef: ref
|
|
259
|
+
}));
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export default forwardRef(IframeIfReady);
|
|
236
263
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/iframe/index.js"],"names":["classnames","useState","createPortal","forwardRef","useMemo","useReducer","__","useResizeObserver","useMergeRefs","useRefEffect","__experimentalStyleProvider","StyleProvider","useBlockSelectionClearer","useWritingFlow","useCompatibilityStyles","bubbleEvents","doc","defaultView","frameElement","bubbleEvent","event","prototype","Object","getPrototypeOf","constructorName","constructor","name","Constructor","window","init","key","MouseEvent","rect","getBoundingClientRect","clientX","left","clientY","top","newEvent","type","cancelled","dispatchEvent","preventDefault","eventTypes","addEventListener","useParsedAssets","html","document","implementation","createHTMLDocument","body","innerHTML","Array","from","children","loadScript","head","id","src","Promise","resolve","reject","script","ownerDocument","createElement","onload","onerror","appendChild","Iframe","ref","contentRef","tabIndex","assets","scale","frameSize","readonly","props","forceRender","iframeDocument","setIframeDocument","bodyClasses","setBodyClasses","styles","styleIds","map","style","compatStyles","neededCompatStyles","filter","includes","scripts","clearerRef","before","writingFlowRef","after","contentResizeListener","height","contentHeight","setRef","node","iFrameDocument","preventFileDropDefault","setDocumentIfReady","contentDocument","readyState","documentElement","classList","startsWith","dir","removeChild","removeEventListener","headRef","element","reduce","promise","then","finally","bodyRef","tagName","href","rel","media","textContent","TagName","toLowerCase","marginBottom","marginTop","transform","undefined"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseState,\n\tcreatePortal,\n\tforwardRef,\n\tuseMemo,\n\tuseReducer,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseResizeObserver,\n\tuseMergeRefs,\n\tuseRefEffect,\n} from '@wordpress/compose';\nimport { __experimentalStyleProvider as StyleProvider } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useWritingFlow } from '../writing-flow';\nimport { useCompatibilityStyles } from './use-compatibility-styles';\n\n/**\n * Bubbles some event types (keydown, keypress, and dragover) to parent document\n * document to ensure that the keyboard shortcuts and drag and drop work.\n *\n * Ideally, we should remove event bubbling in the future. Keyboard shortcuts\n * should be context dependent, e.g. actions on blocks like Cmd+A should not\n * work globally outside the block editor.\n *\n * @param {Document} doc Document to attach listeners to.\n */\nfunction bubbleEvents( doc ) {\n\tconst { defaultView } = doc;\n\tconst { frameElement } = defaultView;\n\n\tfunction bubbleEvent( event ) {\n\t\tconst prototype = Object.getPrototypeOf( event );\n\t\tconst constructorName = prototype.constructor.name;\n\t\tconst Constructor = window[ constructorName ];\n\n\t\tconst init = {};\n\n\t\tfor ( const key in event ) {\n\t\t\tinit[ key ] = event[ key ];\n\t\t}\n\n\t\tif ( event instanceof defaultView.MouseEvent ) {\n\t\t\tconst rect = frameElement.getBoundingClientRect();\n\t\t\tinit.clientX += rect.left;\n\t\t\tinit.clientY += rect.top;\n\t\t}\n\n\t\tconst newEvent = new Constructor( event.type, init );\n\t\tconst cancelled = ! frameElement.dispatchEvent( newEvent );\n\n\t\tif ( cancelled ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tconst eventTypes = [ 'dragover' ];\n\n\tfor ( const name of eventTypes ) {\n\t\tdoc.addEventListener( name, bubbleEvent );\n\t}\n}\n\nfunction useParsedAssets( html ) {\n\treturn useMemo( () => {\n\t\tconst doc = document.implementation.createHTMLDocument( '' );\n\t\tdoc.body.innerHTML = html;\n\t\treturn Array.from( doc.body.children );\n\t}, [ html ] );\n}\n\nasync function loadScript( head, { id, src } ) {\n\treturn new Promise( ( resolve, reject ) => {\n\t\tconst script = head.ownerDocument.createElement( 'script' );\n\t\tscript.id = id;\n\t\tif ( src ) {\n\t\t\tscript.src = src;\n\t\t\tscript.onload = () => resolve();\n\t\t\tscript.onerror = () => reject();\n\t\t} else {\n\t\t\tresolve();\n\t\t}\n\t\thead.appendChild( script );\n\t} );\n}\n\nfunction Iframe(\n\t{\n\t\tcontentRef,\n\t\tchildren,\n\t\thead,\n\t\ttabIndex = 0,\n\t\tassets,\n\t\tscale = 1,\n\t\tframeSize = 0,\n\t\treadonly,\n\t\t...props\n\t},\n\tref\n) {\n\tconst [ , forceRender ] = useReducer( () => ( {} ) );\n\tconst [ iframeDocument, setIframeDocument ] = useState();\n\tconst [ bodyClasses, setBodyClasses ] = useState( [] );\n\tconst styles = useParsedAssets( assets?.styles );\n\tconst styleIds = styles.map( ( style ) => style.id );\n\tconst compatStyles = useCompatibilityStyles();\n\tconst neededCompatStyles = compatStyles.filter(\n\t\t( style ) => ! styleIds.includes( style.id )\n\t);\n\tconst scripts = useParsedAssets( assets?.scripts );\n\tconst clearerRef = useBlockSelectionClearer();\n\tconst [ before, writingFlowRef, after ] = useWritingFlow();\n\tconst [ contentResizeListener, { height: contentHeight } ] =\n\t\tuseResizeObserver();\n\tconst setRef = useRefEffect( ( node ) => {\n\t\tlet iFrameDocument;\n\t\t// Prevent the default browser action for files dropped outside of dropzones.\n\t\tfunction preventFileDropDefault( event ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tfunction setDocumentIfReady() {\n\t\t\tconst { contentDocument, ownerDocument } = node;\n\t\t\tconst { readyState, documentElement } = contentDocument;\n\t\t\tiFrameDocument = contentDocument;\n\n\t\t\tif ( readyState !== 'interactive' && readyState !== 'complete' ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tbubbleEvents( contentDocument );\n\t\t\tsetIframeDocument( contentDocument );\n\t\t\tclearerRef( documentElement );\n\n\t\t\t// Ideally ALL classes that are added through get_body_class should\n\t\t\t// be added in the editor too, which we'll somehow have to get from\n\t\t\t// the server in the future (which will run the PHP filters).\n\t\t\tsetBodyClasses(\n\t\t\t\tArray.from( ownerDocument.body.classList ).filter(\n\t\t\t\t\t( name ) =>\n\t\t\t\t\t\tname.startsWith( 'admin-color-' ) ||\n\t\t\t\t\t\tname.startsWith( 'post-type-' ) ||\n\t\t\t\t\t\tname === 'wp-embed-responsive'\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tcontentDocument.dir = ownerDocument.dir;\n\t\t\tdocumentElement.removeChild( contentDocument.head );\n\t\t\tdocumentElement.removeChild( contentDocument.body );\n\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\treturn true;\n\t\t}\n\n\t\t// Document set with srcDoc is not immediately ready.\n\t\tnode.addEventListener( 'load', setDocumentIfReady );\n\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'load', setDocumentIfReady );\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t};\n\t}, [] );\n\n\tconst headRef = useRefEffect( ( element ) => {\n\t\tscripts\n\t\t\t.reduce(\n\t\t\t\t( promise, script ) =>\n\t\t\t\t\tpromise.then( () => loadScript( element, script ) ),\n\t\t\t\tPromise.resolve()\n\t\t\t)\n\t\t\t.finally( () => {\n\t\t\t\t// When script are loaded, re-render blocks to allow them\n\t\t\t\t// to initialise.\n\t\t\t\tforceRender();\n\t\t\t} );\n\t}, [] );\n\tconst bodyRef = useMergeRefs( [ contentRef, clearerRef, writingFlowRef ] );\n\n\thead = (\n\t\t<>\n\t\t\t<style>{ 'html{height:auto!important;}body{margin:0}' }</style>\n\t\t\t{ [ ...styles, ...neededCompatStyles ].map(\n\t\t\t\t( { tagName, href, id, rel, media, textContent } ) => {\n\t\t\t\t\tconst TagName = tagName.toLowerCase();\n\n\t\t\t\t\tif ( TagName === 'style' ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TagName { ...{ id } } key={ id }>\n\t\t\t\t\t\t\t\t{ textContent }\n\t\t\t\t\t\t\t</TagName>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TagName { ...{ href, id, rel, media } } key={ id } />\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t) }\n\t\t\t{ head }\n\t\t</>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{ tabIndex >= 0 && before }\n\t\t\t<iframe\n\t\t\t\t{ ...props }\n\t\t\t\tref={ useMergeRefs( [ ref, setRef ] ) }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t// Correct doctype is required to enable rendering in standards mode\n\t\t\t\tsrcDoc=\"<!doctype html>\"\n\t\t\t\ttitle={ __( 'Editor canvas' ) }\n\t\t\t>\n\t\t\t\t{ iframeDocument &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<head ref={ headRef }>\n\t\t\t\t\t\t\t\t{ head }\n\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t{ `html { transition: background 5s; ${\n\t\t\t\t\t\t\t\t\t\tframeSize\n\t\t\t\t\t\t\t\t\t\t\t? 'background: #2f2f2f; transition: background 0s;'\n\t\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t\t} }` }\n\t\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t</head>\n\t\t\t\t\t\t\t<body\n\t\t\t\t\t\t\t\tref={ bodyRef }\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'block-editor-iframe__body',\n\t\t\t\t\t\t\t\t\t'editor-styles-wrapper',\n\t\t\t\t\t\t\t\t\t...bodyClasses\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t// This is the remaining percentage from the scaling down\n\t\t\t\t\t\t\t\t\t// of the iframe body(`scale(0.45)`). We also need to subtract\n\t\t\t\t\t\t\t\t\t// the body's bottom margin.\n\t\t\t\t\t\t\t\t\tmarginBottom: `-${\n\t\t\t\t\t\t\t\t\t\tcontentHeight * ( 1 - scale ) -\n\t\t\t\t\t\t\t\t\t\tframeSize\n\t\t\t\t\t\t\t\t\t}px`,\n\t\t\t\t\t\t\t\t\tmarginTop: frameSize,\n\t\t\t\t\t\t\t\t\ttransform: `scale( ${ scale } )`,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tinert={ readonly ? 'true' : undefined }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ contentResizeListener }\n\t\t\t\t\t\t\t\t<StyleProvider document={ iframeDocument }>\n\t\t\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t\t\t</StyleProvider>\n\t\t\t\t\t\t\t</body>\n\t\t\t\t\t\t</>,\n\t\t\t\t\t\tiframeDocument.documentElement\n\t\t\t\t\t) }\n\t\t\t</iframe>\n\t\t\t{ tabIndex >= 0 && after }\n\t\t</>\n\t);\n}\n\nexport default forwardRef( Iframe );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/iframe/index.js"],"names":["classnames","useState","createPortal","forwardRef","useMemo","useReducer","renderToString","__","useResizeObserver","useMergeRefs","useRefEffect","__experimentalStyleProvider","StyleProvider","useSelect","useBlockSelectionClearer","useWritingFlow","useCompatibilityStyles","store","blockEditorStore","bubbleEvents","doc","defaultView","frameElement","bubbleEvent","event","prototype","Object","getPrototypeOf","constructorName","constructor","name","Constructor","window","init","key","MouseEvent","rect","getBoundingClientRect","clientX","left","clientY","top","newEvent","type","cancelled","dispatchEvent","preventDefault","eventTypes","addEventListener","useParsedAssets","html","document","implementation","createHTMLDocument","body","innerHTML","Array","from","children","loadScript","head","id","src","Promise","resolve","reject","script","ownerDocument","createElement","onload","onerror","appendChild","Iframe","contentRef","tabIndex","scale","frameSize","readonly","forwardedRef","ref","props","assets","select","getSettings","__unstableResolvedAssets","forceRender","iframeDocument","setIframeDocument","bodyClasses","setBodyClasses","styles","styleIds","map","style","compatStyles","neededCompatStyles","filter","includes","scripts","clearerRef","before","writingFlowRef","after","contentResizeListener","height","contentHeight","setRef","node","iFrameDocument","preventFileDropDefault","setDocumentIfReady","contentDocument","readyState","documentElement","classList","startsWith","dir","removeChild","removeEventListener","headRef","element","reduce","promise","then","finally","bodyRef","styleAssets","tagName","href","rel","media","textContent","TagName","toLowerCase","srcDoc","marginBottom","marginTop","transform","undefined","IframeIfReady","isInitialised","__internalIsInitialized"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseState,\n\tcreatePortal,\n\tforwardRef,\n\tuseMemo,\n\tuseReducer,\n\trenderToString,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseResizeObserver,\n\tuseMergeRefs,\n\tuseRefEffect,\n} from '@wordpress/compose';\nimport { __experimentalStyleProvider as StyleProvider } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useWritingFlow } from '../writing-flow';\nimport { useCompatibilityStyles } from './use-compatibility-styles';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Bubbles some event types (keydown, keypress, and dragover) to parent document\n * document to ensure that the keyboard shortcuts and drag and drop work.\n *\n * Ideally, we should remove event bubbling in the future. Keyboard shortcuts\n * should be context dependent, e.g. actions on blocks like Cmd+A should not\n * work globally outside the block editor.\n *\n * @param {Document} doc Document to attach listeners to.\n */\nfunction bubbleEvents( doc ) {\n\tconst { defaultView } = doc;\n\tconst { frameElement } = defaultView;\n\n\tfunction bubbleEvent( event ) {\n\t\tconst prototype = Object.getPrototypeOf( event );\n\t\tconst constructorName = prototype.constructor.name;\n\t\tconst Constructor = window[ constructorName ];\n\n\t\tconst init = {};\n\n\t\tfor ( const key in event ) {\n\t\t\tinit[ key ] = event[ key ];\n\t\t}\n\n\t\tif ( event instanceof defaultView.MouseEvent ) {\n\t\t\tconst rect = frameElement.getBoundingClientRect();\n\t\t\tinit.clientX += rect.left;\n\t\t\tinit.clientY += rect.top;\n\t\t}\n\n\t\tconst newEvent = new Constructor( event.type, init );\n\t\tconst cancelled = ! frameElement.dispatchEvent( newEvent );\n\n\t\tif ( cancelled ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tconst eventTypes = [ 'dragover' ];\n\n\tfor ( const name of eventTypes ) {\n\t\tdoc.addEventListener( name, bubbleEvent );\n\t}\n}\n\nfunction useParsedAssets( html ) {\n\treturn useMemo( () => {\n\t\tconst doc = document.implementation.createHTMLDocument( '' );\n\t\tdoc.body.innerHTML = html;\n\t\treturn Array.from( doc.body.children );\n\t}, [ html ] );\n}\n\nasync function loadScript( head, { id, src } ) {\n\treturn new Promise( ( resolve, reject ) => {\n\t\tconst script = head.ownerDocument.createElement( 'script' );\n\t\tscript.id = id;\n\t\tif ( src ) {\n\t\t\tscript.src = src;\n\t\t\tscript.onload = () => resolve();\n\t\t\tscript.onerror = () => reject();\n\t\t} else {\n\t\t\tresolve();\n\t\t}\n\t\thead.appendChild( script );\n\t} );\n}\n\nfunction Iframe( {\n\tcontentRef,\n\tchildren,\n\thead,\n\ttabIndex = 0,\n\tscale = 1,\n\tframeSize = 0,\n\treadonly,\n\tforwardedRef: ref,\n\t...props\n} ) {\n\tconst assets = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().__unstableResolvedAssets,\n\t\t[]\n\t);\n\tconst [ , forceRender ] = useReducer( () => ( {} ) );\n\tconst [ iframeDocument, setIframeDocument ] = useState();\n\tconst [ bodyClasses, setBodyClasses ] = useState( [] );\n\tconst styles = useParsedAssets( assets?.styles );\n\tconst styleIds = styles.map( ( style ) => style.id );\n\tconst compatStyles = useCompatibilityStyles();\n\tconst neededCompatStyles = compatStyles.filter(\n\t\t( style ) => ! styleIds.includes( style.id )\n\t);\n\tconst scripts = useParsedAssets( assets?.scripts );\n\tconst clearerRef = useBlockSelectionClearer();\n\tconst [ before, writingFlowRef, after ] = useWritingFlow();\n\tconst [ contentResizeListener, { height: contentHeight } ] =\n\t\tuseResizeObserver();\n\tconst setRef = useRefEffect( ( node ) => {\n\t\tlet iFrameDocument;\n\t\t// Prevent the default browser action for files dropped outside of dropzones.\n\t\tfunction preventFileDropDefault( event ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tfunction setDocumentIfReady() {\n\t\t\tconst { contentDocument, ownerDocument } = node;\n\t\t\tconst { readyState, documentElement } = contentDocument;\n\t\t\tiFrameDocument = contentDocument;\n\n\t\t\tif ( readyState !== 'interactive' && readyState !== 'complete' ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tbubbleEvents( contentDocument );\n\t\t\tsetIframeDocument( contentDocument );\n\t\t\tclearerRef( documentElement );\n\n\t\t\t// Ideally ALL classes that are added through get_body_class should\n\t\t\t// be added in the editor too, which we'll somehow have to get from\n\t\t\t// the server in the future (which will run the PHP filters).\n\t\t\tsetBodyClasses(\n\t\t\t\tArray.from( ownerDocument.body.classList ).filter(\n\t\t\t\t\t( name ) =>\n\t\t\t\t\t\tname.startsWith( 'admin-color-' ) ||\n\t\t\t\t\t\tname.startsWith( 'post-type-' ) ||\n\t\t\t\t\t\tname === 'wp-embed-responsive'\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tcontentDocument.dir = ownerDocument.dir;\n\t\t\tdocumentElement.removeChild( contentDocument.head );\n\t\t\tdocumentElement.removeChild( contentDocument.body );\n\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\treturn true;\n\t\t}\n\n\t\t// Document set with srcDoc is not immediately ready.\n\t\tnode.addEventListener( 'load', setDocumentIfReady );\n\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'load', setDocumentIfReady );\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t};\n\t}, [] );\n\n\tconst headRef = useRefEffect( ( element ) => {\n\t\tscripts\n\t\t\t.reduce(\n\t\t\t\t( promise, script ) =>\n\t\t\t\t\tpromise.then( () => loadScript( element, script ) ),\n\t\t\t\tPromise.resolve()\n\t\t\t)\n\t\t\t.finally( () => {\n\t\t\t\t// When script are loaded, re-render blocks to allow them\n\t\t\t\t// to initialise.\n\t\t\t\tforceRender();\n\t\t\t} );\n\t}, [] );\n\tconst bodyRef = useMergeRefs( [ contentRef, clearerRef, writingFlowRef ] );\n\n\tconst styleAssets = (\n\t\t<>\n\t\t\t<style>{ 'html{height:auto!important;}body{margin:0}' }</style>\n\t\t\t{ [ ...styles, ...neededCompatStyles ].map(\n\t\t\t\t( { tagName, href, id, rel, media, textContent } ) => {\n\t\t\t\t\tconst TagName = tagName.toLowerCase();\n\n\t\t\t\t\tif ( TagName === 'style' ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TagName { ...{ id } } key={ id }>\n\t\t\t\t\t\t\t\t{ textContent }\n\t\t\t\t\t\t\t</TagName>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TagName { ...{ href, id, rel, media } } key={ id } />\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t) }\n\t\t</>\n\t);\n\n\t// Correct doctype is required to enable rendering in standards\n\t// mode. Also preload the styles to avoid a flash of unstyled\n\t// content.\n\tconst srcDoc = useMemo( () => {\n\t\treturn '<!doctype html>' + renderToString( styleAssets );\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t{ tabIndex >= 0 && before }\n\t\t\t<iframe\n\t\t\t\t{ ...props }\n\t\t\t\tref={ useMergeRefs( [ ref, setRef ] ) }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t// Correct doctype is required to enable rendering in standards\n\t\t\t\t// mode. Also preload the styles to avoid a flash of unstyled\n\t\t\t\t// content.\n\t\t\t\tsrcDoc={ srcDoc }\n\t\t\t\ttitle={ __( 'Editor canvas' ) }\n\t\t\t>\n\t\t\t\t{ iframeDocument &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<head ref={ headRef }>\n\t\t\t\t\t\t\t\t{ styleAssets }\n\t\t\t\t\t\t\t\t{ head }\n\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t{ `html { transition: background 5s; ${\n\t\t\t\t\t\t\t\t\t\tframeSize\n\t\t\t\t\t\t\t\t\t\t\t? 'background: #2f2f2f; transition: background 0s;'\n\t\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t\t} }` }\n\t\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t</head>\n\t\t\t\t\t\t\t<body\n\t\t\t\t\t\t\t\tref={ bodyRef }\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'block-editor-iframe__body',\n\t\t\t\t\t\t\t\t\t'editor-styles-wrapper',\n\t\t\t\t\t\t\t\t\t...bodyClasses\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t// This is the remaining percentage from the scaling down\n\t\t\t\t\t\t\t\t\t// of the iframe body(`scale(0.45)`). We also need to subtract\n\t\t\t\t\t\t\t\t\t// the body's bottom margin.\n\t\t\t\t\t\t\t\t\tmarginBottom: `-${\n\t\t\t\t\t\t\t\t\t\tcontentHeight * ( 1 - scale ) -\n\t\t\t\t\t\t\t\t\t\tframeSize\n\t\t\t\t\t\t\t\t\t}px`,\n\t\t\t\t\t\t\t\t\tmarginTop: frameSize,\n\t\t\t\t\t\t\t\t\ttransform: `scale( ${ scale } )`,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tinert={ readonly ? 'true' : undefined }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ contentResizeListener }\n\t\t\t\t\t\t\t\t<StyleProvider document={ iframeDocument }>\n\t\t\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t\t\t</StyleProvider>\n\t\t\t\t\t\t\t</body>\n\t\t\t\t\t\t</>,\n\t\t\t\t\t\tiframeDocument.documentElement\n\t\t\t\t\t) }\n\t\t\t</iframe>\n\t\t\t{ tabIndex >= 0 && after }\n\t\t</>\n\t);\n}\n\nfunction IframeIfReady( props, ref ) {\n\tconst isInitialised = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().__internalIsInitialized,\n\t\t[]\n\t);\n\n\t// We shouldn't render the iframe until the editor settings are initialised.\n\t// The initial settings are needed to get the styles for the srcDoc, which\n\t// cannot be changed after the iframe is mounted. srcDoc is used to to set\n\t// the initial iframe HTML, which is required to avoid a flash of unstyled\n\t// content.\n\tif ( ! isInitialised ) {\n\t\treturn null;\n\t}\n\n\treturn <Iframe { ...props } forwardedRef={ ref } />;\n}\n\nexport default forwardRef( IframeIfReady );\n"]}
|
|
@@ -28,7 +28,12 @@ export function useCompatibilityStyles() {
|
|
|
28
28
|
const {
|
|
29
29
|
ownerNode,
|
|
30
30
|
cssRules
|
|
31
|
-
} = styleSheet;
|
|
31
|
+
} = styleSheet; // Stylesheet is added by another stylesheet. See
|
|
32
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet/ownerNode#notes.
|
|
33
|
+
|
|
34
|
+
if (ownerNode === null) {
|
|
35
|
+
return accumulator;
|
|
36
|
+
}
|
|
32
37
|
|
|
33
38
|
if (!cssRules) {
|
|
34
39
|
return accumulator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/iframe/use-compatibility-styles.js"],"names":["useMemo","useCompatibilityStyles","Array","from","document","styleSheets","reduce","accumulator","styleSheet","cssRules","e","ownerNode","tagName","id","matchFromRules","_cssRules","find","selectorText","conditionText","__cssRules","includes","push","cloneNode","inlineCssId","replace","inlineCssElement","getElementById"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,oBAAxB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,sBAAT,GAAkC;AACxC;AACA;AACA,SAAOD,OAAO,CAAE,MAAM;AACrB;AACA,WAAOE,KAAK,CAACC,IAAN,CAAYC,QAAQ,CAACC,WAArB,EAAmCC,MAAnC,CACN,CAAEC,WAAF,EAAeC,UAAf,KAA+B;AAC9B,UAAI;AACH;AACA;AACAA,QAAAA,UAAU,CAACC,QAAX;AACA,OAJD,CAIE,OAAQC,CAAR,EAAY;AACb,eAAOH,WAAP;AACA;;AAED,YAAM;AAAEI,QAAAA,SAAF;AAAaF,QAAAA;AAAb,UAA0BD,UAAhC;;
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/iframe/use-compatibility-styles.js"],"names":["useMemo","useCompatibilityStyles","Array","from","document","styleSheets","reduce","accumulator","styleSheet","cssRules","e","ownerNode","tagName","id","matchFromRules","_cssRules","find","selectorText","conditionText","__cssRules","includes","push","cloneNode","inlineCssId","replace","inlineCssElement","getElementById"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,oBAAxB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,sBAAT,GAAkC;AACxC;AACA;AACA,SAAOD,OAAO,CAAE,MAAM;AACrB;AACA,WAAOE,KAAK,CAACC,IAAN,CAAYC,QAAQ,CAACC,WAArB,EAAmCC,MAAnC,CACN,CAAEC,WAAF,EAAeC,UAAf,KAA+B;AAC9B,UAAI;AACH;AACA;AACAA,QAAAA,UAAU,CAACC,QAAX;AACA,OAJD,CAIE,OAAQC,CAAR,EAAY;AACb,eAAOH,WAAP;AACA;;AAED,YAAM;AAAEI,QAAAA,SAAF;AAAaF,QAAAA;AAAb,UAA0BD,UAAhC,CAT8B,CAW9B;AACA;;AACA,UAAKG,SAAS,KAAK,IAAnB,EAA0B;AACzB,eAAOJ,WAAP;AACA;;AAED,UAAK,CAAEE,QAAP,EAAkB;AACjB,eAAOF,WAAP;AACA,OAnB6B,CAqB9B;AACA;;;AACA,UAAKI,SAAS,CAACC,OAAV,KAAsB,MAA3B,EAAoC;AACnC,eAAOL,WAAP;AACA,OAzB6B,CA2B9B;AACA;AACA;;;AACA,UAAKI,SAAS,CAACE,EAAV,KAAiB,4BAAtB,EAAqD;AACpD,eAAON,WAAP;AACA;;AAED,eAASO,cAAT,CAAyBC,SAAzB,EAAqC;AACpC,eAAOb,KAAK,CAACC,IAAN,CAAYY,SAAZ,EAAwBC,IAAxB,CACN,QAIO;AAAA,cAJL;AACDC,YAAAA,YADC;AAEDC,YAAAA,aAFC;AAGDT,YAAAA,QAAQ,EAAEU;AAHT,WAIK;;AACN;AACA;AACA,cAAKD,aAAL,EAAqB;AACpB,mBAAOJ,cAAc,CAAEK,UAAF,CAArB;AACA;;AAED,iBACCF,YAAY,KACVA,YAAY,CAACG,QAAb,CACD,wBADC,KAGDH,YAAY,CAACG,QAAb,CAAuB,WAAvB,CAJW,CADb;AAOA,SAnBK,CAAP;AAqBA;;AAED,UAAKN,cAAc,CAAEL,QAAF,CAAnB,EAAkC;AACjC;AACA;AACAF,QAAAA,WAAW,CAACc,IAAZ,CAAkBV,SAAS,CAACW,SAAV,CAAqB,IAArB,CAAlB,EAHiC,CAKjC;;AACA,cAAMC,WAAW,GAAGZ,SAAS,CAACE,EAAV,CAAaW,OAAb,CACnB,MADmB,EAEnB,aAFmB,CAApB;AAIA,cAAMC,gBAAgB,GACrBrB,QAAQ,CAACsB,cAAT,CAAyBH,WAAzB,CADD;;AAGA,YAAKE,gBAAL,EAAwB;AACvBlB,UAAAA,WAAW,CAACc,IAAZ,CAAkBI,gBAAgB,CAACH,SAAjB,CAA4B,IAA5B,CAAlB;AACA;AACD;;AAED,aAAOf,WAAP;AACA,KA9EK,EA+EN,EA/EM,CAAP;AAiFA,GAnFa,EAmFX,EAnFW,CAAd;AAoFA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\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 useCompatibilityStyles() {\n\t// Only memoize the result once on load, since these stylesheets should not\n\t// change.\n\treturn useMemo( () => {\n\t\t// Search the document for stylesheets targetting the editor canvas.\n\t\treturn Array.from( document.styleSheets ).reduce(\n\t\t\t( accumulator, styleSheet ) => {\n\t\t\t\ttry {\n\t\t\t\t\t// May fail for external styles.\n\t\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\t\tstyleSheet.cssRules;\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\treturn accumulator;\n\t\t\t\t}\n\n\t\t\t\tconst { ownerNode, cssRules } = styleSheet;\n\n\t\t\t\t// Stylesheet is added by another stylesheet. See\n\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet/ownerNode#notes.\n\t\t\t\tif ( ownerNode === null ) {\n\t\t\t\t\treturn accumulator;\n\t\t\t\t}\n\n\t\t\t\tif ( ! cssRules ) {\n\t\t\t\t\treturn accumulator;\n\t\t\t\t}\n\n\t\t\t\t// Generally, ignore inline styles. We add inline styles belonging to a\n\t\t\t\t// stylesheet later, which may or may not match the selectors.\n\t\t\t\tif ( ownerNode.tagName !== 'LINK' ) {\n\t\t\t\t\treturn accumulator;\n\t\t\t\t}\n\n\t\t\t\t// Don't try to add the reset styles, which were removed as a dependency\n\t\t\t\t// from `edit-blocks` for the iframe since we don't need to reset admin\n\t\t\t\t// styles.\n\t\t\t\tif ( ownerNode.id === 'wp-reset-editor-styles-css' ) {\n\t\t\t\t\treturn accumulator;\n\t\t\t\t}\n\n\t\t\t\tfunction matchFromRules( _cssRules ) {\n\t\t\t\t\treturn Array.from( _cssRules ).find(\n\t\t\t\t\t\t( {\n\t\t\t\t\t\t\tselectorText,\n\t\t\t\t\t\t\tconditionText,\n\t\t\t\t\t\t\tcssRules: __cssRules,\n\t\t\t\t\t\t} ) => {\n\t\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\t// Recurse into child CSS ruleset to determine selector eligibility.\n\t\t\t\t\t\t\tif ( conditionText ) {\n\t\t\t\t\t\t\t\treturn matchFromRules( __cssRules );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\tselectorText &&\n\t\t\t\t\t\t\t\t( selectorText.includes(\n\t\t\t\t\t\t\t\t\t'.editor-styles-wrapper'\n\t\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\t\t\tselectorText.includes( '.wp-block' ) )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif ( matchFromRules( cssRules ) ) {\n\t\t\t\t\t// Display warning once we have a way to add style dependencies to the editor.\n\t\t\t\t\t// See: https://github.com/WordPress/gutenberg/pull/37466.\n\t\t\t\t\taccumulator.push( ownerNode.cloneNode( true ) );\n\n\t\t\t\t\t// Add inline styles belonging to the stylesheet.\n\t\t\t\t\tconst inlineCssId = 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 inlineCssElement =\n\t\t\t\t\t\tdocument.getElementById( inlineCssId );\n\n\t\t\t\t\tif ( inlineCssElement ) {\n\t\t\t\t\t\taccumulator.push( inlineCssElement.cloneNode( true ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t[]\n\t\t);\n\t}, [] );\n}\n"]}
|
|
@@ -39,6 +39,7 @@ export default function ImageSizeControl(_ref) {
|
|
|
39
39
|
updateDimensions
|
|
40
40
|
} = useDimensionHandler(height, width, imageHeight, imageWidth, onChange);
|
|
41
41
|
return createElement(Fragment, null, !isEmpty(imageSizeOptions) && createElement(SelectControl, {
|
|
42
|
+
__nextHasNoMarginBottom: true,
|
|
42
43
|
label: __('Image size'),
|
|
43
44
|
value: slug,
|
|
44
45
|
options: imageSizeOptions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/image-size-control/index.js"],"names":["isEmpty","Button","ButtonGroup","SelectControl","TextControl","__","useDimensionHandler","IMAGE_SIZE_PRESETS","noop","ImageSizeControl","imageSizeHelp","imageWidth","imageHeight","imageSizeOptions","isResizable","slug","width","height","onChange","onChangeImage","currentHeight","currentWidth","updateDimension","updateDimensions","value","map","scale","scaledWidth","Math","round","scaledHeight","isCurrent","undefined"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,QAAxB;AAEA;AACA;AACA;;AACA,SACCC,MADD,EAECC,WAFD,EAGCC,aAHD,EAICC,WAJD,QAKO,uBALP;AAMA,SAASC,EAAT,QAAmB,iBAAnB;AAEA;AACA;AACA;;AACA,OAAOC,mBAAP,MAAgC,yBAAhC;AAEA,MAAMC,kBAAkB,GAAG,CAAE,EAAF,EAAM,EAAN,EAAU,EAAV,EAAc,GAAd,CAA3B;;AACA,MAAMC,IAAI,GAAG,MAAM,CAAE,CAArB;;AAEA,eAAe,SAASC,gBAAT,OAWX;AAAA,MAXsC;AACzCC,IAAAA,aADyC;AAEzCC,IAAAA,UAFyC;AAGzCC,IAAAA,WAHyC;AAIzCC,IAAAA,gBAAgB,GAAG,EAJsB;AAKzCC,IAAAA,WAAW,GAAG,IAL2B;AAMzCC,IAAAA,IANyC;AAOzCC,IAAAA,KAPyC;AAQzCC,IAAAA,MARyC;AASzCC,IAAAA,QATyC;AAUzCC,IAAAA,aAAa,GAAGX;AAVyB,GAWtC;AACH,QAAM;AAAEY,IAAAA,aAAF;AAAiBC,IAAAA,YAAjB;AAA+BC,IAAAA,eAA/B;AAAgDC,IAAAA;AAAhD,MACLjB,mBAAmB,CAAEW,MAAF,EAAUD,KAAV,EAAiBJ,WAAjB,EAA8BD,UAA9B,EAA0CO,QAA1C,CADpB;AAGA,SACC,8BACG,CAAElB,OAAO,CAAEa,gBAAF,CAAT,IACD,cAAC,aAAD;AACC,IAAA,KAAK,EAAGR,EAAE,CAAE,YAAF,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/image-size-control/index.js"],"names":["isEmpty","Button","ButtonGroup","SelectControl","TextControl","__","useDimensionHandler","IMAGE_SIZE_PRESETS","noop","ImageSizeControl","imageSizeHelp","imageWidth","imageHeight","imageSizeOptions","isResizable","slug","width","height","onChange","onChangeImage","currentHeight","currentWidth","updateDimension","updateDimensions","value","map","scale","scaledWidth","Math","round","scaledHeight","isCurrent","undefined"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tButtonGroup,\n\tSelectControl,\n\tTextControl,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useDimensionHandler from './use-dimension-handler';\n\nconst IMAGE_SIZE_PRESETS = [ 25, 50, 75, 100 ];\nconst noop = () => {};\n\nexport default function ImageSizeControl( {\n\timageSizeHelp,\n\timageWidth,\n\timageHeight,\n\timageSizeOptions = [],\n\tisResizable = true,\n\tslug,\n\twidth,\n\theight,\n\tonChange,\n\tonChangeImage = noop,\n} ) {\n\tconst { currentHeight, currentWidth, updateDimension, updateDimensions } =\n\t\tuseDimensionHandler( height, width, imageHeight, imageWidth, onChange );\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isEmpty( imageSizeOptions ) && (\n\t\t\t\t<SelectControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Image size' ) }\n\t\t\t\t\tvalue={ slug }\n\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\tonChange={ onChangeImage }\n\t\t\t\t\thelp={ imageSizeHelp }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isResizable && (\n\t\t\t\t<div className=\"block-editor-image-size-control\">\n\t\t\t\t\t<p className=\"block-editor-image-size-control__row\">\n\t\t\t\t\t\t{ __( 'Image dimensions' ) }\n\t\t\t\t\t</p>\n\t\t\t\t\t<div className=\"block-editor-image-size-control__row\">\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tclassName=\"block-editor-image-size-control__width\"\n\t\t\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\t\t\tvalue={ currentWidth }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tupdateDimension( 'width', value )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tclassName=\"block-editor-image-size-control__height\"\n\t\t\t\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\t\t\t\tvalue={ currentHeight }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tupdateDimension( 'height', value )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"block-editor-image-size-control__row\">\n\t\t\t\t\t\t<ButtonGroup aria-label={ __( 'Image size presets' ) }>\n\t\t\t\t\t\t\t{ IMAGE_SIZE_PRESETS.map( ( scale ) => {\n\t\t\t\t\t\t\t\tconst scaledWidth = Math.round(\n\t\t\t\t\t\t\t\t\timageWidth * ( scale / 100 )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tconst scaledHeight = Math.round(\n\t\t\t\t\t\t\t\t\timageHeight * ( scale / 100 )\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tconst isCurrent =\n\t\t\t\t\t\t\t\t\tcurrentWidth === scaledWidth &&\n\t\t\t\t\t\t\t\t\tcurrentHeight === scaledHeight;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tkey={ scale }\n\t\t\t\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\t\t\tisCurrent ? 'primary' : undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tisPressed={ isCurrent }\n\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\tupdateDimensions(\n\t\t\t\t\t\t\t\t\t\t\t\tscaledHeight,\n\t\t\t\t\t\t\t\t\t\t\t\tscaledWidth\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ scale }%\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</ButtonGroup>\n\t\t\t\t\t\t<Button isSmall onClick={ () => updateDimensions() }>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
|
|
@@ -18,8 +18,8 @@ import BlockPatternList from '../block-patterns-list';
|
|
|
18
18
|
import PatternsExplorerModal from './block-patterns-explorer/explorer';
|
|
19
19
|
import MobileTabNavigation from './mobile-tab-navigation';
|
|
20
20
|
|
|
21
|
-
function usePatternsCategories() {
|
|
22
|
-
const [allPatterns, allCategories] = usePatternsState();
|
|
21
|
+
function usePatternsCategories(rootClientId) {
|
|
22
|
+
const [allPatterns, allCategories] = usePatternsState(undefined, rootClientId);
|
|
23
23
|
const hasRegisteredCategory = useCallback(pattern => {
|
|
24
24
|
if (!pattern.categories || !pattern.categories.length) {
|
|
25
25
|
return false;
|
|
@@ -94,7 +94,7 @@ export function BlockPatternsCategoryPanel(_ref4) {
|
|
|
94
94
|
showTitlesAsTooltip
|
|
95
95
|
} = _ref4;
|
|
96
96
|
const [allPatterns,, onClick] = usePatternsState(onInsert, rootClientId);
|
|
97
|
-
const availableCategories = usePatternsCategories();
|
|
97
|
+
const availableCategories = usePatternsCategories(rootClientId);
|
|
98
98
|
const currentCategoryPatterns = useMemo(() => allPatterns.filter(pattern => {
|
|
99
99
|
var _pattern$categories$f, _pattern$categories3;
|
|
100
100
|
|
|
@@ -139,7 +139,7 @@ function BlockPatternsTabs(_ref5) {
|
|
|
139
139
|
rootClientId
|
|
140
140
|
} = _ref5;
|
|
141
141
|
const [showPatternsExplorer, setShowPatternsExplorer] = useState(false);
|
|
142
|
-
const categories = usePatternsCategories();
|
|
142
|
+
const categories = usePatternsCategories(rootClientId);
|
|
143
143
|
const isMobile = useViewportMatch('medium', '<');
|
|
144
144
|
return createElement(Fragment, null, !isMobile && createElement("div", {
|
|
145
145
|
className: "block-editor-inserter__block-patterns-tabs-container"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"names":["useMemo","useState","useCallback","useRef","useEffect","_x","__","useAsyncList","useViewportMatch","__experimentalItemGroup","ItemGroup","__experimentalItem","Item","__experimentalHStack","HStack","FlexBlock","Button","Icon","chevronRight","focus","usePatternsState","BlockPatternList","PatternsExplorerModal","MobileTabNavigation","usePatternsCategories","allPatterns","allCategories","hasRegisteredCategory","pattern","categories","length","some","cat","category","name","populatedCategories","filter","includes","sort","currentName","nextName","categoryName","find","push","label","BlockPatternsCategoryDialog","rootClientId","onInsert","showTitlesAsTooltip","container","timeout","setTimeout","firstTabbable","tabbable","current","clearTimeout","BlockPatternsCategoryPanel","onClick","availableCategories","currentCategoryPatterns","availablePatternCategories","availableCategory","currentShownPatterns","description","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","isMobile","map","undefined"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __ } from '@wordpress/i18n';\nimport { useAsyncList, useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\n\nfunction usePatternsCategories() {\n\tconst [ allPatterns, allCategories ] = usePatternsState();\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tallPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( { name: currentName }, { name: nextName } ) => {\n\t\t\t\tif (\n\t\t\t\t\t! [ currentName, nextName ].some( ( categoryName ) =>\n\t\t\t\t\t\t[ 'featured', 'text' ].includes( categoryName )\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\t// Move `featured` category to the top and `text` to the bottom.\n\t\t\t\treturn currentName === 'featured' || nextName === 'text'\n\t\t\t\t\t? -1\n\t\t\t\t\t: 1;\n\t\t\t} );\n\n\t\tif (\n\t\t\tallPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\n\t\treturn categories;\n\t}, [ allPatterns, allCategories ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClick ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\n\tconst availableCategories = usePatternsCategories();\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[ allPatterns, category ]\n\t);\n\n\tconst currentShownPatterns = useAsyncList( currentCategoryPatterns );\n\n\tif ( ! currentCategoryPatterns.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<div className=\"block-editor-inserter__patterns-category-panel-title\">\n\t\t\t\t{ category.label }\n\t\t\t</div>\n\t\t\t<p>{ category.description }</p>\n\t\t\t<BlockPatternList\n\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\tblockPatterns={ currentCategoryPatterns }\n\t\t\t\tonClickPattern={ onClick }\n\t\t\t\tlabel={ category.label }\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tcategory={ category.label }\n\t\t\t\tisDraggable\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\tconst categories = usePatternsCategories();\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav aria-label={ __( 'Block pattern categories' ) }>\n\t\t\t\t\t\t<ItemGroup\n\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ chevronRight } />\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ selectedCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"names":["useMemo","useState","useCallback","useRef","useEffect","_x","__","useAsyncList","useViewportMatch","__experimentalItemGroup","ItemGroup","__experimentalItem","Item","__experimentalHStack","HStack","FlexBlock","Button","Icon","chevronRight","focus","usePatternsState","BlockPatternList","PatternsExplorerModal","MobileTabNavigation","usePatternsCategories","rootClientId","allPatterns","allCategories","undefined","hasRegisteredCategory","pattern","categories","length","some","cat","category","name","populatedCategories","filter","includes","sort","currentName","nextName","categoryName","find","push","label","BlockPatternsCategoryDialog","onInsert","showTitlesAsTooltip","container","timeout","setTimeout","firstTabbable","tabbable","current","clearTimeout","BlockPatternsCategoryPanel","onClick","availableCategories","currentCategoryPatterns","availablePatternCategories","availableCategory","currentShownPatterns","description","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","isMobile","map"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __ } from '@wordpress/i18n';\nimport { useAsyncList, useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\n\nfunction usePatternsCategories( rootClientId ) {\n\tconst [ allPatterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tallPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( { name: currentName }, { name: nextName } ) => {\n\t\t\t\tif (\n\t\t\t\t\t! [ currentName, nextName ].some( ( categoryName ) =>\n\t\t\t\t\t\t[ 'featured', 'text' ].includes( categoryName )\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\t// Move `featured` category to the top and `text` to the bottom.\n\t\t\t\treturn currentName === 'featured' || nextName === 'text'\n\t\t\t\t\t? -1\n\t\t\t\t\t: 1;\n\t\t\t} );\n\n\t\tif (\n\t\t\tallPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\n\t\treturn categories;\n\t}, [ allPatterns, allCategories ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClick ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\n\tconst availableCategories = usePatternsCategories( rootClientId );\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[ allPatterns, category ]\n\t);\n\n\tconst currentShownPatterns = useAsyncList( currentCategoryPatterns );\n\n\tif ( ! currentCategoryPatterns.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<div className=\"block-editor-inserter__patterns-category-panel-title\">\n\t\t\t\t{ category.label }\n\t\t\t</div>\n\t\t\t<p>{ category.description }</p>\n\t\t\t<BlockPatternList\n\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\tblockPatterns={ currentCategoryPatterns }\n\t\t\t\tonClickPattern={ onClick }\n\t\t\t\tlabel={ category.label }\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tcategory={ category.label }\n\t\t\t\tisDraggable\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\tconst categories = usePatternsCategories( rootClientId );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav aria-label={ __( 'Block pattern categories' ) }>\n\t\t\t\t\t\t<ItemGroup\n\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ chevronRight } />\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ selectedCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"]}
|
|
@@ -225,7 +225,8 @@ export default compose([withSelect((select, _ref4) => {
|
|
|
225
225
|
|
|
226
226
|
let {
|
|
227
227
|
clientId,
|
|
228
|
-
rootClientId
|
|
228
|
+
rootClientId,
|
|
229
|
+
shouldDirectInsert = true
|
|
229
230
|
} = _ref4;
|
|
230
231
|
const {
|
|
231
232
|
getBlockRootClientId,
|
|
@@ -241,7 +242,7 @@ export default compose([withSelect((select, _ref4) => {
|
|
|
241
242
|
|
|
242
243
|
const allowedBlocks = __experimentalGetAllowedBlocks(rootClientId);
|
|
243
244
|
|
|
244
|
-
const directInsertBlock = __experimentalGetDirectInsertBlock(rootClientId);
|
|
245
|
+
const directInsertBlock = shouldDirectInsert && __experimentalGetDirectInsertBlock(rootClientId);
|
|
245
246
|
|
|
246
247
|
const settings = getSettings();
|
|
247
248
|
const hasSingleBlockType = (allowedBlocks === null || allowedBlocks === void 0 ? void 0 : allowedBlocks.length) === 1 && ((_getBlockVariations = getBlockVariations(allowedBlocks[0].name, 'inserter')) === null || _getBlockVariations === void 0 ? void 0 : _getBlockVariations.length) === 0;
|