@wordpress/block-library 8.10.0 → 8.11.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 +2 -0
- package/build/block/edit.native.js +17 -10
- package/build/block/edit.native.js.map +1 -1
- package/build/code/index.js +1 -0
- package/build/code/index.js.map +1 -1
- package/build/column/index.js +1 -1
- package/build/columns/transforms.js +1 -5
- package/build/columns/transforms.js.map +1 -1
- package/build/cover/edit/resizable-cover-popover.js +3 -3
- package/build/cover/edit/resizable-cover-popover.js.map +1 -1
- package/build/file/interactivity.js +19 -0
- package/build/file/interactivity.js.map +1 -0
- package/build/file/{utils.js → utils/index.js} +1 -1
- package/build/file/utils/index.js.map +1 -0
- package/build/freeform/modal.js +20 -17
- package/build/freeform/modal.js.map +1 -1
- package/build/gallery/v1/edit.js +1 -7
- package/build/gallery/v1/edit.js.map +1 -1
- package/build/gallery/v1/gallery-image.native.js +1 -3
- package/build/gallery/v1/gallery-image.native.js.map +1 -1
- package/build/group/transforms.js +0 -5
- package/build/group/transforms.js.map +1 -1
- package/build/image/deprecated.js +2 -4
- package/build/image/deprecated.js.map +1 -1
- package/build/image/edit.js +13 -11
- package/build/image/edit.js.map +1 -1
- package/build/image/image.js +7 -12
- package/build/image/image.js.map +1 -1
- package/build/image/index.js +3 -0
- package/build/image/index.js.map +1 -1
- package/build/image/interactivity.js +102 -0
- package/build/image/interactivity.js.map +1 -0
- package/build/image/save.js +2 -4
- package/build/image/save.js.map +1 -1
- package/build/image/utils.js +10 -18
- package/build/image/utils.js.map +1 -1
- package/build/latest-posts/edit.native.js +1 -3
- package/build/latest-posts/edit.native.js.map +1 -1
- package/build/list/edit.js +1 -1
- package/build/list/edit.js.map +1 -1
- package/build/list-item/edit.native.js +1 -1
- package/build/list-item/edit.native.js.map +1 -1
- package/build/list-item/transforms.js +4 -1
- package/build/list-item/transforms.js.map +1 -1
- package/build/media-text/deprecated.js +4 -6
- package/build/media-text/deprecated.js.map +1 -1
- package/build/media-text/edit.js +13 -11
- package/build/media-text/edit.js.map +1 -1
- package/build/media-text/media-container.js +3 -3
- package/build/media-text/media-container.js.map +1 -1
- package/build/media-text/save.js +1 -3
- package/build/media-text/save.js.map +1 -1
- package/build/navigation/constants.js +3 -1
- package/build/navigation/constants.js.map +1 -1
- package/build/navigation/edit/inner-blocks.js +1 -0
- package/build/navigation/edit/inner-blocks.js.map +1 -1
- package/build/navigation/edit/leaf-more-menu.js +148 -0
- package/build/navigation/edit/leaf-more-menu.js.map +1 -0
- package/build/navigation/edit/menu-inspector-controls.js +53 -8
- package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
- package/build/navigation/edit/navigation-menu-delete-control.js +6 -6
- package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build/navigation/edit/unsaved-inner-blocks.js +8 -19
- package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build/navigation/interactivity.js +24 -6
- package/build/navigation/interactivity.js.map +1 -1
- package/build/navigation-link/edit.js +6 -4
- package/build/navigation-link/edit.js.map +1 -1
- package/build/navigation-link/update-attributes.js +5 -5
- package/build/navigation-link/update-attributes.js.map +1 -1
- package/build/navigation-submenu/edit.js +6 -4
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/pattern/edit.js +42 -8
- package/build/pattern/edit.js.map +1 -1
- package/build/pattern/index.js +12 -5
- package/build/pattern/index.js.map +1 -1
- package/build/pattern/v1/edit.js +57 -0
- package/build/pattern/v1/edit.js.map +1 -0
- package/build/post-title/edit.js +10 -3
- package/build/post-title/edit.js.map +1 -1
- package/build/quote/transforms.js +9 -12
- package/build/quote/transforms.js.map +1 -1
- package/build/social-link/edit.js +21 -4
- package/build/social-link/edit.js.map +1 -1
- package/build/template-part/edit/index.js +1 -7
- package/build/template-part/edit/index.js.map +1 -1
- package/build/template-part/edit/utils/hooks.js +2 -2
- package/build/template-part/edit/utils/hooks.js.map +1 -1
- package/build/utils/interactivity/directives.js +50 -22
- package/build/utils/interactivity/directives.js.map +1 -1
- package/build/utils/interactivity/hooks.js +76 -12
- package/build/utils/interactivity/hooks.js.map +1 -1
- package/build/utils/interactivity/portals.js +108 -0
- package/build/utils/interactivity/portals.js.map +1 -0
- package/build-module/block/edit.native.js +7 -1
- package/build-module/block/edit.native.js.map +1 -1
- package/build-module/code/index.js +1 -0
- package/build-module/code/index.js.map +1 -1
- package/build-module/column/index.js +1 -1
- package/build-module/columns/transforms.js +1 -5
- package/build-module/columns/transforms.js.map +1 -1
- package/build-module/cover/edit/resizable-cover-popover.js +3 -3
- package/build-module/cover/edit/resizable-cover-popover.js.map +1 -1
- package/build-module/file/interactivity.js +15 -0
- package/build-module/file/interactivity.js.map +1 -0
- package/build-module/file/{utils.js → utils/index.js} +1 -1
- package/build-module/file/utils/index.js.map +1 -0
- package/build-module/freeform/modal.js +19 -18
- package/build-module/freeform/modal.js.map +1 -1
- package/build-module/gallery/v1/edit.js +1 -6
- package/build-module/gallery/v1/edit.js.map +1 -1
- package/build-module/gallery/v1/gallery-image.native.js +1 -2
- package/build-module/gallery/v1/gallery-image.native.js.map +1 -1
- package/build-module/group/transforms.js +0 -5
- package/build-module/group/transforms.js.map +1 -1
- package/build-module/image/deprecated.js +2 -3
- package/build-module/image/deprecated.js.map +1 -1
- package/build-module/image/edit.js +12 -11
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/image.js +7 -11
- package/build-module/image/image.js.map +1 -1
- package/build-module/image/index.js +3 -0
- package/build-module/image/index.js.map +1 -1
- package/build-module/image/interactivity.js +99 -0
- package/build-module/image/interactivity.js.map +1 -0
- package/build-module/image/save.js +2 -3
- package/build-module/image/save.js.map +1 -1
- package/build-module/image/utils.js +10 -17
- package/build-module/image/utils.js.map +1 -1
- package/build-module/latest-posts/edit.native.js +1 -2
- package/build-module/latest-posts/edit.native.js.map +1 -1
- package/build-module/list/edit.js +1 -1
- package/build-module/list/edit.js.map +1 -1
- package/build-module/list-item/edit.native.js +1 -1
- package/build-module/list-item/edit.native.js.map +1 -1
- package/build-module/list-item/transforms.js +5 -2
- package/build-module/list-item/transforms.js.map +1 -1
- package/build-module/media-text/deprecated.js +4 -5
- package/build-module/media-text/deprecated.js.map +1 -1
- package/build-module/media-text/edit.js +13 -12
- package/build-module/media-text/edit.js.map +1 -1
- package/build-module/media-text/media-container.js +3 -3
- package/build-module/media-text/media-container.js.map +1 -1
- package/build-module/media-text/save.js +1 -2
- package/build-module/media-text/save.js.map +1 -1
- package/build-module/navigation/constants.js +1 -0
- package/build-module/navigation/constants.js.map +1 -1
- package/build-module/navigation/edit/inner-blocks.js +2 -1
- package/build-module/navigation/edit/inner-blocks.js.map +1 -1
- package/build-module/navigation/edit/leaf-more-menu.js +132 -0
- package/build-module/navigation/edit/leaf-more-menu.js.map +1 -0
- package/build-module/navigation/edit/menu-inspector-controls.js +52 -9
- package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
- package/build-module/navigation/edit/navigation-menu-delete-control.js +7 -7
- package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build-module/navigation/edit/unsaved-inner-blocks.js +8 -16
- package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build-module/navigation/interactivity.js +24 -6
- package/build-module/navigation/interactivity.js.map +1 -1
- package/build-module/navigation-link/edit.js +6 -4
- package/build-module/navigation-link/edit.js.map +1 -1
- package/build-module/navigation-link/update-attributes.js +4 -4
- package/build-module/navigation-link/update-attributes.js.map +1 -1
- package/build-module/navigation-submenu/edit.js +6 -4
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/pattern/edit.js +42 -9
- package/build-module/pattern/edit.js.map +1 -1
- package/build-module/pattern/index.js +12 -3
- package/build-module/pattern/index.js.map +1 -1
- package/build-module/pattern/v1/edit.js +48 -0
- package/build-module/pattern/v1/edit.js.map +1 -0
- package/build-module/post-title/edit.js +10 -3
- package/build-module/post-title/edit.js.map +1 -1
- package/build-module/quote/transforms.js +9 -12
- package/build-module/quote/transforms.js.map +1 -1
- package/build-module/social-link/edit.js +20 -5
- package/build-module/social-link/edit.js.map +1 -1
- package/build-module/template-part/edit/index.js +1 -6
- package/build-module/template-part/edit/index.js.map +1 -1
- package/build-module/template-part/edit/utils/hooks.js +1 -1
- package/build-module/template-part/edit/utils/hooks.js.map +1 -1
- package/build-module/utils/interactivity/directives.js +49 -22
- package/build-module/utils/interactivity/directives.js.map +1 -1
- package/build-module/utils/interactivity/hooks.js +77 -13
- package/build-module/utils/interactivity/hooks.js.map +1 -1
- package/build-module/utils/interactivity/portals.js +100 -0
- package/build-module/utils/interactivity/portals.js.map +1 -0
- package/build-style/common-rtl.css +1 -1
- package/build-style/common.css +1 -1
- package/build-style/cover/style-rtl.css +1 -2
- package/build-style/cover/style.css +1 -2
- package/build-style/editor-rtl.css +68 -0
- package/build-style/editor.css +68 -0
- package/build-style/file/editor-rtl.css +3 -0
- package/build-style/file/editor.css +3 -0
- package/build-style/freeform/editor-rtl.css +29 -0
- package/build-style/freeform/editor.css +29 -0
- package/build-style/gallery/style-rtl.css +2 -4
- package/build-style/gallery/style.css +2 -4
- package/build-style/image/style-rtl.css +98 -0
- package/build-style/image/style.css +98 -0
- package/build-style/navigation/editor-rtl.css +36 -0
- package/build-style/navigation/editor.css +36 -0
- package/build-style/post-comments-form/style-rtl.css +1 -1
- package/build-style/post-comments-form/style.css +1 -1
- package/build-style/style-rtl.css +103 -9
- package/build-style/style.css +103 -9
- package/build-style/video/style-rtl.css +1 -2
- package/build-style/video/style.css +1 -2
- package/package.json +32 -32
- package/src/block/edit.native.js +18 -4
- package/src/buttons/test/edit.native.js +0 -9
- package/src/code/block.json +1 -0
- package/src/column/block.json +1 -1
- package/src/columns/test/__snapshots__/transforms.native.js.snap +1 -1
- package/src/columns/test/transforms.native.js +3 -5
- package/src/columns/transforms.js +2 -8
- package/src/comments/index.php +1 -6
- package/src/cover/edit/resizable-cover-popover.js +2 -1
- package/src/file/editor.scss +4 -0
- package/src/file/interactivity.js +15 -0
- package/src/freeform/editor.scss +45 -0
- package/src/freeform/modal.js +22 -19
- package/src/gallery/v1/edit.js +1 -6
- package/src/gallery/v1/gallery-image.native.js +1 -2
- package/src/group/test/__snapshots__/transforms.native.js.snap +1 -1
- package/src/group/test/transforms.native.js +3 -5
- package/src/group/transforms.js +0 -7
- package/src/image/block.json +3 -0
- package/src/image/deprecated.js +2 -3
- package/src/image/edit.js +18 -18
- package/src/image/image.js +8 -11
- package/src/image/index.php +75 -2
- package/src/image/interactivity.js +113 -0
- package/src/image/save.js +4 -3
- package/src/image/style.scss +113 -0
- package/src/image/utils.js +11 -18
- package/src/latest-posts/edit.native.js +1 -4
- package/src/list/edit.js +1 -1
- package/src/list/test/edit.native.js +80 -1
- package/src/list-item/edit.native.js +1 -1
- package/src/list-item/transforms.js +4 -2
- package/src/media-text/deprecated.js +4 -5
- package/src/media-text/edit.js +12 -10
- package/src/media-text/media-container.js +3 -3
- package/src/media-text/save.js +1 -2
- package/src/navigation/constants.js +5 -0
- package/src/navigation/edit/inner-blocks.js +6 -1
- package/src/navigation/edit/leaf-more-menu.js +170 -0
- package/src/navigation/edit/menu-inspector-controls.js +78 -10
- package/src/navigation/edit/navigation-menu-delete-control.js +29 -29
- package/src/navigation/edit/unsaved-inner-blocks.js +11 -24
- package/src/navigation/editor.scss +10 -0
- package/src/navigation/index.php +4 -1
- package/src/navigation/interactivity.js +9 -2
- package/src/navigation-link/edit.js +8 -2
- package/src/navigation-link/update-attributes.js +2 -2
- package/src/navigation-submenu/edit.js +8 -2
- package/src/pattern/block.json +4 -0
- package/src/pattern/edit.js +53 -16
- package/src/pattern/index.js +5 -4
- package/src/pattern/index.php +14 -1
- package/src/pattern/v1/edit.js +57 -0
- package/src/post-comments-form/style.scss +3 -1
- package/src/post-title/edit.js +50 -44
- package/src/quote/test/__snapshots__/transforms.native.js.snap +1 -1
- package/src/quote/test/transforms.native.js +3 -5
- package/src/quote/transforms.js +9 -13
- package/src/social-link/edit.js +51 -26
- package/src/template-part/edit/index.js +4 -6
- package/src/template-part/edit/utils/hooks.js +1 -1
- package/src/template-part/index.php +2 -2
- package/src/utils/interactivity/directives.js +27 -6
- package/src/utils/interactivity/hooks.js +83 -14
- package/src/utils/interactivity/portals.js +98 -0
- package/build/file/utils.js.map +0 -1
- package/build-module/file/utils.js.map +0 -1
- /package/src/file/{utils.js → utils/index.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/social-link/edit.js"],"names":["classNames","InspectorControls","URLPopover","URLInput","useBlockProps","useState","Button","PanelBody","PanelRow","TextControl","__","sprintf","keyboardReturn","getIconBySite","getNameBySite","SocialLinkURLPopover","url","setAttributes","setPopover","popoverAnchor","event","preventDefault","nextURL","SocialLinkEdit","attributes","context","isSelected","service","label","rel","showLabels","iconColorValue","iconBackgroundColorValue","showURLPopover","classes","setPopoverAnchor","IconComponent","socialLinkName","socialLinkLabel","blockProps","className","style","color","backgroundColor","value"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SACCC,iBADD,EAECC,UAFD,EAGCC,QAHD,EAICC,aAJD,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/social-link/edit.js"],"names":["classNames","DELETE","BACKSPACE","useDispatch","InspectorControls","URLPopover","URLInput","useBlockProps","store","blockEditorStore","useState","Button","PanelBody","PanelRow","TextControl","__","sprintf","keyboardReturn","getIconBySite","getNameBySite","SocialLinkURLPopover","url","setAttributes","setPopover","popoverAnchor","clientId","removeBlock","event","preventDefault","nextURL","defaultPrevented","includes","keyCode","SocialLinkEdit","attributes","context","isSelected","service","label","rel","showLabels","iconColorValue","iconBackgroundColorValue","showURLPopover","classes","setPopoverAnchor","IconComponent","socialLinkName","socialLinkLabel","blockProps","className","style","color","backgroundColor","value"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { DELETE, BACKSPACE } from '@wordpress/keycodes';\nimport { useDispatch } from '@wordpress/data';\n\nimport {\n\tInspectorControls,\n\tURLPopover,\n\tURLInput,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useState } from '@wordpress/element';\nimport {\n\tButton,\n\tPanelBody,\n\tPanelRow,\n\tTextControl,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { keyboardReturn } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { getIconBySite, getNameBySite } from './social-list';\n\nconst SocialLinkURLPopover = ( {\n\turl,\n\tsetAttributes,\n\tsetPopover,\n\tpopoverAnchor,\n\tclientId,\n} ) => {\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\treturn (\n\t\t<URLPopover\n\t\t\tanchor={ popoverAnchor }\n\t\t\tonClose={ () => setPopover( false ) }\n\t\t>\n\t\t\t<form\n\t\t\t\tclassName=\"block-editor-url-popover__link-editor\"\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetPopover( false );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<div className=\"block-editor-url-input\">\n\t\t\t\t\t<URLInput\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ url }\n\t\t\t\t\t\tonChange={ ( nextURL ) =>\n\t\t\t\t\t\t\tsetAttributes( { url: nextURL } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tplaceholder={ __( 'Enter address' ) }\n\t\t\t\t\t\tdisableSuggestions={ true }\n\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!! url ||\n\t\t\t\t\t\t\t\tevent.defaultPrevented ||\n\t\t\t\t\t\t\t\t! [ BACKSPACE, DELETE ].includes(\n\t\t\t\t\t\t\t\t\tevent.keyCode\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\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ keyboardReturn }\n\t\t\t\t\tlabel={ __( 'Apply' ) }\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t/>\n\t\t\t</form>\n\t\t</URLPopover>\n\t);\n};\n\nconst SocialLinkEdit = ( {\n\tattributes,\n\tcontext,\n\tisSelected,\n\tsetAttributes,\n\tclientId,\n} ) => {\n\tconst { url, service, label, rel } = attributes;\n\tconst { showLabels, iconColorValue, iconBackgroundColorValue } = context;\n\tconst [ showURLPopover, setPopover ] = useState( false );\n\tconst classes = classNames( 'wp-social-link', 'wp-social-link-' + service, {\n\t\t'wp-social-link__is-incomplete': ! url,\n\t} );\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\n\tconst IconComponent = getIconBySite( service );\n\tconst socialLinkName = getNameBySite( service );\n\tconst socialLinkLabel = label ?? socialLinkName;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t\tstyle: {\n\t\t\tcolor: iconColorValue,\n\t\t\tbackgroundColor: iconBackgroundColorValue,\n\t\t},\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t/* translators: %s: name of the social service. */\n\t\t\t\t\t\t__( '%s label' ),\n\t\t\t\t\t\tsocialLinkName\n\t\t\t\t\t) }\n\t\t\t\t\tinitialOpen={ false }\n\t\t\t\t>\n\t\t\t\t\t<PanelRow>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Link label' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Briefly describe the link to help screen reader users.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ label || '' }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { label: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PanelRow>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<TextControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\tonChange={ ( value ) => setAttributes( { rel: value } ) }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<li { ...blockProps }>\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"wp-block-social-link-anchor\"\n\t\t\t\t\tref={ setPopoverAnchor }\n\t\t\t\t\tonClick={ () => setPopover( true ) }\n\t\t\t\t>\n\t\t\t\t\t<IconComponent />\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ classNames( 'wp-block-social-link-label', {\n\t\t\t\t\t\t\t'screen-reader-text': ! showLabels,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ socialLinkLabel }\n\t\t\t\t\t</span>\n\t\t\t\t\t{ isSelected && showURLPopover && (\n\t\t\t\t\t\t<SocialLinkURLPopover\n\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tsetPopover={ setPopover }\n\t\t\t\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</Button>\n\t\t\t</li>\n\t\t</>\n\t);\n};\n\nexport default SocialLinkEdit;\n"]}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
import { createElement, Fragment } from "@wordpress/element";
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* External dependencies
|
|
5
|
-
*/
|
|
6
|
-
import { isEmpty } from 'lodash';
|
|
7
3
|
/**
|
|
8
4
|
* WordPress dependencies
|
|
9
5
|
*/
|
|
10
|
-
|
|
11
6
|
import { useSelect } from '@wordpress/data';
|
|
12
7
|
import { BlockSettingsMenuControls, BlockTitle, useBlockProps, Warning, store as blockEditorStore, __experimentalRecursionProvider as RecursionProvider, __experimentalUseHasRecursion as useHasRecursion } from '@wordpress/block-editor';
|
|
13
8
|
import { Spinner, Modal, MenuItem } from '@wordpress/components';
|
|
@@ -65,7 +60,7 @@ export default function TemplatePartEdit(_ref) {
|
|
|
65
60
|
return {
|
|
66
61
|
innerBlocks: getBlocks(clientId),
|
|
67
62
|
isResolved: hasResolvedEntity,
|
|
68
|
-
isMissing: hasResolvedEntity &&
|
|
63
|
+
isMissing: hasResolvedEntity && (!entityRecord || Object.keys(entityRecord).length === 0),
|
|
69
64
|
area: _area
|
|
70
65
|
};
|
|
71
66
|
}, [templatePartId, clientId]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/template-part/edit/index.js"],"names":["isEmpty","useSelect","BlockSettingsMenuControls","BlockTitle","useBlockProps","Warning","store","blockEditorStore","__experimentalRecursionProvider","RecursionProvider","__experimentalUseHasRecursion","useHasRecursion","Spinner","Modal","MenuItem","__","sprintf","coreStore","useState","createInterpolateElement","TemplatePartPlaceholder","TemplatePartSelectionModal","TemplatePartAdvancedControls","TemplatePartInnerBlocks","createTemplatePartId","useAlternativeBlockPatterns","useAlternativeTemplateParts","useTemplatePartArea","TemplatePartEdit","attributes","setAttributes","clientId","isSelected","slug","theme","tagName","layout","templatePartId","hasAlreadyRendered","isTemplatePartSelectionOpen","setIsTemplatePartSelectionOpen","isResolved","innerBlocks","isMissing","area","select","getEditedEntityRecord","hasFinishedResolution","getBlocks","getEntityArgs","entityRecord","_area","hasResolvedEntity","templateParts","blockPatterns","hasReplacements","length","areaObject","blockProps","isPlaceholder","isEntityAvailable","TagName","canReplace","label","toLowerCase"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tBlockTitle,\n\tuseBlockProps,\n\tWarning,\n\tstore as blockEditorStore,\n\t__experimentalRecursionProvider as RecursionProvider,\n\t__experimentalUseHasRecursion as useHasRecursion,\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, createInterpolateElement } 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\nexport default function TemplatePartEdit( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n\tisSelected,\n} ) {\n\tconst { slug, theme, tagName, layout = {} } = attributes;\n\tconst templatePartId = createTemplatePartId( theme, slug );\n\tconst hasAlreadyRendered = useHasRecursion( templatePartId );\n\tconst [ isTemplatePartSelectionOpen, setIsTemplatePartSelectionOpen ] =\n\t\tuseState( false );\n\n\t// Set the postId block attribute if it did not exist,\n\t// but wait until the inner blocks have loaded to allow\n\t// new edits to trigger this.\n\tconst { isResolved, innerBlocks, isMissing, area } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getBlocks } = 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\tinnerBlocks: getBlocks( clientId ),\n\t\t\t\tisResolved: hasResolvedEntity,\n\t\t\t\tisMissing: hasResolvedEntity && isEmpty( entityRecord ),\n\t\t\t\tarea: _area,\n\t\t\t};\n\t\t},\n\t\t[ templatePartId, clientId ]\n\t);\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\t// The `isSelected` check ensures the `BlockSettingsMenuControls` fill\n\t// doesn't render multiple times. The block controls has similar internal check.\n\tconst canReplace =\n\t\tisSelected &&\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\t( area === 'header' || area === 'footer' );\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\tinnerBlocks.length === 0 &&\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<TemplatePartAdvancedControls\n\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\tdefaultWrapper={ areaObject.tagName }\n\t\t\t\t\thasInnerBlocks={ innerBlocks.length > 0 }\n\t\t\t\t/>\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{ canReplace && (\n\t\t\t\t\t<BlockSettingsMenuControls>\n\t\t\t\t\t\t{ () => (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( true );\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\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t\t__( 'Replace <BlockTitle />' ),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tBlockTitle: (\n\t\t\t\t\t\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\t\t\t\t\t\tmaximumLength={ 25 }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</BlockSettingsMenuControls>\n\t\t\t\t) }\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={ innerBlocks.length > 0 }\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"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/template-part/edit/index.js"],"names":["useSelect","BlockSettingsMenuControls","BlockTitle","useBlockProps","Warning","store","blockEditorStore","__experimentalRecursionProvider","RecursionProvider","__experimentalUseHasRecursion","useHasRecursion","Spinner","Modal","MenuItem","__","sprintf","coreStore","useState","createInterpolateElement","TemplatePartPlaceholder","TemplatePartSelectionModal","TemplatePartAdvancedControls","TemplatePartInnerBlocks","createTemplatePartId","useAlternativeBlockPatterns","useAlternativeTemplateParts","useTemplatePartArea","TemplatePartEdit","attributes","setAttributes","clientId","isSelected","slug","theme","tagName","layout","templatePartId","hasAlreadyRendered","isTemplatePartSelectionOpen","setIsTemplatePartSelectionOpen","isResolved","innerBlocks","isMissing","area","select","getEditedEntityRecord","hasFinishedResolution","getBlocks","getEntityArgs","entityRecord","_area","hasResolvedEntity","Object","keys","length","templateParts","blockPatterns","hasReplacements","areaObject","blockProps","isPlaceholder","isEntityAvailable","TagName","canReplace","label","toLowerCase"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tBlockTitle,\n\tuseBlockProps,\n\tWarning,\n\tstore as blockEditorStore,\n\t__experimentalRecursionProvider as RecursionProvider,\n\t__experimentalUseHasRecursion as useHasRecursion,\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, createInterpolateElement } 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\nexport default function TemplatePartEdit( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n\tisSelected,\n} ) {\n\tconst { slug, theme, tagName, layout = {} } = attributes;\n\tconst templatePartId = createTemplatePartId( theme, slug );\n\tconst hasAlreadyRendered = useHasRecursion( templatePartId );\n\tconst [ isTemplatePartSelectionOpen, setIsTemplatePartSelectionOpen ] =\n\t\tuseState( false );\n\n\t// Set the postId block attribute if it did not exist,\n\t// but wait until the inner blocks have loaded to allow\n\t// new edits to trigger this.\n\tconst { isResolved, innerBlocks, isMissing, area } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getBlocks } = 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\tinnerBlocks: getBlocks( clientId ),\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, clientId ]\n\t);\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\t// The `isSelected` check ensures the `BlockSettingsMenuControls` fill\n\t// doesn't render multiple times. The block controls has similar internal check.\n\tconst canReplace =\n\t\tisSelected &&\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\t( area === 'header' || area === 'footer' );\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\tinnerBlocks.length === 0 &&\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<TemplatePartAdvancedControls\n\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\tdefaultWrapper={ areaObject.tagName }\n\t\t\t\t\thasInnerBlocks={ innerBlocks.length > 0 }\n\t\t\t\t/>\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{ canReplace && (\n\t\t\t\t\t<BlockSettingsMenuControls>\n\t\t\t\t\t\t{ () => (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( true );\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\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t\t__( 'Replace <BlockTitle />' ),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tBlockTitle: (\n\t\t\t\t\t\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\t\t\t\t\t\tmaximumLength={ 25 }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</BlockSettingsMenuControls>\n\t\t\t\t) }\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={ innerBlocks.length > 0 }\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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/template-part/edit/utils/hooks.js"],"names":["kebabCase","useDispatch","useSelect","store","coreStore","blockEditorStore","useMemo","serialize","__","createTemplatePartId","useAlternativeTemplateParts","area","excludedId","templateParts","isResolving","select","getEntityRecords","_isResolving","query","per_page","filteredTemplateParts","filter","templatePart","theme","slug","useAlternativeBlockPatterns","clientId","blockNameWithArea","getBlockRootClientId","getPatternsByBlockTypes","rootClientId","useCreateTemplatePartFromBlocks","setAttributes","saveEntityRecord","blocks","title","cleanSlug","replace","record","content","undefined","useTemplatePartArea","definedAreas","__experimentalGetDefaultTemplatePartAreas","selectedArea","find","definedArea","defaultArea","icon","label","tagName","area_tag"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/template-part/edit/utils/hooks.js"],"names":["paramCase","kebabCase","useDispatch","useSelect","store","coreStore","blockEditorStore","useMemo","serialize","__","createTemplatePartId","useAlternativeTemplateParts","area","excludedId","templateParts","isResolving","select","getEntityRecords","_isResolving","query","per_page","filteredTemplateParts","filter","templatePart","theme","slug","useAlternativeBlockPatterns","clientId","blockNameWithArea","getBlockRootClientId","getPatternsByBlockTypes","rootClientId","useCreateTemplatePartFromBlocks","setAttributes","saveEntityRecord","blocks","title","cleanSlug","replace","record","content","undefined","useTemplatePartArea","definedAreas","__experimentalGetDefaultTemplatePartAreas","selectedArea","find","definedArea","defaultArea","icon","label","tagName","area_tag"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { paramCase as kebabCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useMemo } from '@wordpress/element';\nimport { serialize } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { createTemplatePartId } from './create-template-part-id';\n\n/**\n * Retrieves the available template parts for the given area.\n *\n * @param {string} area Template part area.\n * @param {string} excludedId Template part ID to exclude.\n *\n * @return {{ templateParts: Array, isResolving: boolean }} array of template parts.\n */\nexport function useAlternativeTemplateParts( area, excludedId ) {\n\tconst { templateParts, isResolving } = useSelect( ( select ) => {\n\t\tconst { getEntityRecords, isResolving: _isResolving } =\n\t\t\tselect( coreStore );\n\t\tconst query = { per_page: -1 };\n\t\treturn {\n\t\t\ttemplateParts: getEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\tquery\n\t\t\t),\n\t\t\tisResolving: _isResolving( 'getEntityRecords', [\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\tquery,\n\t\t\t] ),\n\t\t};\n\t}, [] );\n\n\tconst filteredTemplateParts = useMemo( () => {\n\t\tif ( ! templateParts ) {\n\t\t\treturn [];\n\t\t}\n\t\treturn (\n\t\t\ttemplateParts.filter(\n\t\t\t\t( templatePart ) =>\n\t\t\t\t\tcreateTemplatePartId(\n\t\t\t\t\t\ttemplatePart.theme,\n\t\t\t\t\t\ttemplatePart.slug\n\t\t\t\t\t) !== excludedId &&\n\t\t\t\t\t( ! area ||\n\t\t\t\t\t\t'uncategorized' === area ||\n\t\t\t\t\t\ttemplatePart.area === area )\n\t\t\t) || []\n\t\t);\n\t}, [ templateParts, area, excludedId ] );\n\n\treturn {\n\t\ttemplateParts: filteredTemplateParts,\n\t\tisResolving,\n\t};\n}\n\n/**\n * Retrieves the available block patterns for the given area.\n *\n * @param {string} area Template part area.\n * @param {string} clientId Block Client ID. (The container of the block can impact allowed blocks).\n *\n * @return {Array} array of block patterns.\n */\nexport function useAlternativeBlockPatterns( area, clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst blockNameWithArea = area\n\t\t\t\t? `core/template-part/${ area }`\n\t\t\t\t: 'core/template-part';\n\t\t\tconst { getBlockRootClientId, getPatternsByBlockTypes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\treturn getPatternsByBlockTypes( blockNameWithArea, rootClientId );\n\t\t},\n\t\t[ area, clientId ]\n\t);\n}\n\nexport function useCreateTemplatePartFromBlocks( area, setAttributes ) {\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\treturn async ( blocks = [], title = __( 'Untitled Template Part' ) ) => {\n\t\t// Currently template parts only allow latin chars.\n\t\t// Fallback slug will receive suffix by default.\n\t\tconst cleanSlug =\n\t\t\tkebabCase( title ).replace( /[^\\w-]+/g, '' ) || 'wp-custom-part';\n\n\t\t// If we have `area` set from block attributes, means an exposed\n\t\t// block variation was inserted. So add this prop to the template\n\t\t// part entity on creation. Afterwards remove `area` value from\n\t\t// block attributes.\n\t\tconst record = {\n\t\t\ttitle,\n\t\t\tslug: cleanSlug,\n\t\t\tcontent: serialize( blocks ),\n\t\t\t// `area` is filterable on the server and defaults to `UNCATEGORIZED`\n\t\t\t// if provided value is not allowed.\n\t\t\tarea,\n\t\t};\n\t\tconst templatePart = await saveEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template_part',\n\t\t\trecord\n\t\t);\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};\n}\n\n/**\n * Retrieves the template part area object.\n *\n * @param {string} area Template part area identifier.\n *\n * @return {{icon: Object, label: string, tagName: string}} Template Part area.\n */\nexport function useTemplatePartArea( area ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\t// FIXME: @wordpress/block-library should not depend on @wordpress/editor.\n\t\t\t// Blocks can be loaded into a *non-post* block editor.\n\t\t\t/* eslint-disable @wordpress/data-no-store-string-literals */\n\t\t\tconst definedAreas =\n\t\t\t\tselect(\n\t\t\t\t\t'core/editor'\n\t\t\t\t).__experimentalGetDefaultTemplatePartAreas();\n\t\t\t/* eslint-enable @wordpress/data-no-store-string-literals */\n\n\t\t\tconst selectedArea = definedAreas.find(\n\t\t\t\t( definedArea ) => definedArea.area === area\n\t\t\t);\n\t\t\tconst defaultArea = definedAreas.find(\n\t\t\t\t( definedArea ) => definedArea.area === 'uncategorized'\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\ticon: selectedArea?.icon || defaultArea?.icon,\n\t\t\t\tlabel: selectedArea?.label || __( 'Template Part' ),\n\t\t\t\ttagName: selectedArea?.area_tag ?? 'div',\n\t\t\t};\n\t\t},\n\t\t[ area ]\n\t);\n}\n"]}
|
|
@@ -10,6 +10,11 @@ import { deepSignal, peek } from 'deepsignal';
|
|
|
10
10
|
* Internal dependencies
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
+
import { createPortal } from './portals.js';
|
|
14
|
+
/**
|
|
15
|
+
* Internal dependencies
|
|
16
|
+
*/
|
|
17
|
+
|
|
13
18
|
import { useSignalEffect } from './utils';
|
|
14
19
|
import { directive } from './hooks';
|
|
15
20
|
|
|
@@ -51,16 +56,34 @@ export default (() => {
|
|
|
51
56
|
return createElement(Provider, {
|
|
52
57
|
value: value
|
|
53
58
|
}, children);
|
|
59
|
+
}, {
|
|
60
|
+
priority: 5
|
|
61
|
+
}); // data-wp-body
|
|
62
|
+
|
|
63
|
+
directive('body', _ref2 => {
|
|
64
|
+
let {
|
|
65
|
+
props: {
|
|
66
|
+
children
|
|
67
|
+
},
|
|
68
|
+
context: inherited
|
|
69
|
+
} = _ref2;
|
|
70
|
+
const {
|
|
71
|
+
Provider
|
|
72
|
+
} = inherited;
|
|
73
|
+
const inheritedValue = useContext(inherited);
|
|
74
|
+
return createPortal(createElement(Provider, {
|
|
75
|
+
value: inheritedValue
|
|
76
|
+
}, children), document.body);
|
|
54
77
|
}); // data-wp-effect.[name]
|
|
55
78
|
|
|
56
|
-
directive('effect',
|
|
79
|
+
directive('effect', _ref3 => {
|
|
57
80
|
let {
|
|
58
81
|
directives: {
|
|
59
82
|
effect
|
|
60
83
|
},
|
|
61
84
|
context,
|
|
62
85
|
evaluate
|
|
63
|
-
} =
|
|
86
|
+
} = _ref3;
|
|
64
87
|
const contextValue = useContext(context);
|
|
65
88
|
Object.values(effect).forEach(path => {
|
|
66
89
|
useSignalEffect(() => {
|
|
@@ -71,14 +94,14 @@ export default (() => {
|
|
|
71
94
|
});
|
|
72
95
|
}); // data-wp-init.[name]
|
|
73
96
|
|
|
74
|
-
directive('init',
|
|
97
|
+
directive('init', _ref4 => {
|
|
75
98
|
let {
|
|
76
99
|
directives: {
|
|
77
100
|
init
|
|
78
101
|
},
|
|
79
102
|
context,
|
|
80
103
|
evaluate
|
|
81
|
-
} =
|
|
104
|
+
} = _ref4;
|
|
82
105
|
const contextValue = useContext(context);
|
|
83
106
|
Object.values(init).forEach(path => {
|
|
84
107
|
useEffect(() => {
|
|
@@ -89,7 +112,7 @@ export default (() => {
|
|
|
89
112
|
});
|
|
90
113
|
}); // data-wp-on.[event]
|
|
91
114
|
|
|
92
|
-
directive('on',
|
|
115
|
+
directive('on', _ref5 => {
|
|
93
116
|
let {
|
|
94
117
|
directives: {
|
|
95
118
|
on
|
|
@@ -97,10 +120,10 @@ export default (() => {
|
|
|
97
120
|
element,
|
|
98
121
|
evaluate,
|
|
99
122
|
context
|
|
100
|
-
} =
|
|
123
|
+
} = _ref5;
|
|
101
124
|
const contextValue = useContext(context);
|
|
102
|
-
Object.entries(on).forEach(
|
|
103
|
-
let [name, path] =
|
|
125
|
+
Object.entries(on).forEach(_ref6 => {
|
|
126
|
+
let [name, path] = _ref6;
|
|
104
127
|
|
|
105
128
|
element.props[`on${name}`] = event => {
|
|
106
129
|
evaluate(path, {
|
|
@@ -111,7 +134,7 @@ export default (() => {
|
|
|
111
134
|
});
|
|
112
135
|
}); // data-wp-class.[classname]
|
|
113
136
|
|
|
114
|
-
directive('class',
|
|
137
|
+
directive('class', _ref7 => {
|
|
115
138
|
let {
|
|
116
139
|
directives: {
|
|
117
140
|
class: className
|
|
@@ -119,7 +142,7 @@ export default (() => {
|
|
|
119
142
|
element,
|
|
120
143
|
evaluate,
|
|
121
144
|
context
|
|
122
|
-
} =
|
|
145
|
+
} = _ref7;
|
|
123
146
|
const contextValue = useContext(context);
|
|
124
147
|
Object.keys(className).filter(n => n !== 'default').forEach(name => {
|
|
125
148
|
const result = evaluate(className[name], {
|
|
@@ -142,7 +165,7 @@ export default (() => {
|
|
|
142
165
|
});
|
|
143
166
|
}); // data-wp-bind.[attribute]
|
|
144
167
|
|
|
145
|
-
directive('bind',
|
|
168
|
+
directive('bind', _ref8 => {
|
|
146
169
|
let {
|
|
147
170
|
directives: {
|
|
148
171
|
bind
|
|
@@ -150,28 +173,32 @@ export default (() => {
|
|
|
150
173
|
element,
|
|
151
174
|
context,
|
|
152
175
|
evaluate
|
|
153
|
-
} =
|
|
176
|
+
} = _ref8;
|
|
154
177
|
const contextValue = useContext(context);
|
|
155
|
-
Object.entries(bind).filter(n => n !== 'default').forEach(
|
|
156
|
-
let [attribute, path] =
|
|
178
|
+
Object.entries(bind).filter(n => n !== 'default').forEach(_ref9 => {
|
|
179
|
+
let [attribute, path] = _ref9;
|
|
157
180
|
const result = evaluate(path, {
|
|
158
181
|
context: contextValue
|
|
159
182
|
});
|
|
160
|
-
element.props[attribute] = result;
|
|
183
|
+
element.props[attribute] = result; // This seems necessary because Preact doesn't change the attributes
|
|
184
|
+
// on the hydration, so we have to do it manually. It doesn't need
|
|
185
|
+
// deps because it only needs to do it the first time.
|
|
186
|
+
|
|
161
187
|
useEffect(() => {
|
|
162
|
-
//
|
|
163
|
-
//
|
|
164
|
-
//
|
|
165
|
-
|
|
188
|
+
// aria- and data- attributes have no boolean representation.
|
|
189
|
+
// A `false` value is different from the attribute not being
|
|
190
|
+
// present, so we can't remove it.
|
|
191
|
+
// We follow Preact's logic: https://github.com/preactjs/preact/blob/ea49f7a0f9d1ff2c98c0bdd66aa0cbc583055246/src/diff/props.js#L131C24-L136
|
|
192
|
+
if (result === false && attribute[4] !== '-') {
|
|
166
193
|
element.ref.current.removeAttribute(attribute);
|
|
167
194
|
} else {
|
|
168
|
-
element.ref.current.setAttribute(attribute, result === true ? '' : result);
|
|
195
|
+
element.ref.current.setAttribute(attribute, result === true && attribute[4] !== '-' ? '' : result);
|
|
169
196
|
}
|
|
170
197
|
}, []);
|
|
171
198
|
});
|
|
172
199
|
}); // data-wp-ignore
|
|
173
200
|
|
|
174
|
-
directive('ignore',
|
|
201
|
+
directive('ignore', _ref10 => {
|
|
175
202
|
let {
|
|
176
203
|
element: {
|
|
177
204
|
type: Type,
|
|
@@ -180,7 +207,7 @@ export default (() => {
|
|
|
180
207
|
...rest
|
|
181
208
|
}
|
|
182
209
|
}
|
|
183
|
-
} =
|
|
210
|
+
} = _ref10;
|
|
184
211
|
// Preserve the initial inner HTML.
|
|
185
212
|
const cached = useMemo(() => innerHTML, []);
|
|
186
213
|
return createElement(Type, _extends({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/directives.js"],"names":["useContext","useMemo","useEffect","deepSignal","peek","useSignalEffect","directive","isObject","item","Array","isArray","mergeDeepSignals","target","source","k","directives","context","default","props","children","inherited","Provider","inheritedValue","value","localValue","effect","evaluate","contextValue","Object","values","forEach","path","init","on","element","entries","name","event","class","className","keys","filter","n","result","currentClass","classFinder","RegExp","replace","trim","test","ref","current","classList","remove","add","bind","attribute","removeAttribute","setAttribute","type","Type","innerHTML","rest","cached","__html"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { useContext, useMemo, useEffect } from 'preact/hooks';\nimport { deepSignal, peek } from 'deepsignal';\n\n/**\n * Internal dependencies\n */\nimport { useSignalEffect } from './utils';\nimport { directive } from './hooks';\n\nconst isObject = ( item ) =>\n\titem && typeof item === 'object' && ! Array.isArray( item );\n\nconst mergeDeepSignals = ( target, source ) => {\n\tfor ( const k in source ) {\n\t\tif ( typeof peek( target, k ) === 'undefined' ) {\n\t\t\ttarget[ `$${ k }` ] = source[ `$${ k }` ];\n\t\t} else if (\n\t\t\tisObject( peek( target, k ) ) &&\n\t\t\tisObject( peek( source, k ) )\n\t\t) {\n\t\t\tmergeDeepSignals(\n\t\t\t\ttarget[ `$${ k }` ].peek(),\n\t\t\t\tsource[ `$${ k }` ].peek()\n\t\t\t);\n\t\t}\n\t}\n};\n\nexport default () => {\n\t// data-wp-context\n\tdirective(\n\t\t'context',\n\t\t( {\n\t\t\tdirectives: {\n\t\t\t\tcontext: { default: context },\n\t\t\t},\n\t\t\tprops: { children },\n\t\t\tcontext: inherited,\n\t\t} ) => {\n\t\t\tconst { Provider } = inherited;\n\t\t\tconst inheritedValue = useContext( inherited );\n\t\t\tconst value = useMemo( () => {\n\t\t\t\tconst localValue = deepSignal( context );\n\t\t\t\tmergeDeepSignals( localValue, inheritedValue );\n\t\t\t\treturn localValue;\n\t\t\t}, [ context, inheritedValue ] );\n\n\t\t\treturn <Provider value={ value }>{ children }</Provider>;\n\t\t}\n\t);\n\n\t// data-wp-effect.[name]\n\tdirective( 'effect', ( { directives: { effect }, context, evaluate } ) => {\n\t\tconst contextValue = useContext( context );\n\t\tObject.values( effect ).forEach( ( path ) => {\n\t\t\tuseSignalEffect( () => {\n\t\t\t\treturn evaluate( path, { context: contextValue } );\n\t\t\t} );\n\t\t} );\n\t} );\n\n\t// data-wp-init.[name]\n\tdirective( 'init', ( { directives: { init }, context, evaluate } ) => {\n\t\tconst contextValue = useContext( context );\n\t\tObject.values( init ).forEach( ( path ) => {\n\t\t\tuseEffect( () => {\n\t\t\t\treturn evaluate( path, { context: contextValue } );\n\t\t\t}, [] );\n\t\t} );\n\t} );\n\n\t// data-wp-on.[event]\n\tdirective( 'on', ( { directives: { on }, element, evaluate, context } ) => {\n\t\tconst contextValue = useContext( context );\n\t\tObject.entries( on ).forEach( ( [ name, path ] ) => {\n\t\t\telement.props[ `on${ name }` ] = ( event ) => {\n\t\t\t\tevaluate( path, { event, context: contextValue } );\n\t\t\t};\n\t\t} );\n\t} );\n\n\t// data-wp-class.[classname]\n\tdirective(\n\t\t'class',\n\t\t( {\n\t\t\tdirectives: { class: className },\n\t\t\telement,\n\t\t\tevaluate,\n\t\t\tcontext,\n\t\t} ) => {\n\t\t\tconst contextValue = useContext( context );\n\t\t\tObject.keys( className )\n\t\t\t\t.filter( ( n ) => n !== 'default' )\n\t\t\t\t.forEach( ( name ) => {\n\t\t\t\t\tconst result = evaluate( className[ name ], {\n\t\t\t\t\t\tclassName: name,\n\t\t\t\t\t\tcontext: contextValue,\n\t\t\t\t\t} );\n\t\t\t\t\tconst currentClass = element.props.class || '';\n\t\t\t\t\tconst classFinder = new RegExp(\n\t\t\t\t\t\t`(^|\\\\s)${ name }(\\\\s|$)`,\n\t\t\t\t\t\t'g'\n\t\t\t\t\t);\n\t\t\t\t\tif ( ! result )\n\t\t\t\t\t\telement.props.class = currentClass\n\t\t\t\t\t\t\t.replace( classFinder, ' ' )\n\t\t\t\t\t\t\t.trim();\n\t\t\t\t\telse if ( ! classFinder.test( currentClass ) )\n\t\t\t\t\t\telement.props.class = currentClass\n\t\t\t\t\t\t\t? `${ currentClass } ${ name }`\n\t\t\t\t\t\t\t: name;\n\n\t\t\t\t\tuseEffect( () => {\n\t\t\t\t\t\t// This seems necessary because Preact doesn't change the class\n\t\t\t\t\t\t// names on the hydration, so we have to do it manually. It doesn't\n\t\t\t\t\t\t// need deps because it only needs to do it the first time.\n\t\t\t\t\t\tif ( ! result ) {\n\t\t\t\t\t\t\telement.ref.current.classList.remove( name );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement.ref.current.classList.add( name );\n\t\t\t\t\t\t}\n\t\t\t\t\t}, [] );\n\t\t\t\t} );\n\t\t}\n\t);\n\n\t// data-wp-bind.[attribute]\n\tdirective(\n\t\t'bind',\n\t\t( { directives: { bind }, element, context, evaluate } ) => {\n\t\t\tconst contextValue = useContext( context );\n\t\t\tObject.entries( bind )\n\t\t\t\t.filter( ( n ) => n !== 'default' )\n\t\t\t\t.forEach( ( [ attribute, path ] ) => {\n\t\t\t\t\tconst result = evaluate( path, {\n\t\t\t\t\t\tcontext: contextValue,\n\t\t\t\t\t} );\n\t\t\t\t\telement.props[ attribute ] = result;\n\n\t\t\t\t\tuseEffect( () => {\n\t\t\t\t\t\t// This seems necessary because Preact doesn't change the attributes\n\t\t\t\t\t\t// on the hydration, so we have to do it manually. It doesn't need\n\t\t\t\t\t\t// deps because it only needs to do it the first time.\n\t\t\t\t\t\tif ( result === false ) {\n\t\t\t\t\t\t\telement.ref.current.removeAttribute( attribute );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement.ref.current.setAttribute(\n\t\t\t\t\t\t\t\tattribute,\n\t\t\t\t\t\t\t\tresult === true ? '' : result\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, [] );\n\t\t\t\t} );\n\t\t}\n\t);\n\n\t// data-wp-ignore\n\tdirective(\n\t\t'ignore',\n\t\t( {\n\t\t\telement: {\n\t\t\t\ttype: Type,\n\t\t\t\tprops: { innerHTML, ...rest },\n\t\t\t},\n\t\t} ) => {\n\t\t\t// Preserve the initial inner HTML.\n\t\t\tconst cached = useMemo( () => innerHTML, [] );\n\t\t\treturn (\n\t\t\t\t<Type\n\t\t\t\t\tdangerouslySetInnerHTML={ { __html: cached } }\n\t\t\t\t\t{ ...rest }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/directives.js"],"names":["useContext","useMemo","useEffect","deepSignal","peek","createPortal","useSignalEffect","directive","isObject","item","Array","isArray","mergeDeepSignals","target","source","k","directives","context","default","props","children","inherited","Provider","inheritedValue","value","localValue","priority","document","body","effect","evaluate","contextValue","Object","values","forEach","path","init","on","element","entries","name","event","class","className","keys","filter","n","result","currentClass","classFinder","RegExp","replace","trim","test","ref","current","classList","remove","add","bind","attribute","removeAttribute","setAttribute","type","Type","innerHTML","rest","cached","__html"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { useContext, useMemo, useEffect } from 'preact/hooks';\nimport { deepSignal, peek } from 'deepsignal';\n/**\n * Internal dependencies\n */\nimport { createPortal } from './portals.js';\n\n/**\n * Internal dependencies\n */\nimport { useSignalEffect } from './utils';\nimport { directive } from './hooks';\n\nconst isObject = ( item ) =>\n\titem && typeof item === 'object' && ! Array.isArray( item );\n\nconst mergeDeepSignals = ( target, source ) => {\n\tfor ( const k in source ) {\n\t\tif ( typeof peek( target, k ) === 'undefined' ) {\n\t\t\ttarget[ `$${ k }` ] = source[ `$${ k }` ];\n\t\t} else if (\n\t\t\tisObject( peek( target, k ) ) &&\n\t\t\tisObject( peek( source, k ) )\n\t\t) {\n\t\t\tmergeDeepSignals(\n\t\t\t\ttarget[ `$${ k }` ].peek(),\n\t\t\t\tsource[ `$${ k }` ].peek()\n\t\t\t);\n\t\t}\n\t}\n};\n\nexport default () => {\n\t// data-wp-context\n\tdirective(\n\t\t'context',\n\t\t( {\n\t\t\tdirectives: {\n\t\t\t\tcontext: { default: context },\n\t\t\t},\n\t\t\tprops: { children },\n\t\t\tcontext: inherited,\n\t\t} ) => {\n\t\t\tconst { Provider } = inherited;\n\t\t\tconst inheritedValue = useContext( inherited );\n\t\t\tconst value = useMemo( () => {\n\t\t\t\tconst localValue = deepSignal( context );\n\t\t\t\tmergeDeepSignals( localValue, inheritedValue );\n\t\t\t\treturn localValue;\n\t\t\t}, [ context, inheritedValue ] );\n\n\t\t\treturn <Provider value={ value }>{ children }</Provider>;\n\t\t},\n\t\t{ priority: 5 }\n\t);\n\n\t// data-wp-body\n\tdirective( 'body', ( { props: { children }, context: inherited } ) => {\n\t\tconst { Provider } = inherited;\n\t\tconst inheritedValue = useContext( inherited );\n\t\treturn createPortal(\n\t\t\t<Provider value={ inheritedValue }>{ children }</Provider>,\n\t\t\tdocument.body\n\t\t);\n\t} );\n\n\t// data-wp-effect.[name]\n\tdirective( 'effect', ( { directives: { effect }, context, evaluate } ) => {\n\t\tconst contextValue = useContext( context );\n\t\tObject.values( effect ).forEach( ( path ) => {\n\t\t\tuseSignalEffect( () => {\n\t\t\t\treturn evaluate( path, { context: contextValue } );\n\t\t\t} );\n\t\t} );\n\t} );\n\n\t// data-wp-init.[name]\n\tdirective( 'init', ( { directives: { init }, context, evaluate } ) => {\n\t\tconst contextValue = useContext( context );\n\t\tObject.values( init ).forEach( ( path ) => {\n\t\t\tuseEffect( () => {\n\t\t\t\treturn evaluate( path, { context: contextValue } );\n\t\t\t}, [] );\n\t\t} );\n\t} );\n\n\t// data-wp-on.[event]\n\tdirective( 'on', ( { directives: { on }, element, evaluate, context } ) => {\n\t\tconst contextValue = useContext( context );\n\t\tObject.entries( on ).forEach( ( [ name, path ] ) => {\n\t\t\telement.props[ `on${ name }` ] = ( event ) => {\n\t\t\t\tevaluate( path, { event, context: contextValue } );\n\t\t\t};\n\t\t} );\n\t} );\n\n\t// data-wp-class.[classname]\n\tdirective(\n\t\t'class',\n\t\t( {\n\t\t\tdirectives: { class: className },\n\t\t\telement,\n\t\t\tevaluate,\n\t\t\tcontext,\n\t\t} ) => {\n\t\t\tconst contextValue = useContext( context );\n\t\t\tObject.keys( className )\n\t\t\t\t.filter( ( n ) => n !== 'default' )\n\t\t\t\t.forEach( ( name ) => {\n\t\t\t\t\tconst result = evaluate( className[ name ], {\n\t\t\t\t\t\tclassName: name,\n\t\t\t\t\t\tcontext: contextValue,\n\t\t\t\t\t} );\n\t\t\t\t\tconst currentClass = element.props.class || '';\n\t\t\t\t\tconst classFinder = new RegExp(\n\t\t\t\t\t\t`(^|\\\\s)${ name }(\\\\s|$)`,\n\t\t\t\t\t\t'g'\n\t\t\t\t\t);\n\t\t\t\t\tif ( ! result )\n\t\t\t\t\t\telement.props.class = currentClass\n\t\t\t\t\t\t\t.replace( classFinder, ' ' )\n\t\t\t\t\t\t\t.trim();\n\t\t\t\t\telse if ( ! classFinder.test( currentClass ) )\n\t\t\t\t\t\telement.props.class = currentClass\n\t\t\t\t\t\t\t? `${ currentClass } ${ name }`\n\t\t\t\t\t\t\t: name;\n\n\t\t\t\t\tuseEffect( () => {\n\t\t\t\t\t\t// This seems necessary because Preact doesn't change the class\n\t\t\t\t\t\t// names on the hydration, so we have to do it manually. It doesn't\n\t\t\t\t\t\t// need deps because it only needs to do it the first time.\n\t\t\t\t\t\tif ( ! result ) {\n\t\t\t\t\t\t\telement.ref.current.classList.remove( name );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement.ref.current.classList.add( name );\n\t\t\t\t\t\t}\n\t\t\t\t\t}, [] );\n\t\t\t\t} );\n\t\t}\n\t);\n\n\t// data-wp-bind.[attribute]\n\tdirective(\n\t\t'bind',\n\t\t( { directives: { bind }, element, context, evaluate } ) => {\n\t\t\tconst contextValue = useContext( context );\n\t\t\tObject.entries( bind )\n\t\t\t\t.filter( ( n ) => n !== 'default' )\n\t\t\t\t.forEach( ( [ attribute, path ] ) => {\n\t\t\t\t\tconst result = evaluate( path, {\n\t\t\t\t\t\tcontext: contextValue,\n\t\t\t\t\t} );\n\t\t\t\t\telement.props[ attribute ] = result;\n\n\t\t\t\t\t// This seems necessary because Preact doesn't change the attributes\n\t\t\t\t\t// on the hydration, so we have to do it manually. It doesn't need\n\t\t\t\t\t// deps because it only needs to do it the first time.\n\t\t\t\t\tuseEffect( () => {\n\t\t\t\t\t\t// aria- and data- attributes have no boolean representation.\n\t\t\t\t\t\t// A `false` value is different from the attribute not being\n\t\t\t\t\t\t// present, so we can't remove it.\n\t\t\t\t\t\t// We follow Preact's logic: https://github.com/preactjs/preact/blob/ea49f7a0f9d1ff2c98c0bdd66aa0cbc583055246/src/diff/props.js#L131C24-L136\n\t\t\t\t\t\tif ( result === false && attribute[ 4 ] !== '-' ) {\n\t\t\t\t\t\t\telement.ref.current.removeAttribute( attribute );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement.ref.current.setAttribute(\n\t\t\t\t\t\t\t\tattribute,\n\t\t\t\t\t\t\t\tresult === true && attribute[ 4 ] !== '-'\n\t\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t\t: result\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, [] );\n\t\t\t\t} );\n\t\t}\n\t);\n\n\t// data-wp-ignore\n\tdirective(\n\t\t'ignore',\n\t\t( {\n\t\t\telement: {\n\t\t\t\ttype: Type,\n\t\t\t\tprops: { innerHTML, ...rest },\n\t\t\t},\n\t\t} ) => {\n\t\t\t// Preserve the initial inner HTML.\n\t\t\tconst cached = useMemo( () => innerHTML, [] );\n\t\t\treturn (\n\t\t\t\t<Type\n\t\t\t\t\tdangerouslySetInnerHTML={ { __html: cached } }\n\t\t\t\t\t{ ...rest }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t);\n};\n"]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { createElement } from "@wordpress/element";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* External dependencies
|
|
3
5
|
*/
|
|
4
|
-
import { h, options, createContext } from 'preact';
|
|
6
|
+
import { h, options, createContext, cloneElement } from 'preact';
|
|
5
7
|
import { useRef, useMemo } from 'preact/hooks';
|
|
6
8
|
/**
|
|
7
9
|
* Internal dependencies
|
|
@@ -12,18 +14,21 @@ import { rawStore as store } from './store'; // Main context.
|
|
|
12
14
|
const context = createContext({}); // WordPress Directives.
|
|
13
15
|
|
|
14
16
|
const directiveMap = {};
|
|
15
|
-
|
|
17
|
+
const directivePriorities = {};
|
|
18
|
+
export const directive = function (name, cb) {
|
|
19
|
+
let {
|
|
20
|
+
priority = 10
|
|
21
|
+
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
16
22
|
directiveMap[name] = cb;
|
|
23
|
+
directivePriorities[name] = priority;
|
|
17
24
|
}; // Resolve the path to some property of the store object.
|
|
18
25
|
|
|
19
26
|
const resolve = (path, ctx) => {
|
|
20
|
-
// If path starts with !, remove it and save a flag.
|
|
21
|
-
const hasNegationOperator = path[0] === '!' && !!(path = path.slice(1));
|
|
22
27
|
let current = { ...store,
|
|
23
28
|
context: ctx
|
|
24
29
|
};
|
|
25
30
|
path.split('.').forEach(p => current = current[p]);
|
|
26
|
-
return
|
|
31
|
+
return current;
|
|
27
32
|
}; // Generate the evaluate function.
|
|
28
33
|
|
|
29
34
|
|
|
@@ -33,32 +38,91 @@ const getEvaluate = function () {
|
|
|
33
38
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
34
39
|
return function (path) {
|
|
35
40
|
let extraArgs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
41
|
+
// If path starts with !, remove it and save a flag.
|
|
42
|
+
const hasNegationOperator = path[0] === '!' && !!(path = path.slice(1));
|
|
36
43
|
const value = resolve(path, extraArgs.context);
|
|
37
|
-
|
|
44
|
+
const returnValue = typeof value === 'function' ? value({
|
|
38
45
|
ref: ref.current,
|
|
39
46
|
...store,
|
|
40
47
|
...extraArgs
|
|
41
48
|
}) : value;
|
|
49
|
+
return hasNegationOperator ? !returnValue : returnValue;
|
|
42
50
|
};
|
|
43
|
-
}; //
|
|
51
|
+
}; // Separate directives by priority. The resulting array contains objects
|
|
52
|
+
// of directives grouped by same priority, and sorted in ascending order.
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
const usePriorityLevels = directives => useMemo(() => {
|
|
56
|
+
const byPriority = Object.entries(directives).reduce((acc, _ref) => {
|
|
57
|
+
let [name, values] = _ref;
|
|
58
|
+
const priority = directivePriorities[name];
|
|
59
|
+
if (!acc[priority]) acc[priority] = {};
|
|
60
|
+
acc[priority][name] = values;
|
|
61
|
+
return acc;
|
|
62
|
+
}, {});
|
|
63
|
+
return Object.entries(byPriority).sort((_ref2, _ref3) => {
|
|
64
|
+
let [p1] = _ref2;
|
|
65
|
+
let [p2] = _ref3;
|
|
66
|
+
return p1 - p2;
|
|
67
|
+
}).map(_ref4 => {
|
|
68
|
+
let [, obj] = _ref4;
|
|
69
|
+
return obj;
|
|
70
|
+
});
|
|
71
|
+
}, [directives]); // Directive wrapper.
|
|
44
72
|
|
|
45
73
|
|
|
46
|
-
const Directive =
|
|
74
|
+
const Directive = _ref5 => {
|
|
47
75
|
let {
|
|
48
76
|
type,
|
|
49
77
|
directives,
|
|
50
78
|
props: originalProps
|
|
51
|
-
} =
|
|
79
|
+
} = _ref5;
|
|
52
80
|
const ref = useRef(null);
|
|
53
81
|
const element = h(type, { ...originalProps,
|
|
54
82
|
ref
|
|
55
83
|
});
|
|
56
|
-
const props = { ...originalProps,
|
|
57
|
-
children: element
|
|
58
|
-
};
|
|
59
84
|
const evaluate = useMemo(() => getEvaluate({
|
|
60
85
|
ref
|
|
61
|
-
}), []);
|
|
86
|
+
}), []); // Add wrappers recursively for each priority level.
|
|
87
|
+
|
|
88
|
+
const byPriorityLevel = usePriorityLevels(directives);
|
|
89
|
+
return createElement(RecursivePriorityLevel, {
|
|
90
|
+
directives: byPriorityLevel,
|
|
91
|
+
element: element,
|
|
92
|
+
evaluate: evaluate,
|
|
93
|
+
originalProps: originalProps
|
|
94
|
+
});
|
|
95
|
+
}; // Priority level wrapper.
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
const RecursivePriorityLevel = _ref6 => {
|
|
99
|
+
let {
|
|
100
|
+
directives: [directives, ...rest],
|
|
101
|
+
element,
|
|
102
|
+
evaluate,
|
|
103
|
+
originalProps
|
|
104
|
+
} = _ref6;
|
|
105
|
+
// This element needs to be a fresh copy so we are not modifying an already
|
|
106
|
+
// rendered element with Preact's internal properties initialized. This
|
|
107
|
+
// prevents an error with changes in `element.props.children` not being
|
|
108
|
+
// reflected in `element.__k`.
|
|
109
|
+
element = cloneElement(element); // Recursively render the wrapper for the next priority level.
|
|
110
|
+
//
|
|
111
|
+
// Note that, even though we're instantiating a vnode with a
|
|
112
|
+
// `RecursivePriorityLevel` here, its render function will not be executed
|
|
113
|
+
// just yet. Actually, it will be delayed until the current render function
|
|
114
|
+
// has finished. That ensures directives in the current priorty level have
|
|
115
|
+
// run (and thus modified the passed `element`) before the next level.
|
|
116
|
+
|
|
117
|
+
const children = rest.length > 0 ? createElement(RecursivePriorityLevel, {
|
|
118
|
+
directives: rest,
|
|
119
|
+
element: element,
|
|
120
|
+
evaluate: evaluate,
|
|
121
|
+
originalProps: originalProps
|
|
122
|
+
}) : element;
|
|
123
|
+
const props = { ...originalProps,
|
|
124
|
+
children
|
|
125
|
+
};
|
|
62
126
|
const directiveArgs = {
|
|
63
127
|
directives,
|
|
64
128
|
props,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/hooks.js"],"names":["h","options","createContext","useRef","useMemo","rawStore","store","context","directiveMap","directive","name","cb","resolve","path","ctx","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/hooks.js"],"names":["h","options","createContext","cloneElement","useRef","useMemo","rawStore","store","context","directiveMap","directivePriorities","directive","name","cb","priority","resolve","path","ctx","current","split","forEach","p","getEvaluate","ref","extraArgs","hasNegationOperator","slice","value","returnValue","usePriorityLevels","directives","byPriority","Object","entries","reduce","acc","values","sort","p1","p2","map","obj","Directive","type","props","originalProps","element","evaluate","byPriorityLevel","RecursivePriorityLevel","rest","children","length","directiveArgs","d","wrapper","undefined","old","vnode","__directives"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { h, options, createContext, cloneElement } from 'preact';\nimport { useRef, useMemo } from 'preact/hooks';\n/**\n * Internal dependencies\n */\nimport { rawStore as store } from './store';\n\n// Main context.\nconst context = createContext( {} );\n\n// WordPress Directives.\nconst directiveMap = {};\nconst directivePriorities = {};\nexport const directive = ( name, cb, { priority = 10 } = {} ) => {\n\tdirectiveMap[ name ] = cb;\n\tdirectivePriorities[ name ] = priority;\n};\n\n// Resolve the path to some property of the store object.\nconst resolve = ( path, ctx ) => {\n\tlet current = { ...store, context: ctx };\n\tpath.split( '.' ).forEach( ( p ) => ( current = current[ p ] ) );\n\treturn current;\n};\n\n// Generate the evaluate function.\nconst getEvaluate =\n\t( { ref } = {} ) =>\n\t( path, extraArgs = {} ) => {\n\t\t// If path starts with !, remove it and save a flag.\n\t\tconst hasNegationOperator =\n\t\t\tpath[ 0 ] === '!' && !! ( path = path.slice( 1 ) );\n\t\tconst value = resolve( path, extraArgs.context );\n\t\tconst returnValue =\n\t\t\ttypeof value === 'function'\n\t\t\t\t? value( {\n\t\t\t\t\t\tref: ref.current,\n\t\t\t\t\t\t...store,\n\t\t\t\t\t\t...extraArgs,\n\t\t\t\t } )\n\t\t\t\t: value;\n\t\treturn hasNegationOperator ? ! returnValue : returnValue;\n\t};\n\n// Separate directives by priority. The resulting array contains objects\n// of directives grouped by same priority, and sorted in ascending order.\nconst usePriorityLevels = ( directives ) =>\n\tuseMemo( () => {\n\t\tconst byPriority = Object.entries( directives ).reduce(\n\t\t\t( acc, [ name, values ] ) => {\n\t\t\t\tconst priority = directivePriorities[ name ];\n\t\t\t\tif ( ! acc[ priority ] ) acc[ priority ] = {};\n\t\t\t\tacc[ priority ][ name ] = values;\n\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\n\t\treturn Object.entries( byPriority )\n\t\t\t.sort( ( [ p1 ], [ p2 ] ) => p1 - p2 )\n\t\t\t.map( ( [ , obj ] ) => obj );\n\t}, [ directives ] );\n\n// Directive wrapper.\nconst Directive = ( { type, directives, props: originalProps } ) => {\n\tconst ref = useRef( null );\n\tconst element = h( type, { ...originalProps, ref } );\n\tconst evaluate = useMemo( () => getEvaluate( { ref } ), [] );\n\n\t// Add wrappers recursively for each priority level.\n\tconst byPriorityLevel = usePriorityLevels( directives );\n\treturn (\n\t\t<RecursivePriorityLevel\n\t\t\tdirectives={ byPriorityLevel }\n\t\t\telement={ element }\n\t\t\tevaluate={ evaluate }\n\t\t\toriginalProps={ originalProps }\n\t\t/>\n\t);\n};\n\n// Priority level wrapper.\nconst RecursivePriorityLevel = ( {\n\tdirectives: [ directives, ...rest ],\n\telement,\n\tevaluate,\n\toriginalProps,\n} ) => {\n\t// This element needs to be a fresh copy so we are not modifying an already\n\t// rendered element with Preact's internal properties initialized. This\n\t// prevents an error with changes in `element.props.children` not being\n\t// reflected in `element.__k`.\n\telement = cloneElement( element );\n\n\t// Recursively render the wrapper for the next priority level.\n\t//\n\t// Note that, even though we're instantiating a vnode with a\n\t// `RecursivePriorityLevel` here, its render function will not be executed\n\t// just yet. Actually, it will be delayed until the current render function\n\t// has finished. That ensures directives in the current priorty level have\n\t// run (and thus modified the passed `element`) before the next level.\n\tconst children =\n\t\trest.length > 0 ? (\n\t\t\t<RecursivePriorityLevel\n\t\t\t\tdirectives={ rest }\n\t\t\t\telement={ element }\n\t\t\t\tevaluate={ evaluate }\n\t\t\t\toriginalProps={ originalProps }\n\t\t\t/>\n\t\t) : (\n\t\t\telement\n\t\t);\n\n\tconst props = { ...originalProps, children };\n\tconst directiveArgs = { directives, props, element, context, evaluate };\n\n\tfor ( const d in directives ) {\n\t\tconst wrapper = directiveMap[ d ]?.( directiveArgs );\n\t\tif ( wrapper !== undefined ) props.children = wrapper;\n\t}\n\n\treturn props.children;\n};\n\n// Preact Options Hook called each time a vnode is created.\nconst old = options.vnode;\noptions.vnode = ( vnode ) => {\n\tif ( vnode.props.__directives ) {\n\t\tconst props = vnode.props;\n\t\tconst directives = props.__directives;\n\t\tdelete props.__directives;\n\t\tvnode.props = {\n\t\t\ttype: vnode.type,\n\t\t\tdirectives,\n\t\t\tprops,\n\t\t};\n\t\tvnode.type = Directive;\n\t}\n\n\tif ( old ) old( vnode );\n};\n"]}
|