@wordpress/block-editor 11.0.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 +16 -1
- package/LICENSE.md +1 -1
- package/README.md +2 -1
- package/build/components/alignment-control/ui.js +1 -7
- package/build/components/alignment-control/ui.js.map +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-alignment-control/use-available-alignments.js +4 -3
- package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
- package/build/components/block-icon/index.js +4 -2
- package/build/components/block-icon/index.js.map +1 -1
- package/build/components/block-inspector/index.js +58 -5
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list-appender/index.js +46 -34
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-list-appender/index.native.js +39 -34
- package/build/components/block-list-appender/index.native.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +18 -18
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-mobile-toolbar/index.native.js +1 -1
- package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
- package/build/components/block-pattern-setup/index.js +14 -7
- package/build/components/block-pattern-setup/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-styles/index.native.js +1 -3
- package/build/components/block-styles/index.native.js.map +1 -1
- package/build/components/block-styles/utils.js +7 -10
- package/build/components/block-styles/utils.js.map +1 -1
- package/build/components/block-toolbar/index.native.js +6 -8
- package/build/components/block-toolbar/index.native.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +1 -3
- package/build/components/block-tools/selected-block-popover.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/block-variation-picker/index.js +1 -1
- package/build/components/block-variation-picker/index.js.map +1 -1
- package/build/components/colors/utils.js +2 -6
- package/build/components/colors/utils.js.map +1 -1
- package/build/components/colors-gradients/control.js +0 -3
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +0 -2
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -19
- package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -3
- package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
- package/build/components/copy-handler/index.js +37 -9
- package/build/components/copy-handler/index.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/fluid-utils.js +5 -2
- package/build/components/font-sizes/fluid-utils.js.map +1 -1
- package/build/components/font-sizes/utils.js +10 -4
- package/build/components/font-sizes/utils.js.map +1 -1
- package/build/components/font-sizes/with-font-sizes.js +14 -12
- package/build/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build/components/gradients/use-gradient.js +2 -8
- package/build/components/gradients/use-gradient.js.map +1 -1
- package/build/components/iframe/index.js +48 -101
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/iframe/use-compatibility-styles.js +98 -0
- package/build/components/iframe/use-compatibility-styles.js.map +1 -0
- package/build/components/image-size-control/index.js +1 -0
- package/build/components/image-size-control/index.js.map +1 -1
- package/build/components/inner-blocks/index.js +6 -2
- package/build/components/inner-blocks/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/hooks/use-insertion-point.js +4 -3
- package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build/components/inserter/index.js +16 -6
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/media-tab/hooks.js +8 -5
- package/build/components/inserter/media-tab/hooks.js.map +1 -1
- package/build/components/inserter/menu.js +11 -5
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +6 -3
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter/search-items.js +15 -14
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/components/inserter/search-results.js +4 -2
- package/build/components/inserter/search-results.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/list-view/block-select-button.js +1 -1
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/off-canvas-editor/appender.js +3 -44
- 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-select-button.js +3 -2
- package/build/components/off-canvas-editor/block-select-button.js.map +1 -1
- package/build/components/off-canvas-editor/block.js +51 -57
- package/build/components/off-canvas-editor/block.js.map +1 -1
- package/build/components/off-canvas-editor/index.js +12 -5
- package/build/components/off-canvas-editor/index.js.map +1 -1
- package/build/components/off-canvas-editor/use-inserted-block.js +58 -0
- package/build/components/off-canvas-editor/use-inserted-block.js.map +1 -0
- package/build/components/provider/index.js +3 -1
- package/build/components/provider/index.js.map +1 -1
- package/build/components/responsive-block-control/label.js.map +1 -1
- package/build/components/rich-text/format-edit.js +12 -10
- package/build/components/rich-text/format-edit.js.map +1 -1
- package/build/components/rich-text/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/rich-text/use-paste-handler.js +21 -12
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/spacing-sizes-control/index.js +0 -1
- package/build/components/spacing-sizes-control/index.js.map +1 -1
- package/build/components/spacing-sizes-control/utils.js +1 -1
- package/build/components/spacing-sizes-control/utils.js.map +1 -1
- package/build/components/typewriter/index.js +1 -1
- package/build/components/typewriter/index.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/image-url-input-ui.js +2 -2
- package/build/components/url-popover/image-url-input-ui.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/index.js +1 -1
- package/build/components/writing-flow/index.js.map +1 -1
- 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/border.js +0 -1
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color-panel.js +0 -1
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/color.js +1 -2
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/font-family.js +4 -4
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/font-size.js +5 -3
- package/build/hooks/font-size.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/hooks/use-typography-props.js +11 -8
- package/build/hooks/use-typography-props.js.map +1 -1
- package/build/store/reducer.js +27 -9
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +9 -7
- package/build/store/selectors.js.map +1 -1
- package/build/utils/pasting.js +6 -11
- package/build/utils/pasting.js.map +1 -1
- package/build-module/components/alignment-control/ui.js +1 -6
- package/build-module/components/alignment-control/ui.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-alignment-control/use-available-alignments.js +4 -3
- package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
- package/build-module/components/block-icon/index.js +4 -2
- package/build-module/components/block-icon/index.js.map +1 -1
- package/build-module/components/block-inspector/index.js +58 -6
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +46 -34
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-list-appender/index.native.js +39 -32
- package/build-module/components/block-list-appender/index.native.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +18 -18
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/index.native.js +1 -1
- package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
- package/build-module/components/block-pattern-setup/index.js +14 -7
- package/build-module/components/block-pattern-setup/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-styles/index.native.js +1 -2
- package/build-module/components/block-styles/index.native.js.map +1 -1
- package/build-module/components/block-styles/utils.js +7 -9
- package/build-module/components/block-styles/utils.js.map +1 -1
- package/build-module/components/block-toolbar/index.native.js +6 -8
- package/build-module/components/block-toolbar/index.native.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +1 -2
- package/build-module/components/block-tools/selected-block-popover.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/block-variation-picker/index.js +1 -1
- package/build-module/components/block-variation-picker/index.js.map +1 -1
- package/build-module/components/colors/utils.js +3 -7
- package/build-module/components/colors/utils.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +0 -3
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +0 -2
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js +4 -19
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -2
- package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
- package/build-module/components/copy-handler/index.js +38 -10
- package/build-module/components/copy-handler/index.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/fluid-utils.js +5 -2
- package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
- package/build-module/components/font-sizes/utils.js +11 -5
- package/build-module/components/font-sizes/utils.js.map +1 -1
- package/build-module/components/font-sizes/with-font-sizes.js +14 -11
- package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build-module/components/gradients/use-gradient.js +2 -7
- package/build-module/components/gradients/use-gradient.js.map +1 -1
- package/build-module/components/iframe/index.js +46 -102
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/iframe/use-compatibility-styles.js +90 -0
- package/build-module/components/iframe/use-compatibility-styles.js.map +1 -0
- 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/inner-blocks/index.js +6 -2
- package/build-module/components/inner-blocks/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/hooks/use-insertion-point.js +4 -3
- package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build-module/components/inserter/index.js +16 -6
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/media-tab/hooks.js +8 -5
- package/build-module/components/inserter/media-tab/hooks.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/inserter/quick-inserter.js +6 -3
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/search-items.js +15 -13
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/inserter/search-results.js +4 -2
- package/build-module/components/inserter/search-results.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/list-view/block-select-button.js +1 -1
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/off-canvas-editor/appender.js +5 -44
- 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-select-button.js +3 -2
- package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -1
- package/build-module/components/off-canvas-editor/block.js +54 -60
- package/build-module/components/off-canvas-editor/block.js.map +1 -1
- package/build-module/components/off-canvas-editor/index.js +12 -5
- package/build-module/components/off-canvas-editor/index.js.map +1 -1
- package/build-module/components/off-canvas-editor/use-inserted-block.js +47 -0
- package/build-module/components/off-canvas-editor/use-inserted-block.js.map +1 -0
- package/build-module/components/provider/index.js +3 -1
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/responsive-block-control/label.js +1 -2
- package/build-module/components/responsive-block-control/label.js.map +1 -1
- package/build-module/components/rich-text/format-edit.js +12 -9
- package/build-module/components/rich-text/format-edit.js.map +1 -1
- package/build-module/components/rich-text/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/rich-text/use-paste-handler.js +22 -12
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/spacing-sizes-control/index.js +0 -1
- package/build-module/components/spacing-sizes-control/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/utils.js +1 -1
- package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
- package/build-module/components/typewriter/index.js +1 -1
- package/build-module/components/typewriter/index.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/image-url-input-ui.js +3 -3
- package/build-module/components/url-popover/image-url-input-ui.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/index.js +1 -1
- package/build-module/components/writing-flow/index.js.map +1 -1
- 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/border.js +0 -1
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color-panel.js +0 -1
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/color.js +1 -2
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/font-family.js +5 -5
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/font-size.js +5 -3
- package/build-module/hooks/font-size.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/hooks/use-typography-props.js +11 -8
- package/build-module/hooks/use-typography-props.js.map +1 -1
- package/build-module/store/reducer.js +27 -8
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +9 -7
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/pasting.js +6 -10
- package/build-module/utils/pasting.js.map +1 -1
- package/build-style/content-rtl.css +60 -3
- package/build-style/content.css +60 -3
- package/build-style/default-editor-styles-rtl.css +3 -3
- package/build-style/default-editor-styles.css +3 -3
- package/build-style/style-rtl.css +62 -69
- package/build-style/style.css +62 -69
- package/package.json +29 -29
- package/src/components/alignment-control/test/index.js +2 -0
- package/src/components/alignment-control/ui.js +1 -7
- package/src/components/block-actions/index.js +5 -0
- package/src/components/block-alignment-control/test/index.js +2 -0
- package/src/components/block-alignment-control/use-available-alignments.js +4 -3
- package/src/components/block-icon/index.js +4 -2
- package/src/components/block-icon/test/index.js +9 -5
- package/src/components/block-inspector/index.js +79 -4
- package/src/components/block-inspector/style.scss +7 -0
- package/src/components/block-list-appender/index.js +65 -54
- package/src/components/block-list-appender/index.native.js +45 -34
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +18 -22
- package/src/components/block-mobile-toolbar/index.native.js +1 -1
- package/src/components/block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap +125 -0
- package/src/components/block-mobile-toolbar/test/block-actions-menu.native.js +439 -0
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +42 -0
- package/src/components/block-mover/test/index.native.js +157 -1
- package/src/components/block-pattern-setup/index.js +15 -6
- package/src/components/block-pattern-setup/style.scss +29 -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-styles/index.native.js +1 -2
- package/src/components/block-styles/utils.js +5 -7
- package/src/components/block-switcher/test/index.js +3 -2
- package/src/components/block-toolbar/index.native.js +8 -11
- package/src/components/block-tools/selected-block-popover.js +1 -3
- package/src/components/block-tools/use-block-toolbar-popover-props.js +68 -12
- package/src/components/block-variation-picker/index.js +5 -1
- package/src/components/block-vertical-alignment-control/test/index.js +2 -0
- package/src/components/button-block-appender/{style.scss → content.scss} +0 -0
- package/src/components/colors/test/with-colors.js +2 -0
- package/src/components/colors/utils.js +5 -3
- package/src/components/colors-gradients/control.js +0 -7
- package/src/components/colors-gradients/dropdown.js +0 -2
- package/src/components/colors-gradients/panel-color-gradient-settings.js +4 -22
- package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -2
- package/src/components/copy-handler/index.js +53 -7
- package/src/components/default-block-appender/test/index.js +2 -0
- package/src/components/default-style-picker/index.js +1 -0
- package/src/components/font-sizes/fluid-utils.js +7 -1
- package/src/components/font-sizes/utils.js +5 -3
- package/src/components/font-sizes/with-font-sizes.js +36 -36
- package/src/components/gradients/use-gradient.js +2 -7
- package/src/components/iframe/index.js +60 -122
- package/src/components/iframe/use-compatibility-styles.js +101 -0
- package/src/components/image-size-control/index.js +1 -0
- package/src/components/image-size-control/test/index.js +147 -79
- package/src/components/inner-blocks/index.js +4 -2
- package/src/components/inserter/block-patterns-tab.js +7 -4
- package/src/components/inserter/hooks/use-insertion-point.js +3 -2
- package/src/components/inserter/index.js +61 -43
- package/src/components/inserter/media-tab/hooks.js +5 -4
- package/src/components/inserter/menu.js +8 -4
- package/src/components/inserter/quick-inserter.js +3 -0
- package/src/components/inserter/search-items.js +1 -2
- package/src/components/inserter/search-results.js +2 -0
- 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/link-control/test/index.js +18 -4
- package/src/components/list-view/block-select-button.js +1 -1
- package/src/components/list-view/style.scss +14 -10
- package/src/components/media-replace-flow/test/index.js +2 -0
- package/src/components/off-canvas-editor/appender.js +4 -49
- package/src/components/off-canvas-editor/block-contents.js +84 -23
- package/src/components/off-canvas-editor/block-select-button.js +6 -2
- package/src/components/off-canvas-editor/block.js +90 -105
- package/src/components/off-canvas-editor/index.js +21 -2
- package/src/components/off-canvas-editor/style.scss +5 -1
- package/src/components/off-canvas-editor/test/use-inserted-block.js +108 -0
- package/src/components/off-canvas-editor/use-inserted-block.js +47 -0
- package/src/components/provider/index.js +4 -1
- package/src/components/responsive-block-control/label.js +2 -3
- package/src/components/responsive-block-control/test/index.js +4 -2
- package/src/components/rich-text/format-edit.js +6 -10
- package/src/components/rich-text/index.js +1 -0
- package/src/components/rich-text/use-enter.js +4 -4
- package/src/components/rich-text/use-paste-handler.js +33 -14
- package/src/components/spacing-sizes-control/index.js +0 -1
- package/src/components/spacing-sizes-control/utils.js +1 -1
- package/src/components/typewriter/index.js +3 -1
- 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-input/test/button.js +2 -0
- package/src/components/url-popover/image-url-input-ui.js +5 -4
- package/src/components/url-popover/link-editor.js +1 -0
- package/src/components/url-popover/test/index.js +21 -5
- package/src/components/use-paste-styles/index.js +230 -0
- package/src/components/warning/test/index.js +2 -0
- package/src/components/writing-flow/index.js +1 -1
- package/src/components/writing-flow/use-arrow-nav.js +20 -28
- package/src/content.scss +1 -0
- package/src/hooks/border.js +0 -1
- package/src/hooks/color-panel.js +0 -1
- package/src/hooks/color.js +0 -2
- package/src/hooks/font-family.js +3 -5
- package/src/hooks/font-size.js +13 -4
- 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/hooks/test/use-typography-props.js +26 -0
- package/src/hooks/use-typography-props.js +15 -7
- package/src/store/reducer.js +20 -8
- package/src/store/selectors.js +7 -8
- package/src/store/test/reducer.js +45 -3
- package/src/store/test/selectors.js +12 -9
- package/src/style.scss +2 -1
- package/src/utils/pasting.js +3 -9
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/colors-gradients/use-common-single-multiple-selects.js +0 -21
- package/build/components/colors-gradients/use-common-single-multiple-selects.js.map +0 -1
- package/build/components/rich-text/file-paste-handler.js +0 -21
- package/build/components/rich-text/file-paste-handler.js.map +0 -1
- package/build-module/components/colors-gradients/use-common-single-multiple-selects.js +0 -11
- package/build-module/components/colors-gradients/use-common-single-multiple-selects.js.map +0 -1
- package/build-module/components/rich-text/file-paste-handler.js +0 -13
- package/build-module/components/rich-text/file-paste-handler.js.map +0 -1
- package/src/components/colors-gradients/use-common-single-multiple-selects.js +0 -11
- package/src/components/rich-text/file-paste-handler.js +0 -13
|
@@ -7,6 +7,8 @@ import {
|
|
|
7
7
|
pasteHandler,
|
|
8
8
|
store as blocksStore,
|
|
9
9
|
createBlock,
|
|
10
|
+
findTransform,
|
|
11
|
+
getBlockTransforms,
|
|
10
12
|
} from '@wordpress/blocks';
|
|
11
13
|
import {
|
|
12
14
|
documentHasSelection,
|
|
@@ -84,6 +86,7 @@ export function useClipboardHandler() {
|
|
|
84
86
|
__unstableIsSelectionCollapsed,
|
|
85
87
|
__unstableIsSelectionMergeable,
|
|
86
88
|
__unstableGetSelectedBlocksWithPartialSelection,
|
|
89
|
+
canInsertBlockType,
|
|
87
90
|
} = useSelect( blockEditorStore );
|
|
88
91
|
const {
|
|
89
92
|
flashBlock,
|
|
@@ -91,6 +94,7 @@ export function useClipboardHandler() {
|
|
|
91
94
|
replaceBlocks,
|
|
92
95
|
__unstableDeleteSelection,
|
|
93
96
|
__unstableExpandSelection,
|
|
97
|
+
insertBlocks,
|
|
94
98
|
} = useDispatch( blockEditorStore );
|
|
95
99
|
const notifyCopy = useNotifyCopy();
|
|
96
100
|
|
|
@@ -201,13 +205,55 @@ export function useClipboardHandler() {
|
|
|
201
205
|
__experimentalCanUserUseUnfilteredHTML:
|
|
202
206
|
canUserUseUnfilteredHTML,
|
|
203
207
|
} = getSettings();
|
|
204
|
-
const { plainText, html } = getPasteEventData( event );
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
208
|
+
const { plainText, html, files } = getPasteEventData( event );
|
|
209
|
+
let blocks = [];
|
|
210
|
+
|
|
211
|
+
if ( files.length ) {
|
|
212
|
+
const fromTransforms = getBlockTransforms( 'from' );
|
|
213
|
+
blocks = files
|
|
214
|
+
.reduce( ( accumulator, file ) => {
|
|
215
|
+
const transformation = findTransform(
|
|
216
|
+
fromTransforms,
|
|
217
|
+
( transform ) =>
|
|
218
|
+
transform.type === 'files' &&
|
|
219
|
+
transform.isMatch( [ file ] )
|
|
220
|
+
);
|
|
221
|
+
if ( transformation ) {
|
|
222
|
+
accumulator.push(
|
|
223
|
+
transformation.transform( [ file ] )
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
return accumulator;
|
|
227
|
+
}, [] )
|
|
228
|
+
.flat();
|
|
229
|
+
} else {
|
|
230
|
+
blocks = pasteHandler( {
|
|
231
|
+
HTML: html,
|
|
232
|
+
plainText,
|
|
233
|
+
mode: 'BLOCKS',
|
|
234
|
+
canUserUseUnfilteredHTML,
|
|
235
|
+
} );
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if ( selectedBlockClientIds.length === 1 ) {
|
|
239
|
+
const [ selectedBlockClientId ] = selectedBlockClientIds;
|
|
240
|
+
|
|
241
|
+
if (
|
|
242
|
+
blocks.every( ( block ) =>
|
|
243
|
+
canInsertBlockType(
|
|
244
|
+
block.name,
|
|
245
|
+
selectedBlockClientId
|
|
246
|
+
)
|
|
247
|
+
)
|
|
248
|
+
) {
|
|
249
|
+
insertBlocks(
|
|
250
|
+
blocks,
|
|
251
|
+
undefined,
|
|
252
|
+
selectedBlockClientId
|
|
253
|
+
);
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
211
257
|
|
|
212
258
|
replaceBlocks(
|
|
213
259
|
selectedBlockClientIds,
|
|
@@ -58,6 +58,7 @@ export default function DefaultStylePicker( { blockName } ) {
|
|
|
58
58
|
onUpdatePreferredStyleVariations && (
|
|
59
59
|
<div className="default-style-picker__default-switcher">
|
|
60
60
|
<SelectControl
|
|
61
|
+
__nextHasNoMarginBottom
|
|
61
62
|
options={ selectOptions }
|
|
62
63
|
value={ preferredStyle || '' }
|
|
63
64
|
label={ __( 'Default Style' ) }
|
|
@@ -40,6 +40,7 @@ const DEFAULT_MINIMUM_FONT_SIZE_LIMIT = '14px';
|
|
|
40
40
|
* @param {?string} args.minimumFontSize Minimum font size for any clamp() calculation. Optional.
|
|
41
41
|
* @param {?number} args.scaleFactor A scale factor to determine how fast a font scales within boundaries. Optional.
|
|
42
42
|
* @param {?number} args.minimumFontSizeFactor How much to scale defaultFontSize by to derive minimumFontSize. Optional.
|
|
43
|
+
* @param {?string} args.minimumFontSizeLimit The smallest a calculated font size may be. Optional.
|
|
43
44
|
*
|
|
44
45
|
* @return {string|null} A font-size value using clamp().
|
|
45
46
|
*/
|
|
@@ -51,8 +52,13 @@ export function getComputedFluidTypographyValue( {
|
|
|
51
52
|
maximumViewPortWidth = DEFAULT_MAXIMUM_VIEWPORT_WIDTH,
|
|
52
53
|
scaleFactor = DEFAULT_SCALE_FACTOR,
|
|
53
54
|
minimumFontSizeFactor = DEFAULT_MINIMUM_FONT_SIZE_FACTOR,
|
|
54
|
-
minimumFontSizeLimit
|
|
55
|
+
minimumFontSizeLimit,
|
|
55
56
|
} ) {
|
|
57
|
+
// Validate incoming settings and set defaults.
|
|
58
|
+
minimumFontSizeLimit = !! getTypographyValueAndUnit( minimumFontSizeLimit )
|
|
59
|
+
? minimumFontSizeLimit
|
|
60
|
+
: DEFAULT_MINIMUM_FONT_SIZE_LIMIT;
|
|
61
|
+
|
|
56
62
|
/*
|
|
57
63
|
* Calculates missing minimumFontSize and maximumFontSize from
|
|
58
64
|
* defaultFontSize if provided.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { kebabCase } from 'lodash';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Returns the font size object based on an array of named font sizes and the namedFontSize and customFontSize values.
|
|
@@ -20,7 +20,9 @@ export const getFontSize = (
|
|
|
20
20
|
customFontSizeAttribute
|
|
21
21
|
) => {
|
|
22
22
|
if ( fontSizeAttribute ) {
|
|
23
|
-
const fontSizeObject = find(
|
|
23
|
+
const fontSizeObject = fontSizes?.find(
|
|
24
|
+
( { slug } ) => slug === fontSizeAttribute
|
|
25
|
+
);
|
|
24
26
|
if ( fontSizeObject ) {
|
|
25
27
|
return fontSizeObject;
|
|
26
28
|
}
|
|
@@ -39,7 +41,7 @@ export const getFontSize = (
|
|
|
39
41
|
* @return {Object} Font size object.
|
|
40
42
|
*/
|
|
41
43
|
export function getFontSizeObjectByValue( fontSizes, value ) {
|
|
42
|
-
const fontSizeObject = find(
|
|
44
|
+
const fontSizeObject = fontSizes?.find( ( { size } ) => size === value );
|
|
43
45
|
if ( fontSizeObject ) {
|
|
44
46
|
return fontSizeObject;
|
|
45
47
|
}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { find, pickBy } from 'lodash';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* WordPress dependencies
|
|
8
3
|
*/
|
|
@@ -107,9 +102,9 @@ export default ( ...fontSizeNames ) => {
|
|
|
107
102
|
customFontSizeAttributeName
|
|
108
103
|
) {
|
|
109
104
|
return ( fontSizeValue ) => {
|
|
110
|
-
const fontSizeObject =
|
|
111
|
-
size
|
|
112
|
-
|
|
105
|
+
const fontSizeObject = this.props.fontSizes?.find(
|
|
106
|
+
( { size } ) => size === Number( fontSizeValue )
|
|
107
|
+
);
|
|
113
108
|
this.props.setAttributes( {
|
|
114
109
|
[ fontSizeAttributeName ]:
|
|
115
110
|
fontSizeObject && fontSizeObject.slug
|
|
@@ -160,35 +155,40 @@ export default ( ...fontSizeNames ) => {
|
|
|
160
155
|
}
|
|
161
156
|
|
|
162
157
|
const newState = Object.entries(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
158
|
+
fontSizeAttributeNames
|
|
159
|
+
)
|
|
160
|
+
.filter( ( [ key, value ] ) =>
|
|
161
|
+
didAttributesChange( value, key )
|
|
166
162
|
)
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
163
|
+
.reduce(
|
|
164
|
+
(
|
|
165
|
+
newStateAccumulator,
|
|
166
|
+
[
|
|
167
|
+
fontSizeAttributeName,
|
|
168
|
+
customFontSizeAttributeName,
|
|
169
|
+
]
|
|
170
|
+
) => {
|
|
171
|
+
const fontSizeAttributeValue =
|
|
172
|
+
attributes[ fontSizeAttributeName ];
|
|
173
|
+
const fontSizeObject = getFontSize(
|
|
174
|
+
fontSizes,
|
|
175
|
+
fontSizeAttributeValue,
|
|
176
|
+
attributes[
|
|
177
|
+
customFontSizeAttributeName
|
|
178
|
+
]
|
|
179
|
+
);
|
|
180
|
+
newStateAccumulator[
|
|
181
|
+
fontSizeAttributeName
|
|
182
|
+
] = {
|
|
183
|
+
...fontSizeObject,
|
|
184
|
+
class: getFontSizeClass(
|
|
185
|
+
fontSizeAttributeValue
|
|
186
|
+
),
|
|
187
|
+
};
|
|
188
|
+
return newStateAccumulator;
|
|
189
|
+
},
|
|
190
|
+
{}
|
|
191
|
+
);
|
|
192
192
|
|
|
193
193
|
return {
|
|
194
194
|
...previousState,
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { find } from 'lodash';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* WordPress dependencies
|
|
8
3
|
*/
|
|
@@ -32,7 +27,7 @@ export function __experimentalGetGradientClass( gradientSlug ) {
|
|
|
32
27
|
* @return {string} Gradient value.
|
|
33
28
|
*/
|
|
34
29
|
export function getGradientValueBySlug( gradients, slug ) {
|
|
35
|
-
const gradient = find(
|
|
30
|
+
const gradient = gradients?.find( ( g ) => g.slug === slug );
|
|
36
31
|
return gradient && gradient.gradient;
|
|
37
32
|
}
|
|
38
33
|
|
|
@@ -40,7 +35,7 @@ export function __experimentalGetGradientObjectByGradientValue(
|
|
|
40
35
|
gradients,
|
|
41
36
|
value
|
|
42
37
|
) {
|
|
43
|
-
const gradient = find(
|
|
38
|
+
const gradient = gradients?.find( ( g ) => g.gradient === value );
|
|
44
39
|
return gradient;
|
|
45
40
|
}
|
|
46
41
|
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
forwardRef,
|
|
13
13
|
useMemo,
|
|
14
14
|
useReducer,
|
|
15
|
+
renderToString,
|
|
15
16
|
} from '@wordpress/element';
|
|
16
17
|
import { __ } from '@wordpress/i18n';
|
|
17
18
|
import {
|
|
@@ -20,103 +21,15 @@ import {
|
|
|
20
21
|
useRefEffect,
|
|
21
22
|
} from '@wordpress/compose';
|
|
22
23
|
import { __experimentalStyleProvider as StyleProvider } from '@wordpress/components';
|
|
24
|
+
import { useSelect } from '@wordpress/data';
|
|
23
25
|
|
|
24
26
|
/**
|
|
25
27
|
* Internal dependencies
|
|
26
28
|
*/
|
|
27
29
|
import { useBlockSelectionClearer } from '../block-selection-clearer';
|
|
28
30
|
import { useWritingFlow } from '../writing-flow';
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const BLOCK_PREFIX = 'wp-block';
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Clones stylesheets targetting the editor canvas to the given document. A
|
|
35
|
-
* stylesheet is considered targetting the editor a canvas if it contains the
|
|
36
|
-
* `editor-styles-wrapper`, `wp-block`, or `wp-block-*` class selectors.
|
|
37
|
-
*
|
|
38
|
-
* Ideally, this hook should be removed in the future and styles should be added
|
|
39
|
-
* explicitly as editor styles.
|
|
40
|
-
*/
|
|
41
|
-
function useStylesCompatibility() {
|
|
42
|
-
return useRefEffect( ( node ) => {
|
|
43
|
-
// Search the document for stylesheets targetting the editor canvas.
|
|
44
|
-
Array.from( document.styleSheets ).forEach( ( styleSheet ) => {
|
|
45
|
-
try {
|
|
46
|
-
// May fail for external styles.
|
|
47
|
-
// eslint-disable-next-line no-unused-expressions
|
|
48
|
-
styleSheet.cssRules;
|
|
49
|
-
} catch ( e ) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const { ownerNode, cssRules } = styleSheet;
|
|
54
|
-
|
|
55
|
-
if ( ! cssRules ) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Generally, ignore inline styles. We add inline styles belonging to a
|
|
60
|
-
// stylesheet later, which may or may not match the selectors.
|
|
61
|
-
if ( ownerNode.tagName !== 'LINK' ) {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Don't try to add the reset styles, which were removed as a dependency
|
|
66
|
-
// from `edit-blocks` for the iframe since we don't need to reset admin
|
|
67
|
-
// styles.
|
|
68
|
-
if ( ownerNode.id === 'wp-reset-editor-styles-css' ) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
function matchFromRules( _cssRules ) {
|
|
73
|
-
return Array.from( _cssRules ).find(
|
|
74
|
-
( {
|
|
75
|
-
selectorText,
|
|
76
|
-
conditionText,
|
|
77
|
-
cssRules: __cssRules,
|
|
78
|
-
} ) => {
|
|
79
|
-
// If the rule is conditional then it will not have selector text.
|
|
80
|
-
// Recurse into child CSS ruleset to determine selector eligibility.
|
|
81
|
-
if ( conditionText ) {
|
|
82
|
-
return matchFromRules( __cssRules );
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return (
|
|
86
|
-
selectorText &&
|
|
87
|
-
( selectorText.includes(
|
|
88
|
-
`.${ BODY_CLASS_NAME }`
|
|
89
|
-
) ||
|
|
90
|
-
selectorText.includes( `.${ BLOCK_PREFIX }` ) )
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
const isMatch = matchFromRules( cssRules );
|
|
97
|
-
|
|
98
|
-
if (
|
|
99
|
-
isMatch &&
|
|
100
|
-
! node.ownerDocument.getElementById( ownerNode.id )
|
|
101
|
-
) {
|
|
102
|
-
// Display warning once we have a way to add style dependencies to the editor.
|
|
103
|
-
// See: https://github.com/WordPress/gutenberg/pull/37466.
|
|
104
|
-
node.appendChild( ownerNode.cloneNode( true ) );
|
|
105
|
-
|
|
106
|
-
// Add inline styles belonging to the stylesheet.
|
|
107
|
-
const inlineCssId = ownerNode.id.replace(
|
|
108
|
-
'-css',
|
|
109
|
-
'-inline-css'
|
|
110
|
-
);
|
|
111
|
-
const inlineCssElement = document.getElementById( inlineCssId );
|
|
112
|
-
|
|
113
|
-
if ( inlineCssElement ) {
|
|
114
|
-
node.appendChild( inlineCssElement.cloneNode( true ) );
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
} );
|
|
118
|
-
}, [] );
|
|
119
|
-
}
|
|
31
|
+
import { useCompatibilityStyles } from './use-compatibility-styles';
|
|
32
|
+
import { store as blockEditorStore } from '../../store';
|
|
120
33
|
|
|
121
34
|
/**
|
|
122
35
|
* Bubbles some event types (keydown, keypress, and dragover) to parent document
|
|
@@ -187,24 +100,31 @@ async function loadScript( head, { id, src } ) {
|
|
|
187
100
|
} );
|
|
188
101
|
}
|
|
189
102
|
|
|
190
|
-
function Iframe(
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
)
|
|
103
|
+
function Iframe( {
|
|
104
|
+
contentRef,
|
|
105
|
+
children,
|
|
106
|
+
head,
|
|
107
|
+
tabIndex = 0,
|
|
108
|
+
scale = 1,
|
|
109
|
+
frameSize = 0,
|
|
110
|
+
readonly,
|
|
111
|
+
forwardedRef: ref,
|
|
112
|
+
...props
|
|
113
|
+
} ) {
|
|
114
|
+
const assets = useSelect(
|
|
115
|
+
( select ) =>
|
|
116
|
+
select( blockEditorStore ).getSettings().__unstableResolvedAssets,
|
|
117
|
+
[]
|
|
118
|
+
);
|
|
204
119
|
const [ , forceRender ] = useReducer( () => ( {} ) );
|
|
205
120
|
const [ iframeDocument, setIframeDocument ] = useState();
|
|
206
121
|
const [ bodyClasses, setBodyClasses ] = useState( [] );
|
|
207
122
|
const styles = useParsedAssets( assets?.styles );
|
|
123
|
+
const styleIds = styles.map( ( style ) => style.id );
|
|
124
|
+
const compatStyles = useCompatibilityStyles();
|
|
125
|
+
const neededCompatStyles = compatStyles.filter(
|
|
126
|
+
( style ) => ! styleIds.includes( style.id )
|
|
127
|
+
);
|
|
208
128
|
const scripts = useParsedAssets( assets?.scripts );
|
|
209
129
|
const clearerRef = useBlockSelectionClearer();
|
|
210
130
|
const [ before, writingFlowRef, after ] = useWritingFlow();
|
|
@@ -288,12 +208,11 @@ function Iframe(
|
|
|
288
208
|
} );
|
|
289
209
|
}, [] );
|
|
290
210
|
const bodyRef = useMergeRefs( [ contentRef, clearerRef, writingFlowRef ] );
|
|
291
|
-
const styleCompatibilityRef = useStylesCompatibility();
|
|
292
211
|
|
|
293
|
-
|
|
212
|
+
const styleAssets = (
|
|
294
213
|
<>
|
|
295
214
|
<style>{ 'html{height:auto!important;}body{margin:0}' }</style>
|
|
296
|
-
{ styles.map(
|
|
215
|
+
{ [ ...styles, ...neededCompatStyles ].map(
|
|
297
216
|
( { tagName, href, id, rel, media, textContent } ) => {
|
|
298
217
|
const TagName = tagName.toLowerCase();
|
|
299
218
|
|
|
@@ -310,10 +229,16 @@ function Iframe(
|
|
|
310
229
|
);
|
|
311
230
|
}
|
|
312
231
|
) }
|
|
313
|
-
{ head }
|
|
314
232
|
</>
|
|
315
233
|
);
|
|
316
234
|
|
|
235
|
+
// Correct doctype is required to enable rendering in standards
|
|
236
|
+
// mode. Also preload the styles to avoid a flash of unstyled
|
|
237
|
+
// content.
|
|
238
|
+
const srcDoc = useMemo( () => {
|
|
239
|
+
return '<!doctype html>' + renderToString( styleAssets );
|
|
240
|
+
}, [] );
|
|
241
|
+
|
|
317
242
|
return (
|
|
318
243
|
<>
|
|
319
244
|
{ tabIndex >= 0 && before }
|
|
@@ -321,14 +246,17 @@ function Iframe(
|
|
|
321
246
|
{ ...props }
|
|
322
247
|
ref={ useMergeRefs( [ ref, setRef ] ) }
|
|
323
248
|
tabIndex={ tabIndex }
|
|
324
|
-
// Correct doctype is required to enable rendering in standards
|
|
325
|
-
|
|
249
|
+
// Correct doctype is required to enable rendering in standards
|
|
250
|
+
// mode. Also preload the styles to avoid a flash of unstyled
|
|
251
|
+
// content.
|
|
252
|
+
srcDoc={ srcDoc }
|
|
326
253
|
title={ __( 'Editor canvas' ) }
|
|
327
254
|
>
|
|
328
255
|
{ iframeDocument &&
|
|
329
256
|
createPortal(
|
|
330
257
|
<>
|
|
331
258
|
<head ref={ headRef }>
|
|
259
|
+
{ styleAssets }
|
|
332
260
|
{ head }
|
|
333
261
|
<style>
|
|
334
262
|
{ `html { transition: background 5s; ${
|
|
@@ -342,7 +270,7 @@ function Iframe(
|
|
|
342
270
|
ref={ bodyRef }
|
|
343
271
|
className={ classnames(
|
|
344
272
|
'block-editor-iframe__body',
|
|
345
|
-
|
|
273
|
+
'editor-styles-wrapper',
|
|
346
274
|
...bodyClasses
|
|
347
275
|
) }
|
|
348
276
|
style={ {
|
|
@@ -359,15 +287,6 @@ function Iframe(
|
|
|
359
287
|
inert={ readonly ? 'true' : undefined }
|
|
360
288
|
>
|
|
361
289
|
{ contentResizeListener }
|
|
362
|
-
{ /*
|
|
363
|
-
* This is a wrapper for the extra styles and scripts
|
|
364
|
-
* rendered imperatively by cloning the parent,
|
|
365
|
-
* it's important that this div's content remains uncontrolled.
|
|
366
|
-
*/ }
|
|
367
|
-
<div
|
|
368
|
-
style={ { display: 'none' } }
|
|
369
|
-
ref={ styleCompatibilityRef }
|
|
370
|
-
/>
|
|
371
290
|
<StyleProvider document={ iframeDocument }>
|
|
372
291
|
{ children }
|
|
373
292
|
</StyleProvider>
|
|
@@ -381,4 +300,23 @@ function Iframe(
|
|
|
381
300
|
);
|
|
382
301
|
}
|
|
383
302
|
|
|
384
|
-
|
|
303
|
+
function IframeIfReady( props, ref ) {
|
|
304
|
+
const isInitialised = useSelect(
|
|
305
|
+
( select ) =>
|
|
306
|
+
select( blockEditorStore ).getSettings().__internalIsInitialized,
|
|
307
|
+
[]
|
|
308
|
+
);
|
|
309
|
+
|
|
310
|
+
// We shouldn't render the iframe until the editor settings are initialised.
|
|
311
|
+
// The initial settings are needed to get the styles for the srcDoc, which
|
|
312
|
+
// cannot be changed after the iframe is mounted. srcDoc is used to to set
|
|
313
|
+
// the initial iframe HTML, which is required to avoid a flash of unstyled
|
|
314
|
+
// content.
|
|
315
|
+
if ( ! isInitialised ) {
|
|
316
|
+
return null;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
return <Iframe { ...props } forwardedRef={ ref } />;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
export default forwardRef( IframeIfReady );
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useMemo } from '@wordpress/element';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns a list of stylesheets that target the editor canvas. A stylesheet is
|
|
8
|
+
* considered targetting the editor a canvas if it contains the
|
|
9
|
+
* `editor-styles-wrapper`, `wp-block`, or `wp-block-*` class selectors.
|
|
10
|
+
*
|
|
11
|
+
* Ideally, this hook should be removed in the future and styles should be added
|
|
12
|
+
* explicitly as editor styles.
|
|
13
|
+
*/
|
|
14
|
+
export function useCompatibilityStyles() {
|
|
15
|
+
// Only memoize the result once on load, since these stylesheets should not
|
|
16
|
+
// change.
|
|
17
|
+
return useMemo( () => {
|
|
18
|
+
// Search the document for stylesheets targetting the editor canvas.
|
|
19
|
+
return Array.from( document.styleSheets ).reduce(
|
|
20
|
+
( accumulator, styleSheet ) => {
|
|
21
|
+
try {
|
|
22
|
+
// May fail for external styles.
|
|
23
|
+
// eslint-disable-next-line no-unused-expressions
|
|
24
|
+
styleSheet.cssRules;
|
|
25
|
+
} catch ( e ) {
|
|
26
|
+
return accumulator;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const { ownerNode, cssRules } = styleSheet;
|
|
30
|
+
|
|
31
|
+
// Stylesheet is added by another stylesheet. See
|
|
32
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet/ownerNode#notes.
|
|
33
|
+
if ( ownerNode === null ) {
|
|
34
|
+
return accumulator;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if ( ! cssRules ) {
|
|
38
|
+
return accumulator;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Generally, ignore inline styles. We add inline styles belonging to a
|
|
42
|
+
// stylesheet later, which may or may not match the selectors.
|
|
43
|
+
if ( ownerNode.tagName !== 'LINK' ) {
|
|
44
|
+
return accumulator;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Don't try to add the reset styles, which were removed as a dependency
|
|
48
|
+
// from `edit-blocks` for the iframe since we don't need to reset admin
|
|
49
|
+
// styles.
|
|
50
|
+
if ( ownerNode.id === 'wp-reset-editor-styles-css' ) {
|
|
51
|
+
return accumulator;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function matchFromRules( _cssRules ) {
|
|
55
|
+
return Array.from( _cssRules ).find(
|
|
56
|
+
( {
|
|
57
|
+
selectorText,
|
|
58
|
+
conditionText,
|
|
59
|
+
cssRules: __cssRules,
|
|
60
|
+
} ) => {
|
|
61
|
+
// If the rule is conditional then it will not have selector text.
|
|
62
|
+
// Recurse into child CSS ruleset to determine selector eligibility.
|
|
63
|
+
if ( conditionText ) {
|
|
64
|
+
return matchFromRules( __cssRules );
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return (
|
|
68
|
+
selectorText &&
|
|
69
|
+
( selectorText.includes(
|
|
70
|
+
'.editor-styles-wrapper'
|
|
71
|
+
) ||
|
|
72
|
+
selectorText.includes( '.wp-block' ) )
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if ( matchFromRules( cssRules ) ) {
|
|
79
|
+
// Display warning once we have a way to add style dependencies to the editor.
|
|
80
|
+
// See: https://github.com/WordPress/gutenberg/pull/37466.
|
|
81
|
+
accumulator.push( ownerNode.cloneNode( true ) );
|
|
82
|
+
|
|
83
|
+
// Add inline styles belonging to the stylesheet.
|
|
84
|
+
const inlineCssId = ownerNode.id.replace(
|
|
85
|
+
'-css',
|
|
86
|
+
'-inline-css'
|
|
87
|
+
);
|
|
88
|
+
const inlineCssElement =
|
|
89
|
+
document.getElementById( inlineCssId );
|
|
90
|
+
|
|
91
|
+
if ( inlineCssElement ) {
|
|
92
|
+
accumulator.push( inlineCssElement.cloneNode( true ) );
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return accumulator;
|
|
97
|
+
},
|
|
98
|
+
[]
|
|
99
|
+
);
|
|
100
|
+
}, [] );
|
|
101
|
+
}
|