@wordpress/block-editor 15.23.0 → 16.0.1-next.v.202607070741.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 +25 -0
- package/build/autocompleters/block.cjs +10 -2
- package/build/autocompleters/block.cjs.map +2 -2
- package/build/components/background-image-control/index.cjs +0 -2
- package/build/components/background-image-control/index.cjs.map +2 -2
- package/build/components/block-inspector/edit-contents.cjs +3 -0
- package/build/components/block-inspector/edit-contents.cjs.map +3 -3
- package/build/components/block-inspector/index.cjs +2 -3
- package/build/components/block-inspector/index.cjs.map +2 -2
- package/build/components/block-list/block-invalid-warning.cjs +8 -19
- package/build/components/block-list/block-invalid-warning.cjs.map +2 -2
- package/build/components/block-styles/use-styles-for-block.cjs +2 -1
- package/build/components/block-styles/use-styles-for-block.cjs.map +2 -2
- package/build/components/block-title/use-block-display-title.cjs +7 -2
- package/build/components/block-title/use-block-display-title.cjs.map +2 -2
- package/build/components/block-toolbar/block-toolbar-icon.cjs +10 -14
- package/build/components/block-toolbar/block-toolbar-icon.cjs.map +2 -2
- package/build/components/block-variation-transforms/index.cjs +0 -1
- package/build/components/block-variation-transforms/index.cjs.map +2 -2
- package/build/components/child-layout-control/index.cjs +0 -2
- package/build/components/child-layout-control/index.cjs.map +2 -2
- package/build/components/colors-gradients/control.cjs +5 -5
- package/build/components/colors-gradients/control.cjs.map +2 -2
- package/build/components/date-format-picker/index.cjs +0 -1
- package/build/components/date-format-picker/index.cjs.map +2 -2
- package/build/components/dimensions-tool/aspect-ratio-tool.cjs +1 -2
- package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +2 -2
- package/build/components/dimensions-tool/scale-tool.cjs +0 -1
- package/build/components/dimensions-tool/scale-tool.cjs.map +2 -2
- package/build/components/dimensions-tool/width-height-tool.cjs +2 -4
- package/build/components/dimensions-tool/width-height-tool.cjs.map +2 -2
- package/build/components/font-appearance-control/index.cjs +6 -25
- package/build/components/font-appearance-control/index.cjs.map +3 -3
- package/build/components/font-family/index.cjs +6 -15
- package/build/components/font-family/index.cjs.map +3 -3
- package/build/components/font-sizes/font-size-picker.cjs +1 -2
- package/build/components/font-sizes/font-size-picker.cjs.map +2 -2
- package/build/components/global-styles/border-panel.cjs +0 -1
- package/build/components/global-styles/border-panel.cjs.map +2 -2
- package/build/components/global-styles/dimensions-panel.cjs +0 -3
- package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
- package/build/components/global-styles/typography-panel.cjs +4 -10
- package/build/components/global-styles/typography-panel.cjs.map +2 -2
- package/build/components/height-control/index.cjs +0 -2
- package/build/components/height-control/index.cjs.map +2 -2
- package/build/components/html-element-control/index.cjs +0 -1
- package/build/components/html-element-control/index.cjs.map +2 -2
- package/build/components/image-editor/index.cjs +5 -0
- package/build/components/image-editor/index.cjs.map +3 -3
- package/build/components/image-editor/zoom-dropdown.cjs +0 -1
- package/build/components/image-editor/zoom-dropdown.cjs.map +2 -2
- package/build/components/image-size-control/index.cjs +1 -3
- package/build/components/image-size-control/index.cjs.map +2 -2
- package/build/components/inner-content/index.cjs +107 -0
- package/build/components/inner-content/index.cjs.map +7 -0
- package/build/components/inserter/hooks/use-block-types-state.cjs +10 -2
- package/build/components/inserter/hooks/use-block-types-state.cjs.map +2 -2
- package/build/components/inserter/media-tab/hooks.cjs +34 -6
- package/build/components/inserter/media-tab/hooks.cjs.map +2 -2
- package/build/components/inserter/media-tab/media-list.cjs +3 -1
- package/build/components/inserter/media-tab/media-list.cjs.map +2 -2
- package/build/components/inserter/media-tab/media-panel.cjs +224 -27
- package/build/components/inserter/media-tab/media-panel.cjs.map +3 -3
- package/build/components/inserter/media-tab/media-preview.cjs +32 -17
- package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
- package/build/components/inserter/media-tab/media-tab.cjs +26 -6
- package/build/components/inserter/media-tab/media-tab.cjs.map +2 -2
- package/build/components/inserter/mobile-tab-navigation.cjs +6 -1
- package/build/components/inserter/mobile-tab-navigation.cjs.map +2 -2
- package/build/components/inserter/no-results.cjs +2 -2
- package/build/components/inserter/no-results.cjs.map +2 -2
- package/build/components/inserter/preview-panel.cjs +2 -1
- package/build/components/inserter/preview-panel.cjs.map +2 -2
- package/build/components/inserter-list-item/index.cjs +8 -2
- package/build/components/inserter-list-item/index.cjs.map +2 -2
- package/build/components/letter-spacing-control/index.cjs +0 -24
- package/build/components/letter-spacing-control/index.cjs.map +3 -3
- package/build/components/line-height-control/index.cjs +7 -22
- package/build/components/line-height-control/index.cjs.map +3 -3
- package/build/components/list-view/block-select-button.cjs +90 -84
- package/build/components/list-view/block-select-button.cjs.map +2 -2
- package/build/components/list-view/block.cjs +51 -20
- package/build/components/list-view/block.cjs.map +2 -2
- package/build/components/list-view/expander.cjs +1 -1
- package/build/components/list-view/expander.cjs.map +2 -2
- package/build/components/list-view/use-list-view-client-ids.cjs +2 -2
- package/build/components/list-view/use-list-view-client-ids.cjs.map +2 -2
- package/build/components/observe-typing/index.cjs +4 -3
- package/build/components/observe-typing/index.cjs.map +2 -2
- package/build/components/preset-input-control/custom-value-controls.cjs +1 -3
- package/build/components/preset-input-control/custom-value-controls.cjs.map +2 -2
- package/build/components/preset-input-control/index.cjs +1 -3
- package/build/components/preset-input-control/index.cjs.map +2 -2
- package/build/components/resolution-tool/index.cjs +1 -2
- package/build/components/resolution-tool/index.cjs.map +2 -2
- package/build/components/text-alignment-control/index.cjs +0 -1
- package/build/components/text-alignment-control/index.cjs.map +2 -2
- package/build/components/text-decoration-control/index.cjs +0 -1
- package/build/components/text-decoration-control/index.cjs.map +2 -2
- package/build/components/text-indent-control/index.cjs +0 -8
- package/build/components/text-indent-control/index.cjs.map +2 -2
- package/build/components/text-transform-control/index.cjs +0 -1
- package/build/components/text-transform-control/index.cjs.map +2 -2
- package/build/components/use-block-display-information/index.cjs +10 -8
- package/build/components/use-block-display-information/index.cjs.map +2 -2
- package/build/components/use-on-block-drop/index.cjs +3 -7
- package/build/components/use-on-block-drop/index.cjs.map +2 -2
- package/build/components/writing-mode-control/index.cjs +0 -1
- package/build/components/writing-mode-control/index.cjs.map +2 -2
- package/build/hooks/font-size.cjs +1 -2
- package/build/hooks/font-size.cjs.map +2 -2
- package/build/hooks/layout.cjs +5 -3
- package/build/hooks/layout.cjs.map +2 -2
- package/build/hooks/position.cjs +36 -16
- package/build/hooks/position.cjs.map +2 -2
- package/build/hooks/states.cjs +6 -9
- package/build/hooks/states.cjs.map +2 -2
- package/build/layouts/constrained.cjs +21 -21
- package/build/layouts/constrained.cjs.map +2 -2
- package/build/layouts/flex.cjs +0 -3
- package/build/layouts/flex.cjs.map +2 -2
- package/build/layouts/grid.cjs +51 -9
- package/build/layouts/grid.cjs.map +2 -2
- package/build/private-apis.cjs +4 -1
- package/build/private-apis.cjs.map +3 -3
- package/build/store/actions.cjs.map +2 -2
- package/build/store/private-keys.cjs +3 -0
- package/build/store/private-keys.cjs.map +2 -2
- package/build/store/private-selectors.cjs +72 -4
- package/build/store/private-selectors.cjs.map +2 -2
- package/build/store/selectors.cjs +13 -0
- package/build/store/selectors.cjs.map +2 -2
- package/build-module/autocompleters/block.mjs +10 -2
- package/build-module/autocompleters/block.mjs.map +2 -2
- package/build-module/components/background-image-control/index.mjs +0 -2
- package/build-module/components/background-image-control/index.mjs.map +2 -2
- package/build-module/components/block-inspector/edit-contents.mjs +4 -1
- package/build-module/components/block-inspector/edit-contents.mjs.map +2 -2
- package/build-module/components/block-inspector/index.mjs +2 -3
- package/build-module/components/block-inspector/index.mjs.map +2 -2
- package/build-module/components/block-list/block-invalid-warning.mjs +8 -19
- package/build-module/components/block-list/block-invalid-warning.mjs.map +2 -2
- package/build-module/components/block-styles/use-styles-for-block.mjs +2 -1
- package/build-module/components/block-styles/use-styles-for-block.mjs.map +2 -2
- package/build-module/components/block-title/use-block-display-title.mjs +7 -2
- package/build-module/components/block-title/use-block-display-title.mjs.map +2 -2
- package/build-module/components/block-toolbar/block-toolbar-icon.mjs +10 -14
- package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
- package/build-module/components/block-variation-transforms/index.mjs +0 -1
- package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
- package/build-module/components/child-layout-control/index.mjs +0 -2
- package/build-module/components/child-layout-control/index.mjs.map +2 -2
- package/build-module/components/colors-gradients/control.mjs +5 -5
- package/build-module/components/colors-gradients/control.mjs.map +2 -2
- package/build-module/components/date-format-picker/index.mjs +0 -1
- package/build-module/components/date-format-picker/index.mjs.map +2 -2
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +1 -2
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
- package/build-module/components/dimensions-tool/scale-tool.mjs +0 -1
- package/build-module/components/dimensions-tool/scale-tool.mjs.map +2 -2
- package/build-module/components/dimensions-tool/width-height-tool.mjs +2 -4
- package/build-module/components/dimensions-tool/width-height-tool.mjs.map +2 -2
- package/build-module/components/font-appearance-control/index.mjs +6 -15
- package/build-module/components/font-appearance-control/index.mjs.map +2 -2
- package/build-module/components/font-family/index.mjs +6 -15
- package/build-module/components/font-family/index.mjs.map +2 -2
- package/build-module/components/font-sizes/font-size-picker.mjs +1 -2
- package/build-module/components/font-sizes/font-size-picker.mjs.map +2 -2
- package/build-module/components/global-styles/border-panel.mjs +0 -1
- package/build-module/components/global-styles/border-panel.mjs.map +2 -2
- package/build-module/components/global-styles/dimensions-panel.mjs +0 -3
- package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
- package/build-module/components/global-styles/typography-panel.mjs +4 -10
- package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
- package/build-module/components/height-control/index.mjs +0 -2
- package/build-module/components/height-control/index.mjs.map +2 -2
- package/build-module/components/html-element-control/index.mjs +0 -1
- package/build-module/components/html-element-control/index.mjs.map +2 -2
- package/build-module/components/image-editor/index.mjs +5 -0
- package/build-module/components/image-editor/index.mjs.map +2 -2
- package/build-module/components/image-editor/zoom-dropdown.mjs +0 -1
- package/build-module/components/image-editor/zoom-dropdown.mjs.map +2 -2
- package/build-module/components/image-size-control/index.mjs +1 -3
- package/build-module/components/image-size-control/index.mjs.map +2 -2
- package/build-module/components/inner-content/index.mjs +82 -0
- package/build-module/components/inner-content/index.mjs.map +7 -0
- package/build-module/components/inserter/hooks/use-block-types-state.mjs +10 -2
- package/build-module/components/inserter/hooks/use-block-types-state.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/hooks.mjs +33 -6
- package/build-module/components/inserter/media-tab/hooks.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-list.mjs +3 -1
- package/build-module/components/inserter/media-tab/media-list.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-panel.mjs +227 -30
- package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-preview.mjs +33 -18
- package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-tab.mjs +27 -7
- package/build-module/components/inserter/media-tab/media-tab.mjs.map +2 -2
- package/build-module/components/inserter/mobile-tab-navigation.mjs +6 -1
- package/build-module/components/inserter/mobile-tab-navigation.mjs.map +2 -2
- package/build-module/components/inserter/no-results.mjs +2 -2
- package/build-module/components/inserter/no-results.mjs.map +2 -2
- package/build-module/components/inserter/preview-panel.mjs +2 -1
- package/build-module/components/inserter/preview-panel.mjs.map +2 -2
- package/build-module/components/inserter-list-item/index.mjs +8 -2
- package/build-module/components/inserter-list-item/index.mjs.map +2 -2
- package/build-module/components/letter-spacing-control/index.mjs +0 -14
- package/build-module/components/letter-spacing-control/index.mjs.map +2 -2
- package/build-module/components/line-height-control/index.mjs +7 -12
- package/build-module/components/line-height-control/index.mjs.map +2 -2
- package/build-module/components/list-view/block-select-button.mjs +90 -84
- package/build-module/components/list-view/block-select-button.mjs.map +2 -2
- package/build-module/components/list-view/block.mjs +51 -20
- package/build-module/components/list-view/block.mjs.map +2 -2
- package/build-module/components/list-view/expander.mjs +1 -1
- package/build-module/components/list-view/expander.mjs.map +2 -2
- package/build-module/components/list-view/use-list-view-client-ids.mjs +2 -2
- package/build-module/components/list-view/use-list-view-client-ids.mjs.map +2 -2
- package/build-module/components/observe-typing/index.mjs +4 -3
- package/build-module/components/observe-typing/index.mjs.map +2 -2
- package/build-module/components/preset-input-control/custom-value-controls.mjs +1 -3
- package/build-module/components/preset-input-control/custom-value-controls.mjs.map +2 -2
- package/build-module/components/preset-input-control/index.mjs +1 -3
- package/build-module/components/preset-input-control/index.mjs.map +2 -2
- package/build-module/components/resolution-tool/index.mjs +1 -2
- package/build-module/components/resolution-tool/index.mjs.map +2 -2
- package/build-module/components/text-alignment-control/index.mjs +0 -1
- package/build-module/components/text-alignment-control/index.mjs.map +2 -2
- package/build-module/components/text-decoration-control/index.mjs +0 -1
- package/build-module/components/text-decoration-control/index.mjs.map +2 -2
- package/build-module/components/text-indent-control/index.mjs +0 -8
- package/build-module/components/text-indent-control/index.mjs.map +2 -2
- package/build-module/components/text-transform-control/index.mjs +0 -1
- package/build-module/components/text-transform-control/index.mjs.map +2 -2
- package/build-module/components/use-block-display-information/index.mjs +10 -8
- package/build-module/components/use-block-display-information/index.mjs.map +2 -2
- package/build-module/components/use-on-block-drop/index.mjs +4 -7
- package/build-module/components/use-on-block-drop/index.mjs.map +2 -2
- package/build-module/components/writing-mode-control/index.mjs +0 -1
- package/build-module/components/writing-mode-control/index.mjs.map +2 -2
- package/build-module/hooks/font-size.mjs +1 -2
- package/build-module/hooks/font-size.mjs.map +2 -2
- package/build-module/hooks/layout.mjs +4 -3
- package/build-module/hooks/layout.mjs.map +2 -2
- package/build-module/hooks/position.mjs +38 -18
- package/build-module/hooks/position.mjs.map +2 -2
- package/build-module/hooks/states.mjs +6 -9
- package/build-module/hooks/states.mjs.map +2 -2
- package/build-module/layouts/constrained.mjs +21 -21
- package/build-module/layouts/constrained.mjs.map +2 -2
- package/build-module/layouts/flex.mjs +0 -3
- package/build-module/layouts/flex.mjs.map +2 -2
- package/build-module/layouts/grid.mjs +52 -9
- package/build-module/layouts/grid.mjs.map +2 -2
- package/build-module/private-apis.mjs +5 -1
- package/build-module/private-apis.mjs.map +2 -2
- package/build-module/store/actions.mjs.map +2 -2
- package/build-module/store/private-keys.mjs +2 -0
- package/build-module/store/private-keys.mjs.map +2 -2
- package/build-module/store/private-selectors.mjs +71 -4
- package/build-module/store/private-selectors.mjs.map +2 -2
- package/build-module/store/selectors.mjs +13 -0
- package/build-module/store/selectors.mjs.map +2 -2
- package/build-style/content-rtl.css +11 -5
- package/build-style/content.css +11 -5
- package/build-style/style-rtl.css +113 -3
- package/build-style/style.css +113 -3
- package/package.json +43 -41
- package/src/autocompleters/block.js +10 -3
- package/src/autocompleters/test/block.js +53 -0
- package/src/components/background-image-control/index.js +0 -2
- package/src/components/block-inspector/edit-contents.js +5 -1
- package/src/components/block-inspector/index.js +3 -2
- package/src/components/block-list/block-invalid-warning.js +8 -19
- package/src/components/block-patterns-list/stories/index.story.jsx +1 -1
- package/src/components/block-styles/use-styles-for-block.js +1 -0
- package/src/components/block-title/use-block-display-title.js +7 -2
- package/src/components/block-toolbar/block-toolbar-icon.js +11 -16
- package/src/components/block-toolbar/test/block-toolbar-icon.js +32 -9
- package/src/components/block-variation-transforms/index.js +0 -1
- package/src/components/child-layout-control/index.js +0 -2
- package/src/components/color-palette/test/__snapshots__/control.js.snap +11 -106
- package/src/components/colors-gradients/control.js +4 -4
- package/src/components/colors-gradients/style.scss +2 -2
- package/src/components/date-format-picker/index.js +0 -1
- package/src/components/dimensions-tool/aspect-ratio-tool.js +0 -1
- package/src/components/dimensions-tool/scale-tool.js +0 -1
- package/src/components/dimensions-tool/width-height-tool.js +0 -2
- package/src/components/font-appearance-control/index.js +6 -19
- package/src/components/font-family/README.md +0 -9
- package/src/components/font-family/index.js +6 -19
- package/src/components/font-family/stories/index.story.jsx +0 -1
- package/src/components/font-sizes/font-size-picker.js +0 -1
- package/src/components/global-styles/border-panel.js +0 -1
- package/src/components/global-styles/dimensions-panel.js +0 -3
- package/src/components/global-styles/typography-panel.js +0 -6
- package/src/components/height-control/index.js +0 -2
- package/src/components/html-element-control/index.js +0 -1
- package/src/components/iframe/content.scss +3 -3
- package/src/components/image-editor/index.js +22 -0
- package/src/components/image-editor/zoom-dropdown.js +0 -1
- package/src/components/image-size-control/index.js +0 -2
- package/src/components/inner-content/index.js +119 -0
- package/src/components/inner-content/test/index.js +81 -0
- package/src/components/inserter/hooks/use-block-types-state.js +10 -2
- package/src/components/inserter/media-tab/hooks.js +59 -9
- package/src/components/inserter/media-tab/media-list.js +2 -0
- package/src/components/inserter/media-tab/media-panel.js +256 -17
- package/src/components/inserter/media-tab/media-preview.js +34 -17
- package/src/components/inserter/media-tab/media-tab.js +20 -2
- package/src/components/inserter/media-tab/test/hooks.js +204 -0
- package/src/components/inserter/mobile-tab-navigation.js +6 -1
- package/src/components/inserter/no-results.js +2 -2
- package/src/components/inserter/preview-panel.js +1 -0
- package/src/components/inserter/style.scss +110 -1
- package/src/components/inserter-list-item/index.js +8 -2
- package/src/components/letter-spacing-control/README.md +0 -8
- package/src/components/letter-spacing-control/index.js +5 -23
- package/src/components/letter-spacing-control/stories/index.story.jsx +0 -12
- package/src/components/line-height-control/README.md +0 -8
- package/src/components/line-height-control/index.js +7 -16
- package/src/components/line-height-control/stories/index.story.jsx +0 -1
- package/src/components/line-height-control/test/index.js +1 -7
- package/src/components/link-picker/test/index.js +3 -1
- package/src/components/list-view/block-select-button.js +5 -1
- package/src/components/list-view/block.js +57 -20
- package/src/components/list-view/expander.js +5 -1
- package/src/components/list-view/style.scss +19 -0
- package/src/components/list-view/use-list-view-client-ids.js +2 -2
- package/src/components/observe-typing/index.js +9 -4
- package/src/components/preset-input-control/custom-value-controls.js +0 -2
- package/src/components/preset-input-control/index.js +0 -2
- package/src/components/resolution-tool/index.js +0 -1
- package/src/components/responsive-block-control/test/index.js +1 -5
- package/src/components/text-alignment-control/index.js +0 -1
- package/src/components/text-decoration-control/index.js +0 -1
- package/src/components/text-indent-control/index.js +7 -16
- package/src/components/text-transform-control/index.js +0 -1
- package/src/components/use-block-display-information/index.js +9 -13
- package/src/components/use-block-display-information/test/index.js +47 -9
- package/src/components/use-on-block-drop/index.js +4 -7
- package/src/components/writing-mode-control/index.js +0 -1
- package/src/hooks/block-hooks.scss +15 -0
- package/src/hooks/font-size.js +0 -1
- package/src/hooks/layout.js +5 -4
- package/src/hooks/position.js +44 -23
- package/src/hooks/states.js +6 -12
- package/src/hooks/test/cross-origin-isolation.js +0 -4
- package/src/hooks/test/layout.js +75 -1
- package/src/layouts/constrained.js +51 -28
- package/src/layouts/flex.js +0 -3
- package/src/layouts/grid.js +59 -7
- package/src/layouts/test/constrained.js +91 -0
- package/src/layouts/test/grid.js +71 -0
- package/src/private-apis.js +4 -0
- package/src/store/actions.js +1 -0
- package/src/store/private-keys.js +1 -0
- package/src/store/private-selectors.js +141 -4
- package/src/store/selectors.js +41 -0
- package/src/store/test/private-selectors.js +422 -0
- package/src/store/test/reducer.js +11 -11
- package/src/store/test/selectors.js +133 -0
- package/src/style.scss +1 -0
|
@@ -544,7 +544,6 @@ export default function DimensionsPanel( {
|
|
|
544
544
|
panelId={ panelId }
|
|
545
545
|
>
|
|
546
546
|
<UnitControl
|
|
547
|
-
__next40pxDefaultSize
|
|
548
547
|
label={ __( 'Content width' ) }
|
|
549
548
|
labelPosition="top"
|
|
550
549
|
value={ contentSizeValue || '' }
|
|
@@ -571,7 +570,6 @@ export default function DimensionsPanel( {
|
|
|
571
570
|
panelId={ panelId }
|
|
572
571
|
>
|
|
573
572
|
<UnitControl
|
|
574
|
-
__next40pxDefaultSize
|
|
575
573
|
label={ __( 'Wide width' ) }
|
|
576
574
|
labelPosition="top"
|
|
577
575
|
value={ wideSizeValue || '' }
|
|
@@ -710,7 +708,6 @@ export default function DimensionsPanel( {
|
|
|
710
708
|
/>
|
|
711
709
|
) : (
|
|
712
710
|
<UnitControl
|
|
713
|
-
__next40pxDefaultSize
|
|
714
711
|
label={ __( 'Block spacing' ) }
|
|
715
712
|
min={ 0 }
|
|
716
713
|
onChange={ setGapValue }
|
|
@@ -605,7 +605,6 @@ export default function TypographyPanel( {
|
|
|
605
605
|
fontFamilies={ fontFamilies }
|
|
606
606
|
value={ fontFamily }
|
|
607
607
|
onChange={ setFontFamily }
|
|
608
|
-
size="__unstable-large"
|
|
609
608
|
/>
|
|
610
609
|
</ToolsPanelItem>
|
|
611
610
|
) }
|
|
@@ -625,7 +624,6 @@ export default function TypographyPanel( {
|
|
|
625
624
|
disableCustomFontSizes={ disableCustomFontSizes }
|
|
626
625
|
withReset={ false }
|
|
627
626
|
withSlider
|
|
628
|
-
size="__unstable-large"
|
|
629
627
|
/>
|
|
630
628
|
</ToolsPanelItem>
|
|
631
629
|
) }
|
|
@@ -646,7 +644,6 @@ export default function TypographyPanel( {
|
|
|
646
644
|
hasFontStyles={ hasFontStyles }
|
|
647
645
|
hasFontWeights={ hasFontWeights }
|
|
648
646
|
fontFamilyFaces={ fontFamilyFaces }
|
|
649
|
-
size="__unstable-large"
|
|
650
647
|
/>
|
|
651
648
|
</ToolsPanelItem>
|
|
652
649
|
) }
|
|
@@ -663,7 +660,6 @@ export default function TypographyPanel( {
|
|
|
663
660
|
__unstableInputWidth="auto"
|
|
664
661
|
value={ lineHeight }
|
|
665
662
|
onChange={ setLineHeight }
|
|
666
|
-
size="__unstable-large"
|
|
667
663
|
/>
|
|
668
664
|
</ToolsPanelItem>
|
|
669
665
|
) }
|
|
@@ -679,7 +675,6 @@ export default function TypographyPanel( {
|
|
|
679
675
|
<LetterSpacingControl
|
|
680
676
|
value={ letterSpacing }
|
|
681
677
|
onChange={ setLetterSpacing }
|
|
682
|
-
size="__unstable-large"
|
|
683
678
|
__unstableInputWidth="auto"
|
|
684
679
|
/>
|
|
685
680
|
</ToolsPanelItem>
|
|
@@ -695,7 +690,6 @@ export default function TypographyPanel( {
|
|
|
695
690
|
<TextIndentControl
|
|
696
691
|
value={ textIndent }
|
|
697
692
|
onChange={ setTextIndentValue }
|
|
698
|
-
size="__unstable-large"
|
|
699
693
|
__unstableInputWidth="auto"
|
|
700
694
|
withSlider
|
|
701
695
|
hasBottomMargin={ isGlobalStyles }
|
|
@@ -164,7 +164,6 @@ export default function HeightControl( {
|
|
|
164
164
|
onChange={ onChange }
|
|
165
165
|
onUnitChange={ handleUnitChange }
|
|
166
166
|
min={ 0 }
|
|
167
|
-
size="__unstable-large"
|
|
168
167
|
label={ label }
|
|
169
168
|
hideLabelFromVision
|
|
170
169
|
/>
|
|
@@ -172,7 +171,6 @@ export default function HeightControl( {
|
|
|
172
171
|
<FlexItem isBlock>
|
|
173
172
|
<Spacer marginX={ 2 } marginBottom={ 0 }>
|
|
174
173
|
<RangeControl
|
|
175
|
-
__next40pxDefaultSize
|
|
176
174
|
value={ customRangeValue }
|
|
177
175
|
min={ 0 }
|
|
178
176
|
max={
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
&.zoom-out-animation {
|
|
21
|
-
$scroll-top: var(--wp-block-editor-iframe-zoom-out-scroll-top,
|
|
22
|
-
$scroll-top-next: var(--wp-block-editor-iframe-zoom-out-scroll-top-next,
|
|
21
|
+
$scroll-top: var(--wp-block-editor-iframe-zoom-out-scroll-top, 0px);
|
|
22
|
+
$scroll-top-next: var(--wp-block-editor-iframe-zoom-out-scroll-top-next, 0px);
|
|
23
23
|
$overflow-behavior: var(--wp-block-editor-iframe-zoom-out-overflow-behavior, scroll);
|
|
24
24
|
|
|
25
25
|
position: fixed;
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
|
|
35
35
|
&.is-zoomed-out {
|
|
36
36
|
$scale: var(--wp-block-editor-iframe-zoom-out-scale, 1);
|
|
37
|
-
$frame-size: var(--wp-block-editor-iframe-zoom-out-frame-size,
|
|
37
|
+
$frame-size: var(--wp-block-editor-iframe-zoom-out-frame-size, 0px);
|
|
38
38
|
$inner-height: var(--wp-block-editor-iframe-zoom-out-inner-height);
|
|
39
39
|
$content-height: var(--wp-block-editor-iframe-zoom-out-content-height);
|
|
40
40
|
$scale-container-width: var(--wp-block-editor-iframe-zoom-out-scale-container-width);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { ToolbarGroup, ToolbarItem } from '@wordpress/components';
|
|
5
|
+
import deprecated from '@wordpress/deprecated';
|
|
5
6
|
import { ImageCropperProvider } from '@wordpress/image-cropper';
|
|
6
7
|
|
|
7
8
|
/**
|
|
@@ -15,6 +16,22 @@ import ZoomDropdown from './zoom-dropdown';
|
|
|
15
16
|
import RotationButton from './rotation-button';
|
|
16
17
|
import FormControls from './form-controls';
|
|
17
18
|
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated since 7.1. The Media Editor modal is now the default crop
|
|
21
|
+
* experience for core blocks. This component (exported as
|
|
22
|
+
* `__experimentalImageEditor`) will be removed in a future major release.
|
|
23
|
+
*
|
|
24
|
+
* @param {Object} root0 Component props.
|
|
25
|
+
* @param {number} root0.id Media attachment ID.
|
|
26
|
+
* @param {string} root0.url Media URL.
|
|
27
|
+
* @param {number} root0.width Rendered image width.
|
|
28
|
+
* @param {number} root0.height Rendered image height.
|
|
29
|
+
* @param {number} root0.naturalHeight Natural image height.
|
|
30
|
+
* @param {number} root0.naturalWidth Natural image width.
|
|
31
|
+
* @param {Function} root0.onSaveImage Callback to save image attributes.
|
|
32
|
+
* @param {Function} root0.onFinishEditing Callback when editing finishes.
|
|
33
|
+
* @param {Object} root0.borderProps Border classes and styles.
|
|
34
|
+
*/
|
|
18
35
|
export default function ImageEditor( {
|
|
19
36
|
id,
|
|
20
37
|
url,
|
|
@@ -26,6 +43,11 @@ export default function ImageEditor( {
|
|
|
26
43
|
onFinishEditing,
|
|
27
44
|
borderProps,
|
|
28
45
|
} ) {
|
|
46
|
+
deprecated( 'wp.blockEditor.__experimentalImageEditor', {
|
|
47
|
+
since: '7.1',
|
|
48
|
+
hint: 'The Media Editor modal is now the default crop experience for core blocks. This component will be removed in a future major release.',
|
|
49
|
+
} );
|
|
50
|
+
|
|
29
51
|
return (
|
|
30
52
|
<ImageCropperProvider>
|
|
31
53
|
<ImageEditingProvider
|
|
@@ -96,7 +96,6 @@ export default function ImageSizeControl( {
|
|
|
96
96
|
options={ imageSizeOptions }
|
|
97
97
|
onChange={ onChangeImage }
|
|
98
98
|
help={ imageSizeHelp }
|
|
99
|
-
size="__unstable-large"
|
|
100
99
|
/>
|
|
101
100
|
) }
|
|
102
101
|
{ isResizable && (
|
|
@@ -127,7 +126,6 @@ export default function ImageSizeControl( {
|
|
|
127
126
|
onChange={ handleUpdateDimensions }
|
|
128
127
|
value={ selectedValue }
|
|
129
128
|
isBlock
|
|
130
|
-
__next40pxDefaultSize
|
|
131
129
|
>
|
|
132
130
|
{ IMAGE_SIZE_PRESETS.map( ( scale ) => {
|
|
133
131
|
return (
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import {
|
|
5
|
+
createPortal,
|
|
6
|
+
useLayoutEffect,
|
|
7
|
+
useMemo,
|
|
8
|
+
useRef,
|
|
9
|
+
useState,
|
|
10
|
+
} from '@wordpress/element';
|
|
11
|
+
import { AsyncModeProvider, useSelect } from '@wordpress/data';
|
|
12
|
+
import { safeHTML } from '@wordpress/dom';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Internal dependencies
|
|
16
|
+
*/
|
|
17
|
+
import { store as blockEditorStore } from '../../store';
|
|
18
|
+
import BlockListBlock from '../block-list/block';
|
|
19
|
+
import { LayoutProvider } from '../block-list/layout';
|
|
20
|
+
|
|
21
|
+
const SLOT_TAG_NAME = 'wp-inner-block-slot';
|
|
22
|
+
|
|
23
|
+
// The static markup surrounding the inner blocks is arbitrary HTML the block
|
|
24
|
+
// editor doesn't manage, so it provides no layout context: no alignments are
|
|
25
|
+
// available to the inner blocks.
|
|
26
|
+
const LAYOUT = { type: 'default', alignments: [] };
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Renders the static HTML fragments of a block with the `innerContent`
|
|
30
|
+
* support, mounting each inner block at the position of its `null`
|
|
31
|
+
* placeholder within the static markup.
|
|
32
|
+
*
|
|
33
|
+
* Unlike `InnerBlocks`, the rendered blocks are not a contiguous list: they
|
|
34
|
+
* live at arbitrary positions inside markup the block editor doesn't manage.
|
|
35
|
+
* The static fragments are sanitized with `safeHTML` before being injected
|
|
36
|
+
* into the canvas — the same treatment block save content receives elsewhere
|
|
37
|
+
* in the editor — and the inner blocks are portalled into placeholder
|
|
38
|
+
* elements. Inner blocks are locked: they can be edited in place but not
|
|
39
|
+
* moved, removed, or added to.
|
|
40
|
+
*
|
|
41
|
+
* @param {Object} props Component props.
|
|
42
|
+
* @param {string} props.clientId Client ID of the block whose inner content
|
|
43
|
+
* should be rendered.
|
|
44
|
+
*/
|
|
45
|
+
export default function InnerContent( { clientId } ) {
|
|
46
|
+
const { innerContent, order, selectedClientIds } = useSelect(
|
|
47
|
+
( select ) => {
|
|
48
|
+
const { getBlock, getBlockOrder, getSelectedBlockClientIds } =
|
|
49
|
+
select( blockEditorStore );
|
|
50
|
+
return {
|
|
51
|
+
innerContent: getBlock( clientId )?.innerContent,
|
|
52
|
+
order: getBlockOrder( clientId ),
|
|
53
|
+
selectedClientIds: getSelectedBlockClientIds(),
|
|
54
|
+
};
|
|
55
|
+
},
|
|
56
|
+
[ clientId ]
|
|
57
|
+
);
|
|
58
|
+
const html = useMemo( () => {
|
|
59
|
+
let slotIndex = 0;
|
|
60
|
+
return ( innerContent ?? [] )
|
|
61
|
+
.map( ( item ) =>
|
|
62
|
+
item === null
|
|
63
|
+
? `<${ SLOT_TAG_NAME } data-slot-index="${ slotIndex++ }" style="display: contents"></${ SLOT_TAG_NAME }>`
|
|
64
|
+
: item
|
|
65
|
+
)
|
|
66
|
+
.join( '' );
|
|
67
|
+
}, [ innerContent ] );
|
|
68
|
+
|
|
69
|
+
const containerRef = useRef();
|
|
70
|
+
const [ slots, setSlots ] = useState( [] );
|
|
71
|
+
|
|
72
|
+
useLayoutEffect( () => {
|
|
73
|
+
const container = containerRef.current;
|
|
74
|
+
|
|
75
|
+
// Sanitize before injecting into the canvas: `safeHTML` removes
|
|
76
|
+
// `<script>` elements and inline event handlers, matching how block
|
|
77
|
+
// save content is rendered elsewhere in the editor.
|
|
78
|
+
container.innerHTML = safeHTML( html );
|
|
79
|
+
|
|
80
|
+
setSlots(
|
|
81
|
+
Array.from( container.querySelectorAll( SLOT_TAG_NAME ) ).sort(
|
|
82
|
+
( a, b ) =>
|
|
83
|
+
Number( a.dataset.slotIndex ) -
|
|
84
|
+
Number( b.dataset.slotIndex )
|
|
85
|
+
)
|
|
86
|
+
);
|
|
87
|
+
}, [ html ] );
|
|
88
|
+
|
|
89
|
+
return (
|
|
90
|
+
<LayoutProvider value={ LAYOUT }>
|
|
91
|
+
<div
|
|
92
|
+
ref={ containerRef }
|
|
93
|
+
className="block-editor-inner-content"
|
|
94
|
+
style={ { display: 'contents' } }
|
|
95
|
+
/>
|
|
96
|
+
{ order.map( ( childClientId, index ) =>
|
|
97
|
+
slots[ index ]
|
|
98
|
+
? createPortal(
|
|
99
|
+
// Render the selected block synchronously, as the block list does.
|
|
100
|
+
<AsyncModeProvider
|
|
101
|
+
value={
|
|
102
|
+
! selectedClientIds.includes(
|
|
103
|
+
childClientId
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
>
|
|
107
|
+
<BlockListBlock
|
|
108
|
+
rootClientId={ clientId }
|
|
109
|
+
clientId={ childClientId }
|
|
110
|
+
/>
|
|
111
|
+
</AsyncModeProvider>,
|
|
112
|
+
slots[ index ],
|
|
113
|
+
childClientId
|
|
114
|
+
)
|
|
115
|
+
: null
|
|
116
|
+
) }
|
|
117
|
+
</LayoutProvider>
|
|
118
|
+
);
|
|
119
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { render } from '@testing-library/react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* WordPress dependencies
|
|
8
|
+
*/
|
|
9
|
+
import {
|
|
10
|
+
createBlock,
|
|
11
|
+
registerBlockType,
|
|
12
|
+
unregisterBlockType,
|
|
13
|
+
} from '@wordpress/blocks';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Internal dependencies
|
|
17
|
+
*/
|
|
18
|
+
import InnerContent from '../';
|
|
19
|
+
import { BlockEditorProvider } from '../../provider';
|
|
20
|
+
|
|
21
|
+
const BLOCK_NAME = 'core/html';
|
|
22
|
+
|
|
23
|
+
// These tests inspect the raw injected DOM to verify the static markup is
|
|
24
|
+
// sanitized before being added to the editor canvas, so direct node access is
|
|
25
|
+
// intentional.
|
|
26
|
+
/* eslint-disable testing-library/no-node-access, testing-library/no-container, testing-library/render-result-naming-convention */
|
|
27
|
+
|
|
28
|
+
function renderWithInnerContent( innerContent ) {
|
|
29
|
+
const block = createBlock( BLOCK_NAME, {}, [], innerContent );
|
|
30
|
+
const { container } = render(
|
|
31
|
+
<BlockEditorProvider value={ [ block ] }>
|
|
32
|
+
<InnerContent clientId={ block.clientId } />
|
|
33
|
+
</BlockEditorProvider>
|
|
34
|
+
);
|
|
35
|
+
return container.querySelector( '.block-editor-inner-content' );
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
describe( 'InnerContent', () => {
|
|
39
|
+
beforeAll( () => {
|
|
40
|
+
registerBlockType( BLOCK_NAME, {
|
|
41
|
+
apiVersion: 3,
|
|
42
|
+
title: 'Custom HTML',
|
|
43
|
+
category: 'text',
|
|
44
|
+
save: () => null,
|
|
45
|
+
} );
|
|
46
|
+
} );
|
|
47
|
+
|
|
48
|
+
afterAll( () => {
|
|
49
|
+
unregisterBlockType( BLOCK_NAME );
|
|
50
|
+
} );
|
|
51
|
+
|
|
52
|
+
it( 'renders the static fragments into the canvas', () => {
|
|
53
|
+
const root = renderWithInnerContent( [
|
|
54
|
+
'<div class="banner"><h1>Static heading</h1></div>',
|
|
55
|
+
] );
|
|
56
|
+
|
|
57
|
+
expect( root.querySelector( 'h1' ) ).toHaveTextContent(
|
|
58
|
+
'Static heading'
|
|
59
|
+
);
|
|
60
|
+
} );
|
|
61
|
+
|
|
62
|
+
it( 'strips script elements from the static fragments', () => {
|
|
63
|
+
const root = renderWithInnerContent( [
|
|
64
|
+
'<div><script>window.__innerContentRan = true;</script>Safe</div>',
|
|
65
|
+
] );
|
|
66
|
+
|
|
67
|
+
expect( root.querySelector( 'script' ) ).toBeNull();
|
|
68
|
+
expect( root ).toHaveTextContent( 'Safe' );
|
|
69
|
+
} );
|
|
70
|
+
|
|
71
|
+
it( 'strips inline event handlers from the static fragments', () => {
|
|
72
|
+
const root = renderWithInnerContent( [
|
|
73
|
+
'<button onclick="alert(1)">Click</button>',
|
|
74
|
+
] );
|
|
75
|
+
|
|
76
|
+
expect( root.querySelector( '[onclick]' ) ).toBeNull();
|
|
77
|
+
expect( root.querySelector( 'button' ) ).toHaveTextContent( 'Click' );
|
|
78
|
+
} );
|
|
79
|
+
} );
|
|
80
|
+
|
|
81
|
+
/* eslint-enable testing-library/no-node-access, testing-library/no-container, testing-library/render-result-naming-convention */
|
|
@@ -54,7 +54,14 @@ const useBlockTypesState = ( rootClientId, onInsert, isQuick ) => {
|
|
|
54
54
|
|
|
55
55
|
const onSelectItem = useCallback(
|
|
56
56
|
(
|
|
57
|
-
{
|
|
57
|
+
{
|
|
58
|
+
name,
|
|
59
|
+
initialAttributes,
|
|
60
|
+
innerBlocks,
|
|
61
|
+
innerContent,
|
|
62
|
+
syncStatus,
|
|
63
|
+
content,
|
|
64
|
+
},
|
|
58
65
|
shouldFocusBlock
|
|
59
66
|
) => {
|
|
60
67
|
const destinationClientId = getClosestAllowedInsertionPoint(
|
|
@@ -85,7 +92,8 @@ const useBlockTypesState = ( rootClientId, onInsert, isQuick ) => {
|
|
|
85
92
|
: createBlock(
|
|
86
93
|
name,
|
|
87
94
|
initialAttributes,
|
|
88
|
-
createBlocksFromInnerBlocksTemplate( innerBlocks )
|
|
95
|
+
createBlocksFromInnerBlocksTemplate( innerBlocks ),
|
|
96
|
+
innerContent
|
|
89
97
|
);
|
|
90
98
|
onInsert(
|
|
91
99
|
insertedBlock,
|
|
@@ -17,11 +17,13 @@ import { unlock } from '../../../lock-unlock';
|
|
|
17
17
|
* Fetches media items based on the provided category.
|
|
18
18
|
* Each media category is responsible for providing a `fetch` function.
|
|
19
19
|
*
|
|
20
|
-
* @param {Object} category
|
|
21
|
-
* @param {InserterMediaRequest} query
|
|
20
|
+
* @param {Object} category The media category to fetch results for.
|
|
21
|
+
* @param {InserterMediaRequest} query The query args to use for the request.
|
|
22
|
+
* @param {any} refreshKey Optional value that, when changed, forces
|
|
23
|
+
* a refetch (e.g. after attaching/detaching).
|
|
22
24
|
* @return {InserterMediaItem[]} The media results.
|
|
23
25
|
*/
|
|
24
|
-
export function useMediaResults( category, query = {} ) {
|
|
26
|
+
export function useMediaResults( category, query = {}, refreshKey ) {
|
|
25
27
|
const [ mediaList, setMediaList ] = useState();
|
|
26
28
|
const [ isLoading, setIsLoading ] = useState( false );
|
|
27
29
|
// We need to keep track of the last request made because
|
|
@@ -32,25 +34,70 @@ export function useMediaResults( category, query = {} ) {
|
|
|
32
34
|
// requests, but we don't for now as it involves adding support
|
|
33
35
|
// for this to `core-data` package.
|
|
34
36
|
const lastRequestRef = useRef();
|
|
37
|
+
const lastQueryKeyRef = useRef();
|
|
38
|
+
const lastFetchRef = useRef();
|
|
35
39
|
useEffect( () => {
|
|
36
40
|
( async () => {
|
|
37
41
|
const key = JSON.stringify( {
|
|
38
42
|
category: category.name,
|
|
39
43
|
...query,
|
|
40
44
|
} );
|
|
41
|
-
|
|
45
|
+
// Unique token so identical-query refreshes can't apply stale results.
|
|
46
|
+
const request = {};
|
|
47
|
+
lastRequestRef.current = request;
|
|
42
48
|
setIsLoading( true );
|
|
43
|
-
|
|
49
|
+
// Only clear the previous results when the category source or query
|
|
50
|
+
// changes, not on a manual refresh (a `refreshKey` bump after
|
|
51
|
+
// attach/detach). Keeping them lets the panel dim the existing grid
|
|
52
|
+
// during the refetch instead of blanking it.
|
|
53
|
+
if (
|
|
54
|
+
lastQueryKeyRef.current !== key ||
|
|
55
|
+
lastFetchRef.current !== category.fetch
|
|
56
|
+
) {
|
|
57
|
+
setMediaList( [] );
|
|
58
|
+
}
|
|
59
|
+
lastQueryKeyRef.current = key;
|
|
60
|
+
lastFetchRef.current = category.fetch;
|
|
44
61
|
const _media = await category.fetch?.( query );
|
|
45
|
-
if (
|
|
62
|
+
if ( request === lastRequestRef.current ) {
|
|
46
63
|
setMediaList( _media );
|
|
47
64
|
setIsLoading( false );
|
|
48
65
|
}
|
|
49
66
|
} )();
|
|
50
|
-
}, [
|
|
67
|
+
}, [
|
|
68
|
+
category.name,
|
|
69
|
+
category.fetch,
|
|
70
|
+
...Object.values( query ),
|
|
71
|
+
refreshKey,
|
|
72
|
+
] );
|
|
51
73
|
return { mediaList, isLoading };
|
|
52
74
|
}
|
|
53
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Delays surfacing a loading state until a request has been in flight for
|
|
78
|
+
* `delay` ms, so brief operations (e.g. a quick attach/detach refetch) don't
|
|
79
|
+
* flash a loading indicator at all. Mirrors the DataViews `useDelayedLoading`
|
|
80
|
+
* hook.
|
|
81
|
+
*
|
|
82
|
+
* @param {boolean} isLoading Whether a request is currently in flight.
|
|
83
|
+
* @param {number} delay Milliseconds to wait before showing the loader.
|
|
84
|
+
* @return {boolean} Whether the loading state should be shown yet.
|
|
85
|
+
*/
|
|
86
|
+
export function useDelayedLoading( isLoading, delay = 400 ) {
|
|
87
|
+
const [ showLoading, setShowLoading ] = useState( false );
|
|
88
|
+
useEffect( () => {
|
|
89
|
+
if ( ! isLoading ) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
const timeout = setTimeout( () => setShowLoading( true ), delay );
|
|
93
|
+
return () => {
|
|
94
|
+
clearTimeout( timeout );
|
|
95
|
+
setShowLoading( false );
|
|
96
|
+
};
|
|
97
|
+
}, [ isLoading, delay ] );
|
|
98
|
+
return showLoading;
|
|
99
|
+
}
|
|
100
|
+
|
|
54
101
|
export function useMediaCategories( rootClientId ) {
|
|
55
102
|
const [ categories, setCategories ] = useState( [] );
|
|
56
103
|
|
|
@@ -110,7 +157,9 @@ export function useMediaCategories( rootClientId ) {
|
|
|
110
157
|
);
|
|
111
158
|
// We need to filter out categories that don't have any media items or
|
|
112
159
|
// whose corresponding block type is not allowed to be inserted, based
|
|
113
|
-
// on the category's `mediaType`.
|
|
160
|
+
// on the category's `mediaType`. A category that provides an
|
|
161
|
+
// `emptyMessage` stays in the list even when empty, so it can show
|
|
162
|
+
// that message (e.g. Attachments, to expose its "Attach" action).
|
|
114
163
|
const canInsertMediaType = {
|
|
115
164
|
image: canInsertImage,
|
|
116
165
|
video: canInsertVideo,
|
|
@@ -119,7 +168,8 @@ export function useMediaCategories( rootClientId ) {
|
|
|
119
168
|
inserterMediaCategories.forEach( ( category ) => {
|
|
120
169
|
if (
|
|
121
170
|
canInsertMediaType[ category.mediaType ] &&
|
|
122
|
-
categoriesHaveMedia.get( category.name )
|
|
171
|
+
( categoriesHaveMedia.get( category.name ) ||
|
|
172
|
+
category.emptyMessage )
|
|
123
173
|
) {
|
|
124
174
|
_categories.push( category );
|
|
125
175
|
}
|
|
@@ -13,6 +13,7 @@ function MediaList( {
|
|
|
13
13
|
mediaList,
|
|
14
14
|
category,
|
|
15
15
|
onClick,
|
|
16
|
+
onDetach,
|
|
16
17
|
label = __( 'Media List' ),
|
|
17
18
|
} ) {
|
|
18
19
|
return (
|
|
@@ -27,6 +28,7 @@ function MediaList( {
|
|
|
27
28
|
media={ media }
|
|
28
29
|
category={ category }
|
|
29
30
|
onClick={ onClick }
|
|
31
|
+
onDetach={ onDetach }
|
|
30
32
|
/>
|
|
31
33
|
) ) }
|
|
32
34
|
</Composite>
|