@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":["SocialLinkURLPopover","url","setAttributes","setPopover","popoverAnchor","event","preventDefault","nextURL","keyboardReturn","SocialLinkEdit","attributes","context","isSelected","service","label","rel","showLabels","iconColorValue","iconBackgroundColorValue","showURLPopover","classes","setPopoverAnchor","IconComponent","socialLinkName","socialLinkLabel","blockProps","className","style","color","backgroundColor","value"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/social-link/edit.js"],"names":["SocialLinkURLPopover","url","setAttributes","setPopover","popoverAnchor","clientId","removeBlock","blockEditorStore","event","preventDefault","nextURL","defaultPrevented","BACKSPACE","DELETE","includes","keyCode","keyboardReturn","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"]}
|
|
@@ -9,8 +9,6 @@ exports.default = TemplatePartEdit;
|
|
|
9
9
|
|
|
10
10
|
var _element = require("@wordpress/element");
|
|
11
11
|
|
|
12
|
-
var _lodash = require("lodash");
|
|
13
|
-
|
|
14
12
|
var _data = require("@wordpress/data");
|
|
15
13
|
|
|
16
14
|
var _blockEditor = require("@wordpress/block-editor");
|
|
@@ -33,10 +31,6 @@ var _createTemplatePartId = require("./utils/create-template-part-id");
|
|
|
33
31
|
|
|
34
32
|
var _hooks = require("./utils/hooks");
|
|
35
33
|
|
|
36
|
-
/**
|
|
37
|
-
* External dependencies
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
34
|
/**
|
|
41
35
|
* WordPress dependencies
|
|
42
36
|
*/
|
|
@@ -85,7 +79,7 @@ function TemplatePartEdit(_ref) {
|
|
|
85
79
|
return {
|
|
86
80
|
innerBlocks: getBlocks(clientId),
|
|
87
81
|
isResolved: hasResolvedEntity,
|
|
88
|
-
isMissing: hasResolvedEntity && (
|
|
82
|
+
isMissing: hasResolvedEntity && (!entityRecord || Object.keys(entityRecord).length === 0),
|
|
89
83
|
area: _area
|
|
90
84
|
};
|
|
91
85
|
}, [templatePartId, clientId]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/template-part/edit/index.js"],"names":["TemplatePartEdit","attributes","setAttributes","clientId","isSelected","slug","theme","tagName","layout","templatePartId","hasAlreadyRendered","isTemplatePartSelectionOpen","setIsTemplatePartSelectionOpen","isResolved","innerBlocks","isMissing","area","select","getEditedEntityRecord","hasFinishedResolution","coreStore","getBlocks","blockEditorStore","getEntityArgs","entityRecord","_area","hasResolvedEntity","templateParts","blockPatterns","hasReplacements","length","areaObject","blockProps","isPlaceholder","isEntityAvailable","TagName","canReplace","BlockTitle","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":["TemplatePartEdit","attributes","setAttributes","clientId","isSelected","slug","theme","tagName","layout","templatePartId","hasAlreadyRendered","isTemplatePartSelectionOpen","setIsTemplatePartSelectionOpen","isResolved","innerBlocks","isMissing","area","select","getEditedEntityRecord","hasFinishedResolution","coreStore","getBlocks","blockEditorStore","getEntityArgs","entityRecord","_area","hasResolvedEntity","Object","keys","length","templateParts","blockPatterns","hasReplacements","areaObject","blockProps","isPlaceholder","isEntityAvailable","TagName","canReplace","BlockTitle","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"]}
|
|
@@ -8,7 +8,7 @@ exports.useAlternativeTemplateParts = useAlternativeTemplateParts;
|
|
|
8
8
|
exports.useCreateTemplatePartFromBlocks = useCreateTemplatePartFromBlocks;
|
|
9
9
|
exports.useTemplatePartArea = useTemplatePartArea;
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _changeCase = require("change-case");
|
|
12
12
|
|
|
13
13
|
var _data = require("@wordpress/data");
|
|
14
14
|
|
|
@@ -104,7 +104,7 @@ function useCreateTemplatePartFromBlocks(area, setAttributes) {
|
|
|
104
104
|
let title = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _i18n.__)('Untitled Template Part');
|
|
105
105
|
// Currently template parts only allow latin chars.
|
|
106
106
|
// Fallback slug will receive suffix by default.
|
|
107
|
-
const cleanSlug = (0,
|
|
107
|
+
const cleanSlug = (0, _changeCase.paramCase)(title).replace(/[^\w-]+/g, '') || 'wp-custom-part'; // If we have `area` set from block attributes, means an exposed
|
|
108
108
|
// block variation was inserted. So add this prop to the template
|
|
109
109
|
// part entity on creation. Afterwards remove `area` value from
|
|
110
110
|
// block attributes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/template-part/edit/utils/hooks.js"],"names":["useAlternativeTemplateParts","area","excludedId","templateParts","isResolving","select","getEntityRecords","_isResolving","coreStore","query","per_page","filteredTemplateParts","filter","templatePart","theme","slug","useAlternativeBlockPatterns","clientId","blockNameWithArea","getBlockRootClientId","getPatternsByBlockTypes","blockEditorStore","rootClientId","useCreateTemplatePartFromBlocks","setAttributes","saveEntityRecord","blocks","title","cleanSlug","replace","record","content","undefined","useTemplatePartArea","definedAreas","__experimentalGetDefaultTemplatePartAreas","selectedArea","find","definedArea","defaultArea","icon","label","tagName","area_tag"],"mappings":";;;;;;;;;;AAGA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AAlBA;AACA;AACA;;AAGA;AACA;AACA;;AAQA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,2BAAT,CAAsCC,IAAtC,EAA4CC,UAA5C,EAAyD;AAC/D,QAAM;AAAEC,IAAAA,aAAF;AAAiBC,IAAAA;AAAjB,MAAiC,qBAAaC,MAAF,IAAc;AAC/D,UAAM;AAAEC,MAAAA,gBAAF;AAAoBF,MAAAA,WAAW,EAAEG;AAAjC,QACLF,MAAM,CAAEG,eAAF,CADP;AAEA,UAAMC,KAAK,GAAG;AAAEC,MAAAA,QAAQ,EAAE,CAAC;AAAb,KAAd;AACA,WAAO;AACNP,MAAAA,aAAa,EAAEG,gBAAgB,CAC9B,UAD8B,EAE9B,kBAF8B,EAG9BG,KAH8B,CADzB;AAMNL,MAAAA,WAAW,EAAEG,YAAY,CAAE,kBAAF,EAAsB,CAC9C,UAD8C,EAE9C,kBAF8C,EAG9CE,KAH8C,CAAtB;AANnB,KAAP;AAYA,GAhBsC,EAgBpC,EAhBoC,CAAvC;AAkBA,QAAME,qBAAqB,GAAG,sBAAS,MAAM;AAC5C,QAAK,CAAER,aAAP,EAAuB;AACtB,aAAO,EAAP;AACA;;AACD,WACCA,aAAa,CAACS,MAAd,CACGC,YAAF,IACC,gDACCA,YAAY,CAACC,KADd,EAECD,YAAY,CAACE,IAFd,MAGMb,UAHN,KAIE,CAAED,IAAF,IACD,oBAAoBA,IADnB,IAEDY,YAAY,CAACZ,IAAb,KAAsBA,IANvB,CAFF,KASK,EAVN;AAYA,GAhB6B,EAgB3B,CAAEE,aAAF,EAAiBF,IAAjB,EAAuBC,UAAvB,CAhB2B,CAA9B;AAkBA,SAAO;AACNC,IAAAA,aAAa,EAAEQ,qBADT;AAENP,IAAAA;AAFM,GAAP;AAIA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASY,2BAAT,CAAsCf,IAAtC,EAA4CgB,QAA5C,EAAuD;AAC7D,SAAO,qBACJZ,MAAF,IAAc;AACb,UAAMa,iBAAiB,GAAGjB,IAAI,GAC1B,sBAAsBA,IAAM,EADF,GAE3B,oBAFH;AAGA,UAAM;AAAEkB,MAAAA,oBAAF;AAAwBC,MAAAA;AAAxB,QACLf,MAAM,CAAEgB,kBAAF,CADP;AAEA,UAAMC,YAAY,GAAGH,oBAAoB,CAAEF,QAAF,CAAzC;AACA,WAAOG,uBAAuB,CAAEF,iBAAF,EAAqBI,YAArB,CAA9B;AACA,GATK,EAUN,CAAErB,IAAF,EAAQgB,QAAR,CAVM,CAAP;AAYA;;AAEM,SAASM,+BAAT,CAA0CtB,IAA1C,EAAgDuB,aAAhD,EAAgE;AACtE,QAAM;AAAEC,IAAAA;AAAF,MAAuB,uBAAajB,eAAb,CAA7B;AAEA,SAAO,kBAAiE;AAAA,QAAzDkB,MAAyD,uEAAhD,EAAgD;AAAA,QAA5CC,KAA4C,uEAApC,cAAI,wBAAJ,CAAoC;AACvE;AACA;AACA,UAAMC,SAAS,GACd,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/template-part/edit/utils/hooks.js"],"names":["useAlternativeTemplateParts","area","excludedId","templateParts","isResolving","select","getEntityRecords","_isResolving","coreStore","query","per_page","filteredTemplateParts","filter","templatePart","theme","slug","useAlternativeBlockPatterns","clientId","blockNameWithArea","getBlockRootClientId","getPatternsByBlockTypes","blockEditorStore","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"]}
|
|
@@ -15,6 +15,8 @@ var _hooks = require("preact/hooks");
|
|
|
15
15
|
|
|
16
16
|
var _deepsignal = require("deepsignal");
|
|
17
17
|
|
|
18
|
+
var _portals = require("./portals.js");
|
|
19
|
+
|
|
18
20
|
var _utils = require("./utils");
|
|
19
21
|
|
|
20
22
|
var _hooks2 = require("./hooks");
|
|
@@ -23,6 +25,10 @@ var _hooks2 = require("./hooks");
|
|
|
23
25
|
* External dependencies
|
|
24
26
|
*/
|
|
25
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Internal dependencies
|
|
30
|
+
*/
|
|
31
|
+
|
|
26
32
|
/**
|
|
27
33
|
* Internal dependencies
|
|
28
34
|
*/
|
|
@@ -64,16 +70,34 @@ var _default = () => {
|
|
|
64
70
|
return (0, _element.createElement)(Provider, {
|
|
65
71
|
value: value
|
|
66
72
|
}, children);
|
|
73
|
+
}, {
|
|
74
|
+
priority: 5
|
|
75
|
+
}); // data-wp-body
|
|
76
|
+
|
|
77
|
+
(0, _hooks2.directive)('body', _ref2 => {
|
|
78
|
+
let {
|
|
79
|
+
props: {
|
|
80
|
+
children
|
|
81
|
+
},
|
|
82
|
+
context: inherited
|
|
83
|
+
} = _ref2;
|
|
84
|
+
const {
|
|
85
|
+
Provider
|
|
86
|
+
} = inherited;
|
|
87
|
+
const inheritedValue = (0, _hooks.useContext)(inherited);
|
|
88
|
+
return (0, _portals.createPortal)((0, _element.createElement)(Provider, {
|
|
89
|
+
value: inheritedValue
|
|
90
|
+
}, children), document.body);
|
|
67
91
|
}); // data-wp-effect.[name]
|
|
68
92
|
|
|
69
|
-
(0, _hooks2.directive)('effect',
|
|
93
|
+
(0, _hooks2.directive)('effect', _ref3 => {
|
|
70
94
|
let {
|
|
71
95
|
directives: {
|
|
72
96
|
effect
|
|
73
97
|
},
|
|
74
98
|
context,
|
|
75
99
|
evaluate
|
|
76
|
-
} =
|
|
100
|
+
} = _ref3;
|
|
77
101
|
const contextValue = (0, _hooks.useContext)(context);
|
|
78
102
|
Object.values(effect).forEach(path => {
|
|
79
103
|
(0, _utils.useSignalEffect)(() => {
|
|
@@ -84,14 +108,14 @@ var _default = () => {
|
|
|
84
108
|
});
|
|
85
109
|
}); // data-wp-init.[name]
|
|
86
110
|
|
|
87
|
-
(0, _hooks2.directive)('init',
|
|
111
|
+
(0, _hooks2.directive)('init', _ref4 => {
|
|
88
112
|
let {
|
|
89
113
|
directives: {
|
|
90
114
|
init
|
|
91
115
|
},
|
|
92
116
|
context,
|
|
93
117
|
evaluate
|
|
94
|
-
} =
|
|
118
|
+
} = _ref4;
|
|
95
119
|
const contextValue = (0, _hooks.useContext)(context);
|
|
96
120
|
Object.values(init).forEach(path => {
|
|
97
121
|
(0, _hooks.useEffect)(() => {
|
|
@@ -102,7 +126,7 @@ var _default = () => {
|
|
|
102
126
|
});
|
|
103
127
|
}); // data-wp-on.[event]
|
|
104
128
|
|
|
105
|
-
(0, _hooks2.directive)('on',
|
|
129
|
+
(0, _hooks2.directive)('on', _ref5 => {
|
|
106
130
|
let {
|
|
107
131
|
directives: {
|
|
108
132
|
on
|
|
@@ -110,10 +134,10 @@ var _default = () => {
|
|
|
110
134
|
element,
|
|
111
135
|
evaluate,
|
|
112
136
|
context
|
|
113
|
-
} =
|
|
137
|
+
} = _ref5;
|
|
114
138
|
const contextValue = (0, _hooks.useContext)(context);
|
|
115
|
-
Object.entries(on).forEach(
|
|
116
|
-
let [name, path] =
|
|
139
|
+
Object.entries(on).forEach(_ref6 => {
|
|
140
|
+
let [name, path] = _ref6;
|
|
117
141
|
|
|
118
142
|
element.props[`on${name}`] = event => {
|
|
119
143
|
evaluate(path, {
|
|
@@ -124,7 +148,7 @@ var _default = () => {
|
|
|
124
148
|
});
|
|
125
149
|
}); // data-wp-class.[classname]
|
|
126
150
|
|
|
127
|
-
(0, _hooks2.directive)('class',
|
|
151
|
+
(0, _hooks2.directive)('class', _ref7 => {
|
|
128
152
|
let {
|
|
129
153
|
directives: {
|
|
130
154
|
class: className
|
|
@@ -132,7 +156,7 @@ var _default = () => {
|
|
|
132
156
|
element,
|
|
133
157
|
evaluate,
|
|
134
158
|
context
|
|
135
|
-
} =
|
|
159
|
+
} = _ref7;
|
|
136
160
|
const contextValue = (0, _hooks.useContext)(context);
|
|
137
161
|
Object.keys(className).filter(n => n !== 'default').forEach(name => {
|
|
138
162
|
const result = evaluate(className[name], {
|
|
@@ -155,7 +179,7 @@ var _default = () => {
|
|
|
155
179
|
});
|
|
156
180
|
}); // data-wp-bind.[attribute]
|
|
157
181
|
|
|
158
|
-
(0, _hooks2.directive)('bind',
|
|
182
|
+
(0, _hooks2.directive)('bind', _ref8 => {
|
|
159
183
|
let {
|
|
160
184
|
directives: {
|
|
161
185
|
bind
|
|
@@ -163,28 +187,32 @@ var _default = () => {
|
|
|
163
187
|
element,
|
|
164
188
|
context,
|
|
165
189
|
evaluate
|
|
166
|
-
} =
|
|
190
|
+
} = _ref8;
|
|
167
191
|
const contextValue = (0, _hooks.useContext)(context);
|
|
168
|
-
Object.entries(bind).filter(n => n !== 'default').forEach(
|
|
169
|
-
let [attribute, path] =
|
|
192
|
+
Object.entries(bind).filter(n => n !== 'default').forEach(_ref9 => {
|
|
193
|
+
let [attribute, path] = _ref9;
|
|
170
194
|
const result = evaluate(path, {
|
|
171
195
|
context: contextValue
|
|
172
196
|
});
|
|
173
|
-
element.props[attribute] = result;
|
|
197
|
+
element.props[attribute] = result; // This seems necessary because Preact doesn't change the attributes
|
|
198
|
+
// on the hydration, so we have to do it manually. It doesn't need
|
|
199
|
+
// deps because it only needs to do it the first time.
|
|
200
|
+
|
|
174
201
|
(0, _hooks.useEffect)(() => {
|
|
175
|
-
//
|
|
176
|
-
//
|
|
177
|
-
//
|
|
178
|
-
|
|
202
|
+
// aria- and data- attributes have no boolean representation.
|
|
203
|
+
// A `false` value is different from the attribute not being
|
|
204
|
+
// present, so we can't remove it.
|
|
205
|
+
// We follow Preact's logic: https://github.com/preactjs/preact/blob/ea49f7a0f9d1ff2c98c0bdd66aa0cbc583055246/src/diff/props.js#L131C24-L136
|
|
206
|
+
if (result === false && attribute[4] !== '-') {
|
|
179
207
|
element.ref.current.removeAttribute(attribute);
|
|
180
208
|
} else {
|
|
181
|
-
element.ref.current.setAttribute(attribute, result === true ? '' : result);
|
|
209
|
+
element.ref.current.setAttribute(attribute, result === true && attribute[4] !== '-' ? '' : result);
|
|
182
210
|
}
|
|
183
211
|
}, []);
|
|
184
212
|
});
|
|
185
213
|
}); // data-wp-ignore
|
|
186
214
|
|
|
187
|
-
(0, _hooks2.directive)('ignore',
|
|
215
|
+
(0, _hooks2.directive)('ignore', _ref10 => {
|
|
188
216
|
let {
|
|
189
217
|
element: {
|
|
190
218
|
type: Type,
|
|
@@ -193,7 +221,7 @@ var _default = () => {
|
|
|
193
221
|
...rest
|
|
194
222
|
}
|
|
195
223
|
}
|
|
196
|
-
} =
|
|
224
|
+
} = _ref10;
|
|
197
225
|
// Preserve the initial inner HTML.
|
|
198
226
|
const cached = (0, _hooks.useMemo)(() => innerHTML, []);
|
|
199
227
|
return (0, _element.createElement)(Type, (0, _extends2.default)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/directives.js"],"names":["isObject","item","Array","isArray","mergeDeepSignals","target","source","k","peek","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":["isObject","item","Array","isArray","mergeDeepSignals","target","source","k","peek","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":";;;;;;;;;;;;;AAGA;;AACA;;AAIA;;AAKA;;AACA;;AAdA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AAIA,MAAMA,QAAQ,GAAKC,IAAF,IAChBA,IAAI,IAAI,OAAOA,IAAP,KAAgB,QAAxB,IAAoC,CAAEC,KAAK,CAACC,OAAN,CAAeF,IAAf,CADvC;;AAGA,MAAMG,gBAAgB,GAAG,CAAEC,MAAF,EAAUC,MAAV,KAAsB;AAC9C,OAAM,MAAMC,CAAZ,IAAiBD,MAAjB,EAA0B;AACzB,QAAK,OAAO,sBAAMD,MAAN,EAAcE,CAAd,CAAP,KAA6B,WAAlC,EAAgD;AAC/CF,MAAAA,MAAM,CAAG,IAAIE,CAAG,EAAV,CAAN,GAAsBD,MAAM,CAAG,IAAIC,CAAG,EAAV,CAA5B;AACA,KAFD,MAEO,IACNP,QAAQ,CAAE,sBAAMK,MAAN,EAAcE,CAAd,CAAF,CAAR,IACAP,QAAQ,CAAE,sBAAMM,MAAN,EAAcC,CAAd,CAAF,CAFF,EAGL;AACDH,MAAAA,gBAAgB,CACfC,MAAM,CAAG,IAAIE,CAAG,EAAV,CAAN,CAAoBC,IAApB,EADe,EAEfF,MAAM,CAAG,IAAIC,CAAG,EAAV,CAAN,CAAoBC,IAApB,EAFe,CAAhB;AAIA;AACD;AACD,CAdD;;eAgBe,MAAM;AACpB;AACA,yBACC,SADD,EAEC,QAMO;AAAA,QANL;AACDC,MAAAA,UAAU,EAAE;AACXC,QAAAA,OAAO,EAAE;AAAEC,UAAAA,OAAO,EAAED;AAAX;AADE,OADX;AAIDE,MAAAA,KAAK,EAAE;AAAEC,QAAAA;AAAF,OAJN;AAKDH,MAAAA,OAAO,EAAEI;AALR,KAMK;AACN,UAAM;AAAEC,MAAAA;AAAF,QAAeD,SAArB;AACA,UAAME,cAAc,GAAG,uBAAYF,SAAZ,CAAvB;AACA,UAAMG,KAAK,GAAG,oBAAS,MAAM;AAC5B,YAAMC,UAAU,GAAG,4BAAYR,OAAZ,CAAnB;AACAN,MAAAA,gBAAgB,CAAEc,UAAF,EAAcF,cAAd,CAAhB;AACA,aAAOE,UAAP;AACA,KAJa,EAIX,CAAER,OAAF,EAAWM,cAAX,CAJW,CAAd;AAMA,WAAO,4BAAC,QAAD;AAAU,MAAA,KAAK,EAAGC;AAAlB,OAA4BJ,QAA5B,CAAP;AACA,GAlBF,EAmBC;AAAEM,IAAAA,QAAQ,EAAE;AAAZ,GAnBD,EAFoB,CAwBpB;;AACA,yBAAW,MAAX,EAAmB,SAAmD;AAAA,QAAjD;AAAEP,MAAAA,KAAK,EAAE;AAAEC,QAAAA;AAAF,OAAT;AAAuBH,MAAAA,OAAO,EAAEI;AAAhC,KAAiD;AACrE,UAAM;AAAEC,MAAAA;AAAF,QAAeD,SAArB;AACA,UAAME,cAAc,GAAG,uBAAYF,SAAZ,CAAvB;AACA,WAAO,2BACN,4BAAC,QAAD;AAAU,MAAA,KAAK,EAAGE;AAAlB,OAAqCH,QAArC,CADM,EAENO,QAAQ,CAACC,IAFH,CAAP;AAIA,GAPD,EAzBoB,CAkCpB;;AACA,yBAAW,QAAX,EAAqB,SAAqD;AAAA,QAAnD;AAAEZ,MAAAA,UAAU,EAAE;AAAEa,QAAAA;AAAF,OAAd;AAA0BZ,MAAAA,OAA1B;AAAmCa,MAAAA;AAAnC,KAAmD;AACzE,UAAMC,YAAY,GAAG,uBAAYd,OAAZ,CAArB;AACAe,IAAAA,MAAM,CAACC,MAAP,CAAeJ,MAAf,EAAwBK,OAAxB,CAAmCC,IAAF,IAAY;AAC5C,kCAAiB,MAAM;AACtB,eAAOL,QAAQ,CAAEK,IAAF,EAAQ;AAAElB,UAAAA,OAAO,EAAEc;AAAX,SAAR,CAAf;AACA,OAFD;AAGA,KAJD;AAKA,GAPD,EAnCoB,CA4CpB;;AACA,yBAAW,MAAX,EAAmB,SAAmD;AAAA,QAAjD;AAAEf,MAAAA,UAAU,EAAE;AAAEoB,QAAAA;AAAF,OAAd;AAAwBnB,MAAAA,OAAxB;AAAiCa,MAAAA;AAAjC,KAAiD;AACrE,UAAMC,YAAY,GAAG,uBAAYd,OAAZ,CAArB;AACAe,IAAAA,MAAM,CAACC,MAAP,CAAeG,IAAf,EAAsBF,OAAtB,CAAiCC,IAAF,IAAY;AAC1C,4BAAW,MAAM;AAChB,eAAOL,QAAQ,CAAEK,IAAF,EAAQ;AAAElB,UAAAA,OAAO,EAAEc;AAAX,SAAR,CAAf;AACA,OAFD,EAEG,EAFH;AAGA,KAJD;AAKA,GAPD,EA7CoB,CAsDpB;;AACA,yBAAW,IAAX,EAAiB,SAA0D;AAAA,QAAxD;AAAEf,MAAAA,UAAU,EAAE;AAAEqB,QAAAA;AAAF,OAAd;AAAsBC,MAAAA,OAAtB;AAA+BR,MAAAA,QAA/B;AAAyCb,MAAAA;AAAzC,KAAwD;AAC1E,UAAMc,YAAY,GAAG,uBAAYd,OAAZ,CAArB;AACAe,IAAAA,MAAM,CAACO,OAAP,CAAgBF,EAAhB,EAAqBH,OAArB,CAA8B,SAAsB;AAAA,UAApB,CAAEM,IAAF,EAAQL,IAAR,CAAoB;;AACnDG,MAAAA,OAAO,CAACnB,KAAR,CAAgB,KAAKqB,IAAM,EAA3B,IAAmCC,KAAF,IAAa;AAC7CX,QAAAA,QAAQ,CAAEK,IAAF,EAAQ;AAAEM,UAAAA,KAAF;AAASxB,UAAAA,OAAO,EAAEc;AAAlB,SAAR,CAAR;AACA,OAFD;AAGA,KAJD;AAKA,GAPD,EAvDoB,CAgEpB;;AACA,yBACC,OADD,EAEC,SAKO;AAAA,QALL;AACDf,MAAAA,UAAU,EAAE;AAAE0B,QAAAA,KAAK,EAAEC;AAAT,OADX;AAEDL,MAAAA,OAFC;AAGDR,MAAAA,QAHC;AAIDb,MAAAA;AAJC,KAKK;AACN,UAAMc,YAAY,GAAG,uBAAYd,OAAZ,CAArB;AACAe,IAAAA,MAAM,CAACY,IAAP,CAAaD,SAAb,EACEE,MADF,CACYC,CAAF,IAASA,CAAC,KAAK,SADzB,EAEEZ,OAFF,CAEaM,IAAF,IAAY;AACrB,YAAMO,MAAM,GAAGjB,QAAQ,CAAEa,SAAS,CAAEH,IAAF,CAAX,EAAqB;AAC3CG,QAAAA,SAAS,EAAEH,IADgC;AAE3CvB,QAAAA,OAAO,EAAEc;AAFkC,OAArB,CAAvB;AAIA,YAAMiB,YAAY,GAAGV,OAAO,CAACnB,KAAR,CAAcuB,KAAd,IAAuB,EAA5C;AACA,YAAMO,WAAW,GAAG,IAAIC,MAAJ,CAClB,UAAUV,IAAM,SADE,EAEnB,GAFmB,CAApB;AAIA,UAAK,CAAEO,MAAP,EACCT,OAAO,CAACnB,KAAR,CAAcuB,KAAd,GAAsBM,YAAY,CAChCG,OADoB,CACXF,WADW,EACE,GADF,EAEpBG,IAFoB,EAAtB,CADD,KAIK,IAAK,CAAEH,WAAW,CAACI,IAAZ,CAAkBL,YAAlB,CAAP,EACJV,OAAO,CAACnB,KAAR,CAAcuB,KAAd,GAAsBM,YAAY,GAC9B,GAAGA,YAAc,IAAIR,IAAM,EADG,GAE/BA,IAFH;AAID,4BAAW,MAAM;AAChB;AACA;AACA;AACA,YAAK,CAAEO,MAAP,EAAgB;AACfT,UAAAA,OAAO,CAACgB,GAAR,CAAYC,OAAZ,CAAoBC,SAApB,CAA8BC,MAA9B,CAAsCjB,IAAtC;AACA,SAFD,MAEO;AACNF,UAAAA,OAAO,CAACgB,GAAR,CAAYC,OAAZ,CAAoBC,SAApB,CAA8BE,GAA9B,CAAmClB,IAAnC;AACA;AACD,OATD,EASG,EATH;AAUA,KA/BF;AAgCA,GAzCF,EAjEoB,CA6GpB;;AACA,yBACC,MADD,EAEC,SAA4D;AAAA,QAA1D;AAAExB,MAAAA,UAAU,EAAE;AAAE2C,QAAAA;AAAF,OAAd;AAAwBrB,MAAAA,OAAxB;AAAiCrB,MAAAA,OAAjC;AAA0Ca,MAAAA;AAA1C,KAA0D;AAC3D,UAAMC,YAAY,GAAG,uBAAYd,OAAZ,CAArB;AACAe,IAAAA,MAAM,CAACO,OAAP,CAAgBoB,IAAhB,EACEd,MADF,CACYC,CAAF,IAASA,CAAC,KAAK,SADzB,EAEEZ,OAFF,CAEW,SAA2B;AAAA,UAAzB,CAAE0B,SAAF,EAAazB,IAAb,CAAyB;AACpC,YAAMY,MAAM,GAAGjB,QAAQ,CAAEK,IAAF,EAAQ;AAC9BlB,QAAAA,OAAO,EAAEc;AADqB,OAAR,CAAvB;AAGAO,MAAAA,OAAO,CAACnB,KAAR,CAAeyC,SAAf,IAA6Bb,MAA7B,CAJoC,CAMpC;AACA;AACA;;AACA,4BAAW,MAAM;AAChB;AACA;AACA;AACA;AACA,YAAKA,MAAM,KAAK,KAAX,IAAoBa,SAAS,CAAE,CAAF,CAAT,KAAmB,GAA5C,EAAkD;AACjDtB,UAAAA,OAAO,CAACgB,GAAR,CAAYC,OAAZ,CAAoBM,eAApB,CAAqCD,SAArC;AACA,SAFD,MAEO;AACNtB,UAAAA,OAAO,CAACgB,GAAR,CAAYC,OAAZ,CAAoBO,YAApB,CACCF,SADD,EAECb,MAAM,KAAK,IAAX,IAAmBa,SAAS,CAAE,CAAF,CAAT,KAAmB,GAAtC,GACG,EADH,GAEGb,MAJJ;AAMA;AACD,OAfD,EAeG,EAfH;AAgBA,KA3BF;AA4BA,GAhCF,EA9GoB,CAiJpB;;AACA,yBACC,QADD,EAEC,UAKO;AAAA,QALL;AACDT,MAAAA,OAAO,EAAE;AACRyB,QAAAA,IAAI,EAAEC,IADE;AAER7C,QAAAA,KAAK,EAAE;AAAE8C,UAAAA,SAAF;AAAa,aAAGC;AAAhB;AAFC;AADR,KAKK;AACN;AACA,UAAMC,MAAM,GAAG,oBAAS,MAAMF,SAAf,EAA0B,EAA1B,CAAf;AACA,WACC,4BAAC,IAAD;AACC,MAAA,uBAAuB,EAAG;AAAEG,QAAAA,MAAM,EAAED;AAAV;AAD3B,OAEMD,IAFN,EADD;AAMA,GAhBF;AAkBA,C","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"]}
|
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.directive = void 0;
|
|
7
7
|
|
|
8
|
+
var _element = require("@wordpress/element");
|
|
9
|
+
|
|
8
10
|
var _preact = require("preact");
|
|
9
11
|
|
|
10
12
|
var _hooks = require("preact/hooks");
|
|
@@ -22,22 +24,25 @@ var _store = require("./store");
|
|
|
22
24
|
const context = (0, _preact.createContext)({}); // WordPress Directives.
|
|
23
25
|
|
|
24
26
|
const directiveMap = {};
|
|
27
|
+
const directivePriorities = {};
|
|
25
28
|
|
|
26
|
-
const directive = (name, cb)
|
|
29
|
+
const directive = function (name, cb) {
|
|
30
|
+
let {
|
|
31
|
+
priority = 10
|
|
32
|
+
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
27
33
|
directiveMap[name] = cb;
|
|
34
|
+
directivePriorities[name] = priority;
|
|
28
35
|
}; // Resolve the path to some property of the store object.
|
|
29
36
|
|
|
30
37
|
|
|
31
38
|
exports.directive = directive;
|
|
32
39
|
|
|
33
40
|
const resolve = (path, ctx) => {
|
|
34
|
-
// If path starts with !, remove it and save a flag.
|
|
35
|
-
const hasNegationOperator = path[0] === '!' && !!(path = path.slice(1));
|
|
36
41
|
let current = { ..._store.rawStore,
|
|
37
42
|
context: ctx
|
|
38
43
|
};
|
|
39
44
|
path.split('.').forEach(p => current = current[p]);
|
|
40
|
-
return
|
|
45
|
+
return current;
|
|
41
46
|
}; // Generate the evaluate function.
|
|
42
47
|
|
|
43
48
|
|
|
@@ -47,32 +52,91 @@ const getEvaluate = function () {
|
|
|
47
52
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
48
53
|
return function (path) {
|
|
49
54
|
let extraArgs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
55
|
+
// If path starts with !, remove it and save a flag.
|
|
56
|
+
const hasNegationOperator = path[0] === '!' && !!(path = path.slice(1));
|
|
50
57
|
const value = resolve(path, extraArgs.context);
|
|
51
|
-
|
|
58
|
+
const returnValue = typeof value === 'function' ? value({
|
|
52
59
|
ref: ref.current,
|
|
53
60
|
..._store.rawStore,
|
|
54
61
|
...extraArgs
|
|
55
62
|
}) : value;
|
|
63
|
+
return hasNegationOperator ? !returnValue : returnValue;
|
|
56
64
|
};
|
|
57
|
-
}; //
|
|
65
|
+
}; // Separate directives by priority. The resulting array contains objects
|
|
66
|
+
// of directives grouped by same priority, and sorted in ascending order.
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
const usePriorityLevels = directives => (0, _hooks.useMemo)(() => {
|
|
70
|
+
const byPriority = Object.entries(directives).reduce((acc, _ref) => {
|
|
71
|
+
let [name, values] = _ref;
|
|
72
|
+
const priority = directivePriorities[name];
|
|
73
|
+
if (!acc[priority]) acc[priority] = {};
|
|
74
|
+
acc[priority][name] = values;
|
|
75
|
+
return acc;
|
|
76
|
+
}, {});
|
|
77
|
+
return Object.entries(byPriority).sort((_ref2, _ref3) => {
|
|
78
|
+
let [p1] = _ref2;
|
|
79
|
+
let [p2] = _ref3;
|
|
80
|
+
return p1 - p2;
|
|
81
|
+
}).map(_ref4 => {
|
|
82
|
+
let [, obj] = _ref4;
|
|
83
|
+
return obj;
|
|
84
|
+
});
|
|
85
|
+
}, [directives]); // Directive wrapper.
|
|
58
86
|
|
|
59
87
|
|
|
60
|
-
const Directive =
|
|
88
|
+
const Directive = _ref5 => {
|
|
61
89
|
let {
|
|
62
90
|
type,
|
|
63
91
|
directives,
|
|
64
92
|
props: originalProps
|
|
65
|
-
} =
|
|
93
|
+
} = _ref5;
|
|
66
94
|
const ref = (0, _hooks.useRef)(null);
|
|
67
95
|
const element = (0, _preact.h)(type, { ...originalProps,
|
|
68
96
|
ref
|
|
69
97
|
});
|
|
70
|
-
const props = { ...originalProps,
|
|
71
|
-
children: element
|
|
72
|
-
};
|
|
73
98
|
const evaluate = (0, _hooks.useMemo)(() => getEvaluate({
|
|
74
99
|
ref
|
|
75
|
-
}), []);
|
|
100
|
+
}), []); // Add wrappers recursively for each priority level.
|
|
101
|
+
|
|
102
|
+
const byPriorityLevel = usePriorityLevels(directives);
|
|
103
|
+
return (0, _element.createElement)(RecursivePriorityLevel, {
|
|
104
|
+
directives: byPriorityLevel,
|
|
105
|
+
element: element,
|
|
106
|
+
evaluate: evaluate,
|
|
107
|
+
originalProps: originalProps
|
|
108
|
+
});
|
|
109
|
+
}; // Priority level wrapper.
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
const RecursivePriorityLevel = _ref6 => {
|
|
113
|
+
let {
|
|
114
|
+
directives: [directives, ...rest],
|
|
115
|
+
element,
|
|
116
|
+
evaluate,
|
|
117
|
+
originalProps
|
|
118
|
+
} = _ref6;
|
|
119
|
+
// This element needs to be a fresh copy so we are not modifying an already
|
|
120
|
+
// rendered element with Preact's internal properties initialized. This
|
|
121
|
+
// prevents an error with changes in `element.props.children` not being
|
|
122
|
+
// reflected in `element.__k`.
|
|
123
|
+
element = (0, _preact.cloneElement)(element); // Recursively render the wrapper for the next priority level.
|
|
124
|
+
//
|
|
125
|
+
// Note that, even though we're instantiating a vnode with a
|
|
126
|
+
// `RecursivePriorityLevel` here, its render function will not be executed
|
|
127
|
+
// just yet. Actually, it will be delayed until the current render function
|
|
128
|
+
// has finished. That ensures directives in the current priorty level have
|
|
129
|
+
// run (and thus modified the passed `element`) before the next level.
|
|
130
|
+
|
|
131
|
+
const children = rest.length > 0 ? (0, _element.createElement)(RecursivePriorityLevel, {
|
|
132
|
+
directives: rest,
|
|
133
|
+
element: element,
|
|
134
|
+
evaluate: evaluate,
|
|
135
|
+
originalProps: originalProps
|
|
136
|
+
}) : element;
|
|
137
|
+
const props = { ...originalProps,
|
|
138
|
+
children
|
|
139
|
+
};
|
|
76
140
|
const directiveArgs = {
|
|
77
141
|
directives,
|
|
78
142
|
props,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/hooks.js"],"names":["context","directiveMap","directive","name","cb","resolve","path","ctx","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-library/src/utils/interactivity/hooks.js"],"names":["context","directiveMap","directivePriorities","directive","name","cb","priority","resolve","path","ctx","current","store","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","options","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"]}
|