@wordpress/block-editor 11.4.0 → 11.5.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 +6 -0
- package/build/components/block-inspector/index.js +11 -10
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-inspector/useBlockInspectorAnimationSettings.js +46 -0
- package/build/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
- package/build/components/block-lock/modal.js +1 -0
- package/build/components/block-lock/modal.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +2 -2
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-styles/index.js +2 -1
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/child-layout-control/index.js +107 -0
- package/build/components/child-layout-control/index.js.map +1 -0
- package/build/components/date-format-picker/index.js +3 -3
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +594 -0
- package/build/components/global-styles/dimensions-panel.js.map +1 -0
- package/build/components/global-styles/hooks.js +72 -36
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/index.js +20 -6
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +25 -12
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +1 -1
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +2 -0
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/index.native.js +23 -0
- package/build/components/index.native.js.map +1 -1
- package/build/components/inserter/media-tab/hooks.js +10 -11
- package/build/components/inserter/media-tab/hooks.js.map +1 -1
- package/build/components/inserter/media-tab/media-list.js +5 -108
- package/build/components/inserter/media-tab/media-list.js.map +1 -1
- package/build/components/inserter/media-tab/media-preview.js +242 -0
- package/build/components/inserter/media-tab/media-preview.js.map +1 -0
- package/build/components/inspector-controls/block-support-tools-panel.js +1 -1
- package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build/components/inspector-controls/fill.js +38 -9
- package/build/components/inspector-controls/fill.js.map +1 -1
- package/build/components/link-control/settings-drawer.js +1 -1
- package/build/components/link-control/settings-drawer.js.map +1 -1
- package/build/components/link-control/settings.js +1 -0
- package/build/components/link-control/settings.js.map +1 -1
- package/build/components/list-view/block.js +17 -3
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +2 -2
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/expander.js +2 -1
- package/build/components/list-view/expander.js.map +1 -1
- package/build/components/list-view/leaf.js +10 -6
- package/build/components/list-view/leaf.js.map +1 -1
- package/build/components/list-view/use-list-view-scroll-into-view.js +51 -0
- package/build/components/list-view/use-list-view-scroll-into-view.js.map +1 -0
- package/build/components/off-canvas-editor/appender.js +5 -10
- package/build/components/off-canvas-editor/appender.js.map +1 -1
- package/build/components/off-canvas-editor/branch.js +1 -0
- package/build/components/off-canvas-editor/branch.js.map +1 -1
- package/build/components/off-canvas-editor/index.js +7 -3
- package/build/components/off-canvas-editor/index.js.map +1 -1
- package/build/components/off-canvas-editor/leaf-more-menu.js +34 -4
- package/build/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
- package/build/components/off-canvas-editor/link-ui.js +1 -0
- package/build/components/off-canvas-editor/link-ui.js.map +1 -1
- package/build/components/responsive-block-control/index.js +1 -0
- package/build/components/responsive-block-control/index.js.map +1 -1
- package/build/components/rich-text/index.js +9 -43
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/use-delete.js +73 -0
- package/build/components/rich-text/use-delete.js.map +1 -0
- package/build/components/rich-text/use-input-rules.js +14 -6
- package/build/components/rich-text/use-input-rules.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +4 -1
- package/build/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build/hooks/align.js +3 -1
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/dimensions.js +72 -190
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/duotone.js +94 -25
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/gap.js +0 -202
- package/build/hooks/gap.js.map +1 -1
- package/build/hooks/layout.js +14 -5
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/margin.js +7 -163
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +7 -163
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/typography.js +50 -65
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/utils.js +75 -0
- package/build/hooks/utils.js.map +1 -1
- package/build/layouts/flex.js +1 -0
- package/build/layouts/flex.js.map +1 -1
- package/build/store/actions.js +24 -12
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +28 -1
- package/build/store/defaults.js.map +1 -1
- package/build/store/reducer.js +53 -47
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +5 -1
- package/build/store/selectors.js.map +1 -1
- package/build/utils/parse-css-unit-to-px.js +36 -3
- package/build/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-module/components/block-inspector/index.js +9 -9
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js +37 -0
- package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
- package/build-module/components/block-lock/modal.js +1 -0
- package/build-module/components/block-lock/modal.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -2
- 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/child-layout-control/index.js +98 -0
- package/build-module/components/child-layout-control/index.js.map +1 -0
- package/build-module/components/date-format-picker/index.js +4 -4
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +574 -0
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -0
- package/build-module/components/global-styles/hooks.js +71 -33
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/index.js +2 -1
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +26 -11
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +2 -0
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/index.native.js +2 -1
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inserter/media-tab/hooks.js +10 -11
- package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-list.js +6 -105
- package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-preview.js +222 -0
- package/build-module/components/inserter/media-tab/media-preview.js.map +1 -0
- package/build-module/components/inspector-controls/block-support-tools-panel.js +1 -1
- package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build-module/components/inspector-controls/fill.js +39 -9
- package/build-module/components/inspector-controls/fill.js.map +1 -1
- package/build-module/components/link-control/settings-drawer.js +1 -1
- package/build-module/components/link-control/settings-drawer.js.map +1 -1
- package/build-module/components/link-control/settings.js +1 -0
- package/build-module/components/link-control/settings.js.map +1 -1
- package/build-module/components/list-view/block.js +16 -3
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +2 -2
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/expander.js +2 -1
- package/build-module/components/list-view/expander.js.map +1 -1
- package/build-module/components/list-view/leaf.js +8 -4
- package/build-module/components/list-view/leaf.js.map +1 -1
- package/build-module/components/list-view/use-list-view-scroll-into-view.js +42 -0
- package/build-module/components/list-view/use-list-view-scroll-into-view.js.map +1 -0
- package/build-module/components/off-canvas-editor/appender.js +5 -10
- package/build-module/components/off-canvas-editor/appender.js.map +1 -1
- package/build-module/components/off-canvas-editor/branch.js +1 -0
- package/build-module/components/off-canvas-editor/branch.js.map +1 -1
- package/build-module/components/off-canvas-editor/index.js +7 -3
- package/build-module/components/off-canvas-editor/index.js.map +1 -1
- package/build-module/components/off-canvas-editor/leaf-more-menu.js +36 -7
- package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
- package/build-module/components/off-canvas-editor/link-ui.js +1 -0
- package/build-module/components/off-canvas-editor/link-ui.js.map +1 -1
- package/build-module/components/responsive-block-control/index.js +1 -0
- package/build-module/components/responsive-block-control/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +9 -43
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/use-delete.js +62 -0
- package/build-module/components/rich-text/use-delete.js.map +1 -0
- package/build-module/components/rich-text/use-input-rules.js +14 -6
- package/build-module/components/rich-text/use-input-rules.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +4 -1
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build-module/hooks/align.js +3 -1
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/dimensions.js +75 -187
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/duotone.js +86 -24
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/gap.js +0 -183
- package/build-module/hooks/gap.js.map +1 -1
- package/build-module/hooks/layout.js +14 -5
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/margin.js +4 -143
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +4 -143
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/typography.js +52 -65
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/utils.js +70 -0
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/layouts/flex.js +1 -0
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/store/actions.js +24 -12
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +28 -1
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/reducer.js +53 -45
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +5 -1
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/parse-css-unit-to-px.js +36 -3
- package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-style/style-rtl.css +33 -21
- package/build-style/style.css +33 -21
- package/package.json +31 -31
- package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +24 -24
- package/src/components/block-inspector/index.js +11 -14
- package/src/components/block-inspector/useBlockInspectorAnimationSettings.js +53 -0
- package/src/components/block-lock/modal.js +1 -0
- package/src/components/block-lock/style.scss +0 -9
- package/src/components/block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap +20 -20
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +15 -15
- package/src/components/block-settings-menu/block-settings-dropdown.js +4 -1
- package/src/components/block-styles/index.js +5 -1
- package/src/components/child-layout-control/index.js +106 -0
- package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
- package/src/components/date-format-picker/index.js +6 -8
- package/src/components/date-format-picker/style.scss +0 -5
- package/src/components/global-styles/dimensions-panel.js +627 -0
- package/src/components/global-styles/hooks.js +88 -45
- package/src/components/global-styles/index.js +5 -1
- package/src/components/global-styles/typography-panel.js +33 -8
- package/src/components/global-styles/use-global-styles-output.js +4 -3
- package/src/components/global-styles/utils.js +2 -0
- package/src/components/index.native.js +5 -0
- package/src/components/inner-blocks/test/__snapshots__/index.js.snap +1 -1
- package/src/components/inserter/media-tab/hooks.js +9 -8
- package/src/components/inserter/media-tab/media-list.js +3 -122
- package/src/components/inserter/media-tab/media-preview.js +268 -0
- package/src/components/inserter/style.scss +22 -0
- package/src/components/inserter/test/__snapshots__/index.native.js.snap +15 -15
- package/src/components/inspector-controls/block-support-tools-panel.js +0 -1
- package/src/components/inspector-controls/fill.js +32 -8
- package/src/components/link-control/settings-drawer.js +2 -1
- package/src/components/link-control/settings.js +1 -0
- package/src/components/link-control/style.scss +18 -8
- package/src/components/link-control/test/index.js +3 -3
- package/src/components/list-view/block.js +19 -1
- package/src/components/list-view/branch.js +1 -2
- package/src/components/list-view/expander.js +1 -0
- package/src/components/list-view/leaf.js +43 -29
- package/src/components/list-view/use-list-view-scroll-into-view.js +48 -0
- package/src/components/media-replace-flow/style.scss +7 -9
- package/src/components/off-canvas-editor/appender.js +13 -16
- package/src/components/off-canvas-editor/branch.js +1 -0
- package/src/components/off-canvas-editor/index.js +8 -2
- package/src/components/off-canvas-editor/leaf-more-menu.js +57 -15
- package/src/components/off-canvas-editor/link-ui.js +1 -0
- package/src/components/responsive-block-control/index.js +1 -0
- package/src/components/rich-text/index.js +8 -44
- package/src/components/rich-text/use-delete.js +59 -0
- package/src/components/rich-text/use-input-rules.js +13 -5
- package/src/components/spacing-sizes-control/style.scss +1 -1
- package/src/components/url-popover/stories/index.js +1 -0
- package/src/components/writing-flow/use-selection-observer.js +5 -1
- package/src/hooks/align.js +1 -1
- package/src/hooks/dimensions.js +85 -269
- package/src/hooks/duotone.js +100 -30
- package/src/hooks/gap.js +0 -208
- package/src/hooks/layout.js +19 -6
- package/src/hooks/margin.js +1 -164
- package/src/hooks/padding.js +1 -163
- package/src/hooks/test/__snapshots__/align.native.js.snap +24 -24
- package/src/hooks/test/duotone.js +102 -0
- package/src/hooks/typography.js +66 -88
- package/src/hooks/utils.js +90 -0
- package/src/layouts/flex.js +1 -0
- package/src/store/actions.js +12 -4
- package/src/store/defaults.js +14 -1
- package/src/store/reducer.js +68 -43
- package/src/store/selectors.js +8 -1
- package/src/store/test/actions.js +4 -2
- package/src/utils/parse-css-unit-to-px.js +35 -5
- package/src/utils/test/parse-css-unit-to-px.js +12 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/hooks/child-layout.js +0 -213
- package/build/hooks/child-layout.js.map +0 -1
- package/build/hooks/min-height.js +0 -139
- package/build/hooks/min-height.js.map +0 -1
- package/build-module/hooks/child-layout.js +0 -193
- package/build-module/hooks/child-layout.js.map +0 -1
- package/build-module/hooks/min-height.js +0 -116
- package/build-module/hooks/min-height.js.map +0 -1
- package/src/hooks/child-layout.js +0 -195
- package/src/hooks/min-height.js +0 -104
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/media-tab/hooks.js"],"names":["useEffect","useState","useRef","useMemo","useSelect","store","blockEditorStore","useMediaResults","category","query","mediaList","setMediaList","isLoading","setIsLoading","lastRequest","key","JSON","stringify","name","current","_media","fetch","Object","values","useInserterMediaCategories","inserterMediaCategories","allowedMimeTypes","enableOpenverseMediaCategory","select","settings","getSettings","allowedCategories","filter","isExternalResource","some","mimeType","startsWith","mediaType","useMediaCategories","rootClientId","categories","setCategories","canInsertImage","canInsertVideo","canInsertAudio","canInsertBlockType","_categories","categoriesHaveMedia","Map","Promise","all","map","results","per_page","length","canInsertMediaType","image","video","audio","forEach","get","push"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useState, useRef, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\n/**\n * Interface for inserter media requests.\n *\n * @typedef {Object} InserterMediaRequest\n * @property {number} per_page How many items to fetch per page.\n * @property {string} search The search term to use for filtering the results.\n */\n\n/**\n * Interface for inserter media responses. Any media resource should\n * map their response to this interface, in order to create the core\n * WordPress media blocks (image, video, audio).\n *\n * @typedef {Object} InserterMediaItem\n * @property {string} title The title of the media item.\n * @property {string} url The source url of the media item.\n * @property {string} [previewUrl] The preview source url of the media item to display in the media list.\n * @property {number} [id] The WordPress id of the media item.\n * @property {number|string} [sourceId] The id of the media item from external source.\n * @property {string} [alt] The alt text of the media item.\n * @property {string} [caption] The caption of the media item.\n */\n\n/**\n * Fetches media items based on the provided category.\n * Each media category is responsible for providing a `fetch` function.\n *\n * @param {Object} category The media category to fetch results for.\n * @param {InserterMediaRequest} query The query args to use for the request.\n * @return {InserterMediaItem[]} The media results.\n */\nexport function useMediaResults( category, query = {} ) {\n\tconst [ mediaList, setMediaList ] = useState();\n\tconst [ isLoading, setIsLoading ] = useState( false );\n\t// We need to keep track of the last request made because\n\t// multiple request can be fired without knowing the order\n\t// of resolution, and we need to ensure we are showing\n\t// the results of the last request.\n\t// In the future we could use AbortController to cancel previous\n\t// requests, but we don't for now as it involves adding support\n\t// for this to `core-data` package.\n\tconst lastRequest = useRef();\n\tuseEffect( () => {\n\t\t( async () => {\n\t\t\tconst key = JSON.stringify( {\n\t\t\t\tcategory: category.name,\n\t\t\t\t...query,\n\t\t\t} );\n\t\t\tlastRequest.current = key;\n\t\t\tsetIsLoading( true );\n\t\t\tsetMediaList( [] ); // Empty the previous results.\n\t\t\tconst _media = await category.fetch?.( query );\n\t\t\tif ( key === lastRequest.current ) {\n\t\t\t\tsetMediaList( _media );\n\t\t\t\tsetIsLoading( false );\n\t\t\t}\n\t\t} )();\n\t}, [ category.name, ...Object.values( query ) ] );\n\treturn { mediaList, isLoading };\n}\n\nfunction useInserterMediaCategories() {\n\tconst {\n\t\tinserterMediaCategories,\n\t\tallowedMimeTypes,\n\t\tenableOpenverseMediaCategory,\n\t} = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tinserterMediaCategories: settings.inserterMediaCategories,\n\t\t\tallowedMimeTypes: settings.allowedMimeTypes,\n\t\t\tenableOpenverseMediaCategory: settings.enableOpenverseMediaCategory,\n\t\t};\n\t}, [] );\n\t// The allowed `mime_types` can be altered by `upload_mimes` filter and restrict\n\t// some of them. In this case we shouldn't add the category to the available media\n\t// categories list in the inserter.\n\tconst allowedCategories = useMemo( () => {\n\t\tif ( ! inserterMediaCategories || ! allowedMimeTypes ) {\n\t\t\treturn;\n\t\t}\n\t\treturn inserterMediaCategories.filter( ( category ) => {\n\t\t\t// Check if Openverse category is enabled.\n\t\t\tif (\n\t\t\t\t! enableOpenverseMediaCategory &&\n\t\t\t\tcategory.name === 'openverse'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// When a category has set `isExternalResource` to `true`, we\n\t\t\t// don't need to check for allowed mime types, as they are used\n\t\t\t// for restricting uploads for this media type and not for\n\t\t\t// inserting media from external sources.\n\t\t\tif ( category.isExternalResource ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn Object.values( allowedMimeTypes ).some( ( mimeType ) =>\n\t\t\t\tmimeType.startsWith( `${ category.mediaType }/` )\n\t\t\t);\n\t\t} );\n\t}, [\n\t\tinserterMediaCategories,\n\t\tallowedMimeTypes,\n\t\tenableOpenverseMediaCategory,\n\t] );\n\treturn allowedCategories;\n}\n\nexport function useMediaCategories( rootClientId ) {\n\tconst [ categories, setCategories ] = useState( [] );\n\tconst { canInsertImage, canInsertVideo, canInsertAudio } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canInsertBlockType } = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tcanInsertImage: canInsertBlockType(\n\t\t\t\t\t'core/image',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanInsertVideo: canInsertBlockType(\n\t\t\t\t\t'core/video',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanInsertAudio: canInsertBlockType(\n\t\t\t\t\t'core/audio',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\tconst inserterMediaCategories = useInserterMediaCategories();\n\tuseEffect( () => {\n\t\t( async () => {\n\t\t\tconst _categories = [];\n\t\t\t// If `inserterMediaCategories` is not defined in\n\t\t\t// block editor settings, do not show any media categories.\n\t\t\tif ( ! inserterMediaCategories ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Loop through categories to check if they have at least one media item.\n\t\t\tconst categoriesHaveMedia = new Map(\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tinserterMediaCategories.map( async ( category ) => {\n\t\t\t\t\t\t// Some sources are external and we don't need to make a request.\n\t\t\t\t\t\tif ( category.isExternalResource ) {\n\t\t\t\t\t\t\treturn [ category.name, true ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst results = await category.fetch( { per_page: 1 } );\n\t\t\t\t\t\treturn [ category.name, !! results.length ];\n\t\t\t\t\t} )\n\t\t\t\t)\n\t\t\t);\n\t\t\t// We need to filter out categories that don't have any media items or\n\t\t\t// whose corresponding block type is not allowed to be inserted, based\n\t\t\t// on the category's `mediaType`.\n\t\t\tconst canInsertMediaType = {\n\t\t\t\timage: canInsertImage,\n\t\t\t\tvideo: canInsertVideo,\n\t\t\t\taudio: canInsertAudio,\n\t\t\t};\n\t\t\tinserterMediaCategories.forEach( ( category ) => {\n\t\t\t\tif (\n\t\t\t\t\tcanInsertMediaType[ category.mediaType ] &&\n\t\t\t\t\tcategoriesHaveMedia.get( category.name )\n\t\t\t\t) {\n\t\t\t\t\t_categories.push( category );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tif ( !! _categories.length ) {\n\t\t\t\tsetCategories( _categories );\n\t\t\t}\n\t\t} )();\n\t}, [\n\t\tcanInsertImage,\n\t\tcanInsertVideo,\n\t\tcanInsertAudio,\n\t\tinserterMediaCategories,\n\t] );\n\treturn categories;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/media-tab/hooks.js"],"names":["useEffect","useState","useRef","useMemo","useSelect","store","blockEditorStore","useMediaResults","category","query","mediaList","setMediaList","isLoading","setIsLoading","lastRequest","key","JSON","stringify","name","current","_media","fetch","Object","values","useInserterMediaCategories","inserterMediaCategories","allowedMimeTypes","enableOpenverseMediaCategory","select","settings","getSettings","allowedCategories","filter","some","mimeType","startsWith","mediaType","useMediaCategories","rootClientId","categories","setCategories","canInsertImage","canInsertVideo","canInsertAudio","canInsertBlockType","_categories","categoriesHaveMedia","Map","Promise","all","map","isExternalResource","results","per_page","e","length","canInsertMediaType","image","video","audio","forEach","get","push"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useState, useRef, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\n/**\n * Interface for inserter media requests.\n *\n * @typedef {Object} InserterMediaRequest\n * @property {number} per_page How many items to fetch per page.\n * @property {string} search The search term to use for filtering the results.\n */\n\n/**\n * Interface for inserter media responses. Any media resource should\n * map their response to this interface, in order to create the core\n * WordPress media blocks (image, video, audio).\n *\n * @typedef {Object} InserterMediaItem\n * @property {string} title The title of the media item.\n * @property {string} url The source url of the media item.\n * @property {string} [previewUrl] The preview source url of the media item to display in the media list.\n * @property {number} [id] The WordPress id of the media item.\n * @property {number|string} [sourceId] The id of the media item from external source.\n * @property {string} [alt] The alt text of the media item.\n * @property {string} [caption] The caption of the media item.\n */\n\n/**\n * Fetches media items based on the provided category.\n * Each media category is responsible for providing a `fetch` function.\n *\n * @param {Object} category The media category to fetch results for.\n * @param {InserterMediaRequest} query The query args to use for the request.\n * @return {InserterMediaItem[]} The media results.\n */\nexport function useMediaResults( category, query = {} ) {\n\tconst [ mediaList, setMediaList ] = useState();\n\tconst [ isLoading, setIsLoading ] = useState( false );\n\t// We need to keep track of the last request made because\n\t// multiple request can be fired without knowing the order\n\t// of resolution, and we need to ensure we are showing\n\t// the results of the last request.\n\t// In the future we could use AbortController to cancel previous\n\t// requests, but we don't for now as it involves adding support\n\t// for this to `core-data` package.\n\tconst lastRequest = useRef();\n\tuseEffect( () => {\n\t\t( async () => {\n\t\t\tconst key = JSON.stringify( {\n\t\t\t\tcategory: category.name,\n\t\t\t\t...query,\n\t\t\t} );\n\t\t\tlastRequest.current = key;\n\t\t\tsetIsLoading( true );\n\t\t\tsetMediaList( [] ); // Empty the previous results.\n\t\t\tconst _media = await category.fetch?.( query );\n\t\t\tif ( key === lastRequest.current ) {\n\t\t\t\tsetMediaList( _media );\n\t\t\t\tsetIsLoading( false );\n\t\t\t}\n\t\t} )();\n\t}, [ category.name, ...Object.values( query ) ] );\n\treturn { mediaList, isLoading };\n}\n\nfunction useInserterMediaCategories() {\n\tconst {\n\t\tinserterMediaCategories,\n\t\tallowedMimeTypes,\n\t\tenableOpenverseMediaCategory,\n\t} = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tinserterMediaCategories: settings.inserterMediaCategories,\n\t\t\tallowedMimeTypes: settings.allowedMimeTypes,\n\t\t\tenableOpenverseMediaCategory: settings.enableOpenverseMediaCategory,\n\t\t};\n\t}, [] );\n\t// The allowed `mime_types` can be altered by `upload_mimes` filter and restrict\n\t// some of them. In this case we shouldn't add the category to the available media\n\t// categories list in the inserter.\n\tconst allowedCategories = useMemo( () => {\n\t\tif ( ! inserterMediaCategories || ! allowedMimeTypes ) {\n\t\t\treturn;\n\t\t}\n\t\treturn inserterMediaCategories.filter( ( category ) => {\n\t\t\t// Check if Openverse category is enabled.\n\t\t\tif (\n\t\t\t\t! enableOpenverseMediaCategory &&\n\t\t\t\tcategory.name === 'openverse'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn Object.values( allowedMimeTypes ).some( ( mimeType ) =>\n\t\t\t\tmimeType.startsWith( `${ category.mediaType }/` )\n\t\t\t);\n\t\t} );\n\t}, [\n\t\tinserterMediaCategories,\n\t\tallowedMimeTypes,\n\t\tenableOpenverseMediaCategory,\n\t] );\n\treturn allowedCategories;\n}\n\nexport function useMediaCategories( rootClientId ) {\n\tconst [ categories, setCategories ] = useState( [] );\n\tconst { canInsertImage, canInsertVideo, canInsertAudio } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canInsertBlockType } = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tcanInsertImage: canInsertBlockType(\n\t\t\t\t\t'core/image',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanInsertVideo: canInsertBlockType(\n\t\t\t\t\t'core/video',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanInsertAudio: canInsertBlockType(\n\t\t\t\t\t'core/audio',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\tconst inserterMediaCategories = useInserterMediaCategories();\n\tuseEffect( () => {\n\t\t( async () => {\n\t\t\tconst _categories = [];\n\t\t\t// If `inserterMediaCategories` is not defined in\n\t\t\t// block editor settings, do not show any media categories.\n\t\t\tif ( ! inserterMediaCategories ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Loop through categories to check if they have at least one media item.\n\t\t\tconst categoriesHaveMedia = new Map(\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tinserterMediaCategories.map( async ( category ) => {\n\t\t\t\t\t\t// Some sources are external and we don't need to make a request.\n\t\t\t\t\t\tif ( category.isExternalResource ) {\n\t\t\t\t\t\t\treturn [ category.name, true ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet results = [];\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresults = await category.fetch( {\n\t\t\t\t\t\t\t\tper_page: 1,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t// If the request fails, we shallow the error and just don't show\n\t\t\t\t\t\t\t// the category, in order to not break the media tab.\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn [ category.name, !! results.length ];\n\t\t\t\t\t} )\n\t\t\t\t)\n\t\t\t);\n\t\t\t// We need to filter out categories that don't have any media items or\n\t\t\t// whose corresponding block type is not allowed to be inserted, based\n\t\t\t// on the category's `mediaType`.\n\t\t\tconst canInsertMediaType = {\n\t\t\t\timage: canInsertImage,\n\t\t\t\tvideo: canInsertVideo,\n\t\t\t\taudio: canInsertAudio,\n\t\t\t};\n\t\t\tinserterMediaCategories.forEach( ( category ) => {\n\t\t\t\tif (\n\t\t\t\t\tcanInsertMediaType[ category.mediaType ] &&\n\t\t\t\t\tcategoriesHaveMedia.get( category.name )\n\t\t\t\t) {\n\t\t\t\t\t_categories.push( category );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tif ( !! _categories.length ) {\n\t\t\t\tsetCategories( _categories );\n\t\t\t}\n\t\t} )();\n\t}, [\n\t\tcanInsertImage,\n\t\tcanInsertVideo,\n\t\tcanInsertAudio,\n\t\tinserterMediaCategories,\n\t] );\n\treturn categories;\n}\n"]}
|
|
@@ -1,124 +1,25 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import { createElement } from "@wordpress/element";
|
|
3
3
|
|
|
4
|
-
/**
|
|
5
|
-
* External dependencies
|
|
6
|
-
*/
|
|
7
|
-
import classnames from 'classnames';
|
|
8
4
|
/**
|
|
9
5
|
* WordPress dependencies
|
|
10
6
|
*/
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
import { __, sprintf } from '@wordpress/i18n';
|
|
14
|
-
import { useMemo, useCallback, useState } from '@wordpress/element';
|
|
15
|
-
import { cloneBlock } from '@wordpress/blocks';
|
|
16
|
-
import { moreVertical, external } from '@wordpress/icons';
|
|
7
|
+
import { __unstableComposite as Composite, __unstableUseCompositeState as useCompositeState } from '@wordpress/components';
|
|
8
|
+
import { __ } from '@wordpress/i18n';
|
|
17
9
|
/**
|
|
18
10
|
* Internal dependencies
|
|
19
11
|
*/
|
|
20
12
|
|
|
21
|
-
import
|
|
22
|
-
import { getBlockAndPreviewFromMedia } from './utils';
|
|
23
|
-
const MAXIMUM_TITLE_LENGTH = 25;
|
|
24
|
-
const MEDIA_OPTIONS_POPOVER_PROPS = {
|
|
25
|
-
position: 'bottom left',
|
|
26
|
-
className: 'block-editor-inserter__media-list__item-preview-options__popover'
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
function MediaPreviewOptions(_ref) {
|
|
30
|
-
let {
|
|
31
|
-
category,
|
|
32
|
-
media
|
|
33
|
-
} = _ref;
|
|
34
|
-
|
|
35
|
-
if (!category.getReportUrl) {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const reportUrl = category.getReportUrl(media);
|
|
40
|
-
return createElement(DropdownMenu, {
|
|
41
|
-
className: "block-editor-inserter__media-list__item-preview-options",
|
|
42
|
-
label: __('Options'),
|
|
43
|
-
popoverProps: MEDIA_OPTIONS_POPOVER_PROPS,
|
|
44
|
-
icon: moreVertical
|
|
45
|
-
}, () => createElement(MenuGroup, null, createElement(MenuItem, {
|
|
46
|
-
onClick: () => window.open(reportUrl, '_blank').focus(),
|
|
47
|
-
icon: external
|
|
48
|
-
}, sprintf(
|
|
49
|
-
/* translators: %s: The media type to report e.g: "image", "video", "audio" */
|
|
50
|
-
__('Report %s'), category.mediaType))));
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
function MediaPreview(_ref2) {
|
|
54
|
-
var _media$title;
|
|
13
|
+
import { MediaPreview } from './media-preview';
|
|
55
14
|
|
|
56
|
-
|
|
57
|
-
media,
|
|
58
|
-
onClick,
|
|
59
|
-
composite,
|
|
60
|
-
category
|
|
61
|
-
} = _ref2;
|
|
62
|
-
const [isHovered, setIsHovered] = useState(false);
|
|
63
|
-
const [block, preview] = useMemo(() => getBlockAndPreviewFromMedia(media, category.mediaType), [media, category.mediaType]);
|
|
64
|
-
const title = ((_media$title = media.title) === null || _media$title === void 0 ? void 0 : _media$title.rendered) || media.title;
|
|
65
|
-
let truncatedTitle;
|
|
66
|
-
|
|
67
|
-
if (title.length > MAXIMUM_TITLE_LENGTH) {
|
|
68
|
-
const omission = '...';
|
|
69
|
-
truncatedTitle = title.slice(0, MAXIMUM_TITLE_LENGTH - omission.length) + omission;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const onMouseEnter = useCallback(() => setIsHovered(true), []);
|
|
73
|
-
const onMouseLeave = useCallback(() => setIsHovered(false), []);
|
|
74
|
-
return createElement(InserterDraggableBlocks, {
|
|
75
|
-
isEnabled: true,
|
|
76
|
-
blocks: [block]
|
|
77
|
-
}, _ref3 => {
|
|
78
|
-
let {
|
|
79
|
-
draggable,
|
|
80
|
-
onDragStart,
|
|
81
|
-
onDragEnd
|
|
82
|
-
} = _ref3;
|
|
83
|
-
return createElement("div", {
|
|
84
|
-
className: classnames('block-editor-inserter__media-list__list-item', {
|
|
85
|
-
'is-hovered': isHovered
|
|
86
|
-
}),
|
|
87
|
-
draggable: draggable,
|
|
88
|
-
onDragStart: onDragStart,
|
|
89
|
-
onDragEnd: onDragEnd
|
|
90
|
-
}, createElement(Tooltip, {
|
|
91
|
-
text: truncatedTitle || title
|
|
92
|
-
}, createElement("div", {
|
|
93
|
-
onMouseEnter: onMouseEnter,
|
|
94
|
-
onMouseLeave: onMouseLeave
|
|
95
|
-
}, createElement(CompositeItem, _extends({
|
|
96
|
-
role: "option",
|
|
97
|
-
as: "div"
|
|
98
|
-
}, composite, {
|
|
99
|
-
className: "block-editor-inserter__media-list__item",
|
|
100
|
-
onClick: () => onClick(block),
|
|
101
|
-
"aria-label": title
|
|
102
|
-
}), createElement("div", {
|
|
103
|
-
className: "block-editor-inserter__media-list__item-preview"
|
|
104
|
-
}, preview)), createElement(MediaPreviewOptions, {
|
|
105
|
-
category: category,
|
|
106
|
-
media: media
|
|
107
|
-
}))));
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
function MediaList(_ref4) {
|
|
15
|
+
function MediaList(_ref) {
|
|
112
16
|
let {
|
|
113
17
|
mediaList,
|
|
114
18
|
category,
|
|
115
19
|
onClick,
|
|
116
20
|
label = __('Media List')
|
|
117
|
-
} =
|
|
21
|
+
} = _ref;
|
|
118
22
|
const composite = useCompositeState();
|
|
119
|
-
const onPreviewClick = useCallback(block => {
|
|
120
|
-
onClick(cloneBlock(block));
|
|
121
|
-
}, [onClick]);
|
|
122
23
|
return createElement(Composite, _extends({}, composite, {
|
|
123
24
|
role: "listbox",
|
|
124
25
|
className: "block-editor-inserter__media-list",
|
|
@@ -127,7 +28,7 @@ function MediaList(_ref4) {
|
|
|
127
28
|
key: media.id || media.sourceId || index,
|
|
128
29
|
media: media,
|
|
129
30
|
category: category,
|
|
130
|
-
onClick:
|
|
31
|
+
onClick: onClick,
|
|
131
32
|
composite: composite
|
|
132
33
|
})));
|
|
133
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/media-tab/media-list.js"],"names":["
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/media-tab/media-list.js"],"names":["__unstableComposite","Composite","__unstableUseCompositeState","useCompositeState","__","MediaPreview","MediaList","mediaList","category","onClick","label","composite","map","media","index","id","sourceId"],"mappings":";;;AAAA;AACA;AACA;AACA,SACCA,mBAAmB,IAAIC,SADxB,EAECC,2BAA2B,IAAIC,iBAFhC,QAGO,uBAHP;AAIA,SAASC,EAAT,QAAmB,iBAAnB;AAEA;AACA;AACA;;AACA,SAASC,YAAT,QAA6B,iBAA7B;;AAEA,SAASC,SAAT,OAKI;AAAA,MALgB;AACnBC,IAAAA,SADmB;AAEnBC,IAAAA,QAFmB;AAGnBC,IAAAA,OAHmB;AAInBC,IAAAA,KAAK,GAAGN,EAAE,CAAE,YAAF;AAJS,GAKhB;AACH,QAAMO,SAAS,GAAGR,iBAAiB,EAAnC;AACA,SACC,cAAC,SAAD,eACMQ,SADN;AAEC,IAAA,IAAI,EAAC,SAFN;AAGC,IAAA,SAAS,EAAC,mCAHX;AAIC,kBAAaD;AAJd,MAMGH,SAAS,CAACK,GAAV,CAAe,CAAEC,KAAF,EAASC,KAAT,KAChB,cAAC,YAAD;AACC,IAAA,GAAG,EAAGD,KAAK,CAACE,EAAN,IAAYF,KAAK,CAACG,QAAlB,IAA8BF,KADrC;AAEC,IAAA,KAAK,EAAGD,KAFT;AAGC,IAAA,QAAQ,EAAGL,QAHZ;AAIC,IAAA,OAAO,EAAGC,OAJX;AAKC,IAAA,SAAS,EAAGE;AALb,IADC,CANH,CADD;AAkBA;;AAED,eAAeL,SAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__unstableComposite as Composite,\n\t__unstableUseCompositeState as useCompositeState,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { MediaPreview } from './media-preview';\n\nfunction MediaList( {\n\tmediaList,\n\tcategory,\n\tonClick,\n\tlabel = __( 'Media List' ),\n} ) {\n\tconst composite = useCompositeState();\n\treturn (\n\t\t<Composite\n\t\t\t{ ...composite }\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"block-editor-inserter__media-list\"\n\t\t\taria-label={ label }\n\t\t>\n\t\t\t{ mediaList.map( ( media, index ) => (\n\t\t\t\t<MediaPreview\n\t\t\t\t\tkey={ media.id || media.sourceId || index }\n\t\t\t\t\tmedia={ media }\n\t\t\t\t\tcategory={ category }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\tcomposite={ composite }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nexport default MediaList;\n"]}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import { createElement, Fragment } from "@wordpress/element";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* External dependencies
|
|
6
|
+
*/
|
|
7
|
+
import classnames from 'classnames';
|
|
8
|
+
/**
|
|
9
|
+
* WordPress dependencies
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { __unstableCompositeItem as CompositeItem, Tooltip, DropdownMenu, MenuGroup, MenuItem, Spinner, Modal, Flex, FlexItem, Button, __experimentalVStack as VStack } from '@wordpress/components';
|
|
13
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
14
|
+
import { useMemo, useCallback, useState } from '@wordpress/element';
|
|
15
|
+
import { cloneBlock } from '@wordpress/blocks';
|
|
16
|
+
import { moreVertical, external } from '@wordpress/icons';
|
|
17
|
+
import { useSelect, useDispatch } from '@wordpress/data';
|
|
18
|
+
import { store as noticesStore } from '@wordpress/notices';
|
|
19
|
+
import { isBlobURL } from '@wordpress/blob';
|
|
20
|
+
/**
|
|
21
|
+
* Internal dependencies
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import InserterDraggableBlocks from '../../inserter-draggable-blocks';
|
|
25
|
+
import { getBlockAndPreviewFromMedia } from './utils';
|
|
26
|
+
import { store as blockEditorStore } from '../../../store';
|
|
27
|
+
const ALLOWED_MEDIA_TYPES = ['image'];
|
|
28
|
+
const MAXIMUM_TITLE_LENGTH = 25;
|
|
29
|
+
const MEDIA_OPTIONS_POPOVER_PROPS = {
|
|
30
|
+
position: 'bottom left',
|
|
31
|
+
className: 'block-editor-inserter__media-list__item-preview-options__popover'
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
function MediaPreviewOptions(_ref) {
|
|
35
|
+
let {
|
|
36
|
+
category,
|
|
37
|
+
media
|
|
38
|
+
} = _ref;
|
|
39
|
+
|
|
40
|
+
if (!category.getReportUrl) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const reportUrl = category.getReportUrl(media);
|
|
45
|
+
return createElement(DropdownMenu, {
|
|
46
|
+
className: "block-editor-inserter__media-list__item-preview-options",
|
|
47
|
+
label: __('Options'),
|
|
48
|
+
popoverProps: MEDIA_OPTIONS_POPOVER_PROPS,
|
|
49
|
+
icon: moreVertical
|
|
50
|
+
}, () => createElement(MenuGroup, null, createElement(MenuItem, {
|
|
51
|
+
onClick: () => window.open(reportUrl, '_blank').focus(),
|
|
52
|
+
icon: external
|
|
53
|
+
}, sprintf(
|
|
54
|
+
/* translators: %s: The media type to report e.g: "image", "video", "audio" */
|
|
55
|
+
__('Report %s'), category.mediaType))));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function InsertExternalImageModal(_ref2) {
|
|
59
|
+
let {
|
|
60
|
+
onClose,
|
|
61
|
+
onSubmit
|
|
62
|
+
} = _ref2;
|
|
63
|
+
return createElement(Modal, {
|
|
64
|
+
title: __('Insert external image'),
|
|
65
|
+
onRequestClose: onClose,
|
|
66
|
+
className: "block-editor-inserter-media-tab-media-preview-inserter-external-image-modal"
|
|
67
|
+
}, createElement(VStack, {
|
|
68
|
+
spacing: 3
|
|
69
|
+
}, createElement("p", null, __('This image cannot be uploaded to your Media Library, but it can still be inserted as an external image.')), createElement("p", null, __('External images can be removed by the external provider without warning and could even have legal compliance issues related to privacy legislation.'))), createElement(Flex, {
|
|
70
|
+
className: "block-editor-block-lock-modal__actions",
|
|
71
|
+
justify: "flex-end",
|
|
72
|
+
expanded: false
|
|
73
|
+
}, createElement(FlexItem, null, createElement(Button, {
|
|
74
|
+
variant: "tertiary",
|
|
75
|
+
onClick: onClose
|
|
76
|
+
}, __('Cancel'))), createElement(FlexItem, null, createElement(Button, {
|
|
77
|
+
variant: "primary",
|
|
78
|
+
onClick: onSubmit
|
|
79
|
+
}, __('Insert')))));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export function MediaPreview(_ref3) {
|
|
83
|
+
var _media$title;
|
|
84
|
+
|
|
85
|
+
let {
|
|
86
|
+
media,
|
|
87
|
+
onClick,
|
|
88
|
+
composite,
|
|
89
|
+
category
|
|
90
|
+
} = _ref3;
|
|
91
|
+
const [showExternalUploadModal, setShowExternalUploadModal] = useState(false);
|
|
92
|
+
const [isHovered, setIsHovered] = useState(false);
|
|
93
|
+
const [isInserting, setIsInserting] = useState(false);
|
|
94
|
+
const [block, preview] = useMemo(() => getBlockAndPreviewFromMedia(media, category.mediaType), [media, category.mediaType]);
|
|
95
|
+
const {
|
|
96
|
+
createErrorNotice,
|
|
97
|
+
createSuccessNotice
|
|
98
|
+
} = useDispatch(noticesStore);
|
|
99
|
+
const mediaUpload = useSelect(select => select(blockEditorStore).getSettings().mediaUpload, []);
|
|
100
|
+
const onMediaInsert = useCallback(previewBlock => {
|
|
101
|
+
// Prevent multiple uploads when we're in the process of inserting.
|
|
102
|
+
if (isInserting) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const clonedBlock = cloneBlock(previewBlock);
|
|
107
|
+
const {
|
|
108
|
+
id,
|
|
109
|
+
url,
|
|
110
|
+
caption
|
|
111
|
+
} = clonedBlock.attributes; // Media item already exists in library, so just insert it.
|
|
112
|
+
|
|
113
|
+
if (!!id) {
|
|
114
|
+
onClick(clonedBlock);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
setIsInserting(true); // Media item does not exist in library, so try to upload it.
|
|
119
|
+
// Fist fetch the image data. This may fail if the image host
|
|
120
|
+
// doesn't allow CORS with the domain.
|
|
121
|
+
// If this happens, we insert the image block using the external
|
|
122
|
+
// URL and let the user know about the possible implications.
|
|
123
|
+
|
|
124
|
+
window.fetch(url).then(response => response.blob()).then(blob => {
|
|
125
|
+
mediaUpload({
|
|
126
|
+
filesList: [blob],
|
|
127
|
+
additionalData: {
|
|
128
|
+
caption
|
|
129
|
+
},
|
|
130
|
+
|
|
131
|
+
onFileChange(_ref4) {
|
|
132
|
+
let [img] = _ref4;
|
|
133
|
+
|
|
134
|
+
if (isBlobURL(img.url)) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
onClick({ ...clonedBlock,
|
|
139
|
+
attributes: { ...clonedBlock.attributes,
|
|
140
|
+
id: img.id,
|
|
141
|
+
url: img.url
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
createSuccessNotice(__('Image uploaded and inserted.'), {
|
|
145
|
+
type: 'snackbar'
|
|
146
|
+
});
|
|
147
|
+
setIsInserting(false);
|
|
148
|
+
},
|
|
149
|
+
|
|
150
|
+
allowedTypes: ALLOWED_MEDIA_TYPES,
|
|
151
|
+
|
|
152
|
+
onError(message) {
|
|
153
|
+
createErrorNotice(message, {
|
|
154
|
+
type: 'snackbar'
|
|
155
|
+
});
|
|
156
|
+
setIsInserting(false);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
});
|
|
160
|
+
}).catch(() => {
|
|
161
|
+
setShowExternalUploadModal(true);
|
|
162
|
+
setIsInserting(false);
|
|
163
|
+
});
|
|
164
|
+
}, [isInserting, onClick, mediaUpload, createErrorNotice, createSuccessNotice]);
|
|
165
|
+
const title = ((_media$title = media.title) === null || _media$title === void 0 ? void 0 : _media$title.rendered) || media.title;
|
|
166
|
+
let truncatedTitle;
|
|
167
|
+
|
|
168
|
+
if (title.length > MAXIMUM_TITLE_LENGTH) {
|
|
169
|
+
const omission = '...';
|
|
170
|
+
truncatedTitle = title.slice(0, MAXIMUM_TITLE_LENGTH - omission.length) + omission;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const onMouseEnter = useCallback(() => setIsHovered(true), []);
|
|
174
|
+
const onMouseLeave = useCallback(() => setIsHovered(false), []);
|
|
175
|
+
return createElement(Fragment, null, createElement(InserterDraggableBlocks, {
|
|
176
|
+
isEnabled: true,
|
|
177
|
+
blocks: [block]
|
|
178
|
+
}, _ref5 => {
|
|
179
|
+
let {
|
|
180
|
+
draggable,
|
|
181
|
+
onDragStart,
|
|
182
|
+
onDragEnd
|
|
183
|
+
} = _ref5;
|
|
184
|
+
return createElement("div", {
|
|
185
|
+
className: classnames('block-editor-inserter__media-list__list-item', {
|
|
186
|
+
'is-hovered': isHovered
|
|
187
|
+
}),
|
|
188
|
+
draggable: draggable,
|
|
189
|
+
onDragStart: onDragStart,
|
|
190
|
+
onDragEnd: onDragEnd
|
|
191
|
+
}, createElement(Tooltip, {
|
|
192
|
+
text: truncatedTitle || title
|
|
193
|
+
}, createElement("div", {
|
|
194
|
+
onMouseEnter: onMouseEnter,
|
|
195
|
+
onMouseLeave: onMouseLeave
|
|
196
|
+
}, createElement(CompositeItem, _extends({
|
|
197
|
+
role: "option",
|
|
198
|
+
as: "div"
|
|
199
|
+
}, composite, {
|
|
200
|
+
className: "block-editor-inserter__media-list__item",
|
|
201
|
+
onClick: () => onMediaInsert(block),
|
|
202
|
+
"aria-label": title
|
|
203
|
+
}), createElement("div", {
|
|
204
|
+
className: "block-editor-inserter__media-list__item-preview"
|
|
205
|
+
}, preview, isInserting && createElement("div", {
|
|
206
|
+
className: "block-editor-inserter__media-list__item-preview-spinner"
|
|
207
|
+
}, createElement(Spinner, null)))), !isInserting && createElement(MediaPreviewOptions, {
|
|
208
|
+
category: category,
|
|
209
|
+
media: media
|
|
210
|
+
}))));
|
|
211
|
+
}), showExternalUploadModal && createElement(InsertExternalImageModal, {
|
|
212
|
+
onClose: () => setShowExternalUploadModal(false),
|
|
213
|
+
onSubmit: () => {
|
|
214
|
+
onClick(cloneBlock(block));
|
|
215
|
+
createSuccessNotice(__('Image inserted.'), {
|
|
216
|
+
type: 'snackbar'
|
|
217
|
+
});
|
|
218
|
+
setShowExternalUploadModal(false);
|
|
219
|
+
}
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=media-preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/media-tab/media-preview.js"],"names":["classnames","__unstableCompositeItem","CompositeItem","Tooltip","DropdownMenu","MenuGroup","MenuItem","Spinner","Modal","Flex","FlexItem","Button","__experimentalVStack","VStack","__","sprintf","useMemo","useCallback","useState","cloneBlock","moreVertical","external","useSelect","useDispatch","store","noticesStore","isBlobURL","InserterDraggableBlocks","getBlockAndPreviewFromMedia","blockEditorStore","ALLOWED_MEDIA_TYPES","MAXIMUM_TITLE_LENGTH","MEDIA_OPTIONS_POPOVER_PROPS","position","className","MediaPreviewOptions","category","media","getReportUrl","reportUrl","window","open","focus","mediaType","InsertExternalImageModal","onClose","onSubmit","MediaPreview","onClick","composite","showExternalUploadModal","setShowExternalUploadModal","isHovered","setIsHovered","isInserting","setIsInserting","block","preview","createErrorNotice","createSuccessNotice","mediaUpload","select","getSettings","onMediaInsert","previewBlock","clonedBlock","id","url","caption","attributes","fetch","then","response","blob","filesList","additionalData","onFileChange","img","type","allowedTypes","onError","message","catch","title","rendered","truncatedTitle","length","omission","slice","onMouseEnter","onMouseLeave","draggable","onDragStart","onDragEnd"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__unstableCompositeItem as CompositeItem,\n\tTooltip,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\tSpinner,\n\tModal,\n\tFlex,\n\tFlexItem,\n\tButton,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo, useCallback, useState } from '@wordpress/element';\nimport { cloneBlock } from '@wordpress/blocks';\nimport { moreVertical, external } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport InserterDraggableBlocks from '../../inserter-draggable-blocks';\nimport { getBlockAndPreviewFromMedia } from './utils';\nimport { store as blockEditorStore } from '../../../store';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\nconst MAXIMUM_TITLE_LENGTH = 25;\nconst MEDIA_OPTIONS_POPOVER_PROPS = {\n\tposition: 'bottom left',\n\tclassName:\n\t\t'block-editor-inserter__media-list__item-preview-options__popover',\n};\n\nfunction MediaPreviewOptions( { category, media } ) {\n\tif ( ! category.getReportUrl ) {\n\t\treturn null;\n\t}\n\tconst reportUrl = category.getReportUrl( media );\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName=\"block-editor-inserter__media-list__item-preview-options\"\n\t\t\tlabel={ __( 'Options' ) }\n\t\t\tpopoverProps={ MEDIA_OPTIONS_POPOVER_PROPS }\n\t\t\ticon={ moreVertical }\n\t\t>\n\t\t\t{ () => (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\twindow.open( reportUrl, '_blank' ).focus()\n\t\t\t\t\t\t}\n\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t/* translators: %s: The media type to report e.g: \"image\", \"video\", \"audio\" */\n\t\t\t\t\t\t\t__( 'Report %s' ),\n\t\t\t\t\t\t\tcategory.mediaType\n\t\t\t\t\t\t) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction InsertExternalImageModal( { onClose, onSubmit } ) {\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Insert external image' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t\tclassName=\"block-editor-inserter-media-tab-media-preview-inserter-external-image-modal\"\n\t\t>\n\t\t\t<VStack spacing={ 3 }>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'This image cannot be uploaded to your Media Library, but it can still be inserted as an external image.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'External images can be removed by the external provider without warning and could even have legal compliance issues related to privacy legislation.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t</VStack>\n\t\t\t<Flex\n\t\t\t\tclassName=\"block-editor-block-lock-modal__actions\"\n\t\t\t\tjustify=\"flex-end\"\n\t\t\t\texpanded={ false }\n\t\t\t>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button variant=\"primary\" onClick={ onSubmit }>\n\t\t\t\t\t\t{ __( 'Insert' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</Modal>\n\t);\n}\n\nexport function MediaPreview( { media, onClick, composite, category } ) {\n\tconst [ showExternalUploadModal, setShowExternalUploadModal ] =\n\t\tuseState( false );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ isInserting, setIsInserting ] = useState( false );\n\tconst [ block, preview ] = useMemo(\n\t\t() => getBlockAndPreviewFromMedia( media, category.mediaType ),\n\t\t[ media, category.mediaType ]\n\t);\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst mediaUpload = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings().mediaUpload,\n\t\t[]\n\t);\n\tconst onMediaInsert = useCallback(\n\t\t( previewBlock ) => {\n\t\t\t// Prevent multiple uploads when we're in the process of inserting.\n\t\t\tif ( isInserting ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst clonedBlock = cloneBlock( previewBlock );\n\t\t\tconst { id, url, caption } = clonedBlock.attributes;\n\t\t\t// Media item already exists in library, so just insert it.\n\t\t\tif ( !! id ) {\n\t\t\t\tonClick( clonedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsInserting( true );\n\t\t\t// Media item does not exist in library, so try to upload it.\n\t\t\t// Fist fetch the image data. This may fail if the image host\n\t\t\t// doesn't allow CORS with the domain.\n\t\t\t// If this happens, we insert the image block using the external\n\t\t\t// URL and let the user know about the possible implications.\n\t\t\twindow\n\t\t\t\t.fetch( url )\n\t\t\t\t.then( ( response ) => response.blob() )\n\t\t\t\t.then( ( blob ) => {\n\t\t\t\t\tmediaUpload( {\n\t\t\t\t\t\tfilesList: [ blob ],\n\t\t\t\t\t\tadditionalData: { caption },\n\t\t\t\t\t\tonFileChange( [ img ] ) {\n\t\t\t\t\t\t\tif ( isBlobURL( img.url ) ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick( {\n\t\t\t\t\t\t\t\t...clonedBlock,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t...clonedBlock.attributes,\n\t\t\t\t\t\t\t\t\tid: img.id,\n\t\t\t\t\t\t\t\t\turl: img.url,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t\t\t\t__( 'Image uploaded and inserted.' ),\n\t\t\t\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tsetIsInserting( false );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\t\t\tonError( message ) {\n\t\t\t\t\t\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\t\t\t\t\t\tsetIsInserting( false );\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( () => {\n\t\t\t\t\tsetShowExternalUploadModal( true );\n\t\t\t\t\tsetIsInserting( false );\n\t\t\t\t} );\n\t\t},\n\t\t[\n\t\t\tisInserting,\n\t\t\tonClick,\n\t\t\tmediaUpload,\n\t\t\tcreateErrorNotice,\n\t\t\tcreateSuccessNotice,\n\t\t]\n\t);\n\tconst title = media.title?.rendered || media.title;\n\tlet truncatedTitle;\n\tif ( title.length > MAXIMUM_TITLE_LENGTH ) {\n\t\tconst omission = '...';\n\t\ttruncatedTitle =\n\t\t\ttitle.slice( 0, MAXIMUM_TITLE_LENGTH - omission.length ) + omission;\n\t}\n\tconst onMouseEnter = useCallback( () => setIsHovered( true ), [] );\n\tconst onMouseLeave = useCallback( () => setIsHovered( false ), [] );\n\treturn (\n\t\t<>\n\t\t\t<InserterDraggableBlocks isEnabled={ true } blocks={ [ block ] }>\n\t\t\t\t{ ( { draggable, onDragStart, onDragEnd } ) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'block-editor-inserter__media-list__list-item',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'is-hovered': isHovered,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tdraggable={ draggable }\n\t\t\t\t\t\tonDragStart={ onDragStart }\n\t\t\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tooltip text={ truncatedTitle || title }>\n\t\t\t\t\t\t\t{ /* Adding `is-hovered` class to the wrapper element is needed\n\t\t\t\t\t\t\tbecause the options Popover is rendered outside of this node. */ }\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\t\t\t\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\tas=\"div\"\n\t\t\t\t\t\t\t\t\t{ ...composite }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__media-list__item\"\n\t\t\t\t\t\t\t\t\tonClick={ () => onMediaInsert( block ) }\n\t\t\t\t\t\t\t\t\taria-label={ title }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div className=\"block-editor-inserter__media-list__item-preview\">\n\t\t\t\t\t\t\t\t\t\t{ preview }\n\t\t\t\t\t\t\t\t\t\t{ isInserting && (\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"block-editor-inserter__media-list__item-preview-spinner\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</CompositeItem>\n\t\t\t\t\t\t\t\t{ ! isInserting && (\n\t\t\t\t\t\t\t\t\t<MediaPreviewOptions\n\t\t\t\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\t\t\t\tmedia={ media }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</InserterDraggableBlocks>\n\t\t\t{ showExternalUploadModal && (\n\t\t\t\t<InsertExternalImageModal\n\t\t\t\t\tonClose={ () => setShowExternalUploadModal( false ) }\n\t\t\t\t\tonSubmit={ () => {\n\t\t\t\t\t\tonClick( cloneBlock( block ) );\n\t\t\t\t\t\tcreateSuccessNotice( __( 'Image inserted.' ), {\n\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tsetShowExternalUploadModal( false );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
|
|
@@ -51,7 +51,7 @@ export default function BlockSupportToolsPanel(_ref) {
|
|
|
51
51
|
newAttributes[clientId] = newBlockAttributes;
|
|
52
52
|
});
|
|
53
53
|
updateBlockAttributes(clientIds, newAttributes, true);
|
|
54
|
-
}, [
|
|
54
|
+
}, [getBlockAttributes, getMultiSelectedBlockClientIds, hasMultiSelection, panelId, updateBlockAttributes]);
|
|
55
55
|
return createElement(ToolsPanel, {
|
|
56
56
|
className: `${group}-block-support-panel`,
|
|
57
57
|
label: label,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inspector-controls/block-support-tools-panel.js"],"names":["__experimentalToolsPanel","ToolsPanel","useDispatch","useSelect","useCallback","store","blockEditorStore","cleanEmptyObject","BlockSupportToolsPanel","children","group","label","updateBlockAttributes","getBlockAttributes","getMultiSelectedBlockClientIds","getSelectedBlockClientId","hasMultiSelection","panelId","resetAll","resetFilters","newAttributes","clientIds","forEach","clientId","style","newBlockAttributes","resetFilter"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,wBAAwB,IAAIC,UAArC,QAAuD,uBAAvD;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SAASC,WAAT,QAA4B,oBAA5B;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,gBAAT,QAAiC,mBAAjC;AAEA,eAAe,SAASC,sBAAT,OAA8D;AAAA,MAA7B;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,KAAZ;AAAmBC,IAAAA;AAAnB,GAA6B;AAC5E,QAAM;AAAEC,IAAAA;AAAF,MAA4BV,WAAW,CAAEI,gBAAF,CAA7C;AACA,QAAM;AACLO,IAAAA,kBADK;AAELC,IAAAA,8BAFK;AAGLC,IAAAA,wBAHK;AAILC,IAAAA;AAJK,MAKFb,SAAS,CAAEG,gBAAF,CALb;AAOA,QAAMW,OAAO,GAAGF,wBAAwB,EAAxC;AACA,QAAMG,QAAQ,GAAGd,WAAW,CAC3B,YAAyB;AAAA,QAAvBe,YAAuB,uEAAR,EAAQ;AACxB,UAAMC,aAAa,GAAG,EAAtB;AAEA,UAAMC,SAAS,GAAGL,iBAAiB,KAChCF,8BAA8B,EADE,GAEhC,CAAEG,OAAF,CAFH;AAIAI,IAAAA,SAAS,CAACC,OAAV,CAAqBC,QAAF,IAAgB;AAClC,YAAM;AAAEC,QAAAA;AAAF,UAAYX,kBAAkB,CAAEU,QAAF,CAApC;AACA,UAAIE,kBAAkB,GAAG;AAAED,QAAAA;AAAF,OAAzB;AAEAL,MAAAA,YAAY,CAACG,OAAb,CAAwBI,WAAF,IAAmB;AACxCD,QAAAA,kBAAkB,GAAG,EACpB,GAAGA,kBADiB;AAEpB,aAAGC,WAAW,CAAED,kBAAF;AAFM,SAArB;AAIA,OALD,EAJkC,CAWlC;;AACAA,MAAAA,kBAAkB,GAAG,EACpB,GAAGA,kBADiB;AAEpBD,QAAAA,KAAK,EAAEjB,gBAAgB,CAAEkB,kBAAkB,CAACD,KAArB;AAFH,OAArB;AAKAJ,MAAAA,aAAa,CAAEG,QAAF,CAAb,GAA4BE,kBAA5B;AACA,KAlBD;AAoBAb,IAAAA,qBAAqB,CAAES,SAAF,EAAaD,aAAb,EAA4B,IAA5B,CAArB;AACA,GA7B0B,EA8B3B,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inspector-controls/block-support-tools-panel.js"],"names":["__experimentalToolsPanel","ToolsPanel","useDispatch","useSelect","useCallback","store","blockEditorStore","cleanEmptyObject","BlockSupportToolsPanel","children","group","label","updateBlockAttributes","getBlockAttributes","getMultiSelectedBlockClientIds","getSelectedBlockClientId","hasMultiSelection","panelId","resetAll","resetFilters","newAttributes","clientIds","forEach","clientId","style","newBlockAttributes","resetFilter"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,wBAAwB,IAAIC,UAArC,QAAuD,uBAAvD;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SAASC,WAAT,QAA4B,oBAA5B;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,gBAAT,QAAiC,mBAAjC;AAEA,eAAe,SAASC,sBAAT,OAA8D;AAAA,MAA7B;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,KAAZ;AAAmBC,IAAAA;AAAnB,GAA6B;AAC5E,QAAM;AAAEC,IAAAA;AAAF,MAA4BV,WAAW,CAAEI,gBAAF,CAA7C;AACA,QAAM;AACLO,IAAAA,kBADK;AAELC,IAAAA,8BAFK;AAGLC,IAAAA,wBAHK;AAILC,IAAAA;AAJK,MAKFb,SAAS,CAAEG,gBAAF,CALb;AAOA,QAAMW,OAAO,GAAGF,wBAAwB,EAAxC;AACA,QAAMG,QAAQ,GAAGd,WAAW,CAC3B,YAAyB;AAAA,QAAvBe,YAAuB,uEAAR,EAAQ;AACxB,UAAMC,aAAa,GAAG,EAAtB;AAEA,UAAMC,SAAS,GAAGL,iBAAiB,KAChCF,8BAA8B,EADE,GAEhC,CAAEG,OAAF,CAFH;AAIAI,IAAAA,SAAS,CAACC,OAAV,CAAqBC,QAAF,IAAgB;AAClC,YAAM;AAAEC,QAAAA;AAAF,UAAYX,kBAAkB,CAAEU,QAAF,CAApC;AACA,UAAIE,kBAAkB,GAAG;AAAED,QAAAA;AAAF,OAAzB;AAEAL,MAAAA,YAAY,CAACG,OAAb,CAAwBI,WAAF,IAAmB;AACxCD,QAAAA,kBAAkB,GAAG,EACpB,GAAGA,kBADiB;AAEpB,aAAGC,WAAW,CAAED,kBAAF;AAFM,SAArB;AAIA,OALD,EAJkC,CAWlC;;AACAA,MAAAA,kBAAkB,GAAG,EACpB,GAAGA,kBADiB;AAEpBD,QAAAA,KAAK,EAAEjB,gBAAgB,CAAEkB,kBAAkB,CAACD,KAArB;AAFH,OAArB;AAKAJ,MAAAA,aAAa,CAAEG,QAAF,CAAb,GAA4BE,kBAA5B;AACA,KAlBD;AAoBAb,IAAAA,qBAAqB,CAAES,SAAF,EAAaD,aAAb,EAA4B,IAA5B,CAArB;AACA,GA7B0B,EA8B3B,CACCP,kBADD,EAECC,8BAFD,EAGCE,iBAHD,EAICC,OAJD,EAKCL,qBALD,CA9B2B,CAA5B;AAuCA,SACC,cAAC,UAAD;AACC,IAAA,SAAS,EAAI,GAAGF,KAAO,sBADxB;AAEC,IAAA,KAAK,EAAGC,KAFT;AAGC,IAAA,QAAQ,EAAGO,QAHZ;AAIC,IAAA,GAAG,EAAGD,OAJP;AAKC,IAAA,OAAO,EAAGA,OALX;AAMC,IAAA,eAAe,EAAG,IANnB;AAOC,IAAA,4BAA4B,EAAG,IAPhC,CAOuC;AAPvC;AAQC,IAAA,mCAAmC,EAAC,OARrC;AASC,IAAA,kCAAkC,EAAC;AATpC,KAWGR,QAXH,CADD;AAeA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalToolsPanel as ToolsPanel } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { cleanEmptyObject } from '../../hooks/utils';\n\nexport default function BlockSupportToolsPanel( { children, group, label } ) {\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst {\n\t\tgetBlockAttributes,\n\t\tgetMultiSelectedBlockClientIds,\n\t\tgetSelectedBlockClientId,\n\t\thasMultiSelection,\n\t} = useSelect( blockEditorStore );\n\n\tconst panelId = getSelectedBlockClientId();\n\tconst resetAll = useCallback(\n\t\t( resetFilters = [] ) => {\n\t\t\tconst newAttributes = {};\n\n\t\t\tconst clientIds = hasMultiSelection()\n\t\t\t\t? getMultiSelectedBlockClientIds()\n\t\t\t\t: [ panelId ];\n\n\t\t\tclientIds.forEach( ( clientId ) => {\n\t\t\t\tconst { style } = getBlockAttributes( clientId );\n\t\t\t\tlet newBlockAttributes = { style };\n\n\t\t\t\tresetFilters.forEach( ( resetFilter ) => {\n\t\t\t\t\tnewBlockAttributes = {\n\t\t\t\t\t\t...newBlockAttributes,\n\t\t\t\t\t\t...resetFilter( newBlockAttributes ),\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Enforce a cleaned style object.\n\t\t\t\tnewBlockAttributes = {\n\t\t\t\t\t...newBlockAttributes,\n\t\t\t\t\tstyle: cleanEmptyObject( newBlockAttributes.style ),\n\t\t\t\t};\n\n\t\t\t\tnewAttributes[ clientId ] = newBlockAttributes;\n\t\t\t} );\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes, true );\n\t\t},\n\t\t[\n\t\t\tgetBlockAttributes,\n\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\thasMultiSelection,\n\t\t\tpanelId,\n\t\t\tupdateBlockAttributes,\n\t\t]\n\t);\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tclassName={ `${ group }-block-support-panel` }\n\t\t\tlabel={ label }\n\t\t\tresetAll={ resetAll }\n\t\t\tkey={ panelId }\n\t\t\tpanelId={ panelId }\n\t\t\thasInnerWrapper={ true }\n\t\t\tshouldRenderPlaceholderItems={ true } // Required to maintain fills ordering.\n\t\t\t__experimentalFirstVisibleItemClass=\"first\"\n\t\t\t__experimentalLastVisibleItemClass=\"last\"\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n"]}
|
|
@@ -11,6 +11,7 @@ import { isEmpty } from 'lodash';
|
|
|
11
11
|
import { __experimentalStyleProvider as StyleProvider, __experimentalToolsPanelContext as ToolsPanelContext } from '@wordpress/components';
|
|
12
12
|
import warning from '@wordpress/warning';
|
|
13
13
|
import deprecated from '@wordpress/deprecated';
|
|
14
|
+
import { useEffect } from '@wordpress/element';
|
|
14
15
|
/**
|
|
15
16
|
* Internal dependencies
|
|
16
17
|
*/
|
|
@@ -23,7 +24,8 @@ export default function InspectorControlsFill(_ref) {
|
|
|
23
24
|
let {
|
|
24
25
|
children,
|
|
25
26
|
group = 'default',
|
|
26
|
-
__experimentalGroup
|
|
27
|
+
__experimentalGroup,
|
|
28
|
+
resetAllFilter
|
|
27
29
|
} = _ref;
|
|
28
30
|
|
|
29
31
|
if (__experimentalGroup) {
|
|
@@ -50,14 +52,42 @@ export default function InspectorControlsFill(_ref) {
|
|
|
50
52
|
return createElement(StyleProvider, {
|
|
51
53
|
document: document
|
|
52
54
|
}, createElement(Fill, null, fillProps => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return createElement(ToolsPanelContext.Provider, {
|
|
59
|
-
value: value
|
|
60
|
-
}, children);
|
|
55
|
+
return createElement(ToolsPanelInspectorControl, {
|
|
56
|
+
fillProps: fillProps,
|
|
57
|
+
children: children,
|
|
58
|
+
resetAllFilter: resetAllFilter
|
|
59
|
+
});
|
|
61
60
|
}));
|
|
62
61
|
}
|
|
62
|
+
|
|
63
|
+
function ToolsPanelInspectorControl(_ref2) {
|
|
64
|
+
let {
|
|
65
|
+
children,
|
|
66
|
+
resetAllFilter,
|
|
67
|
+
fillProps
|
|
68
|
+
} = _ref2;
|
|
69
|
+
const {
|
|
70
|
+
registerResetAllFilter,
|
|
71
|
+
deregisterResetAllFilter
|
|
72
|
+
} = fillProps;
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
if (resetAllFilter && registerResetAllFilter) {
|
|
75
|
+
registerResetAllFilter(resetAllFilter);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return () => {
|
|
79
|
+
if (resetAllFilter && deregisterResetAllFilter) {
|
|
80
|
+
deregisterResetAllFilter(resetAllFilter);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}, [resetAllFilter, registerResetAllFilter, deregisterResetAllFilter]); // Children passed to InspectorControlsFill will not have
|
|
84
|
+
// access to any React Context whose Provider is part of
|
|
85
|
+
// the InspectorControlsSlot tree. So we re-create the
|
|
86
|
+
// Provider in this subtree.
|
|
87
|
+
|
|
88
|
+
const value = !isEmpty(fillProps) ? fillProps : null;
|
|
89
|
+
return createElement(ToolsPanelContext.Provider, {
|
|
90
|
+
value: value
|
|
91
|
+
}, children);
|
|
92
|
+
}
|
|
63
93
|
//# sourceMappingURL=fill.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inspector-controls/fill.js"],"names":["isEmpty","__experimentalStyleProvider","StyleProvider","__experimentalToolsPanelContext","ToolsPanelContext","warning","deprecated","useDisplayBlockControls","groups","InspectorControlsFill","children","group","__experimentalGroup","since","version","alternative","isDisplayed","Fill","document","fillProps","value"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,QAAxB;AAEA;AACA;AACA;;AACA,SACCC,2BAA2B,IAAIC,aADhC,EAECC,+BAA+B,IAAIC,iBAFpC,QAGO,uBAHP;AAIA,OAAOC,OAAP,MAAoB,oBAApB;AACA,OAAOC,UAAP,MAAuB,uBAAvB;AAEA;AACA;AACA;;AACA,OAAOC,uBAAP,MAAoC,+BAApC;AACA,OAAOC,MAAP,MAAmB,UAAnB;AAEA,eAAe,SAASC,qBAAT,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inspector-controls/fill.js"],"names":["isEmpty","__experimentalStyleProvider","StyleProvider","__experimentalToolsPanelContext","ToolsPanelContext","warning","deprecated","useEffect","useDisplayBlockControls","groups","InspectorControlsFill","children","group","__experimentalGroup","resetAllFilter","since","version","alternative","isDisplayed","Fill","document","fillProps","ToolsPanelInspectorControl","registerResetAllFilter","deregisterResetAllFilter","value"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,QAAxB;AAEA;AACA;AACA;;AACA,SACCC,2BAA2B,IAAIC,aADhC,EAECC,+BAA+B,IAAIC,iBAFpC,QAGO,uBAHP;AAIA,OAAOC,OAAP,MAAoB,oBAApB;AACA,OAAOC,UAAP,MAAuB,uBAAvB;AACA,SAASC,SAAT,QAA0B,oBAA1B;AAEA;AACA;AACA;;AACA,OAAOC,uBAAP,MAAoC,+BAApC;AACA,OAAOC,MAAP,MAAmB,UAAnB;AAEA,eAAe,SAASC,qBAAT,OAKX;AAAA;;AAAA,MAL2C;AAC9CC,IAAAA,QAD8C;AAE9CC,IAAAA,KAAK,GAAG,SAFsC;AAG9CC,IAAAA,mBAH8C;AAI9CC,IAAAA;AAJ8C,GAK3C;;AACH,MAAKD,mBAAL,EAA2B;AAC1BP,IAAAA,UAAU,CACT,2DADS,EAET;AACCS,MAAAA,KAAK,EAAE,KADR;AAECC,MAAAA,OAAO,EAAE,KAFV;AAGCC,MAAAA,WAAW,EAAE;AAHd,KAFS,CAAV;AAQAL,IAAAA,KAAK,GAAGC,mBAAR;AACA;;AAED,QAAMK,WAAW,GAAGV,uBAAuB,EAA3C;AACA,QAAMW,IAAI,oBAAGV,MAAM,CAAEG,KAAF,CAAT,kDAAG,cAAiBO,IAA9B;;AACA,MAAK,CAAEA,IAAP,EAAc;AACb,6FAAAd,OAAO,CAAG,mCAAmCO,KAAO,aAA7C,CAAP;AACA,WAAO,IAAP;AACA;;AACD,MAAK,CAAEM,WAAP,EAAqB;AACpB,WAAO,IAAP;AACA;;AAED,SACC,cAAC,aAAD;AAAe,IAAA,QAAQ,EAAGE;AAA1B,KACC,cAAC,IAAD,QACKC,SAAF,IAAiB;AAClB,WACC,cAAC,0BAAD;AACC,MAAA,SAAS,EAAGA,SADb;AAEC,MAAA,QAAQ,EAAGV,QAFZ;AAGC,MAAA,cAAc,EAAGG;AAHlB,MADD;AAOA,GATF,CADD,CADD;AAeA;;AAED,SAASQ,0BAAT,QAA+E;AAAA,MAA1C;AAAEX,IAAAA,QAAF;AAAYG,IAAAA,cAAZ;AAA4BO,IAAAA;AAA5B,GAA0C;AAC9E,QAAM;AAAEE,IAAAA,sBAAF;AAA0BC,IAAAA;AAA1B,MAAuDH,SAA7D;AACAd,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAKO,cAAc,IAAIS,sBAAvB,EAAgD;AAC/CA,MAAAA,sBAAsB,CAAET,cAAF,CAAtB;AACA;;AACD,WAAO,MAAM;AACZ,UAAKA,cAAc,IAAIU,wBAAvB,EAAkD;AACjDA,QAAAA,wBAAwB,CAAEV,cAAF,CAAxB;AACA;AACD,KAJD;AAKA,GATQ,EASN,CAAEA,cAAF,EAAkBS,sBAAlB,EAA0CC,wBAA1C,CATM,CAAT,CAF8E,CAa9E;AACA;AACA;AACA;;AACA,QAAMC,KAAK,GAAG,CAAEzB,OAAO,CAAEqB,SAAF,CAAT,GAAyBA,SAAzB,GAAqC,IAAnD;AACA,SACC,cAAC,iBAAD,CAAmB,QAAnB;AAA4B,IAAA,KAAK,EAAGI;AAApC,KACGd,QADH,CADD;AAKA","sourcesContent":["/**\n * External dependencies\n */\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalStyleProvider as StyleProvider,\n\t__experimentalToolsPanelContext as ToolsPanelContext,\n} from '@wordpress/components';\nimport warning from '@wordpress/warning';\nimport deprecated from '@wordpress/deprecated';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useDisplayBlockControls from '../use-display-block-controls';\nimport groups from './groups';\n\nexport default function InspectorControlsFill( {\n\tchildren,\n\tgroup = 'default',\n\t__experimentalGroup,\n\tresetAllFilter,\n} ) {\n\tif ( __experimentalGroup ) {\n\t\tdeprecated(\n\t\t\t'`__experimentalGroup` property in `InspectorControlsFill`',\n\t\t\t{\n\t\t\t\tsince: '6.2',\n\t\t\t\tversion: '6.4',\n\t\t\t\talternative: '`group`',\n\t\t\t}\n\t\t);\n\t\tgroup = __experimentalGroup;\n\t}\n\n\tconst isDisplayed = useDisplayBlockControls();\n\tconst Fill = groups[ group ]?.Fill;\n\tif ( ! Fill ) {\n\t\twarning( `Unknown InspectorControl group \"${ group }\" provided.` );\n\t\treturn null;\n\t}\n\tif ( ! isDisplayed ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StyleProvider document={ document }>\n\t\t\t<Fill>\n\t\t\t\t{ ( fillProps ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ToolsPanelInspectorControl\n\t\t\t\t\t\t\tfillProps={ fillProps }\n\t\t\t\t\t\t\tchildren={ children }\n\t\t\t\t\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t</Fill>\n\t\t</StyleProvider>\n\t);\n}\n\nfunction ToolsPanelInspectorControl( { children, resetAllFilter, fillProps } ) {\n\tconst { registerResetAllFilter, deregisterResetAllFilter } = fillProps;\n\tuseEffect( () => {\n\t\tif ( resetAllFilter && registerResetAllFilter ) {\n\t\t\tregisterResetAllFilter( resetAllFilter );\n\t\t}\n\t\treturn () => {\n\t\t\tif ( resetAllFilter && deregisterResetAllFilter ) {\n\t\t\t\tderegisterResetAllFilter( resetAllFilter );\n\t\t\t}\n\t\t};\n\t}, [ resetAllFilter, registerResetAllFilter, deregisterResetAllFilter ] );\n\n\t// Children passed to InspectorControlsFill will not have\n\t// access to any React Context whose Provider is part of\n\t// the InspectorControlsSlot tree. So we re-create the\n\t// Provider in this subtree.\n\tconst value = ! isEmpty( fillProps ) ? fillProps : null;\n\treturn (\n\t\t<ToolsPanelContext.Provider value={ value }>\n\t\t\t{ children }\n\t\t</ToolsPanelContext.Provider>\n\t);\n}\n"]}
|
|
@@ -38,7 +38,7 @@ function LinkSettingsDrawer(_ref) {
|
|
|
38
38
|
"aria-expanded": settingsOpen,
|
|
39
39
|
onClick: () => setSettingsOpen(!settingsOpen),
|
|
40
40
|
icon: settingsIcon,
|
|
41
|
-
label: __('
|
|
41
|
+
label: __('Link Settings'),
|
|
42
42
|
"aria-controls": settingsDrawerId
|
|
43
43
|
}), createElement(MaybeAnimatePresence, null, settingsOpen && createElement(MaybeMotionDiv, {
|
|
44
44
|
className: "block-editor-link-control__drawer",
|