@wordpress/block-library 8.28.5 → 8.30.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 +4 -0
- package/build/audio/edit.js +7 -17
- package/build/audio/edit.js.map +1 -1
- package/build/audio/edit.native.js.map +1 -1
- package/build/avatar/edit.js.map +1 -1
- package/build/button/edit.js +1 -1
- package/build/button/edit.js.map +1 -1
- package/build/buttons/edit.js +1 -6
- package/build/buttons/edit.js.map +1 -1
- package/build/buttons/edit.native.js +1 -7
- package/build/buttons/edit.native.js.map +1 -1
- package/build/columns/edit.js +8 -2
- package/build/columns/edit.js.map +1 -1
- package/build/comment-author-avatar/edit.js +1 -1
- package/build/comment-author-avatar/edit.js.map +1 -1
- package/build/cover/edit/index.js.map +1 -1
- package/build/cover/edit/inspector-controls.js.map +1 -1
- package/build/cover/edit/resizable-cover-popover.js +0 -6
- package/build/cover/edit/resizable-cover-popover.js.map +1 -1
- package/build/cover/edit.native.js.map +1 -1
- package/build/details/index.js +1 -0
- package/build/details/index.js.map +1 -1
- package/build/file/deprecated.js.map +1 -1
- package/build/file/edit.js +6 -13
- package/build/file/edit.js.map +1 -1
- package/build/file/edit.native.js.map +1 -1
- package/build/file/save.js.map +1 -1
- package/build/form-input/edit.js +1 -1
- package/build/form-input/edit.js.map +1 -1
- package/build/gallery/edit.js +5 -5
- package/build/gallery/edit.js.map +1 -1
- package/build/gallery/gallery.native.js.map +1 -1
- package/build/gallery/v1/edit.js.map +1 -1
- package/build/gallery/v1/gallery.native.js.map +1 -1
- package/build/group/variations.js +12 -15
- package/build/group/variations.js.map +1 -1
- package/build/image/edit.js.map +1 -1
- package/build/image/edit.native.js.map +1 -1
- package/build/image/image.js.map +1 -1
- package/build/latest-posts/edit.native.js.map +1 -1
- package/build/list/edit.js +5 -0
- package/build/list/edit.js.map +1 -1
- package/build/list/ordered-list-settings.js +1 -1
- package/build/list/ordered-list-settings.js.map +1 -1
- package/build/list-item/edit.native.js.map +1 -1
- package/build/list-item/hooks/use-indent-list-item.js +1 -0
- package/build/list-item/hooks/use-indent-list-item.js.map +1 -1
- package/build/list-item/hooks/use-outdent-list-item.js +1 -0
- package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
- package/build/list-item/hooks/use-space.js +16 -7
- package/build/list-item/hooks/use-space.js.map +1 -1
- package/build/media-text/media-container.native.js +1 -1
- package/build/media-text/media-container.native.js.map +1 -1
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation-link/link-ui.js.map +1 -1
- package/build/paragraph/edit.native.js.map +1 -1
- package/build/pattern/edit.js +23 -9
- package/build/pattern/edit.js.map +1 -1
- package/build/post-excerpt/edit.js.map +1 -1
- package/build/post-featured-image/dimension-controls.js.map +1 -1
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/post-navigation-link/edit.js.map +1 -1
- package/build/query/edit/pattern-selection-modal.js.map +1 -1
- package/build/query/utils.js +7 -5
- package/build/query/utils.js.map +1 -1
- package/build/query-pagination-next/edit.js.map +1 -1
- package/build/query-pagination-previous/edit.js.map +1 -1
- package/build/quote/deprecated.js +111 -12
- package/build/quote/deprecated.js.map +1 -1
- package/build/quote/edit.js +5 -5
- package/build/quote/edit.js.map +1 -1
- package/build/quote/index.js +1 -1
- package/build/quote/index.js.map +1 -1
- package/build/quote/save.js +2 -2
- package/build/quote/save.js.map +1 -1
- package/build/read-more/edit.js.map +1 -1
- package/build/search/edit.js +1 -1
- package/build/search/edit.js.map +1 -1
- package/build/search/edit.native.js.map +1 -1
- package/build/site-logo/edit.js.map +1 -1
- package/build/site-title/{edit/index.js → edit.js} +1 -1
- package/build/site-title/edit.js.map +1 -0
- package/build/social-link/edit.js.map +1 -1
- package/build/social-links/edit.native.js.map +1 -1
- package/build/spacer/edit.js.map +1 -1
- package/build/table-of-contents/edit.js.map +1 -1
- package/build/template-part/edit/index.js +53 -1
- package/build/template-part/edit/index.js.map +1 -1
- package/build/template-part/edit/selection-modal.js +2 -8
- package/build/template-part/edit/selection-modal.js.map +1 -1
- package/build/template-part/edit/utils/map-template-part-to-block-pattern.js +30 -0
- package/build/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
- package/build/utils/hooks.js +55 -4
- package/build/utils/hooks.js.map +1 -1
- package/build/video/edit-common-settings.js.map +1 -1
- package/build/video/edit.js +7 -16
- package/build/video/edit.js.map +1 -1
- package/build/video/edit.native.js +2 -7
- package/build/video/edit.native.js.map +1 -1
- package/build-module/audio/edit.js +10 -20
- package/build-module/audio/edit.js.map +1 -1
- package/build-module/audio/edit.native.js.map +1 -1
- package/build-module/avatar/edit.js.map +1 -1
- package/build-module/button/edit.js +1 -1
- package/build-module/button/edit.js.map +1 -1
- package/build-module/buttons/edit.js +2 -7
- package/build-module/buttons/edit.js.map +1 -1
- package/build-module/buttons/edit.native.js +1 -7
- package/build-module/buttons/edit.native.js.map +1 -1
- package/build-module/columns/edit.js +8 -2
- package/build-module/columns/edit.js.map +1 -1
- package/build-module/comment-author-avatar/edit.js +1 -1
- package/build-module/comment-author-avatar/edit.js.map +1 -1
- package/build-module/cover/edit/index.js.map +1 -1
- package/build-module/cover/edit/inspector-controls.js.map +1 -1
- package/build-module/cover/edit/resizable-cover-popover.js +1 -7
- package/build-module/cover/edit/resizable-cover-popover.js.map +1 -1
- package/build-module/cover/edit.native.js.map +1 -1
- package/build-module/details/index.js +1 -0
- package/build-module/details/index.js.map +1 -1
- package/build-module/file/deprecated.js.map +1 -1
- package/build-module/file/edit.js +7 -14
- package/build-module/file/edit.js.map +1 -1
- package/build-module/file/edit.native.js.map +1 -1
- package/build-module/file/save.js.map +1 -1
- package/build-module/form-input/edit.js +1 -1
- package/build-module/form-input/edit.js.map +1 -1
- package/build-module/gallery/edit.js +5 -5
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/gallery/gallery.native.js.map +1 -1
- package/build-module/gallery/v1/edit.js.map +1 -1
- package/build-module/gallery/v1/gallery.native.js.map +1 -1
- package/build-module/group/variations.js +12 -15
- package/build-module/group/variations.js.map +1 -1
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/edit.native.js.map +1 -1
- package/build-module/image/image.js.map +1 -1
- package/build-module/latest-posts/edit.native.js.map +1 -1
- package/build-module/list/edit.js +5 -0
- package/build-module/list/edit.js.map +1 -1
- package/build-module/list/ordered-list-settings.js +1 -1
- package/build-module/list/ordered-list-settings.js.map +1 -1
- package/build-module/list-item/edit.native.js.map +1 -1
- package/build-module/list-item/hooks/use-indent-list-item.js +1 -0
- package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -1
- package/build-module/list-item/hooks/use-outdent-list-item.js +1 -0
- package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
- package/build-module/list-item/hooks/use-space.js +17 -8
- package/build-module/list-item/hooks/use-space.js.map +1 -1
- package/build-module/media-text/media-container.native.js +1 -1
- package/build-module/media-text/media-container.native.js.map +1 -1
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation-link/link-ui.js.map +1 -1
- package/build-module/paragraph/edit.native.js.map +1 -1
- package/build-module/pattern/edit.js +24 -10
- package/build-module/pattern/edit.js.map +1 -1
- package/build-module/post-excerpt/edit.js.map +1 -1
- package/build-module/post-featured-image/dimension-controls.js.map +1 -1
- package/build-module/post-featured-image/edit.js.map +1 -1
- package/build-module/post-navigation-link/edit.js.map +1 -1
- package/build-module/query/edit/pattern-selection-modal.js.map +1 -1
- package/build-module/query/utils.js +7 -5
- package/build-module/query/utils.js.map +1 -1
- package/build-module/query-pagination-next/edit.js.map +1 -1
- package/build-module/query-pagination-previous/edit.js.map +1 -1
- package/build-module/quote/deprecated.js +112 -13
- package/build-module/quote/deprecated.js.map +1 -1
- package/build-module/quote/edit.js +5 -5
- package/build-module/quote/edit.js.map +1 -1
- package/build-module/quote/index.js +1 -1
- package/build-module/quote/index.js.map +1 -1
- package/build-module/quote/save.js +2 -2
- package/build-module/quote/save.js.map +1 -1
- package/build-module/read-more/edit.js.map +1 -1
- package/build-module/search/edit.js +1 -1
- package/build-module/search/edit.js.map +1 -1
- package/build-module/search/edit.native.js.map +1 -1
- package/build-module/site-logo/edit.js.map +1 -1
- package/build-module/site-title/{edit/index.js → edit.js} +1 -1
- package/build-module/site-title/edit.js.map +1 -0
- package/build-module/social-link/edit.js.map +1 -1
- package/build-module/social-links/edit.native.js.map +1 -1
- package/build-module/spacer/edit.js.map +1 -1
- package/build-module/table-of-contents/edit.js.map +1 -1
- package/build-module/template-part/edit/index.js +57 -5
- package/build-module/template-part/edit/index.js.map +1 -1
- package/build-module/template-part/edit/selection-modal.js +2 -8
- package/build-module/template-part/edit/selection-modal.js.map +1 -1
- package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js +24 -0
- package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
- package/build-module/utils/hooks.js +54 -3
- package/build-module/utils/hooks.js.map +1 -1
- package/build-module/video/edit-common-settings.js.map +1 -1
- package/build-module/video/edit.js +10 -19
- package/build-module/video/edit.js.map +1 -1
- package/build-module/video/edit.native.js +2 -7
- package/build-module/video/edit.native.js.map +1 -1
- package/build-style/editor-rtl.css +4 -1
- package/build-style/editor.css +4 -1
- package/build-style/group/editor-rtl.css +1 -1
- package/build-style/group/editor.css +1 -1
- package/build-style/image/editor-rtl.css +3 -0
- package/build-style/image/editor.css +3 -0
- package/package.json +34 -34
- package/src/audio/edit.js +9 -19
- package/src/audio/edit.native.js +3 -3
- package/src/avatar/edit.js +1 -1
- package/src/avatar/index.php +12 -1
- package/src/block/index.php +2 -0
- package/src/button/edit.js +2 -2
- package/src/buttons/edit.js +3 -16
- package/src/buttons/edit.native.js +2 -18
- package/src/calendar/index.php +5 -0
- package/src/columns/edit.js +9 -2
- package/src/comment-author-avatar/edit.js +1 -1
- package/src/comments/index.php +2 -0
- package/src/cover/edit/index.js +2 -2
- package/src/cover/edit/inspector-controls.js +1 -1
- package/src/cover/edit/resizable-cover-popover.js +1 -6
- package/src/cover/edit.native.js +1 -1
- package/src/details/block.json +1 -0
- package/src/file/deprecated.js +3 -3
- package/src/file/edit.js +8 -15
- package/src/file/edit.native.js +4 -4
- package/src/file/save.js +1 -1
- package/src/form-input/edit.js +1 -1
- package/src/gallery/edit.js +6 -12
- package/src/gallery/gallery.native.js +1 -1
- package/src/gallery/test/index.native.js +1 -1
- package/src/gallery/v1/edit.js +2 -2
- package/src/gallery/v1/gallery.native.js +1 -1
- package/src/group/editor.scss +1 -1
- package/src/group/variations.js +3 -6
- package/src/image/edit.js +1 -1
- package/src/image/edit.native.js +1 -1
- package/src/image/editor.scss +6 -0
- package/src/image/image.js +2 -2
- package/src/latest-posts/edit.native.js +1 -1
- package/src/list/edit.js +5 -0
- package/src/list/ordered-list-settings.js +1 -1
- package/src/list-item/edit.native.js +1 -1
- package/src/list-item/hooks/use-indent-list-item.js +2 -0
- package/src/list-item/hooks/use-outdent-list-item.js +2 -0
- package/src/list-item/hooks/use-space.js +16 -9
- package/src/media-text/media-container.native.js +5 -3
- package/src/media-text/test/edit.native.js +58 -0
- package/src/missing/test/edit-integration.native.js +2 -1
- package/src/navigation/edit/index.js +1 -1
- package/src/navigation/edit/test/navigation-menu-selector.js +3 -3
- package/src/navigation/index.php +18 -13
- package/src/navigation-link/link-ui.js +2 -2
- package/src/paragraph/edit.native.js +1 -1
- package/src/paragraph/test/edit.native.js +36 -0
- package/src/pattern/edit.js +27 -10
- package/src/post-author-biography/index.php +4 -3
- package/src/post-author-name/index.php +4 -3
- package/src/post-excerpt/edit.js +1 -1
- package/src/post-featured-image/dimension-controls.js +4 -4
- package/src/post-featured-image/edit.js +1 -1
- package/src/post-navigation-link/edit.js +1 -1
- package/src/post-template/index.php +2 -0
- package/src/query/edit/pattern-selection-modal.js +1 -1
- package/src/query/utils.js +6 -4
- package/src/query-pagination-next/edit.js +1 -1
- package/src/query-pagination-previous/edit.js +1 -1
- package/src/quote/block.json +1 -1
- package/src/quote/deprecated.js +110 -15
- package/src/quote/edit.js +5 -5
- package/src/quote/save.js +2 -2
- package/src/quote/test/__snapshots__/transforms.native.js.snap +2 -2
- package/src/read-more/edit.js +1 -1
- package/src/search/edit.js +1 -1
- package/src/search/edit.native.js +4 -4
- package/src/site-logo/edit.js +1 -1
- package/src/social-link/edit.js +1 -1
- package/src/social-links/edit.native.js +1 -1
- package/src/spacer/edit.js +1 -1
- package/src/table-of-contents/edit.js +1 -1
- package/src/template-part/edit/index.js +91 -4
- package/src/template-part/edit/selection-modal.js +4 -8
- package/src/template-part/edit/utils/map-template-part-to-block-pattern.js +23 -0
- package/src/utils/hooks.js +53 -3
- package/src/video/edit-common-settings.js +1 -1
- package/src/video/edit.js +10 -18
- package/src/video/edit.native.js +5 -8
- package/src/video/test/edit.native.js +0 -14
- package/build/site-title/edit/index.js.map +0 -1
- package/build-module/site-title/edit/index.js.map +0 -1
- /package/src/site-title/{edit/index.js → edit.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSelect","BlockSettingsMenuControls","useBlockProps","Warning","store","blockEditorStore","RecursionProvider","useHasRecursion","InspectorControls","Spinner","Modal","MenuItem","__","sprintf","coreStore","useState","TemplatePartPlaceholder","TemplatePartSelectionModal","TemplatePartAdvancedControls","TemplatePartInnerBlocks","createTemplatePartId","useAlternativeBlockPatterns","useAlternativeTemplateParts","useTemplatePartArea","ReplaceButton","isEntityAvailable","area","clientId","templatePartId","isTemplatePartSelectionOpen","setIsTemplatePartSelectionOpen","templateParts","blockPatterns","hasReplacements","length","canReplace","createElement","onClick","TemplatePartEdit","attributes","setAttributes","currentTheme","select","getCurrentTheme","stylesheet","slug","theme","tagName","layout","hasAlreadyRendered","isResolved","hasInnerBlocks","isMissing","getEditedEntityRecord","hasFinishedResolution","getBlockCount","getEntityArgs","entityRecord","_area","hasResolvedEntity","Object","keys","areaObject","blockProps","isPlaceholder","TagName","Fragment","uniqueId","group","defaultWrapper","onOpenSelectionModal","selectedClientIds","postId","overlayClassName","title","label","toLowerCase","onRequestClose","isFullScreen","onClose"],"sources":["@wordpress/block-library/src/template-part/edit/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tuseBlockProps,\n\tWarning,\n\tstore as blockEditorStore,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInspectorControls,\n} from '@wordpress/block-editor';\nimport { Spinner, Modal, MenuItem } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport TemplatePartPlaceholder from './placeholder';\nimport TemplatePartSelectionModal from './selection-modal';\nimport { TemplatePartAdvancedControls } from './advanced-controls';\nimport TemplatePartInnerBlocks from './inner-blocks';\nimport { createTemplatePartId } from './utils/create-template-part-id';\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseTemplatePartArea,\n} from './utils/hooks';\n\nfunction ReplaceButton( {\n\tisEntityAvailable,\n\tarea,\n\tclientId,\n\ttemplatePartId,\n\tisTemplatePartSelectionOpen,\n\tsetIsTemplatePartSelectionOpen,\n} ) {\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\n\tconst hasReplacements = !! templateParts.length || !! blockPatterns.length;\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\t( area === 'header' || area === 'footer' );\n\n\tif ( ! canReplace ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\tsetIsTemplatePartSelectionOpen( true );\n\t\t\t} }\n\t\t\taria-expanded={ isTemplatePartSelectionOpen }\n\t\t\taria-haspopup=\"dialog\"\n\t\t>\n\t\t\t{ __( 'Replace' ) }\n\t\t</MenuItem>\n\t);\n}\n\nexport default function TemplatePartEdit( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n} ) {\n\tconst currentTheme = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme()?.stylesheet,\n\t\t[]\n\t);\n\tconst { slug, theme = currentTheme, tagName, layout = {} } = attributes;\n\tconst templatePartId = createTemplatePartId( theme, slug );\n\tconst hasAlreadyRendered = useHasRecursion( templatePartId );\n\tconst [ isTemplatePartSelectionOpen, setIsTemplatePartSelectionOpen ] =\n\t\tuseState( false );\n\n\tconst { isResolved, hasInnerBlocks, isMissing, area } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getBlockCount } = select( blockEditorStore );\n\n\t\t\tconst getEntityArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\ttemplatePartId,\n\t\t\t];\n\t\t\tconst entityRecord = templatePartId\n\t\t\t\t? getEditedEntityRecord( ...getEntityArgs )\n\t\t\t\t: null;\n\t\t\tconst _area = entityRecord?.area || attributes.area;\n\t\t\tconst hasResolvedEntity = templatePartId\n\t\t\t\t? hasFinishedResolution(\n\t\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t\tgetEntityArgs\n\t\t\t\t )\n\t\t\t\t: false;\n\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: getBlockCount( clientId ) > 0,\n\t\t\t\tisResolved: hasResolvedEntity,\n\t\t\t\tisMissing:\n\t\t\t\t\thasResolvedEntity &&\n\t\t\t\t\t( ! entityRecord ||\n\t\t\t\t\t\tObject.keys( entityRecord ).length === 0 ),\n\t\t\t\tarea: _area,\n\t\t\t};\n\t\t},\n\t\t[ templatePartId, attributes.area, clientId ]\n\t);\n\n\tconst areaObject = useTemplatePartArea( area );\n\tconst blockProps = useBlockProps();\n\tconst isPlaceholder = ! slug;\n\tconst isEntityAvailable = ! isPlaceholder && ! isMissing && isResolved;\n\tconst TagName = tagName || areaObject.tagName;\n\n\t// We don't want to render a missing state if we have any inner blocks.\n\t// A new template part is automatically created if we have any inner blocks but no entity.\n\tif (\n\t\t! hasInnerBlocks &&\n\t\t( ( slug && ! theme ) || ( slug && isMissing ) )\n\t) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: Template part slug */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Template part has been deleted or is unavailable: %s'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tslug\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\tif ( isEntityAvailable && hasAlreadyRendered ) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<RecursionProvider uniqueId={ templatePartId }>\n\t\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t\t<TemplatePartAdvancedControls\n\t\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tdefaultWrapper={ areaObject.tagName }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</InspectorControls>\n\t\t\t\t{ isPlaceholder && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<TemplatePartPlaceholder\n\t\t\t\t\t\t\tarea={ attributes.area }\n\t\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tonOpenSelectionModal={ () =>\n\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( true )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t\t<BlockSettingsMenuControls>\n\t\t\t\t\t{ ( { selectedClientIds } ) => {\n\t\t\t\t\t\t// Only enable for single selection that matches the current block.\n\t\t\t\t\t\t// Ensures menu item doesn't render multiple times.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! (\n\t\t\t\t\t\t\t\tselectedClientIds.length === 1 &&\n\t\t\t\t\t\t\t\tclientId === selectedClientIds[ 0 ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ReplaceButton\n\t\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\t\tisEntityAvailable,\n\t\t\t\t\t\t\t\t\tarea,\n\t\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t\ttemplatePartId,\n\t\t\t\t\t\t\t\t\tisTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t</BlockSettingsMenuControls>\n\t\t\t\t{ isEntityAvailable && (\n\t\t\t\t\t<TemplatePartInnerBlocks\n\t\t\t\t\t\ttagName={ TagName }\n\t\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\t\tpostId={ templatePartId }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! isPlaceholder && ! isResolved && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t</RecursionProvider>\n\t\t\t{ isTemplatePartSelectionOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\toverlayClassName=\"block-editor-template-part__selection-modal\"\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t// Translators: %s as template part area title (\"Header\", \"Footer\", etc.).\n\t\t\t\t\t\t__( 'Choose a %s' ),\n\t\t\t\t\t\tareaObject.label.toLowerCase()\n\t\t\t\t\t) }\n\t\t\t\t\tonRequestClose={ () =>\n\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t}\n\t\t\t\t\tisFullScreen={ true }\n\t\t\t\t>\n\t\t\t\t\t<TemplatePartSelectionModal\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tarea={ area }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tonClose={ () =>\n\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SACCC,yBAAyB,EACzBC,aAAa,EACbC,OAAO,EACPC,KAAK,IAAIC,gBAAgB,EACzBC,iBAAiB,EACjBC,eAAe,EACfC,iBAAiB,QACX,yBAAyB;AAChC,SAASC,OAAO,EAAEC,KAAK,EAAEC,QAAQ,QAAQ,uBAAuB;AAChE,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAAST,KAAK,IAAIU,SAAS,QAAQ,sBAAsB;AACzD,SAASC,QAAQ,QAAQ,oBAAoB;;AAE7C;AACA;AACA;AACA,OAAOC,uBAAuB,MAAM,eAAe;AACnD,OAAOC,0BAA0B,MAAM,mBAAmB;AAC1D,SAASC,4BAA4B,QAAQ,qBAAqB;AAClE,OAAOC,uBAAuB,MAAM,gBAAgB;AACpD,SAASC,oBAAoB,QAAQ,iCAAiC;AACtE,SACCC,2BAA2B,EAC3BC,2BAA2B,EAC3BC,mBAAmB,QACb,eAAe;AAEtB,SAASC,aAAaA,CAAE;EACvBC,iBAAiB;EACjBC,IAAI;EACJC,QAAQ;EACRC,cAAc;EACdC,2BAA2B;EAC3BC;AACD,CAAC,EAAG;EACH,MAAM;IAAEC;EAAc,CAAC,GAAGT,2BAA2B,CACpDI,IAAI,EACJE,cACD,CAAC;EACD,MAAMI,aAAa,GAAGX,2BAA2B,CAAEK,IAAI,EAAEC,QAAS,CAAC;EAEnE,MAAMM,eAAe,GAAG,CAAC,CAAEF,aAAa,CAACG,MAAM,IAAI,CAAC,CAAEF,aAAa,CAACE,MAAM;EAC1E,MAAMC,UAAU,GACfV,iBAAiB,IACjBQ,eAAe,KACbP,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,QAAQ,CAAE;EAE3C,IAAK,CAAES,UAAU,EAAG;IACnB,OAAO,IAAI;EACZ;EAEA,OACCC,aAAA,CAACzB,QAAQ;IACR0B,OAAO,EAAGA,CAAA,KAAM;MACfP,8BAA8B,CAAE,IAAK,CAAC;IACvC,CAAG;IACH,iBAAgBD,2BAA6B;IAC7C,iBAAc;EAAQ,GAEpBjB,EAAE,CAAE,SAAU,CACP,CAAC;AAEb;AAEA,eAAe,SAAS0B,gBAAgBA,CAAE;EACzCC,UAAU;EACVC,aAAa;EACbb;AACD,CAAC,EAAG;EACH,MAAMc,YAAY,GAAGzC,SAAS,CAC3B0C,MAAM,IAAMA,MAAM,CAAE5B,SAAU,CAAC,CAAC6B,eAAe,CAAC,CAAC,EAAEC,UAAU,EAC/D,EACD,CAAC;EACD,MAAM;IAAEC,IAAI;IAAEC,KAAK,GAAGL,YAAY;IAAEM,OAAO;IAAEC,MAAM,GAAG,CAAC;EAAE,CAAC,GAAGT,UAAU;EACvE,MAAMX,cAAc,GAAGR,oBAAoB,CAAE0B,KAAK,EAAED,IAAK,CAAC;EAC1D,MAAMI,kBAAkB,GAAG1C,eAAe,CAAEqB,cAAe,CAAC;EAC5D,MAAM,CAAEC,2BAA2B,EAAEC,8BAA8B,CAAE,GACpEf,QAAQ,CAAE,KAAM,CAAC;EAElB,MAAM;IAAEmC,UAAU;IAAEC,cAAc;IAAEC,SAAS;IAAE1B;EAAK,CAAC,GAAG1B,SAAS,CAC9D0C,MAAM,IAAM;IACb,MAAM;MAAEW,qBAAqB;MAAEC;IAAsB,CAAC,GACrDZ,MAAM,CAAE5B,SAAU,CAAC;IACpB,MAAM;MAAEyC;IAAc,CAAC,GAAGb,MAAM,CAAErC,gBAAiB,CAAC;IAEpD,MAAMmD,aAAa,GAAG,CACrB,UAAU,EACV,kBAAkB,EAClB5B,cAAc,CACd;IACD,MAAM6B,YAAY,GAAG7B,cAAc,GAChCyB,qBAAqB,CAAE,GAAGG,aAAc,CAAC,GACzC,IAAI;IACP,MAAME,KAAK,GAAGD,YAAY,EAAE/B,IAAI,IAAIa,UAAU,CAACb,IAAI;IACnD,MAAMiC,iBAAiB,GAAG/B,cAAc,GACrC0B,qBAAqB,CACrB,uBAAuB,EACvBE,aACA,CAAC,GACD,KAAK;IAER,OAAO;MACNL,cAAc,EAAEI,aAAa,CAAE5B,QAAS,CAAC,GAAG,CAAC;MAC7CuB,UAAU,EAAES,iBAAiB;MAC7BP,SAAS,EACRO,iBAAiB,KACf,CAAEF,YAAY,IACfG,MAAM,CAACC,IAAI,CAAEJ,YAAa,CAAC,CAACvB,MAAM,KAAK,CAAC,CAAE;MAC5CR,IAAI,EAAEgC;IACP,CAAC;EACF,CAAC,EACD,CAAE9B,cAAc,EAAEW,UAAU,CAACb,IAAI,EAAEC,QAAQ,CAC5C,CAAC;EAED,MAAMmC,UAAU,GAAGvC,mBAAmB,CAAEG,IAAK,CAAC;EAC9C,MAAMqC,UAAU,GAAG7D,aAAa,CAAC,CAAC;EAClC,MAAM8D,aAAa,GAAG,CAAEnB,IAAI;EAC5B,MAAMpB,iBAAiB,GAAG,CAAEuC,aAAa,IAAI,CAAEZ,SAAS,IAAIF,UAAU;EACtE,MAAMe,OAAO,GAAGlB,OAAO,IAAIe,UAAU,CAACf,OAAO;;EAE7C;EACA;EACA,IACC,CAAEI,cAAc,KACZN,IAAI,IAAI,CAAEC,KAAK,IAAQD,IAAI,IAAIO,SAAW,CAAE,EAC/C;IACD,OACChB,aAAA,CAAC6B,OAAO;MAAA,GAAMF;IAAU,GACvB3B,aAAA,CAACjC,OAAO,QACLU,OAAO,EACR;IACAD,EAAE,CACD,sDACD,CAAC,EACDiC,IACD,CACQ,CACD,CAAC;EAEZ;EAEA,IAAKpB,iBAAiB,IAAIwB,kBAAkB,EAAG;IAC9C,OACCb,aAAA,CAAC6B,OAAO;MAAA,GAAMF;IAAU,GACvB3B,aAAA,CAACjC,OAAO,QACLS,EAAE,CAAE,yCAA0C,CACxC,CACD,CAAC;EAEZ;EAEA,OACCwB,aAAA,CAAA8B,QAAA,QACC9B,aAAA,CAAC9B,iBAAiB;IAAC6D,QAAQ,EAAGvC;EAAgB,GAC7CQ,aAAA,CAAC5B,iBAAiB;IAAC4D,KAAK,EAAC;EAAU,GAClChC,aAAA,CAAClB,4BAA4B;IAC5B6B,OAAO,EAAGA,OAAS;IACnBP,aAAa,EAAGA,aAAe;IAC/Bf,iBAAiB,EAAGA,iBAAmB;IACvCG,cAAc,EAAGA,cAAgB;IACjCyC,cAAc,EAAGP,UAAU,CAACf,OAAS;IACrCI,cAAc,EAAGA;EAAgB,CACjC,CACiB,CAAC,EAClBa,aAAa,IACd5B,aAAA,CAAC6B,OAAO;IAAA,GAAMF;EAAU,GACvB3B,aAAA,CAACpB,uBAAuB;IACvBU,IAAI,EAAGa,UAAU,CAACb,IAAM;IACxBE,cAAc,EAAGA,cAAgB;IACjCD,QAAQ,EAAGA,QAAU;IACrBa,aAAa,EAAGA,aAAe;IAC/B8B,oBAAoB,EAAGA,CAAA,KACtBxC,8BAA8B,CAAE,IAAK;EACrC,CACD,CACO,CACT,EACDM,aAAA,CAACnC,yBAAyB,QACvB,CAAE;IAAEsE;EAAkB,CAAC,KAAM;IAC9B;IACA;IACA,IACC,EACCA,iBAAiB,CAACrC,MAAM,KAAK,CAAC,IAC9BP,QAAQ,KAAK4C,iBAAiB,CAAE,CAAC,CAAE,CACnC,EACA;MACD,OAAO,IAAI;IACZ;IAEA,OACCnC,aAAA,CAACZ,aAAa;MAEZC,iBAAiB;MACjBC,IAAI;MACJC,QAAQ;MACRC,cAAc;MACdC,2BAA2B;MAC3BC;IAA8B,CAE/B,CAAC;EAEJ,CAC0B,CAAC,EAC1BL,iBAAiB,IAClBW,aAAA,CAACjB,uBAAuB;IACvB4B,OAAO,EAAGkB,OAAS;IACnBF,UAAU,EAAGA,UAAY;IACzBS,MAAM,EAAG5C,cAAgB;IACzBuB,cAAc,EAAGA,cAAgB;IACjCH,MAAM,EAAGA;EAAQ,CACjB,CACD,EACC,CAAEgB,aAAa,IAAI,CAAEd,UAAU,IAChCd,aAAA,CAAC6B,OAAO;IAAA,GAAMF;EAAU,GACvB3B,aAAA,CAAC3B,OAAO,MAAE,CACF,CAEQ,CAAC,EAClBoB,2BAA2B,IAC5BO,aAAA,CAAC1B,KAAK;IACL+D,gBAAgB,EAAC,6CAA6C;IAC9DC,KAAK,EAAG7D,OAAO;IACd;IACAD,EAAE,CAAE,aAAc,CAAC,EACnBkD,UAAU,CAACa,KAAK,CAACC,WAAW,CAAC,CAC9B,CAAG;IACHC,cAAc,EAAGA,CAAA,KAChB/C,8BAA8B,CAAE,KAAM,CACtC;IACDgD,YAAY,EAAG;EAAM,GAErB1C,aAAA,CAACnB,0BAA0B;IAC1BW,cAAc,EAAGA,cAAgB;IACjCD,QAAQ,EAAGA,QAAU;IACrBD,IAAI,EAAGA,IAAM;IACbc,aAAa,EAAGA,aAAe;IAC/BuC,OAAO,EAAGA,CAAA,KACTjD,8BAA8B,CAAE,KAAM;EACtC,CACD,CACK,CAEP,CAAC;AAEL"}
|
|
1
|
+
{"version":3,"names":["useSelect","useDispatch","BlockSettingsMenuControls","useBlockProps","Warning","store","blockEditorStore","RecursionProvider","useHasRecursion","InspectorControls","__experimentalBlockPatternsList","BlockPatternsList","PanelBody","Spinner","Modal","MenuItem","useAsyncList","__","sprintf","coreStore","useState","noticesStore","TemplatePartPlaceholder","TemplatePartSelectionModal","TemplatePartAdvancedControls","TemplatePartInnerBlocks","createTemplatePartId","mapTemplatePartToBlockPattern","useAlternativeBlockPatterns","useAlternativeTemplateParts","useTemplatePartArea","useCreateTemplatePartFromBlocks","ReplaceButton","isEntityAvailable","area","clientId","templatePartId","isTemplatePartSelectionOpen","setIsTemplatePartSelectionOpen","templateParts","blockPatterns","hasReplacements","length","canReplace","createElement","onClick","TemplatesList","availableTemplates","onSelect","shownTemplates","label","shownPatterns","onClickPattern","TemplatePartEdit","attributes","setAttributes","createSuccessNotice","currentTheme","select","getCurrentTheme","stylesheet","slug","theme","tagName","layout","hasAlreadyRendered","isResolved","hasInnerBlocks","isMissing","getEditedEntityRecord","hasFinishedResolution","getBlockCount","getEntityArgs","entityRecord","_area","hasResolvedEntity","Object","keys","areaObject","blockProps","isPlaceholder","TagName","createFromBlocks","partsAsPatterns","map","templatePart","onTemplatePartSelect","undefined","title","rendered","type","Fragment","uniqueId","group","defaultWrapper","onOpenSelectionModal","selectedClientIds","pattern","blocks","postId","overlayClassName","toLowerCase","onRequestClose","isFullScreen","onClose"],"sources":["@wordpress/block-library/src/template-part/edit/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tuseBlockProps,\n\tWarning,\n\tstore as blockEditorStore,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInspectorControls,\n\t__experimentalBlockPatternsList as BlockPatternsList,\n} from '@wordpress/block-editor';\nimport { PanelBody, Spinner, Modal, MenuItem } from '@wordpress/components';\nimport { useAsyncList } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport TemplatePartPlaceholder from './placeholder';\nimport TemplatePartSelectionModal from './selection-modal';\nimport { TemplatePartAdvancedControls } from './advanced-controls';\nimport TemplatePartInnerBlocks from './inner-blocks';\nimport { createTemplatePartId } from './utils/create-template-part-id';\nimport { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseTemplatePartArea,\n\tuseCreateTemplatePartFromBlocks,\n} from './utils/hooks';\n\nfunction ReplaceButton( {\n\tisEntityAvailable,\n\tarea,\n\tclientId,\n\ttemplatePartId,\n\tisTemplatePartSelectionOpen,\n\tsetIsTemplatePartSelectionOpen,\n} ) {\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst hasReplacements = !! templateParts.length || !! blockPatterns.length;\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\t( area === 'header' || area === 'footer' );\n\n\tif ( ! canReplace ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\tsetIsTemplatePartSelectionOpen( true );\n\t\t\t} }\n\t\t\taria-expanded={ isTemplatePartSelectionOpen }\n\t\t\taria-haspopup=\"dialog\"\n\t\t>\n\t\t\t{ __( 'Replace' ) }\n\t\t</MenuItem>\n\t);\n}\n\nfunction TemplatesList( { availableTemplates, onSelect } ) {\n\tconst shownTemplates = useAsyncList( availableTemplates );\n\n\tif ( ! availableTemplates ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockPatternsList\n\t\t\tlabel={ __( 'Templates' ) }\n\t\t\tblockPatterns={ availableTemplates }\n\t\t\tshownPatterns={ shownTemplates }\n\t\t\tonClickPattern={ onSelect }\n\t\t/>\n\t);\n}\n\nexport default function TemplatePartEdit( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n} ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst currentTheme = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme()?.stylesheet,\n\t\t[]\n\t);\n\tconst { slug, theme = currentTheme, tagName, layout = {} } = attributes;\n\tconst templatePartId = createTemplatePartId( theme, slug );\n\tconst hasAlreadyRendered = useHasRecursion( templatePartId );\n\tconst [ isTemplatePartSelectionOpen, setIsTemplatePartSelectionOpen ] =\n\t\tuseState( false );\n\n\tconst { isResolved, hasInnerBlocks, isMissing, area } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getBlockCount } = select( blockEditorStore );\n\n\t\t\tconst getEntityArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\ttemplatePartId,\n\t\t\t];\n\t\t\tconst entityRecord = templatePartId\n\t\t\t\t? getEditedEntityRecord( ...getEntityArgs )\n\t\t\t\t: null;\n\t\t\tconst _area = entityRecord?.area || attributes.area;\n\t\t\tconst hasResolvedEntity = templatePartId\n\t\t\t\t? hasFinishedResolution(\n\t\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t\tgetEntityArgs\n\t\t\t\t )\n\t\t\t\t: false;\n\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: getBlockCount( clientId ) > 0,\n\t\t\t\tisResolved: hasResolvedEntity,\n\t\t\t\tisMissing:\n\t\t\t\t\thasResolvedEntity &&\n\t\t\t\t\t( ! entityRecord ||\n\t\t\t\t\t\tObject.keys( entityRecord ).length === 0 ),\n\t\t\t\tarea: _area,\n\t\t\t};\n\t\t},\n\t\t[ templatePartId, attributes.area, clientId ]\n\t);\n\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst hasReplacements = !! templateParts.length || !! blockPatterns.length;\n\tconst areaObject = useTemplatePartArea( area );\n\tconst blockProps = useBlockProps();\n\tconst isPlaceholder = ! slug;\n\tconst isEntityAvailable = ! isPlaceholder && ! isMissing && isResolved;\n\tconst TagName = tagName || areaObject.tagName;\n\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\t( area === 'header' || area === 'footer' );\n\n\tconst createFromBlocks = useCreateTemplatePartFromBlocks(\n\t\tarea,\n\t\tsetAttributes\n\t);\n\n\t// We don't want to render a missing state if we have any inner blocks.\n\t// A new template part is automatically created if we have any inner blocks but no entity.\n\tif (\n\t\t! hasInnerBlocks &&\n\t\t( ( slug && ! theme ) || ( slug && isMissing ) )\n\t) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: Template part slug */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Template part has been deleted or is unavailable: %s'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tslug\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\tif ( isEntityAvailable && hasAlreadyRendered ) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\tconst partsAsPatterns = templateParts.map( ( templatePart ) =>\n\t\tmapTemplatePartToBlockPattern( templatePart )\n\t);\n\n\tconst onTemplatePartSelect = ( templatePart ) => {\n\t\tsetAttributes( {\n\t\t\tslug: templatePart.slug,\n\t\t\ttheme: templatePart.theme,\n\t\t\tarea: undefined,\n\t\t} );\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" replaceed.' ),\n\t\t\t\ttemplatePart.title?.rendered || templatePart.slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<RecursionProvider uniqueId={ templatePartId }>\n\t\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t\t<TemplatePartAdvancedControls\n\t\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tdefaultWrapper={ areaObject.tagName }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</InspectorControls>\n\t\t\t\t{ isPlaceholder && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<TemplatePartPlaceholder\n\t\t\t\t\t\t\tarea={ attributes.area }\n\t\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tonOpenSelectionModal={ () =>\n\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( true )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t\t<BlockSettingsMenuControls>\n\t\t\t\t\t{ ( { selectedClientIds } ) => {\n\t\t\t\t\t\t// Only enable for single selection that matches the current block.\n\t\t\t\t\t\t// Ensures menu item doesn't render multiple times.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! (\n\t\t\t\t\t\t\t\tselectedClientIds.length === 1 &&\n\t\t\t\t\t\t\t\tclientId === selectedClientIds[ 0 ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ReplaceButton\n\t\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\t\tisEntityAvailable,\n\t\t\t\t\t\t\t\t\tarea,\n\t\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t\ttemplatePartId,\n\t\t\t\t\t\t\t\t\tisTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t</BlockSettingsMenuControls>\n\n\t\t\t\t{ canReplace &&\n\t\t\t\t\t( partsAsPatterns.length > 0 ||\n\t\t\t\t\t\tblockPatterns.length > 0 ) && (\n\t\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t\t<PanelBody title={ __( 'Replace' ) }>\n\t\t\t\t\t\t\t\t<TemplatesList\n\t\t\t\t\t\t\t\t\tavailableTemplates={ partsAsPatterns }\n\t\t\t\t\t\t\t\t\tonSelect={ ( pattern ) => {\n\t\t\t\t\t\t\t\t\t\tonTemplatePartSelect(\n\t\t\t\t\t\t\t\t\t\t\tpattern.templatePart\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<TemplatesList\n\t\t\t\t\t\t\t\t\tavailableTemplates={ blockPatterns }\n\t\t\t\t\t\t\t\t\tonSelect={ ( pattern, blocks ) => {\n\t\t\t\t\t\t\t\t\t\tcreateFromBlocks(\n\t\t\t\t\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\t\t\t\t\tpattern.title\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t) }\n\n\t\t\t\t{ isEntityAvailable && (\n\t\t\t\t\t<TemplatePartInnerBlocks\n\t\t\t\t\t\ttagName={ TagName }\n\t\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\t\tpostId={ templatePartId }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! isPlaceholder && ! isResolved && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t</RecursionProvider>\n\t\t\t{ isTemplatePartSelectionOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\toverlayClassName=\"block-editor-template-part__selection-modal\"\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t// Translators: %s as template part area title (\"Header\", \"Footer\", etc.).\n\t\t\t\t\t\t__( 'Choose a %s' ),\n\t\t\t\t\t\tareaObject.label.toLowerCase()\n\t\t\t\t\t) }\n\t\t\t\t\tonRequestClose={ () =>\n\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t}\n\t\t\t\t\tisFullScreen\n\t\t\t\t>\n\t\t\t\t\t<TemplatePartSelectionModal\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tarea={ area }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tonClose={ () =>\n\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -6,7 +6,6 @@ import { useMemo, useState } from '@wordpress/element';
|
|
|
6
6
|
import { __, sprintf } from '@wordpress/i18n';
|
|
7
7
|
import { store as noticesStore } from '@wordpress/notices';
|
|
8
8
|
import { useDispatch } from '@wordpress/data';
|
|
9
|
-
import { parse } from '@wordpress/blocks';
|
|
10
9
|
import { useAsyncList } from '@wordpress/compose';
|
|
11
10
|
import { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';
|
|
12
11
|
import { SearchControl, __experimentalHStack as HStack } from '@wordpress/components';
|
|
@@ -15,7 +14,7 @@ import { SearchControl, __experimentalHStack as HStack } from '@wordpress/compon
|
|
|
15
14
|
* Internal dependencies
|
|
16
15
|
*/
|
|
17
16
|
import { useAlternativeBlockPatterns, useAlternativeTemplateParts, useCreateTemplatePartFromBlocks } from './utils/hooks';
|
|
18
|
-
import {
|
|
17
|
+
import { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';
|
|
19
18
|
import { searchPatterns } from '../../utils/search-patterns';
|
|
20
19
|
export default function TemplatePartSelectionModal({
|
|
21
20
|
setAttributes,
|
|
@@ -30,12 +29,7 @@ export default function TemplatePartSelectionModal({
|
|
|
30
29
|
} = useAlternativeTemplateParts(area, templatePartId);
|
|
31
30
|
// We can map template parts to block patters to reuse the BlockPatternsList UI
|
|
32
31
|
const filteredTemplateParts = useMemo(() => {
|
|
33
|
-
const partsAsPatterns = templateParts.map(templatePart => (
|
|
34
|
-
name: createTemplatePartId(templatePart.theme, templatePart.slug),
|
|
35
|
-
title: templatePart.title.rendered,
|
|
36
|
-
blocks: parse(templatePart.content.raw),
|
|
37
|
-
templatePart
|
|
38
|
-
}));
|
|
32
|
+
const partsAsPatterns = templateParts.map(templatePart => mapTemplatePartToBlockPattern(templatePart));
|
|
39
33
|
return searchPatterns(partsAsPatterns, searchValue);
|
|
40
34
|
}, [templateParts, searchValue]);
|
|
41
35
|
const shownTemplateParts = useAsyncList(filteredTemplateParts);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","useState","__","sprintf","store","noticesStore","useDispatch","
|
|
1
|
+
{"version":3,"names":["useMemo","useState","__","sprintf","store","noticesStore","useDispatch","useAsyncList","__experimentalBlockPatternsList","BlockPatternsList","SearchControl","__experimentalHStack","HStack","useAlternativeBlockPatterns","useAlternativeTemplateParts","useCreateTemplatePartFromBlocks","mapTemplatePartToBlockPattern","searchPatterns","TemplatePartSelectionModal","setAttributes","onClose","templatePartId","area","clientId","searchValue","setSearchValue","templateParts","filteredTemplateParts","partsAsPatterns","map","templatePart","shownTemplateParts","blockPatterns","filteredBlockPatterns","shownBlockPatterns","createSuccessNotice","onTemplatePartSelect","slug","theme","undefined","title","rendered","type","createFromBlocks","hasTemplateParts","length","hasBlockPatterns","createElement","className","__nextHasNoMarginBottom","onChange","value","label","placeholder","shownPatterns","onClickPattern","pattern","blocks","alignment"],"sources":["@wordpress/block-library/src/template-part/edit/selection-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useDispatch } from '@wordpress/data';\nimport { useAsyncList } from '@wordpress/compose';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport {\n\tSearchControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseCreateTemplatePartFromBlocks,\n} from './utils/hooks';\nimport { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';\nimport { searchPatterns } from '../../utils/search-patterns';\n\nexport default function TemplatePartSelectionModal( {\n\tsetAttributes,\n\tonClose,\n\ttemplatePartId = null,\n\tarea,\n\tclientId,\n} ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\t// We can map template parts to block patters to reuse the BlockPatternsList UI\n\tconst filteredTemplateParts = useMemo( () => {\n\t\tconst partsAsPatterns = templateParts.map( ( templatePart ) =>\n\t\t\tmapTemplatePartToBlockPattern( templatePart )\n\t\t);\n\n\t\treturn searchPatterns( partsAsPatterns, searchValue );\n\t}, [ templateParts, searchValue ] );\n\tconst shownTemplateParts = useAsyncList( filteredTemplateParts );\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\treturn searchPatterns( blockPatterns, searchValue );\n\t}, [ blockPatterns, searchValue ] );\n\tconst shownBlockPatterns = useAsyncList( filteredBlockPatterns );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\tconst onTemplatePartSelect = ( templatePart ) => {\n\t\tsetAttributes( {\n\t\t\tslug: templatePart.slug,\n\t\t\ttheme: templatePart.theme,\n\t\t\tarea: undefined,\n\t\t} );\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" inserted.' ),\n\t\t\t\ttemplatePart.title?.rendered || templatePart.slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t\tonClose();\n\t};\n\n\tconst createFromBlocks = useCreateTemplatePartFromBlocks(\n\t\tarea,\n\t\tsetAttributes\n\t);\n\n\tconst hasTemplateParts = !! filteredTemplateParts.length;\n\tconst hasBlockPatterns = !! filteredBlockPatterns.length;\n\n\treturn (\n\t\t<div className=\"block-library-template-part__selection-content\">\n\t\t\t<div className=\"block-library-template-part__selection-search\">\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tonChange={ setSearchValue }\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tlabel={ __( 'Search for replacements' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ hasTemplateParts && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Existing template parts' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredTemplateParts }\n\t\t\t\t\t\tshownPatterns={ shownTemplateParts }\n\t\t\t\t\t\tonClickPattern={ ( pattern ) => {\n\t\t\t\t\t\t\tonTemplatePartSelect( pattern.templatePart );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ hasBlockPatterns && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Patterns' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredBlockPatterns }\n\t\t\t\t\t\tshownPatterns={ shownBlockPatterns }\n\t\t\t\t\t\tonClickPattern={ ( pattern, blocks ) => {\n\t\t\t\t\t\t\tcreateFromBlocks( blocks, pattern.title );\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ! hasTemplateParts && ! hasBlockPatterns && (\n\t\t\t\t<HStack alignment=\"center\">\n\t\t\t\t\t<p>{ __( 'No results found.' ) }</p>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { parse } from '@wordpress/blocks';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { createTemplatePartId } from './create-template-part-id';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* This maps the properties of a template part to those of a block pattern.
|
|
13
|
+
* @param {Object} templatePart
|
|
14
|
+
* @return {Object} The template part in the shape of block pattern.
|
|
15
|
+
*/
|
|
16
|
+
export function mapTemplatePartToBlockPattern(templatePart) {
|
|
17
|
+
return {
|
|
18
|
+
name: createTemplatePartId(templatePart.theme, templatePart.slug),
|
|
19
|
+
title: templatePart.title.rendered,
|
|
20
|
+
blocks: parse(templatePart.content.raw),
|
|
21
|
+
templatePart
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=map-template-part-to-block-pattern.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["parse","createTemplatePartId","mapTemplatePartToBlockPattern","templatePart","name","theme","slug","title","rendered","blocks","content","raw"],"sources":["@wordpress/block-library/src/template-part/edit/utils/map-template-part-to-block-pattern.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { createTemplatePartId } from './create-template-part-id';\n\n/**\n * This maps the properties of a template part to those of a block pattern.\n * @param {Object} templatePart\n * @return {Object} The template part in the shape of block pattern.\n */\nexport function mapTemplatePartToBlockPattern( templatePart ) {\n\treturn {\n\t\tname: createTemplatePartId( templatePart.theme, templatePart.slug ),\n\t\ttitle: templatePart.title.rendered,\n\t\tblocks: parse( templatePart.content.raw ),\n\t\ttemplatePart,\n\t};\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,QAAQ,mBAAmB;;AAEzC;AACA;AACA;AACA,SAASC,oBAAoB,QAAQ,2BAA2B;;AAEhE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,6BAA6BA,CAAEC,YAAY,EAAG;EAC7D,OAAO;IACNC,IAAI,EAAEH,oBAAoB,CAAEE,YAAY,CAACE,KAAK,EAAEF,YAAY,CAACG,IAAK,CAAC;IACnEC,KAAK,EAAEJ,YAAY,CAACI,KAAK,CAACC,QAAQ;IAClCC,MAAM,EAAET,KAAK,CAAEG,YAAY,CAACO,OAAO,CAACC,GAAI,CAAC;IACzCR;EACD,CAAC;AACF"}
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { useSelect } from '@wordpress/data';
|
|
5
|
+
import { useLayoutEffect, useEffect, useRef } from '@wordpress/element';
|
|
6
|
+
import { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';
|
|
7
|
+
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
5
8
|
import { store as coreStore } from '@wordpress/core-data';
|
|
6
9
|
|
|
7
10
|
/**
|
|
@@ -14,7 +17,55 @@ import { store as coreStore } from '@wordpress/core-data';
|
|
|
14
17
|
export function useCanEditEntity(kind, name, recordId) {
|
|
15
18
|
return useSelect(select => select(coreStore).canUserEditEntityRecord(kind, name, recordId), [kind, name, recordId]);
|
|
16
19
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Handles uploading a media file from a blob URL on mount.
|
|
23
|
+
*
|
|
24
|
+
* @param {Object} args Upload media arguments.
|
|
25
|
+
* @param {string} args.url Blob URL.
|
|
26
|
+
* @param {?Array} args.allowedTypes Array of allowed media types.
|
|
27
|
+
* @param {Function} args.onChange Function called when the media is uploaded.
|
|
28
|
+
* @param {Function} args.onError Function called when an error happens.
|
|
29
|
+
*/
|
|
30
|
+
export function useUploadMediaFromBlobURL(args = {}) {
|
|
31
|
+
const latestArgs = useRef(args);
|
|
32
|
+
const {
|
|
33
|
+
getSettings
|
|
34
|
+
} = useSelect(blockEditorStore);
|
|
35
|
+
useLayoutEffect(() => {
|
|
36
|
+
latestArgs.current = args;
|
|
37
|
+
});
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
if (!latestArgs.current.url || !isBlobURL(latestArgs.current.url)) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const file = getBlobByURL(latestArgs.current.url);
|
|
43
|
+
if (!file) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const {
|
|
47
|
+
url,
|
|
48
|
+
allowedTypes,
|
|
49
|
+
onChange,
|
|
50
|
+
onError
|
|
51
|
+
} = latestArgs.current;
|
|
52
|
+
const {
|
|
53
|
+
mediaUpload
|
|
54
|
+
} = getSettings();
|
|
55
|
+
mediaUpload({
|
|
56
|
+
filesList: [file],
|
|
57
|
+
allowedTypes,
|
|
58
|
+
onFileChange: ([media]) => {
|
|
59
|
+
if (isBlobURL(media?.url)) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
revokeBlobURL(url);
|
|
63
|
+
onChange(media);
|
|
64
|
+
},
|
|
65
|
+
onError: message => {
|
|
66
|
+
onError(message);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}, [getSettings]);
|
|
70
|
+
}
|
|
20
71
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSelect","store","coreStore","useCanEditEntity","kind","name","recordId","select","canUserEditEntityRecord"],"sources":["@wordpress/block-library/src/utils/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Returns whether the current user can edit the given entity.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n */\nexport function useCanEditEntity( kind, name, recordId ) {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).canUserEditEntityRecord( kind, name, recordId ),\n\t\t[ kind, name, recordId ]\n\t);\n}\n\nexport
|
|
1
|
+
{"version":3,"names":["useSelect","useLayoutEffect","useEffect","useRef","getBlobByURL","isBlobURL","revokeBlobURL","store","blockEditorStore","coreStore","useCanEditEntity","kind","name","recordId","select","canUserEditEntityRecord","useUploadMediaFromBlobURL","args","latestArgs","getSettings","current","url","file","allowedTypes","onChange","onError","mediaUpload","filesList","onFileChange","media","message"],"sources":["@wordpress/block-library/src/utils/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useLayoutEffect, useEffect, useRef } from '@wordpress/element';\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Returns whether the current user can edit the given entity.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n */\nexport function useCanEditEntity( kind, name, recordId ) {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).canUserEditEntityRecord( kind, name, recordId ),\n\t\t[ kind, name, recordId ]\n\t);\n}\n\n/**\n * Handles uploading a media file from a blob URL on mount.\n *\n * @param {Object} args Upload media arguments.\n * @param {string} args.url Blob URL.\n * @param {?Array} args.allowedTypes Array of allowed media types.\n * @param {Function} args.onChange Function called when the media is uploaded.\n * @param {Function} args.onError Function called when an error happens.\n */\nexport function useUploadMediaFromBlobURL( args = {} ) {\n\tconst latestArgs = useRef( args );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tuseLayoutEffect( () => {\n\t\tlatestArgs.current = args;\n\t} );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\t! latestArgs.current.url ||\n\t\t\t! isBlobURL( latestArgs.current.url )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( latestArgs.current.url );\n\t\tif ( ! file ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { url, allowedTypes, onChange, onError } = latestArgs.current;\n\t\tconst { mediaUpload } = getSettings();\n\n\t\tmediaUpload( {\n\t\t\tfilesList: [ file ],\n\t\t\tallowedTypes,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tif ( isBlobURL( media?.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\trevokeBlobURL( url );\n\t\t\t\tonChange( media );\n\t\t\t},\n\t\t\tonError: ( message ) => {\n\t\t\t\tonError( message );\n\t\t\t},\n\t\t} );\n\t}, [ getSettings ] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,eAAe,EAAEC,SAAS,EAAEC,MAAM,QAAQ,oBAAoB;AACvE,SAASC,YAAY,EAAEC,SAAS,EAAEC,aAAa,QAAQ,iBAAiB;AACxE,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASD,KAAK,IAAIE,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAG;EACxD,OAAOb,SAAS,CACbc,MAAM,IACPA,MAAM,CAAEL,SAAU,CAAC,CAACM,uBAAuB,CAAEJ,IAAI,EAAEC,IAAI,EAAEC,QAAS,CAAC,EACpE,CAAEF,IAAI,EAAEC,IAAI,EAAEC,QAAQ,CACvB,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,yBAAyBA,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAG;EACtD,MAAMC,UAAU,GAAGf,MAAM,CAAEc,IAAK,CAAC;EACjC,MAAM;IAAEE;EAAY,CAAC,GAAGnB,SAAS,CAAEQ,gBAAiB,CAAC;EAErDP,eAAe,CAAE,MAAM;IACtBiB,UAAU,CAACE,OAAO,GAAGH,IAAI;EAC1B,CAAE,CAAC;EAEHf,SAAS,CAAE,MAAM;IAChB,IACC,CAAEgB,UAAU,CAACE,OAAO,CAACC,GAAG,IACxB,CAAEhB,SAAS,CAAEa,UAAU,CAACE,OAAO,CAACC,GAAI,CAAC,EACpC;MACD;IACD;IAEA,MAAMC,IAAI,GAAGlB,YAAY,CAAEc,UAAU,CAACE,OAAO,CAACC,GAAI,CAAC;IACnD,IAAK,CAAEC,IAAI,EAAG;MACb;IACD;IAEA,MAAM;MAAED,GAAG;MAAEE,YAAY;MAAEC,QAAQ;MAAEC;IAAQ,CAAC,GAAGP,UAAU,CAACE,OAAO;IACnE,MAAM;MAAEM;IAAY,CAAC,GAAGP,WAAW,CAAC,CAAC;IAErCO,WAAW,CAAE;MACZC,SAAS,EAAE,CAAEL,IAAI,CAAE;MACnBC,YAAY;MACZK,YAAY,EAAEA,CAAE,CAAEC,KAAK,CAAE,KAAM;QAC9B,IAAKxB,SAAS,CAAEwB,KAAK,EAAER,GAAI,CAAC,EAAG;UAC9B;QACD;QAEAf,aAAa,CAAEe,GAAI,CAAC;QACpBG,QAAQ,CAAEK,KAAM,CAAC;MAClB,CAAC;MACDJ,OAAO,EAAIK,OAAO,IAAM;QACvBL,OAAO,CAAEK,OAAQ,CAAC;MACnB;IACD,CAAE,CAAC;EACJ,CAAC,EAAE,CAAEX,WAAW,CAAG,CAAC;AACrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","_x","ToggleControl","SelectControl","useMemo","useCallback","Platform","options","value","label","VideoSettings","setAttributes","attributes","autoplay","controls","loop","muted","playsInline","preload","autoPlayHelpText","getAutoplayHelp","select","web","checked","native","toggleFactory","toggleAttribute","attribute","newValue","onChangePreload","createElement","Fragment","__nextHasNoMarginBottom","onChange","help","hideCancelButton"],"sources":["@wordpress/block-library/src/video/edit-common-settings.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { ToggleControl, SelectControl } from '@wordpress/components';\nimport { useMemo, useCallback, Platform } from '@wordpress/element';\n\nconst options = [\n\t{ value: 'auto', label: __( 'Auto' ) },\n\t{ value: 'metadata', label: __( 'Metadata' ) },\n\t{ value: 'none', label: _x( 'None', 'Preload value' ) },\n];\n\nconst VideoSettings = ( { setAttributes, attributes } ) => {\n\tconst { autoplay, controls, loop, muted, playsInline, preload } =\n\t\tattributes;\n\n\tconst autoPlayHelpText = __(\n\t\t'Autoplay may cause usability issues for some users.'\n\t);\n\tconst getAutoplayHelp = Platform.select( {\n\t\tweb: useCallback( ( checked ) => {\n\t\t\treturn checked ? autoPlayHelpText : null;\n\t\t}, [] ),\n\t\tnative: autoPlayHelpText,\n\t} );\n\n\tconst toggleFactory = useMemo( () => {\n\t\tconst toggleAttribute = ( attribute ) => {\n\t\t\treturn ( newValue ) => {\n\t\t\t\tsetAttributes( { [ attribute ]: newValue } );\n\t\t\t};\n\t\t};\n\n\t\treturn {\n\t\t\tautoplay: toggleAttribute( 'autoplay' ),\n\t\t\tloop: toggleAttribute( 'loop' ),\n\t\t\tmuted: toggleAttribute( 'muted' ),\n\t\t\tcontrols: toggleAttribute( 'controls' ),\n\t\t\tplaysInline: toggleAttribute( 'playsInline' ),\n\t\t};\n\t}, [] );\n\n\tconst onChangePreload = useCallback( ( value ) => {\n\t\tsetAttributes( { preload: value } );\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Autoplay' ) }\n\t\t\t\tonChange={ toggleFactory.autoplay }\n\t\t\t\tchecked={ !! autoplay }\n\t\t\t\thelp={ getAutoplayHelp }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Loop' ) }\n\t\t\t\tonChange={ toggleFactory.loop }\n\t\t\t\tchecked={ !! loop }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Muted' ) }\n\t\t\t\tonChange={ toggleFactory.muted }\n\t\t\t\tchecked={ !! muted }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Playback controls' ) }\n\t\t\t\tonChange={ toggleFactory.controls }\n\t\t\t\tchecked={ !! controls }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Play inline' ) }\n\t\t\t\tonChange={ toggleFactory.playsInline }\n\t\t\t\tchecked={ !! playsInline }\n\t\t\t/>\n\t\t\t<SelectControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Preload' ) }\n\t\t\t\tvalue={ preload }\n\t\t\t\tonChange={ onChangePreload }\n\t\t\t\toptions={ options }\n\t\t\t\thideCancelButton
|
|
1
|
+
{"version":3,"names":["__","_x","ToggleControl","SelectControl","useMemo","useCallback","Platform","options","value","label","VideoSettings","setAttributes","attributes","autoplay","controls","loop","muted","playsInline","preload","autoPlayHelpText","getAutoplayHelp","select","web","checked","native","toggleFactory","toggleAttribute","attribute","newValue","onChangePreload","createElement","Fragment","__nextHasNoMarginBottom","onChange","help","hideCancelButton"],"sources":["@wordpress/block-library/src/video/edit-common-settings.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { ToggleControl, SelectControl } from '@wordpress/components';\nimport { useMemo, useCallback, Platform } from '@wordpress/element';\n\nconst options = [\n\t{ value: 'auto', label: __( 'Auto' ) },\n\t{ value: 'metadata', label: __( 'Metadata' ) },\n\t{ value: 'none', label: _x( 'None', 'Preload value' ) },\n];\n\nconst VideoSettings = ( { setAttributes, attributes } ) => {\n\tconst { autoplay, controls, loop, muted, playsInline, preload } =\n\t\tattributes;\n\n\tconst autoPlayHelpText = __(\n\t\t'Autoplay may cause usability issues for some users.'\n\t);\n\tconst getAutoplayHelp = Platform.select( {\n\t\tweb: useCallback( ( checked ) => {\n\t\t\treturn checked ? autoPlayHelpText : null;\n\t\t}, [] ),\n\t\tnative: autoPlayHelpText,\n\t} );\n\n\tconst toggleFactory = useMemo( () => {\n\t\tconst toggleAttribute = ( attribute ) => {\n\t\t\treturn ( newValue ) => {\n\t\t\t\tsetAttributes( { [ attribute ]: newValue } );\n\t\t\t};\n\t\t};\n\n\t\treturn {\n\t\t\tautoplay: toggleAttribute( 'autoplay' ),\n\t\t\tloop: toggleAttribute( 'loop' ),\n\t\t\tmuted: toggleAttribute( 'muted' ),\n\t\t\tcontrols: toggleAttribute( 'controls' ),\n\t\t\tplaysInline: toggleAttribute( 'playsInline' ),\n\t\t};\n\t}, [] );\n\n\tconst onChangePreload = useCallback( ( value ) => {\n\t\tsetAttributes( { preload: value } );\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Autoplay' ) }\n\t\t\t\tonChange={ toggleFactory.autoplay }\n\t\t\t\tchecked={ !! autoplay }\n\t\t\t\thelp={ getAutoplayHelp }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Loop' ) }\n\t\t\t\tonChange={ toggleFactory.loop }\n\t\t\t\tchecked={ !! loop }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Muted' ) }\n\t\t\t\tonChange={ toggleFactory.muted }\n\t\t\t\tchecked={ !! muted }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Playback controls' ) }\n\t\t\t\tonChange={ toggleFactory.controls }\n\t\t\t\tchecked={ !! controls }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Play inline' ) }\n\t\t\t\tonChange={ toggleFactory.playsInline }\n\t\t\t\tchecked={ !! playsInline }\n\t\t\t/>\n\t\t\t<SelectControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Preload' ) }\n\t\t\t\tvalue={ preload }\n\t\t\t\tonChange={ onChangePreload }\n\t\t\t\toptions={ options }\n\t\t\t\thideCancelButton\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nexport default VideoSettings;\n"],"mappings":"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"}
|
|
@@ -7,13 +7,13 @@ import classnames from 'classnames';
|
|
|
7
7
|
/**
|
|
8
8
|
* WordPress dependencies
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { isBlobURL } from '@wordpress/blob';
|
|
11
11
|
import { BaseControl, Button, Disabled, PanelBody, Spinner, Placeholder } from '@wordpress/components';
|
|
12
|
-
import { BlockControls, BlockIcon, InspectorControls, MediaPlaceholder, MediaUpload, MediaUploadCheck, MediaReplaceFlow, useBlockProps
|
|
12
|
+
import { BlockControls, BlockIcon, InspectorControls, MediaPlaceholder, MediaUpload, MediaUploadCheck, MediaReplaceFlow, useBlockProps } from '@wordpress/block-editor';
|
|
13
13
|
import { useRef, useEffect } from '@wordpress/element';
|
|
14
14
|
import { __, sprintf } from '@wordpress/i18n';
|
|
15
15
|
import { useInstanceId } from '@wordpress/compose';
|
|
16
|
-
import { useDispatch
|
|
16
|
+
import { useDispatch } from '@wordpress/data';
|
|
17
17
|
import { video as icon } from '@wordpress/icons';
|
|
18
18
|
import { store as noticesStore } from '@wordpress/notices';
|
|
19
19
|
|
|
@@ -21,6 +21,7 @@ import { store as noticesStore } from '@wordpress/notices';
|
|
|
21
21
|
* Internal dependencies
|
|
22
22
|
*/
|
|
23
23
|
import { createUpgradedEmbedBlock } from '../embed/util';
|
|
24
|
+
import { useUploadMediaFromBlobURL } from '../utils/hooks';
|
|
24
25
|
import VideoCommonSettings from './edit-common-settings';
|
|
25
26
|
import TracksEditor from './tracks-editor';
|
|
26
27
|
import Tracks from './tracks';
|
|
@@ -57,22 +58,12 @@ function VideoEdit({
|
|
|
57
58
|
tracks
|
|
58
59
|
} = attributes;
|
|
59
60
|
const isTemporaryVideo = !id && isBlobURL(src);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if (file) {
|
|
67
|
-
getSettings().mediaUpload({
|
|
68
|
-
filesList: [file],
|
|
69
|
-
onFileChange: ([media]) => onSelectVideo(media),
|
|
70
|
-
onError: onUploadError,
|
|
71
|
-
allowedTypes: ALLOWED_MEDIA_TYPES
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}, []);
|
|
61
|
+
useUploadMediaFromBlobURL({
|
|
62
|
+
url: src,
|
|
63
|
+
allowedTypes: ALLOWED_MEDIA_TYPES,
|
|
64
|
+
onChange: onSelectVideo,
|
|
65
|
+
onError: onUploadError
|
|
66
|
+
});
|
|
76
67
|
useEffect(() => {
|
|
77
68
|
// Placeholder may be rendered.
|
|
78
69
|
if (videoPlayer.current) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","getBlobByURL","isBlobURL","BaseControl","Button","Disabled","PanelBody","Spinner","Placeholder","BlockControls","BlockIcon","InspectorControls","MediaPlaceholder","MediaUpload","MediaUploadCheck","MediaReplaceFlow","useBlockProps","store","blockEditorStore","useRef","useEffect","__","sprintf","useInstanceId","useDispatch","useSelect","video","icon","noticesStore","createUpgradedEmbedBlock","VideoCommonSettings","TracksEditor","Tracks","Caption","placeholder","content","createElement","className","withIllustration","label","instructions","ALLOWED_MEDIA_TYPES","VIDEO_POSTER_ALLOWED_MEDIA_TYPES","VideoEdit","isSelected","isSingleSelected","attributes","setAttributes","insertBlocksAfter","onReplace","instanceId","videoPlayer","posterImageButton","id","controls","poster","src","tracks","isTemporaryVideo","getSettings","file","mediaUpload","filesList","onFileChange","media","onSelectVideo","onError","onUploadError","allowedTypes","current","load","url","undefined","caption","image","onSelectURL","newSrc","embedBlock","createErrorNotice","message","type","classes","blockProps","onSelect","accept","value","onSelectPoster","onRemovePoster","focus","videoPosterDescription","Fragment","onChange","newTracks","group","mediaId","mediaURL","title","VisualLabel","render","open","variant","onClick","ref","hidden","isDisabled","showToolbarButton"],"sources":["@wordpress/block-library/src/video/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL } from '@wordpress/blob';\nimport {\n\tBaseControl,\n\tButton,\n\tDisabled,\n\tPanelBody,\n\tSpinner,\n\tPlaceholder,\n} from '@wordpress/components';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tMediaPlaceholder,\n\tMediaUpload,\n\tMediaUploadCheck,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useRef, useEffect } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { video as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport VideoCommonSettings from './edit-common-settings';\nimport TracksEditor from './tracks-editor';\nimport Tracks from './tracks';\nimport { Caption } from '../utils/caption';\n\n// Much of this description is duplicated from MediaPlaceholder.\nconst placeholder = ( content ) => {\n\treturn (\n\t\t<Placeholder\n\t\t\tclassName=\"block-editor-media-placeholder\"\n\t\t\twithIllustration={ true }\n\t\t\ticon={ icon }\n\t\t\tlabel={ __( 'Video' ) }\n\t\t\tinstructions={ __(\n\t\t\t\t'Upload a video file, pick one from your media library, or add one with a URL.'\n\t\t\t) }\n\t\t>\n\t\t\t{ content }\n\t\t</Placeholder>\n\t);\n};\n\nconst ALLOWED_MEDIA_TYPES = [ 'video' ];\nconst VIDEO_POSTER_ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nfunction VideoEdit( {\n\tisSelected: isSingleSelected,\n\tattributes,\n\tclassName,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tonReplace,\n} ) {\n\tconst instanceId = useInstanceId( VideoEdit );\n\tconst videoPlayer = useRef();\n\tconst posterImageButton = useRef();\n\tconst { id, controls, poster, src, tracks } = attributes;\n\tconst isTemporaryVideo = ! id && isBlobURL( src );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( ! id && isBlobURL( src ) ) {\n\t\t\tconst file = getBlobByURL( src );\n\t\t\tif ( file ) {\n\t\t\t\tgetSettings().mediaUpload( {\n\t\t\t\t\tfilesList: [ file ],\n\t\t\t\t\tonFileChange: ( [ media ] ) => onSelectVideo( media ),\n\t\t\t\t\tonError: onUploadError,\n\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}, [] );\n\n\tuseEffect( () => {\n\t\t// Placeholder may be rendered.\n\t\tif ( videoPlayer.current ) {\n\t\t\tvideoPlayer.current.load();\n\t\t}\n\t}, [ poster ] );\n\n\tfunction onSelectVideo( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\t// In this case there was an error\n\t\t\t// previous attributes should be removed\n\t\t\t// because they may be temporary blob urls.\n\t\t\tsetAttributes( {\n\t\t\t\tsrc: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\tposter: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\t// Sets the block's attribute and updates the edit component from the\n\t\t// selected media.\n\t\tsetAttributes( {\n\t\t\tsrc: media.url,\n\t\t\tid: media.id,\n\t\t\tposter:\n\t\t\t\tmedia.image?.src !== media.icon ? media.image?.src : undefined,\n\t\t\tcaption: media.caption,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newSrc ) {\n\t\tif ( newSrc !== src ) {\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url: newSrc },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock && onReplace ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetAttributes( { src: newSrc, id: undefined, poster: undefined } );\n\t\t}\n\t}\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': isTemporaryVideo,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t} );\n\n\tif ( ! src ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tvalue={ attributes }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tfunction onSelectPoster( image ) {\n\t\tsetAttributes( { poster: image.url } );\n\t}\n\n\tfunction onRemovePoster() {\n\t\tsetAttributes( { poster: undefined } );\n\n\t\t// Move focus back to the Media Upload button.\n\t\tposterImageButton.current.focus();\n\t}\n\n\tconst videoPosterDescription = `video-block__poster-image-description-${ instanceId }`;\n\n\treturn (\n\t\t<>\n\t\t\t{ isSingleSelected && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls>\n\t\t\t\t\t\t<TracksEditor\n\t\t\t\t\t\t\ttracks={ tracks }\n\t\t\t\t\t\t\tonChange={ ( newTracks ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { tracks: newTracks } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\t\tmediaURL={ src }\n\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<VideoCommonSettings\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t/>\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<BaseControl className=\"editor-video-poster-control\">\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ __( 'Poster image' ) }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\ttitle={ __( 'Select poster image' ) }\n\t\t\t\t\t\t\t\tonSelect={ onSelectPoster }\n\t\t\t\t\t\t\t\tallowedTypes={\n\t\t\t\t\t\t\t\t\tVIDEO_POSTER_ALLOWED_MEDIA_TYPES\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t\tref={ posterImageButton }\n\t\t\t\t\t\t\t\t\t\taria-describedby={\n\t\t\t\t\t\t\t\t\t\t\tvideoPosterDescription\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ ! poster\n\t\t\t\t\t\t\t\t\t\t\t? __( 'Select' )\n\t\t\t\t\t\t\t\t\t\t\t: __( 'Replace' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p id={ videoPosterDescription } hidden>\n\t\t\t\t\t\t\t\t{ poster\n\t\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: poster image URL. */\n\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t'The current poster image url is %s'\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\tposter\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t'There is no poster image currently selected'\n\t\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t{ !! poster && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tonClick={ onRemovePoster }\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t{ /*\n\t\t\t\t\tDisable the video tag if the block is not selected\n\t\t\t\t\tso the user clicking on it won't play the\n\t\t\t\t\tvideo when the controls are enabled.\n\t\t\t\t*/ }\n\t\t\t\t<Disabled isDisabled={ ! isSingleSelected }>\n\t\t\t\t\t<video\n\t\t\t\t\t\tcontrols={ controls }\n\t\t\t\t\t\tposter={ poster }\n\t\t\t\t\t\tsrc={ src }\n\t\t\t\t\t\tref={ videoPlayer }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tracks tracks={ tracks } />\n\t\t\t\t\t</video>\n\t\t\t\t</Disabled>\n\t\t\t\t{ isTemporaryVideo && <Spinner /> }\n\t\t\t\t<Caption\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSelected={ isSingleSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tlabel={ __( 'Video caption text' ) }\n\t\t\t\t\tshowToolbarButton={ isSingleSelected }\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t</>\n\t);\n}\n\nexport default VideoEdit;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["classnames","isBlobURL","BaseControl","Button","Disabled","PanelBody","Spinner","Placeholder","BlockControls","BlockIcon","InspectorControls","MediaPlaceholder","MediaUpload","MediaUploadCheck","MediaReplaceFlow","useBlockProps","useRef","useEffect","__","sprintf","useInstanceId","useDispatch","video","icon","store","noticesStore","createUpgradedEmbedBlock","useUploadMediaFromBlobURL","VideoCommonSettings","TracksEditor","Tracks","Caption","placeholder","content","createElement","className","withIllustration","label","instructions","ALLOWED_MEDIA_TYPES","VIDEO_POSTER_ALLOWED_MEDIA_TYPES","VideoEdit","isSelected","isSingleSelected","attributes","setAttributes","insertBlocksAfter","onReplace","instanceId","videoPlayer","posterImageButton","id","controls","poster","src","tracks","isTemporaryVideo","url","allowedTypes","onChange","onSelectVideo","onError","onUploadError","current","load","media","undefined","caption","image","onSelectURL","newSrc","embedBlock","createErrorNotice","message","type","classes","blockProps","onSelect","accept","value","onSelectPoster","onRemovePoster","focus","videoPosterDescription","Fragment","newTracks","group","mediaId","mediaURL","title","VisualLabel","render","open","variant","onClick","ref","hidden","isDisabled","showToolbarButton"],"sources":["@wordpress/block-library/src/video/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { isBlobURL } from '@wordpress/blob';\nimport {\n\tBaseControl,\n\tButton,\n\tDisabled,\n\tPanelBody,\n\tSpinner,\n\tPlaceholder,\n} from '@wordpress/components';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tMediaPlaceholder,\n\tMediaUpload,\n\tMediaUploadCheck,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { useRef, useEffect } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useDispatch } from '@wordpress/data';\nimport { video as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport { useUploadMediaFromBlobURL } from '../utils/hooks';\nimport VideoCommonSettings from './edit-common-settings';\nimport TracksEditor from './tracks-editor';\nimport Tracks from './tracks';\nimport { Caption } from '../utils/caption';\n\n// Much of this description is duplicated from MediaPlaceholder.\nconst placeholder = ( content ) => {\n\treturn (\n\t\t<Placeholder\n\t\t\tclassName=\"block-editor-media-placeholder\"\n\t\t\twithIllustration\n\t\t\ticon={ icon }\n\t\t\tlabel={ __( 'Video' ) }\n\t\t\tinstructions={ __(\n\t\t\t\t'Upload a video file, pick one from your media library, or add one with a URL.'\n\t\t\t) }\n\t\t>\n\t\t\t{ content }\n\t\t</Placeholder>\n\t);\n};\n\nconst ALLOWED_MEDIA_TYPES = [ 'video' ];\nconst VIDEO_POSTER_ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nfunction VideoEdit( {\n\tisSelected: isSingleSelected,\n\tattributes,\n\tclassName,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tonReplace,\n} ) {\n\tconst instanceId = useInstanceId( VideoEdit );\n\tconst videoPlayer = useRef();\n\tconst posterImageButton = useRef();\n\tconst { id, controls, poster, src, tracks } = attributes;\n\tconst isTemporaryVideo = ! id && isBlobURL( src );\n\n\tuseUploadMediaFromBlobURL( {\n\t\turl: src,\n\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\tonChange: onSelectVideo,\n\t\tonError: onUploadError,\n\t} );\n\n\tuseEffect( () => {\n\t\t// Placeholder may be rendered.\n\t\tif ( videoPlayer.current ) {\n\t\t\tvideoPlayer.current.load();\n\t\t}\n\t}, [ poster ] );\n\n\tfunction onSelectVideo( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\t// In this case there was an error\n\t\t\t// previous attributes should be removed\n\t\t\t// because they may be temporary blob urls.\n\t\t\tsetAttributes( {\n\t\t\t\tsrc: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\tposter: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\t// Sets the block's attribute and updates the edit component from the\n\t\t// selected media.\n\t\tsetAttributes( {\n\t\t\tsrc: media.url,\n\t\t\tid: media.id,\n\t\t\tposter:\n\t\t\t\tmedia.image?.src !== media.icon ? media.image?.src : undefined,\n\t\t\tcaption: media.caption,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newSrc ) {\n\t\tif ( newSrc !== src ) {\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url: newSrc },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock && onReplace ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetAttributes( { src: newSrc, id: undefined, poster: undefined } );\n\t\t}\n\t}\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': isTemporaryVideo,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t} );\n\n\tif ( ! src ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tvalue={ attributes }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tfunction onSelectPoster( image ) {\n\t\tsetAttributes( { poster: image.url } );\n\t}\n\n\tfunction onRemovePoster() {\n\t\tsetAttributes( { poster: undefined } );\n\n\t\t// Move focus back to the Media Upload button.\n\t\tposterImageButton.current.focus();\n\t}\n\n\tconst videoPosterDescription = `video-block__poster-image-description-${ instanceId }`;\n\n\treturn (\n\t\t<>\n\t\t\t{ isSingleSelected && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls>\n\t\t\t\t\t\t<TracksEditor\n\t\t\t\t\t\t\ttracks={ tracks }\n\t\t\t\t\t\t\tonChange={ ( newTracks ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { tracks: newTracks } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\t\tmediaURL={ src }\n\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<VideoCommonSettings\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t/>\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<BaseControl className=\"editor-video-poster-control\">\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ __( 'Poster image' ) }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\ttitle={ __( 'Select poster image' ) }\n\t\t\t\t\t\t\t\tonSelect={ onSelectPoster }\n\t\t\t\t\t\t\t\tallowedTypes={\n\t\t\t\t\t\t\t\t\tVIDEO_POSTER_ALLOWED_MEDIA_TYPES\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t\tref={ posterImageButton }\n\t\t\t\t\t\t\t\t\t\taria-describedby={\n\t\t\t\t\t\t\t\t\t\t\tvideoPosterDescription\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ ! poster\n\t\t\t\t\t\t\t\t\t\t\t? __( 'Select' )\n\t\t\t\t\t\t\t\t\t\t\t: __( 'Replace' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p id={ videoPosterDescription } hidden>\n\t\t\t\t\t\t\t\t{ poster\n\t\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: poster image URL. */\n\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t'The current poster image url is %s'\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\tposter\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t'There is no poster image currently selected'\n\t\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t{ !! poster && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tonClick={ onRemovePoster }\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t{ /*\n\t\t\t\t\tDisable the video tag if the block is not selected\n\t\t\t\t\tso the user clicking on it won't play the\n\t\t\t\t\tvideo when the controls are enabled.\n\t\t\t\t*/ }\n\t\t\t\t<Disabled isDisabled={ ! isSingleSelected }>\n\t\t\t\t\t<video\n\t\t\t\t\t\tcontrols={ controls }\n\t\t\t\t\t\tposter={ poster }\n\t\t\t\t\t\tsrc={ src }\n\t\t\t\t\t\tref={ videoPlayer }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tracks tracks={ tracks } />\n\t\t\t\t\t</video>\n\t\t\t\t</Disabled>\n\t\t\t\t{ isTemporaryVideo && <Spinner /> }\n\t\t\t\t<Caption\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSelected={ isSingleSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tlabel={ __( 'Video caption text' ) }\n\t\t\t\t\tshowToolbarButton={ isSingleSelected }\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t</>\n\t);\n}\n\nexport default VideoEdit;\n"],"mappings":"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"}
|
|
@@ -217,8 +217,7 @@ class VideoEdit extends Component {
|
|
|
217
217
|
} = this.props;
|
|
218
218
|
const {
|
|
219
219
|
id,
|
|
220
|
-
src
|
|
221
|
-
guid
|
|
220
|
+
src
|
|
222
221
|
} = attributes;
|
|
223
222
|
const {
|
|
224
223
|
videoContainerHeight
|
|
@@ -239,11 +238,7 @@ class VideoEdit extends Component {
|
|
|
239
238
|
}));
|
|
240
239
|
}
|
|
241
240
|
});
|
|
242
|
-
|
|
243
|
-
// NOTE: `guid` is not part of the block's attribute definition. This case
|
|
244
|
-
// handled here is a temporary fix until a we find a better approach.
|
|
245
|
-
const isSourcePresent = src || guid && id;
|
|
246
|
-
if (!isSourcePresent) {
|
|
241
|
+
if (!src) {
|
|
247
242
|
return createElement(View, {
|
|
248
243
|
style: {
|
|
249
244
|
flex: 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["View","TouchableWithoutFeedback","Text","Component","mediaUploadSync","requestImageFailedRetryDialog","requestImageUploadCancelDialog","Icon","ToolbarButton","ToolbarGroup","PanelBody","withPreferredColorScheme","compose","BlockCaption","MediaPlaceholder","MediaUpload","MediaUploadProgress","MEDIA_TYPE_VIDEO","BlockControls","VIDEO_ASPECT_RATIO","VideoPlayer","InspectorControls","RichText","store","blockEditorStore","__","sprintf","isURL","getProtocol","doAction","hasAction","video","SvgIcon","replace","withDispatch","withSelect","noticesStore","createUpgradedEmbedBlock","style","SvgIconRetry","VideoCommonSettings","ICON_TYPE","PLACEHOLDER","RETRY","UPLOAD","VideoEdit","constructor","props","state","isCaptionSelected","videoContainerHeight","mediaUploadStateReset","bind","onSelectMediaUploadOption","onSelectURL","finishMediaUploadWithSuccess","finishMediaUploadWithFailure","updateMediaProgress","onVideoPressed","onVideoContanerLayout","onFocusCaption","componentDidMount","attributes","id","src","componentWillUnmount","isUploadInProgress","getDerivedStateFromProps","isSelected","setState","payload","setAttributes","mediaUrl","url","mediaServerId","mediaId","createErrorNotice","onReplace","test","embedBlock","undefined","poster","event","width","nativeEvent","layout","height","getIcon","iconType","iconStyle","createElement","icon","getStylesFromColorScheme","iconDark","iconUploading","iconUploadingDark","render","wasBlockJustInserted","guid","toolbarEditButton","allowedTypes","isReplacingMedia","onSelect","open","getMediaOptions","label","onClick","isSourcePresent","flex","onFocus","autoOpenMediaUpload","accessible","onPress","disabled","title","onFinishMediaUploadWithSuccess","onFinishMediaUploadWithFailure","onUpdateMediaProgress","onMediaUploadStateReset","renderContent","isUploadFailed","retryMessage","showVideo","styleIconContainer","modalIconRetry","modalIcon","iconContainer","videoStyle","containerStyle","containerFocused","container","onLayout","videoContainer","source","uri","paused","placeholderContainer","placeholderContainerDark","uploadFailedText","accessibilityLabelCreator","caption","isEmpty","clientId","onBlur","insertBlocksAfter","select","dispatch"],"sources":["@wordpress/block-library/src/video/edit.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View, TouchableWithoutFeedback, Text } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport {\n\tmediaUploadSync,\n\trequestImageFailedRetryDialog,\n\trequestImageUploadCancelDialog,\n} from '@wordpress/react-native-bridge';\nimport {\n\tIcon,\n\tToolbarButton,\n\tToolbarGroup,\n\tPanelBody,\n} from '@wordpress/components';\nimport { withPreferredColorScheme, compose } from '@wordpress/compose';\nimport {\n\tBlockCaption,\n\tMediaPlaceholder,\n\tMediaUpload,\n\tMediaUploadProgress,\n\tMEDIA_TYPE_VIDEO,\n\tBlockControls,\n\tVIDEO_ASPECT_RATIO,\n\tVideoPlayer,\n\tInspectorControls,\n\tRichText,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { isURL, getProtocol } from '@wordpress/url';\nimport { doAction, hasAction } from '@wordpress/hooks';\nimport { video as SvgIcon, replace } from '@wordpress/icons';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport style from './style.scss';\nimport SvgIconRetry from './icon-retry';\nimport VideoCommonSettings from './edit-common-settings';\n\nconst ICON_TYPE = {\n\tPLACEHOLDER: 'placeholder',\n\tRETRY: 'retry',\n\tUPLOAD: 'upload',\n};\n\nclass VideoEdit extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.state = {\n\t\t\tisCaptionSelected: false,\n\t\t\tvideoContainerHeight: 0,\n\t\t};\n\n\t\tthis.mediaUploadStateReset = this.mediaUploadStateReset.bind( this );\n\t\tthis.onSelectMediaUploadOption =\n\t\t\tthis.onSelectMediaUploadOption.bind( this );\n\t\tthis.onSelectURL = this.onSelectURL.bind( this );\n\t\tthis.finishMediaUploadWithSuccess =\n\t\t\tthis.finishMediaUploadWithSuccess.bind( this );\n\t\tthis.finishMediaUploadWithFailure =\n\t\t\tthis.finishMediaUploadWithFailure.bind( this );\n\t\tthis.updateMediaProgress = this.updateMediaProgress.bind( this );\n\t\tthis.onVideoPressed = this.onVideoPressed.bind( this );\n\t\tthis.onVideoContanerLayout = this.onVideoContanerLayout.bind( this );\n\t\tthis.onFocusCaption = this.onFocusCaption.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\t\tconst { attributes } = this.props;\n\t\tif ( attributes.id && getProtocol( attributes.src ) === 'file:' ) {\n\t\t\tmediaUploadSync();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// This action will only exist if the user pressed the trash button on the block holder.\n\t\tif (\n\t\t\thasAction( 'blocks.onRemoveBlockCheckUpload' ) &&\n\t\t\tthis.state.isUploadInProgress\n\t\t) {\n\t\t\tdoAction(\n\t\t\t\t'blocks.onRemoveBlockCheckUpload',\n\t\t\t\tthis.props.attributes.id\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic getDerivedStateFromProps( props, state ) {\n\t\t// Avoid a UI flicker in the toolbar by insuring that isCaptionSelected\n\t\t// is updated immediately any time the isSelected prop becomes false.\n\t\treturn {\n\t\t\tisCaptionSelected: props.isSelected && state.isCaptionSelected,\n\t\t};\n\t}\n\n\tonVideoPressed() {\n\t\tconst { attributes } = this.props;\n\n\t\tif ( this.state.isUploadInProgress ) {\n\t\t\trequestImageUploadCancelDialog( attributes.id );\n\t\t} else if (\n\t\t\tattributes.id &&\n\t\t\tgetProtocol( attributes.src ) === 'file:'\n\t\t) {\n\t\t\trequestImageFailedRetryDialog( attributes.id );\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tisCaptionSelected: false,\n\t\t} );\n\t}\n\n\tonFocusCaption() {\n\t\tif ( ! this.state.isCaptionSelected ) {\n\t\t\tthis.setState( { isCaptionSelected: true } );\n\t\t}\n\t}\n\n\tupdateMediaProgress( payload ) {\n\t\tconst { setAttributes } = this.props;\n\t\tif ( payload.mediaUrl ) {\n\t\t\tsetAttributes( { url: payload.mediaUrl } );\n\t\t}\n\t\tif ( ! this.state.isUploadInProgress ) {\n\t\t\tthis.setState( { isUploadInProgress: true } );\n\t\t}\n\t}\n\n\tfinishMediaUploadWithSuccess( payload ) {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { src: payload.mediaUrl, id: payload.mediaServerId } );\n\t\tthis.setState( { isUploadInProgress: false } );\n\t}\n\n\tfinishMediaUploadWithFailure( payload ) {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { id: payload.mediaId } );\n\t\tthis.setState( { isUploadInProgress: false } );\n\t}\n\n\tmediaUploadStateReset() {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { id: null, src: null } );\n\t\tthis.setState( { isUploadInProgress: false } );\n\t}\n\n\tonSelectMediaUploadOption( { id, url } ) {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { id, src: url } );\n\t}\n\n\tonSelectURL( url ) {\n\t\tconst { createErrorNotice, onReplace, setAttributes } = this.props;\n\n\t\tif ( isURL( url ) && /^https?:/.test( getProtocol( url ) ) ) {\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetAttributes( { src: url, id: undefined, poster: undefined } );\n\t\t} else {\n\t\t\tcreateErrorNotice( __( 'Invalid URL.' ) );\n\t\t}\n\t}\n\n\tonVideoContanerLayout( event ) {\n\t\tconst { width } = event.nativeEvent.layout;\n\t\tconst height = width / VIDEO_ASPECT_RATIO;\n\t\tif ( height !== this.state.videoContainerHeight ) {\n\t\t\tthis.setState( { videoContainerHeight: height } );\n\t\t}\n\t}\n\n\tgetIcon( iconType ) {\n\t\tlet iconStyle;\n\t\tswitch ( iconType ) {\n\t\t\tcase ICON_TYPE.RETRY:\n\t\t\t\treturn <Icon icon={ SvgIconRetry } { ...style.icon } />;\n\t\t\tcase ICON_TYPE.PLACEHOLDER:\n\t\t\t\ticonStyle = this.props.getStylesFromColorScheme(\n\t\t\t\t\tstyle.icon,\n\t\t\t\t\tstyle.iconDark\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.UPLOAD:\n\t\t\t\ticonStyle = this.props.getStylesFromColorScheme(\n\t\t\t\t\tstyle.iconUploading,\n\t\t\t\t\tstyle.iconUploadingDark\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn <Icon icon={ SvgIcon } { ...iconStyle } />;\n\t}\n\n\trender() {\n\t\tconst { setAttributes, attributes, isSelected, wasBlockJustInserted } =\n\t\t\tthis.props;\n\t\tconst { id, src, guid } = attributes;\n\t\tconst { videoContainerHeight } = this.state;\n\n\t\tconst toolbarEditButton = (\n\t\t\t<MediaUpload\n\t\t\t\tallowedTypes={ [ MEDIA_TYPE_VIDEO ] }\n\t\t\t\tisReplacingMedia={ true }\n\t\t\t\tonSelect={ this.onSelectMediaUploadOption }\n\t\t\t\tonSelectURL={ this.onSelectURL }\n\t\t\t\trender={ ( { open, getMediaOptions } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t\t{ getMediaOptions() }\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\tlabel={ __( 'Edit video' ) }\n\t\t\t\t\t\t\t\ticon={ replace }\n\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t></MediaUpload>\n\t\t);\n\n\t\t// NOTE: `guid` is not part of the block's attribute definition. This case\n\t\t// handled here is a temporary fix until a we find a better approach.\n\t\tconst isSourcePresent = src || ( guid && id );\n\t\tif ( ! isSourcePresent ) {\n\t\t\treturn (\n\t\t\t\t<View style={ { flex: 1 } }>\n\t\t\t\t\t<MediaPlaceholder\n\t\t\t\t\t\tallowedTypes={ [ MEDIA_TYPE_VIDEO ] }\n\t\t\t\t\t\tonSelect={ this.onSelectMediaUploadOption }\n\t\t\t\t\t\tonSelectURL={ this.onSelectURL }\n\t\t\t\t\t\ticon={ this.getIcon( ICON_TYPE.PLACEHOLDER ) }\n\t\t\t\t\t\tonFocus={ this.props.onFocus }\n\t\t\t\t\t\tautoOpenMediaUpload={\n\t\t\t\t\t\t\tisSelected && wasBlockJustInserted\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<TouchableWithoutFeedback\n\t\t\t\taccessible={ ! isSelected }\n\t\t\t\tonPress={ this.onVideoPressed }\n\t\t\t\tdisabled={ ! isSelected }\n\t\t\t>\n\t\t\t\t<View style={ { flex: 1 } }>\n\t\t\t\t\t{ ! this.state.isCaptionSelected && (\n\t\t\t\t\t\t<BlockControls>{ toolbarEditButton }</BlockControls>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isSelected && (\n\t\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t\t\t\t<VideoCommonSettings\n\t\t\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t) }\n\t\t\t\t\t<MediaUploadProgress\n\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\tonFinishMediaUploadWithSuccess={\n\t\t\t\t\t\t\tthis.finishMediaUploadWithSuccess\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonFinishMediaUploadWithFailure={\n\t\t\t\t\t\t\tthis.finishMediaUploadWithFailure\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonUpdateMediaProgress={ this.updateMediaProgress }\n\t\t\t\t\t\tonMediaUploadStateReset={ this.mediaUploadStateReset }\n\t\t\t\t\t\trenderContent={ ( {\n\t\t\t\t\t\t\tisUploadInProgress,\n\t\t\t\t\t\t\tisUploadFailed,\n\t\t\t\t\t\t\tretryMessage,\n\t\t\t\t\t\t} ) => {\n\t\t\t\t\t\t\tconst showVideo =\n\t\t\t\t\t\t\t\tisURL( src ) &&\n\t\t\t\t\t\t\t\t! isUploadInProgress &&\n\t\t\t\t\t\t\t\t! isUploadFailed;\n\t\t\t\t\t\t\tconst icon = this.getIcon(\n\t\t\t\t\t\t\t\tisUploadFailed\n\t\t\t\t\t\t\t\t\t? ICON_TYPE.RETRY\n\t\t\t\t\t\t\t\t\t: ICON_TYPE.UPLOAD\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst styleIconContainer = isUploadFailed\n\t\t\t\t\t\t\t\t? style.modalIconRetry\n\t\t\t\t\t\t\t\t: style.modalIcon;\n\n\t\t\t\t\t\t\tconst iconContainer = (\n\t\t\t\t\t\t\t\t<View style={ styleIconContainer }>\n\t\t\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst videoStyle = {\n\t\t\t\t\t\t\t\theight: videoContainerHeight,\n\t\t\t\t\t\t\t\t...style.video,\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tconst containerStyle =\n\t\t\t\t\t\t\t\tshowVideo && isSelected\n\t\t\t\t\t\t\t\t\t? style.containerFocused\n\t\t\t\t\t\t\t\t\t: style.container;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tonLayout={ this.onVideoContanerLayout }\n\t\t\t\t\t\t\t\t\tstyle={ containerStyle }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ showVideo && (\n\t\t\t\t\t\t\t\t\t\t<View style={ style.videoContainer }>\n\t\t\t\t\t\t\t\t\t\t\t<VideoPlayer\n\t\t\t\t\t\t\t\t\t\t\t\tisSelected={\n\t\t\t\t\t\t\t\t\t\t\t\t\tisSelected &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t! this.state\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.isCaptionSelected\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={ videoStyle }\n\t\t\t\t\t\t\t\t\t\t\t\tsource={ { uri: src } }\n\t\t\t\t\t\t\t\t\t\t\t\tpaused={ true }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ ! showVideo && (\n\t\t\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\t\theight: videoContainerHeight,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\t\t\t\t...this.props.getStylesFromColorScheme(\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle.placeholderContainer,\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle.placeholderContainerDark\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ videoContainerHeight > 0 &&\n\t\t\t\t\t\t\t\t\t\t\t\ticonContainer }\n\t\t\t\t\t\t\t\t\t\t\t{ isUploadFailed && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle.uploadFailedText\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ retryMessage }\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockCaption\n\t\t\t\t\t\taccessible={ true }\n\t\t\t\t\t\taccessibilityLabelCreator={ ( caption ) =>\n\t\t\t\t\t\t\tRichText.isEmpty( caption )\n\t\t\t\t\t\t\t\t? /* translators: accessibility text. Empty video caption. */\n\t\t\t\t\t\t\t\t __( 'Video caption. Empty' )\n\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text. %s: video caption. */\n\t\t\t\t\t\t\t\t\t\t__( 'Video caption. %s' ),\n\t\t\t\t\t\t\t\t\t\tcaption\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclientId={ this.props.clientId }\n\t\t\t\t\t\tisSelected={ this.state.isCaptionSelected }\n\t\t\t\t\t\tonFocus={ this.onFocusCaption }\n\t\t\t\t\t\tonBlur={ this.props.onBlur } // Always assign onBlur as props.\n\t\t\t\t\t\tinsertBlocksAfter={ this.props.insertBlocksAfter }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t</TouchableWithoutFeedback>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select, { clientId } ) => ( {\n\t\twasBlockJustInserted: select( blockEditorStore ).wasBlockJustInserted(\n\t\t\tclientId,\n\t\t\t'inserter_menu'\n\t\t),\n\t} ) ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { createErrorNotice } = dispatch( noticesStore );\n\n\t\treturn { createErrorNotice };\n\t} ),\n\twithPreferredColorScheme,\n] )( VideoEdit );\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["View","TouchableWithoutFeedback","Text","Component","mediaUploadSync","requestImageFailedRetryDialog","requestImageUploadCancelDialog","Icon","ToolbarButton","ToolbarGroup","PanelBody","withPreferredColorScheme","compose","BlockCaption","MediaPlaceholder","MediaUpload","MediaUploadProgress","MEDIA_TYPE_VIDEO","BlockControls","VIDEO_ASPECT_RATIO","VideoPlayer","InspectorControls","RichText","store","blockEditorStore","__","sprintf","isURL","getProtocol","doAction","hasAction","video","SvgIcon","replace","withDispatch","withSelect","noticesStore","createUpgradedEmbedBlock","style","SvgIconRetry","VideoCommonSettings","ICON_TYPE","PLACEHOLDER","RETRY","UPLOAD","VideoEdit","constructor","props","state","isCaptionSelected","videoContainerHeight","mediaUploadStateReset","bind","onSelectMediaUploadOption","onSelectURL","finishMediaUploadWithSuccess","finishMediaUploadWithFailure","updateMediaProgress","onVideoPressed","onVideoContanerLayout","onFocusCaption","componentDidMount","attributes","id","src","componentWillUnmount","isUploadInProgress","getDerivedStateFromProps","isSelected","setState","payload","setAttributes","mediaUrl","url","mediaServerId","mediaId","createErrorNotice","onReplace","test","embedBlock","undefined","poster","event","width","nativeEvent","layout","height","getIcon","iconType","iconStyle","createElement","icon","getStylesFromColorScheme","iconDark","iconUploading","iconUploadingDark","render","wasBlockJustInserted","toolbarEditButton","allowedTypes","isReplacingMedia","onSelect","open","getMediaOptions","label","onClick","flex","onFocus","autoOpenMediaUpload","accessible","onPress","disabled","title","onFinishMediaUploadWithSuccess","onFinishMediaUploadWithFailure","onUpdateMediaProgress","onMediaUploadStateReset","renderContent","isUploadFailed","retryMessage","showVideo","styleIconContainer","modalIconRetry","modalIcon","iconContainer","videoStyle","containerStyle","containerFocused","container","onLayout","videoContainer","source","uri","paused","placeholderContainer","placeholderContainerDark","uploadFailedText","accessibilityLabelCreator","caption","isEmpty","clientId","onBlur","insertBlocksAfter","select","dispatch"],"sources":["@wordpress/block-library/src/video/edit.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View, TouchableWithoutFeedback, Text } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport {\n\tmediaUploadSync,\n\trequestImageFailedRetryDialog,\n\trequestImageUploadCancelDialog,\n} from '@wordpress/react-native-bridge';\nimport {\n\tIcon,\n\tToolbarButton,\n\tToolbarGroup,\n\tPanelBody,\n} from '@wordpress/components';\nimport { withPreferredColorScheme, compose } from '@wordpress/compose';\nimport {\n\tBlockCaption,\n\tMediaPlaceholder,\n\tMediaUpload,\n\tMediaUploadProgress,\n\tMEDIA_TYPE_VIDEO,\n\tBlockControls,\n\tVIDEO_ASPECT_RATIO,\n\tVideoPlayer,\n\tInspectorControls,\n\tRichText,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { isURL, getProtocol } from '@wordpress/url';\nimport { doAction, hasAction } from '@wordpress/hooks';\nimport { video as SvgIcon, replace } from '@wordpress/icons';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport style from './style.scss';\nimport SvgIconRetry from './icon-retry';\nimport VideoCommonSettings from './edit-common-settings';\n\nconst ICON_TYPE = {\n\tPLACEHOLDER: 'placeholder',\n\tRETRY: 'retry',\n\tUPLOAD: 'upload',\n};\n\nclass VideoEdit extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.state = {\n\t\t\tisCaptionSelected: false,\n\t\t\tvideoContainerHeight: 0,\n\t\t};\n\n\t\tthis.mediaUploadStateReset = this.mediaUploadStateReset.bind( this );\n\t\tthis.onSelectMediaUploadOption =\n\t\t\tthis.onSelectMediaUploadOption.bind( this );\n\t\tthis.onSelectURL = this.onSelectURL.bind( this );\n\t\tthis.finishMediaUploadWithSuccess =\n\t\t\tthis.finishMediaUploadWithSuccess.bind( this );\n\t\tthis.finishMediaUploadWithFailure =\n\t\t\tthis.finishMediaUploadWithFailure.bind( this );\n\t\tthis.updateMediaProgress = this.updateMediaProgress.bind( this );\n\t\tthis.onVideoPressed = this.onVideoPressed.bind( this );\n\t\tthis.onVideoContanerLayout = this.onVideoContanerLayout.bind( this );\n\t\tthis.onFocusCaption = this.onFocusCaption.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\t\tconst { attributes } = this.props;\n\t\tif ( attributes.id && getProtocol( attributes.src ) === 'file:' ) {\n\t\t\tmediaUploadSync();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// This action will only exist if the user pressed the trash button on the block holder.\n\t\tif (\n\t\t\thasAction( 'blocks.onRemoveBlockCheckUpload' ) &&\n\t\t\tthis.state.isUploadInProgress\n\t\t) {\n\t\t\tdoAction(\n\t\t\t\t'blocks.onRemoveBlockCheckUpload',\n\t\t\t\tthis.props.attributes.id\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic getDerivedStateFromProps( props, state ) {\n\t\t// Avoid a UI flicker in the toolbar by insuring that isCaptionSelected\n\t\t// is updated immediately any time the isSelected prop becomes false.\n\t\treturn {\n\t\t\tisCaptionSelected: props.isSelected && state.isCaptionSelected,\n\t\t};\n\t}\n\n\tonVideoPressed() {\n\t\tconst { attributes } = this.props;\n\n\t\tif ( this.state.isUploadInProgress ) {\n\t\t\trequestImageUploadCancelDialog( attributes.id );\n\t\t} else if (\n\t\t\tattributes.id &&\n\t\t\tgetProtocol( attributes.src ) === 'file:'\n\t\t) {\n\t\t\trequestImageFailedRetryDialog( attributes.id );\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tisCaptionSelected: false,\n\t\t} );\n\t}\n\n\tonFocusCaption() {\n\t\tif ( ! this.state.isCaptionSelected ) {\n\t\t\tthis.setState( { isCaptionSelected: true } );\n\t\t}\n\t}\n\n\tupdateMediaProgress( payload ) {\n\t\tconst { setAttributes } = this.props;\n\t\tif ( payload.mediaUrl ) {\n\t\t\tsetAttributes( { url: payload.mediaUrl } );\n\t\t}\n\t\tif ( ! this.state.isUploadInProgress ) {\n\t\t\tthis.setState( { isUploadInProgress: true } );\n\t\t}\n\t}\n\n\tfinishMediaUploadWithSuccess( payload ) {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { src: payload.mediaUrl, id: payload.mediaServerId } );\n\t\tthis.setState( { isUploadInProgress: false } );\n\t}\n\n\tfinishMediaUploadWithFailure( payload ) {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { id: payload.mediaId } );\n\t\tthis.setState( { isUploadInProgress: false } );\n\t}\n\n\tmediaUploadStateReset() {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { id: null, src: null } );\n\t\tthis.setState( { isUploadInProgress: false } );\n\t}\n\n\tonSelectMediaUploadOption( { id, url } ) {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { id, src: url } );\n\t}\n\n\tonSelectURL( url ) {\n\t\tconst { createErrorNotice, onReplace, setAttributes } = this.props;\n\n\t\tif ( isURL( url ) && /^https?:/.test( getProtocol( url ) ) ) {\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetAttributes( { src: url, id: undefined, poster: undefined } );\n\t\t} else {\n\t\t\tcreateErrorNotice( __( 'Invalid URL.' ) );\n\t\t}\n\t}\n\n\tonVideoContanerLayout( event ) {\n\t\tconst { width } = event.nativeEvent.layout;\n\t\tconst height = width / VIDEO_ASPECT_RATIO;\n\t\tif ( height !== this.state.videoContainerHeight ) {\n\t\t\tthis.setState( { videoContainerHeight: height } );\n\t\t}\n\t}\n\n\tgetIcon( iconType ) {\n\t\tlet iconStyle;\n\t\tswitch ( iconType ) {\n\t\t\tcase ICON_TYPE.RETRY:\n\t\t\t\treturn <Icon icon={ SvgIconRetry } { ...style.icon } />;\n\t\t\tcase ICON_TYPE.PLACEHOLDER:\n\t\t\t\ticonStyle = this.props.getStylesFromColorScheme(\n\t\t\t\t\tstyle.icon,\n\t\t\t\t\tstyle.iconDark\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.UPLOAD:\n\t\t\t\ticonStyle = this.props.getStylesFromColorScheme(\n\t\t\t\t\tstyle.iconUploading,\n\t\t\t\t\tstyle.iconUploadingDark\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn <Icon icon={ SvgIcon } { ...iconStyle } />;\n\t}\n\n\trender() {\n\t\tconst { setAttributes, attributes, isSelected, wasBlockJustInserted } =\n\t\t\tthis.props;\n\t\tconst { id, src } = attributes;\n\t\tconst { videoContainerHeight } = this.state;\n\n\t\tconst toolbarEditButton = (\n\t\t\t<MediaUpload\n\t\t\t\tallowedTypes={ [ MEDIA_TYPE_VIDEO ] }\n\t\t\t\tisReplacingMedia\n\t\t\t\tonSelect={ this.onSelectMediaUploadOption }\n\t\t\t\tonSelectURL={ this.onSelectURL }\n\t\t\t\trender={ ( { open, getMediaOptions } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t\t{ getMediaOptions() }\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\tlabel={ __( 'Edit video' ) }\n\t\t\t\t\t\t\t\ticon={ replace }\n\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t></MediaUpload>\n\t\t);\n\n\t\tif ( ! src ) {\n\t\t\treturn (\n\t\t\t\t<View style={ { flex: 1 } }>\n\t\t\t\t\t<MediaPlaceholder\n\t\t\t\t\t\tallowedTypes={ [ MEDIA_TYPE_VIDEO ] }\n\t\t\t\t\t\tonSelect={ this.onSelectMediaUploadOption }\n\t\t\t\t\t\tonSelectURL={ this.onSelectURL }\n\t\t\t\t\t\ticon={ this.getIcon( ICON_TYPE.PLACEHOLDER ) }\n\t\t\t\t\t\tonFocus={ this.props.onFocus }\n\t\t\t\t\t\tautoOpenMediaUpload={\n\t\t\t\t\t\t\tisSelected && wasBlockJustInserted\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<TouchableWithoutFeedback\n\t\t\t\taccessible={ ! isSelected }\n\t\t\t\tonPress={ this.onVideoPressed }\n\t\t\t\tdisabled={ ! isSelected }\n\t\t\t>\n\t\t\t\t<View style={ { flex: 1 } }>\n\t\t\t\t\t{ ! this.state.isCaptionSelected && (\n\t\t\t\t\t\t<BlockControls>{ toolbarEditButton }</BlockControls>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isSelected && (\n\t\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t\t\t\t<VideoCommonSettings\n\t\t\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t) }\n\t\t\t\t\t<MediaUploadProgress\n\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\tonFinishMediaUploadWithSuccess={\n\t\t\t\t\t\t\tthis.finishMediaUploadWithSuccess\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonFinishMediaUploadWithFailure={\n\t\t\t\t\t\t\tthis.finishMediaUploadWithFailure\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonUpdateMediaProgress={ this.updateMediaProgress }\n\t\t\t\t\t\tonMediaUploadStateReset={ this.mediaUploadStateReset }\n\t\t\t\t\t\trenderContent={ ( {\n\t\t\t\t\t\t\tisUploadInProgress,\n\t\t\t\t\t\t\tisUploadFailed,\n\t\t\t\t\t\t\tretryMessage,\n\t\t\t\t\t\t} ) => {\n\t\t\t\t\t\t\tconst showVideo =\n\t\t\t\t\t\t\t\tisURL( src ) &&\n\t\t\t\t\t\t\t\t! isUploadInProgress &&\n\t\t\t\t\t\t\t\t! isUploadFailed;\n\t\t\t\t\t\t\tconst icon = this.getIcon(\n\t\t\t\t\t\t\t\tisUploadFailed\n\t\t\t\t\t\t\t\t\t? ICON_TYPE.RETRY\n\t\t\t\t\t\t\t\t\t: ICON_TYPE.UPLOAD\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst styleIconContainer = isUploadFailed\n\t\t\t\t\t\t\t\t? style.modalIconRetry\n\t\t\t\t\t\t\t\t: style.modalIcon;\n\n\t\t\t\t\t\t\tconst iconContainer = (\n\t\t\t\t\t\t\t\t<View style={ styleIconContainer }>\n\t\t\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst videoStyle = {\n\t\t\t\t\t\t\t\theight: videoContainerHeight,\n\t\t\t\t\t\t\t\t...style.video,\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tconst containerStyle =\n\t\t\t\t\t\t\t\tshowVideo && isSelected\n\t\t\t\t\t\t\t\t\t? style.containerFocused\n\t\t\t\t\t\t\t\t\t: style.container;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tonLayout={ this.onVideoContanerLayout }\n\t\t\t\t\t\t\t\t\tstyle={ containerStyle }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ showVideo && (\n\t\t\t\t\t\t\t\t\t\t<View style={ style.videoContainer }>\n\t\t\t\t\t\t\t\t\t\t\t<VideoPlayer\n\t\t\t\t\t\t\t\t\t\t\t\tisSelected={\n\t\t\t\t\t\t\t\t\t\t\t\t\tisSelected &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t! this.state\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.isCaptionSelected\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={ videoStyle }\n\t\t\t\t\t\t\t\t\t\t\t\tsource={ { uri: src } }\n\t\t\t\t\t\t\t\t\t\t\t\tpaused\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ ! showVideo && (\n\t\t\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\t\theight: videoContainerHeight,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\t\t\t\t...this.props.getStylesFromColorScheme(\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle.placeholderContainer,\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle.placeholderContainerDark\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ videoContainerHeight > 0 &&\n\t\t\t\t\t\t\t\t\t\t\t\ticonContainer }\n\t\t\t\t\t\t\t\t\t\t\t{ isUploadFailed && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle.uploadFailedText\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ retryMessage }\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockCaption\n\t\t\t\t\t\taccessible\n\t\t\t\t\t\taccessibilityLabelCreator={ ( caption ) =>\n\t\t\t\t\t\t\tRichText.isEmpty( caption )\n\t\t\t\t\t\t\t\t? /* translators: accessibility text. Empty video caption. */\n\t\t\t\t\t\t\t\t __( 'Video caption. Empty' )\n\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text. %s: video caption. */\n\t\t\t\t\t\t\t\t\t\t__( 'Video caption. %s' ),\n\t\t\t\t\t\t\t\t\t\tcaption\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclientId={ this.props.clientId }\n\t\t\t\t\t\tisSelected={ this.state.isCaptionSelected }\n\t\t\t\t\t\tonFocus={ this.onFocusCaption }\n\t\t\t\t\t\tonBlur={ this.props.onBlur } // Always assign onBlur as props.\n\t\t\t\t\t\tinsertBlocksAfter={ this.props.insertBlocksAfter }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t</TouchableWithoutFeedback>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select, { clientId } ) => ( {\n\t\twasBlockJustInserted: select( blockEditorStore ).wasBlockJustInserted(\n\t\t\tclientId,\n\t\t\t'inserter_menu'\n\t\t),\n\t} ) ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { createErrorNotice } = dispatch( noticesStore );\n\n\t\treturn { createErrorNotice };\n\t} ),\n\twithPreferredColorScheme,\n] )( VideoEdit );\n"],"mappings":"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"}
|