@wordpress/block-library 7.14.0 → 7.14.1

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.
Files changed (104) hide show
  1. package/build/button/edit.js +8 -3
  2. package/build/button/edit.js.map +1 -1
  3. package/build/column/index.js +1 -1
  4. package/build/cover/index.js +1 -1
  5. package/build/group/edit.js +0 -17
  6. package/build/group/edit.js.map +1 -1
  7. package/build/group/index.js +1 -7
  8. package/build/group/index.js.map +1 -1
  9. package/build/group/transforms.js +4 -1
  10. package/build/group/transforms.js.map +1 -1
  11. package/build/group/variations.js +2 -1
  12. package/build/group/variations.js.map +1 -1
  13. package/build/media-text/edit.js +25 -11
  14. package/build/media-text/edit.js.map +1 -1
  15. package/build/media-text/media-container.js +4 -3
  16. package/build/media-text/media-container.js.map +1 -1
  17. package/build/navigation/edit/overlay-menu-icon.js +0 -8
  18. package/build/navigation/edit/overlay-menu-icon.js.map +1 -1
  19. package/build/navigation/edit/overlay-menu-preview.js +0 -12
  20. package/build/navigation/edit/overlay-menu-preview.js.map +1 -1
  21. package/build/navigation-link/edit.js +8 -3
  22. package/build/navigation-link/edit.js.map +1 -1
  23. package/build/navigation-submenu/edit.js +8 -3
  24. package/build/navigation-submenu/edit.js.map +1 -1
  25. package/build/post-date/edit.js +10 -6
  26. package/build/post-date/edit.js.map +1 -1
  27. package/build/query/edit/index.js +23 -211
  28. package/build/query/edit/index.js.map +1 -1
  29. package/build/query/edit/query-content.js +169 -0
  30. package/build/query/edit/query-content.js.map +1 -0
  31. package/build/query/edit/query-placeholder.js +69 -6
  32. package/build/query/edit/query-placeholder.js.map +1 -1
  33. package/build/query/utils.js +40 -0
  34. package/build/query/utils.js.map +1 -1
  35. package/build/social-link/edit.js +8 -6
  36. package/build/social-link/edit.js.map +1 -1
  37. package/build/template-part/edit/selection-modal.js +2 -13
  38. package/build/template-part/edit/selection-modal.js.map +1 -1
  39. package/build-module/button/edit.js +7 -3
  40. package/build-module/button/edit.js.map +1 -1
  41. package/build-module/column/index.js +1 -1
  42. package/build-module/cover/index.js +1 -1
  43. package/build-module/group/edit.js +1 -19
  44. package/build-module/group/edit.js.map +1 -1
  45. package/build-module/group/index.js +1 -7
  46. package/build-module/group/index.js.map +1 -1
  47. package/build-module/group/transforms.js +4 -1
  48. package/build-module/group/transforms.js.map +1 -1
  49. package/build-module/group/variations.js +2 -1
  50. package/build-module/group/variations.js.map +1 -1
  51. package/build-module/media-text/edit.js +25 -11
  52. package/build-module/media-text/edit.js.map +1 -1
  53. package/build-module/media-text/media-container.js +4 -3
  54. package/build-module/media-text/media-container.js.map +1 -1
  55. package/build-module/navigation/edit/overlay-menu-icon.js +1 -9
  56. package/build-module/navigation/edit/overlay-menu-icon.js.map +1 -1
  57. package/build-module/navigation/edit/overlay-menu-preview.js +0 -12
  58. package/build-module/navigation/edit/overlay-menu-preview.js.map +1 -1
  59. package/build-module/navigation-link/edit.js +7 -3
  60. package/build-module/navigation-link/edit.js.map +1 -1
  61. package/build-module/navigation-submenu/edit.js +7 -3
  62. package/build-module/navigation-submenu/edit.js.map +1 -1
  63. package/build-module/post-date/edit.js +11 -7
  64. package/build-module/post-date/edit.js.map +1 -1
  65. package/build-module/query/edit/index.js +27 -208
  66. package/build-module/query/edit/index.js.map +1 -1
  67. package/build-module/query/edit/query-content.js +152 -0
  68. package/build-module/query/edit/query-content.js.map +1 -0
  69. package/build-module/query/edit/query-placeholder.js +67 -5
  70. package/build-module/query/edit/query-placeholder.js.map +1 -1
  71. package/build-module/query/utils.js +37 -0
  72. package/build-module/query/utils.js.map +1 -1
  73. package/build-module/social-link/edit.js +9 -7
  74. package/build-module/social-link/edit.js.map +1 -1
  75. package/build-module/template-part/edit/selection-modal.js +3 -14
  76. package/build-module/template-part/edit/selection-modal.js.map +1 -1
  77. package/package.json +14 -14
  78. package/src/button/edit.js +10 -2
  79. package/src/column/block.json +1 -1
  80. package/src/comments/index.php +1 -1
  81. package/src/cover/block.json +1 -1
  82. package/src/group/block.json +1 -7
  83. package/src/group/edit.js +2 -12
  84. package/src/group/transforms.js +1 -0
  85. package/src/group/variations.js +2 -1
  86. package/src/list/test/__snapshots__/edit.native.js.snap +8 -32
  87. package/src/list/test/edit.native.js +16 -68
  88. package/src/media-text/edit.js +45 -29
  89. package/src/media-text/media-container.js +3 -2
  90. package/src/navigation/edit/overlay-menu-icon.js +1 -5
  91. package/src/navigation/edit/overlay-menu-preview.js +0 -10
  92. package/src/navigation/index.php +0 -4
  93. package/src/navigation-link/edit.js +6 -2
  94. package/src/navigation-submenu/edit.js +6 -2
  95. package/src/post-comments-form/index.php +1 -1
  96. package/src/post-date/edit.js +13 -4
  97. package/src/post-featured-image/index.php +1 -1
  98. package/src/query/edit/index.js +50 -227
  99. package/src/query/edit/query-content.js +131 -0
  100. package/src/query/edit/query-placeholder.js +87 -8
  101. package/src/query/utils.js +46 -0
  102. package/src/search/index.php +1 -1
  103. package/src/social-link/edit.js +9 -9
  104. package/src/template-part/edit/selection-modal.js +2 -14
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/post-date/edit.js"],"names":["classnames","useEntityProp","store","coreStore","useRef","dateI18n","getSettings","getDateSettings","AlignmentControl","BlockControls","InspectorControls","useBlockProps","__experimentalDateFormatPicker","DateFormatPicker","__experimentalPublishDateTimePicker","PublishDateTimePicker","Dropdown","ToolbarGroup","ToolbarButton","ToggleControl","PanelBody","__","sprintf","edit","DOWN","useSelect","PostDateEdit","attributes","textAlign","format","isLink","displayType","context","postId","postType","postTypeSlug","queryId","setAttributes","blockProps","className","timeRef","isDescendentOfQueryLoop","Number","isFinite","dateSettings","siteFormat","formats","date","siteTimeFormat","time","setDate","select","getPostType","postDate","event","preventDefault","nextAlign","anchorRef","current","onClose","is12HourFormat","isOpen","onToggle","openOnArrowDown","keyCode","nextFormat","labels","singular_name","toLowerCase","value","test"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { useRef } from '@wordpress/element';\nimport { dateI18n, getSettings as getDateSettings } from '@wordpress/date';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\t__experimentalDateFormatPicker as DateFormatPicker,\n\t__experimentalPublishDateTimePicker as PublishDateTimePicker,\n} from '@wordpress/block-editor';\nimport {\n\tDropdown,\n\tToolbarGroup,\n\tToolbarButton,\n\tToggleControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { edit } from '@wordpress/icons';\nimport { DOWN } from '@wordpress/keycodes';\nimport { useSelect } from '@wordpress/data';\n\nexport default function PostDateEdit( {\n\tattributes: { textAlign, format, isLink, displayType },\n\tcontext: { postId, postType: postTypeSlug, queryId },\n\tsetAttributes,\n} ) {\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\tconst timeRef = useRef();\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst dateSettings = getDateSettings();\n\tconst [ siteFormat = dateSettings.formats.date ] = useEntityProp(\n\t\t'root',\n\t\t'site',\n\t\t'date_format'\n\t);\n\tconst [ siteTimeFormat = dateSettings.formats.time ] = useEntityProp(\n\t\t'root',\n\t\t'site',\n\t\t'time_format'\n\t);\n\tconst [ date, setDate ] = useEntityProp(\n\t\t'postType',\n\t\tpostTypeSlug,\n\t\tdisplayType,\n\t\tpostId\n\t);\n\n\tconst postType = useSelect(\n\t\t( select ) =>\n\t\t\tpostTypeSlug\n\t\t\t\t? select( coreStore ).getPostType( postTypeSlug )\n\t\t\t\t: null,\n\t\t[ postTypeSlug ]\n\t);\n\n\tlet postDate = date ? (\n\t\t<time dateTime={ dateI18n( 'c', date ) } ref={ timeRef }>\n\t\t\t{ dateI18n( format || siteFormat, date ) }\n\t\t</time>\n\t) : (\n\t\t__( 'Post Date' )\n\t);\n\n\tif ( isLink && date ) {\n\t\tpostDate = (\n\t\t\t<a\n\t\t\t\thref=\"#post-date-pseudo-link\"\n\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t>\n\t\t\t\t{ postDate }\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t{ date && ! isDescendentOfQueryLoop && (\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\tpopoverProps={ { anchorRef: timeRef.current } }\n\t\t\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t\t\t<PublishDateTimePicker\n\t\t\t\t\t\t\t\t\tcurrentDate={ date }\n\t\t\t\t\t\t\t\t\tonChange={ setDate }\n\t\t\t\t\t\t\t\t\tis12Hour={ is12HourFormat(\n\t\t\t\t\t\t\t\t\t\tsiteTimeFormat\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => {\n\t\t\t\t\t\t\t\tconst openOnArrowDown = ( event ) => {\n\t\t\t\t\t\t\t\t\tif ( ! isOpen && event.keyCode === DOWN ) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\tonToggle();\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\treturn (\n\t\t\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t\t\t\ticon={ edit }\n\t\t\t\t\t\t\t\t\t\ttitle={ __( 'Change Date' ) }\n\t\t\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\t\t\tonKeyDown={ openOnArrowDown }\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} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<DateFormatPicker\n\t\t\t\t\t\tformat={ format }\n\t\t\t\t\t\tdefaultFormat={ siteFormat }\n\t\t\t\t\t\tonChange={ ( nextFormat ) =>\n\t\t\t\t\t\t\tsetAttributes( { format: nextFormat } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tpostType?.labels.singular_name\n\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"post\".\n\t\t\t\t\t\t\t\t\t\t__( 'Link to %s' ),\n\t\t\t\t\t\t\t\t\t\tpostType.labels.singular_name.toLowerCase()\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: __( 'Link to post' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonChange={ () => setAttributes( { isLink: ! isLink } ) }\n\t\t\t\t\t\tchecked={ isLink }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display last modified date' ) }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdisplayType: value ? 'modified' : 'date',\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ displayType === 'modified' }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\n\t\t\t<div { ...blockProps }>{ postDate }</div>\n\t\t</>\n\t);\n}\n\nexport function is12HourFormat( format ) {\n\t// To know if the time format is a 12 hour time, look for any of the 12 hour\n\t// format characters: 'a', 'A', 'g', and 'h'. The character must be\n\t// unescaped, i.e. not preceded by a '\\'. Coincidentally, 'aAgh' is how I\n\t// feel when working with regular expressions.\n\t// https://www.php.net/manual/en/datetime.format.php\n\treturn /(?:^|[^\\\\])[aAgh]/.test( format );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/post-date/edit.js"],"names":["classnames","useEntityProp","store","coreStore","useMemo","useState","dateI18n","getSettings","getDateSettings","AlignmentControl","BlockControls","InspectorControls","useBlockProps","__experimentalDateFormatPicker","DateFormatPicker","__experimentalPublishDateTimePicker","PublishDateTimePicker","Dropdown","ToolbarGroup","ToolbarButton","ToggleControl","PanelBody","__","sprintf","edit","DOWN","useSelect","PostDateEdit","attributes","textAlign","format","isLink","displayType","context","postId","postType","postTypeSlug","queryId","setAttributes","blockProps","className","popoverAnchor","setPopoverAnchor","popoverProps","anchor","isDescendentOfQueryLoop","Number","isFinite","dateSettings","siteFormat","formats","date","siteTimeFormat","time","setDate","select","getPostType","postDate","event","preventDefault","nextAlign","onClose","is12HourFormat","isOpen","onToggle","openOnArrowDown","keyCode","nextFormat","labels","singular_name","toLowerCase","value","test"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { useMemo, useState } from '@wordpress/element';\nimport { dateI18n, getSettings as getDateSettings } from '@wordpress/date';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\t__experimentalDateFormatPicker as DateFormatPicker,\n\t__experimentalPublishDateTimePicker as PublishDateTimePicker,\n} from '@wordpress/block-editor';\nimport {\n\tDropdown,\n\tToolbarGroup,\n\tToolbarButton,\n\tToggleControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { edit } from '@wordpress/icons';\nimport { DOWN } from '@wordpress/keycodes';\nimport { useSelect } from '@wordpress/data';\n\nexport default function PostDateEdit( {\n\tattributes: { textAlign, format, isLink, displayType },\n\tcontext: { postId, postType: postTypeSlug, queryId },\n\tsetAttributes,\n} ) {\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\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\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( { anchor: popoverAnchor } ),\n\t\t[ popoverAnchor ]\n\t);\n\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst dateSettings = getDateSettings();\n\tconst [ siteFormat = dateSettings.formats.date ] = useEntityProp(\n\t\t'root',\n\t\t'site',\n\t\t'date_format'\n\t);\n\tconst [ siteTimeFormat = dateSettings.formats.time ] = useEntityProp(\n\t\t'root',\n\t\t'site',\n\t\t'time_format'\n\t);\n\tconst [ date, setDate ] = useEntityProp(\n\t\t'postType',\n\t\tpostTypeSlug,\n\t\tdisplayType,\n\t\tpostId\n\t);\n\n\tconst postType = useSelect(\n\t\t( select ) =>\n\t\t\tpostTypeSlug\n\t\t\t\t? select( coreStore ).getPostType( postTypeSlug )\n\t\t\t\t: null,\n\t\t[ postTypeSlug ]\n\t);\n\n\tlet postDate = date ? (\n\t\t<time dateTime={ dateI18n( 'c', date ) } ref={ setPopoverAnchor }>\n\t\t\t{ dateI18n( format || siteFormat, date ) }\n\t\t</time>\n\t) : (\n\t\t__( 'Post Date' )\n\t);\n\n\tif ( isLink && date ) {\n\t\tpostDate = (\n\t\t\t<a\n\t\t\t\thref=\"#post-date-pseudo-link\"\n\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t>\n\t\t\t\t{ postDate }\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t{ date && ! isDescendentOfQueryLoop && (\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t\t\t<PublishDateTimePicker\n\t\t\t\t\t\t\t\t\tcurrentDate={ date }\n\t\t\t\t\t\t\t\t\tonChange={ setDate }\n\t\t\t\t\t\t\t\t\tis12Hour={ is12HourFormat(\n\t\t\t\t\t\t\t\t\t\tsiteTimeFormat\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => {\n\t\t\t\t\t\t\t\tconst openOnArrowDown = ( event ) => {\n\t\t\t\t\t\t\t\t\tif ( ! isOpen && event.keyCode === DOWN ) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\tonToggle();\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\treturn (\n\t\t\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t\t\t\ticon={ edit }\n\t\t\t\t\t\t\t\t\t\ttitle={ __( 'Change Date' ) }\n\t\t\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\t\t\tonKeyDown={ openOnArrowDown }\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} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<DateFormatPicker\n\t\t\t\t\t\tformat={ format }\n\t\t\t\t\t\tdefaultFormat={ siteFormat }\n\t\t\t\t\t\tonChange={ ( nextFormat ) =>\n\t\t\t\t\t\t\tsetAttributes( { format: nextFormat } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tpostType?.labels.singular_name\n\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"post\".\n\t\t\t\t\t\t\t\t\t\t__( 'Link to %s' ),\n\t\t\t\t\t\t\t\t\t\tpostType.labels.singular_name.toLowerCase()\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: __( 'Link to post' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonChange={ () => setAttributes( { isLink: ! isLink } ) }\n\t\t\t\t\t\tchecked={ isLink }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display last modified date' ) }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdisplayType: value ? 'modified' : 'date',\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ displayType === 'modified' }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\n\t\t\t<div { ...blockProps }>{ postDate }</div>\n\t\t</>\n\t);\n}\n\nexport function is12HourFormat( format ) {\n\t// To know if the time format is a 12 hour time, look for any of the 12 hour\n\t// format characters: 'a', 'A', 'g', and 'h'. The character must be\n\t// unescaped, i.e. not preceded by a '\\'. Coincidentally, 'aAgh' is how I\n\t// feel when working with regular expressions.\n\t// https://www.php.net/manual/en/datetime.format.php\n\treturn /(?:^|[^\\\\])[aAgh]/.test( format );\n}\n"]}
@@ -5,225 +5,45 @@ import { createElement, Fragment } from "@wordpress/element";
5
5
  * WordPress dependencies
6
6
  */
7
7
  import { useSelect, useDispatch } from '@wordpress/data';
8
- import { store as blocksStore } from '@wordpress/blocks';
9
- import { useInstanceId } from '@wordpress/compose';
10
- import { useState, useEffect, useMemo } from '@wordpress/element';
11
- import { BlockControls, BlockContextProvider, InspectorControls, useBlockProps, useSetting, store as blockEditorStore, useInnerBlocksProps, __experimentalGetMatchingVariation as getMatchingVariation, __experimentalBlockPatternSetup as BlockPatternSetup } from '@wordpress/block-editor';
12
- import { Button, SelectControl, Placeholder, Modal } from '@wordpress/components';
8
+ import { useState, useMemo } from '@wordpress/element';
9
+ import { BlockContextProvider, store as blockEditorStore, __experimentalBlockPatternSetup as BlockPatternSetup } from '@wordpress/block-editor';
10
+ import { Modal } from '@wordpress/components';
13
11
  import { __ } from '@wordpress/i18n';
14
12
  /**
15
13
  * Internal dependencies
16
14
  */
17
15
 
18
- import QueryToolbar from './query-toolbar';
19
- import QueryInspectorControls from './inspector-controls';
16
+ import QueryContent from './query-content';
20
17
  import QueryPlaceholder from './query-placeholder';
21
- import { DEFAULTS_POSTS_PER_PAGE } from '../constants';
22
- import { getTransformedBlocksFromPattern } from '../utils';
23
- const TEMPLATE = [['core/post-template']];
24
- export function QueryContent(_ref) {
25
- let {
26
- attributes,
27
- setAttributes,
28
- openPatternSelectionModal,
29
- name,
30
- clientId
31
- } = _ref;
32
- const {
33
- queryId,
34
- query,
35
- displayLayout,
36
- tagName: TagName = 'div',
37
- layout = {}
38
- } = attributes;
39
- const {
40
- __unstableMarkNextChangeAsNotPersistent
41
- } = useDispatch(blockEditorStore);
42
- const instanceId = useInstanceId(QueryContent);
43
- const {
44
- themeSupportsLayout
45
- } = useSelect(select => {
46
- var _getSettings;
47
-
48
- const {
49
- getSettings
50
- } = select(blockEditorStore);
51
- return {
52
- themeSupportsLayout: (_getSettings = getSettings()) === null || _getSettings === void 0 ? void 0 : _getSettings.supportsLayout
53
- };
54
- }, []);
55
- const defaultLayout = useSetting('layout') || {};
56
- const usedLayout = !!layout && layout.inherit ? defaultLayout : layout;
57
- const blockProps = useBlockProps();
58
- const innerBlocksProps = useInnerBlocksProps(blockProps, {
59
- template: TEMPLATE,
60
- __experimentalLayout: themeSupportsLayout ? usedLayout : undefined
61
- });
62
- const {
63
- postsPerPage
64
- } = useSelect(select => {
65
- const {
66
- getSettings
67
- } = select(blockEditorStore);
68
- return {
69
- postsPerPage: +getSettings().postsPerPage || DEFAULTS_POSTS_PER_PAGE
70
- };
71
- }, []); // There are some effects running where some initialization logic is
72
- // happening and setting some values to some attributes (ex. queryId).
73
- // These updates can cause an `undo trap` where undoing will result in
74
- // resetting again, so we need to mark these changes as not persistent
75
- // with `__unstableMarkNextChangeAsNotPersistent`.
76
- // Changes in query property (which is an object) need to be in the same callback,
77
- // because updates are batched after the render and changes in different query properties
78
- // would cause to override previous wanted changes.
79
-
80
- useEffect(() => {
81
- const newQuery = {};
82
-
83
- if (!query.perPage && postsPerPage) {
84
- newQuery.perPage = postsPerPage;
85
- }
86
-
87
- if (!!Object.keys(newQuery).length) {
88
- __unstableMarkNextChangeAsNotPersistent();
89
-
90
- updateQuery(newQuery);
91
- }
92
- }, [query.perPage]); // We need this for multi-query block pagination.
93
- // Query parameters for each block are scoped to their ID.
94
-
95
- useEffect(() => {
96
- if (!Number.isFinite(queryId)) {
97
- __unstableMarkNextChangeAsNotPersistent();
98
-
99
- setAttributes({
100
- queryId: instanceId
101
- });
102
- }
103
- }, [queryId, instanceId]);
104
-
105
- const updateQuery = newQuery => setAttributes({
106
- query: { ...query,
107
- ...newQuery
108
- }
109
- });
110
-
111
- const updateDisplayLayout = newDisplayLayout => setAttributes({
112
- displayLayout: { ...displayLayout,
113
- ...newDisplayLayout
114
- }
115
- });
116
-
117
- return createElement(Fragment, null, createElement(QueryInspectorControls, {
118
- attributes: attributes,
119
- setQuery: updateQuery,
120
- setDisplayLayout: updateDisplayLayout
121
- }), createElement(BlockControls, null, createElement(QueryToolbar, {
122
- name: name,
123
- clientId: clientId,
124
- attributes: attributes,
125
- setQuery: updateQuery,
126
- setDisplayLayout: updateDisplayLayout,
127
- openPatternSelectionModal: openPatternSelectionModal
128
- })), createElement(InspectorControls, {
129
- __experimentalGroup: "advanced"
130
- }, createElement(SelectControl, {
131
- label: __('HTML element'),
132
- options: [{
133
- label: __('Default (<div>)'),
134
- value: 'div'
135
- }, {
136
- label: '<main>',
137
- value: 'main'
138
- }, {
139
- label: '<section>',
140
- value: 'section'
141
- }, {
142
- label: '<aside>',
143
- value: 'aside'
144
- }],
145
- value: TagName,
146
- onChange: value => setAttributes({
147
- tagName: value
148
- })
149
- })), createElement(TagName, innerBlocksProps));
150
- }
151
-
152
- function QueryPatternSetup(_ref2) {
153
- var _blockType$icon;
154
-
155
- let {
156
- attributes,
157
- clientId,
158
- name,
159
- openPatternSelectionModal,
160
- setAttributes
161
- } = _ref2;
162
- const [isStartingBlank, setIsStartingBlank] = useState(false);
163
- const blockProps = useBlockProps();
164
- const {
165
- blockType,
166
- allVariations,
167
- hasPatterns
168
- } = useSelect(select => {
169
- const {
170
- getBlockVariations,
171
- getBlockType
172
- } = select(blocksStore);
173
- const {
174
- getBlockRootClientId,
175
- __experimentalGetPatternsByBlockTypes
176
- } = select(blockEditorStore);
177
- const rootClientId = getBlockRootClientId(clientId);
178
- return {
179
- blockType: getBlockType(name),
180
- allVariations: getBlockVariations(name),
181
- hasPatterns: !!__experimentalGetPatternsByBlockTypes(name, rootClientId).length
182
- };
183
- }, [name, clientId]);
184
- const matchingVariation = getMatchingVariation(attributes, allVariations);
185
- const icon = (matchingVariation === null || matchingVariation === void 0 ? void 0 : matchingVariation.icon) || (blockType === null || blockType === void 0 ? void 0 : (_blockType$icon = blockType.icon) === null || _blockType$icon === void 0 ? void 0 : _blockType$icon.src);
186
- const label = (matchingVariation === null || matchingVariation === void 0 ? void 0 : matchingVariation.title) || (blockType === null || blockType === void 0 ? void 0 : blockType.title);
187
-
188
- if (isStartingBlank) {
189
- return createElement(QueryPlaceholder, {
190
- clientId: clientId,
191
- name: name,
192
- attributes: attributes,
193
- setAttributes: setAttributes,
194
- icon: icon,
195
- label: label
196
- });
197
- }
198
-
199
- return createElement("div", blockProps, createElement(Placeholder, {
200
- icon: icon,
201
- label: label,
202
- instructions: __('Choose a pattern for the query loop or start blank.')
203
- }, !!hasPatterns && createElement(Button, {
204
- variant: "primary",
205
- onClick: openPatternSelectionModal
206
- }, __('Choose')), createElement(Button, {
207
- variant: "secondary",
208
- onClick: () => {
209
- setIsStartingBlank(true);
210
- }
211
- }, __('Start blank'))));
212
- }
18
+ import { useBlockNameForPatterns, getTransformedBlocksFromPattern } from '../utils';
213
19
 
214
20
  const QueryEdit = props => {
215
21
  const {
216
22
  clientId,
217
- name,
218
23
  attributes
219
24
  } = props;
220
25
  const [isPatternSelectionModalOpen, setIsPatternSelectionModalOpen] = useState(false);
26
+ const hasInnerBlocks = useSelect(select => !!select(blockEditorStore).getBlocks(clientId).length, [clientId]);
27
+ const Component = hasInnerBlocks ? QueryContent : QueryPlaceholder;
28
+ return createElement(Fragment, null, createElement(Component, _extends({}, props, {
29
+ openPatternSelectionModal: () => setIsPatternSelectionModalOpen(true)
30
+ })), isPatternSelectionModalOpen && createElement(PatternSelectionModal, {
31
+ clientId: clientId,
32
+ attributes: attributes,
33
+ setIsPatternSelectionModalOpen: setIsPatternSelectionModalOpen
34
+ }));
35
+ };
36
+
37
+ function PatternSelectionModal(_ref) {
38
+ let {
39
+ clientId,
40
+ attributes,
41
+ setIsPatternSelectionModalOpen
42
+ } = _ref;
221
43
  const {
222
44
  replaceBlock,
223
45
  selectBlock
224
46
  } = useDispatch(blockEditorStore);
225
- const hasInnerBlocks = useSelect(select => !!select(blockEditorStore).getBlocks(clientId).length, [clientId]);
226
- const Component = hasInnerBlocks ? QueryContent : QueryPatternSetup;
227
47
 
228
48
  const onBlockPatternSelect = blocks => {
229
49
  const {
@@ -242,9 +62,8 @@ const QueryEdit = props => {
242
62
  const blockPreviewContext = useMemo(() => ({
243
63
  previewPostType: attributes.query.postType
244
64
  }), [attributes.query.postType]);
245
- return createElement(Fragment, null, createElement(Component, _extends({}, props, {
246
- openPatternSelectionModal: () => setIsPatternSelectionModalOpen(true)
247
- })), isPatternSelectionModalOpen && createElement(Modal, {
65
+ const blockNameForPatterns = useBlockNameForPatterns(clientId, attributes);
66
+ return createElement(Modal, {
248
67
  className: "block-editor-query-pattern__selection-modal",
249
68
  title: __('Choose a pattern'),
250
69
  closeLabel: __('Cancel'),
@@ -252,11 +71,11 @@ const QueryEdit = props => {
252
71
  }, createElement(BlockContextProvider, {
253
72
  value: blockPreviewContext
254
73
  }, createElement(BlockPatternSetup, {
255
- blockName: name,
74
+ blockName: blockNameForPatterns,
256
75
  clientId: clientId,
257
76
  onBlockPatternSelect: onBlockPatternSelect
258
- }))));
259
- };
77
+ })));
78
+ }
260
79
 
261
80
  export default QueryEdit;
262
81
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/query/edit/index.js"],"names":["useSelect","useDispatch","store","blocksStore","useInstanceId","useState","useEffect","useMemo","BlockControls","BlockContextProvider","InspectorControls","useBlockProps","useSetting","blockEditorStore","useInnerBlocksProps","__experimentalGetMatchingVariation","getMatchingVariation","__experimentalBlockPatternSetup","BlockPatternSetup","Button","SelectControl","Placeholder","Modal","__","QueryToolbar","QueryInspectorControls","QueryPlaceholder","DEFAULTS_POSTS_PER_PAGE","getTransformedBlocksFromPattern","TEMPLATE","QueryContent","attributes","setAttributes","openPatternSelectionModal","name","clientId","queryId","query","displayLayout","tagName","TagName","layout","__unstableMarkNextChangeAsNotPersistent","instanceId","themeSupportsLayout","select","getSettings","supportsLayout","defaultLayout","usedLayout","inherit","blockProps","innerBlocksProps","template","__experimentalLayout","undefined","postsPerPage","newQuery","perPage","Object","keys","length","updateQuery","Number","isFinite","updateDisplayLayout","newDisplayLayout","label","value","QueryPatternSetup","isStartingBlank","setIsStartingBlank","blockType","allVariations","hasPatterns","getBlockVariations","getBlockType","getBlockRootClientId","__experimentalGetPatternsByBlockTypes","rootClientId","matchingVariation","icon","src","title","QueryEdit","props","isPatternSelectionModalOpen","setIsPatternSelectionModalOpen","replaceBlock","selectBlock","hasInnerBlocks","getBlocks","Component","onBlockPatternSelect","blocks","newBlocks","queryClientIds","blockPreviewContext","previewPostType","postType"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,KAAK,IAAIC,WAAlB,QAAqC,mBAArC;AACA,SAASC,aAAT,QAA8B,oBAA9B;AACA,SAASC,QAAT,EAAmBC,SAAnB,EAA8BC,OAA9B,QAA6C,oBAA7C;AACA,SACCC,aADD,EAECC,oBAFD,EAGCC,iBAHD,EAICC,aAJD,EAKCC,UALD,EAMCV,KAAK,IAAIW,gBANV,EAOCC,mBAPD,EAQCC,kCAAkC,IAAIC,oBARvC,EASCC,+BAA+B,IAAIC,iBATpC,QAUO,yBAVP;AAWA,SACCC,MADD,EAECC,aAFD,EAGCC,WAHD,EAICC,KAJD,QAKO,uBALP;AAMA,SAASC,EAAT,QAAmB,iBAAnB;AAEA;AACA;AACA;;AACA,OAAOC,YAAP,MAAyB,iBAAzB;AACA,OAAOC,sBAAP,MAAmC,sBAAnC;AACA,OAAOC,gBAAP,MAA6B,qBAA7B;AACA,SAASC,uBAAT,QAAwC,cAAxC;AACA,SAASC,+BAAT,QAAgD,UAAhD;AAEA,MAAMC,QAAQ,GAAG,CAAE,CAAE,oBAAF,CAAF,CAAjB;AACA,OAAO,SAASC,YAAT,OAMH;AAAA,MAN0B;AAC7BC,IAAAA,UAD6B;AAE7BC,IAAAA,aAF6B;AAG7BC,IAAAA,yBAH6B;AAI7BC,IAAAA,IAJ6B;AAK7BC,IAAAA;AAL6B,GAM1B;AACH,QAAM;AACLC,IAAAA,OADK;AAELC,IAAAA,KAFK;AAGLC,IAAAA,aAHK;AAILC,IAAAA,OAAO,EAAEC,OAAO,GAAG,KAJd;AAKLC,IAAAA,MAAM,GAAG;AALJ,MAMFV,UANJ;AAOA,QAAM;AAAEW,IAAAA;AAAF,MACLzC,WAAW,CAAEY,gBAAF,CADZ;AAEA,QAAM8B,UAAU,GAAGvC,aAAa,CAAE0B,YAAF,CAAhC;AACA,QAAM;AAAEc,IAAAA;AAAF,MAA0B5C,SAAS,CAAI6C,MAAF,IAAc;AAAA;;AACxD,UAAM;AAAEC,MAAAA;AAAF,QAAkBD,MAAM,CAAEhC,gBAAF,CAA9B;AACA,WAAO;AAAE+B,MAAAA,mBAAmB,kBAAEE,WAAW,EAAb,iDAAE,aAAeC;AAAtC,KAAP;AACA,GAHwC,EAGtC,EAHsC,CAAzC;AAIA,QAAMC,aAAa,GAAGpC,UAAU,CAAE,QAAF,CAAV,IAA0B,EAAhD;AACA,QAAMqC,UAAU,GAAG,CAAC,CAAER,MAAH,IAAaA,MAAM,CAACS,OAApB,GAA8BF,aAA9B,GAA8CP,MAAjE;AACA,QAAMU,UAAU,GAAGxC,aAAa,EAAhC;AACA,QAAMyC,gBAAgB,GAAGtC,mBAAmB,CAAEqC,UAAF,EAAc;AACzDE,IAAAA,QAAQ,EAAExB,QAD+C;AAEzDyB,IAAAA,oBAAoB,EAAEV,mBAAmB,GAAGK,UAAH,GAAgBM;AAFA,GAAd,CAA5C;AAIA,QAAM;AAAEC,IAAAA;AAAF,MAAmBxD,SAAS,CAAI6C,MAAF,IAAc;AACjD,UAAM;AAAEC,MAAAA;AAAF,QAAkBD,MAAM,CAAEhC,gBAAF,CAA9B;AACA,WAAO;AACN2C,MAAAA,YAAY,EACX,CAACV,WAAW,GAAGU,YAAf,IAA+B7B;AAF1B,KAAP;AAIA,GANiC,EAM/B,EAN+B,CAAlC,CAtBG,CA6BH;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AACArB,EAAAA,SAAS,CAAE,MAAM;AAChB,UAAMmD,QAAQ,GAAG,EAAjB;;AACA,QAAK,CAAEpB,KAAK,CAACqB,OAAR,IAAmBF,YAAxB,EAAuC;AACtCC,MAAAA,QAAQ,CAACC,OAAT,GAAmBF,YAAnB;AACA;;AACD,QAAK,CAAC,CAAEG,MAAM,CAACC,IAAP,CAAaH,QAAb,EAAwBI,MAAhC,EAAyC;AACxCnB,MAAAA,uCAAuC;;AACvCoB,MAAAA,WAAW,CAAEL,QAAF,CAAX;AACA;AACD,GATQ,EASN,CAAEpB,KAAK,CAACqB,OAAR,CATM,CAAT,CAtCG,CAgDH;AACA;;AACApD,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAK,CAAEyD,MAAM,CAACC,QAAP,CAAiB5B,OAAjB,CAAP,EAAoC;AACnCM,MAAAA,uCAAuC;;AACvCV,MAAAA,aAAa,CAAE;AAAEI,QAAAA,OAAO,EAAEO;AAAX,OAAF,CAAb;AACA;AACD,GALQ,EAKN,CAAEP,OAAF,EAAWO,UAAX,CALM,CAAT;;AAMA,QAAMmB,WAAW,GAAKL,QAAF,IACnBzB,aAAa,CAAE;AAAEK,IAAAA,KAAK,EAAE,EAAE,GAAGA,KAAL;AAAY,SAAGoB;AAAf;AAAT,GAAF,CADd;;AAEA,QAAMQ,mBAAmB,GAAKC,gBAAF,IAC3BlC,aAAa,CAAE;AACdM,IAAAA,aAAa,EAAE,EAAE,GAAGA,aAAL;AAAoB,SAAG4B;AAAvB;AADD,GAAF,CADd;;AAIA,SACC,8BACC,cAAC,sBAAD;AACC,IAAA,UAAU,EAAGnC,UADd;AAEC,IAAA,QAAQ,EAAG+B,WAFZ;AAGC,IAAA,gBAAgB,EAAGG;AAHpB,IADD,EAMC,cAAC,aAAD,QACC,cAAC,YAAD;AACC,IAAA,IAAI,EAAG/B,IADR;AAEC,IAAA,QAAQ,EAAGC,QAFZ;AAGC,IAAA,UAAU,EAAGJ,UAHd;AAIC,IAAA,QAAQ,EAAG+B,WAJZ;AAKC,IAAA,gBAAgB,EAAGG,mBALpB;AAMC,IAAA,yBAAyB,EAAGhC;AAN7B,IADD,CAND,EAgBC,cAAC,iBAAD;AAAmB,IAAA,mBAAmB,EAAC;AAAvC,KACC,cAAC,aAAD;AACC,IAAA,KAAK,EAAGV,EAAE,CAAE,cAAF,CADX;AAEC,IAAA,OAAO,EAAG,CACT;AAAE4C,MAAAA,KAAK,EAAE5C,EAAE,CAAE,iBAAF,CAAX;AAAkC6C,MAAAA,KAAK,EAAE;AAAzC,KADS,EAET;AAAED,MAAAA,KAAK,EAAE,QAAT;AAAmBC,MAAAA,KAAK,EAAE;AAA1B,KAFS,EAGT;AAAED,MAAAA,KAAK,EAAE,WAAT;AAAsBC,MAAAA,KAAK,EAAE;AAA7B,KAHS,EAIT;AAAED,MAAAA,KAAK,EAAE,SAAT;AAAoBC,MAAAA,KAAK,EAAE;AAA3B,KAJS,CAFX;AAQC,IAAA,KAAK,EAAG5B,OART;AASC,IAAA,QAAQ,EAAK4B,KAAF,IACVpC,aAAa,CAAE;AAAEO,MAAAA,OAAO,EAAE6B;AAAX,KAAF;AAVf,IADD,CAhBD,EA+BC,cAAC,OAAD,EAAchB,gBAAd,CA/BD,CADD;AAmCA;;AAED,SAASiB,iBAAT,QAMI;AAAA;;AAAA,MANwB;AAC3BtC,IAAAA,UAD2B;AAE3BI,IAAAA,QAF2B;AAG3BD,IAAAA,IAH2B;AAI3BD,IAAAA,yBAJ2B;AAK3BD,IAAAA;AAL2B,GAMxB;AACH,QAAM,CAAEsC,eAAF,EAAmBC,kBAAnB,IAA0ClE,QAAQ,CAAE,KAAF,CAAxD;AACA,QAAM8C,UAAU,GAAGxC,aAAa,EAAhC;AAEA,QAAM;AAAE6D,IAAAA,SAAF;AAAaC,IAAAA,aAAb;AAA4BC,IAAAA;AAA5B,MAA4C1E,SAAS,CACxD6C,MAAF,IAAc;AACb,UAAM;AAAE8B,MAAAA,kBAAF;AAAsBC,MAAAA;AAAtB,QAAuC/B,MAAM,CAAE1C,WAAF,CAAnD;AACA,UAAM;AACL0E,MAAAA,oBADK;AAELC,MAAAA;AAFK,QAGFjC,MAAM,CAAEhC,gBAAF,CAHV;AAIA,UAAMkE,YAAY,GAAGF,oBAAoB,CAAE1C,QAAF,CAAzC;AAEA,WAAO;AACNqC,MAAAA,SAAS,EAAEI,YAAY,CAAE1C,IAAF,CADjB;AAENuC,MAAAA,aAAa,EAAEE,kBAAkB,CAAEzC,IAAF,CAF3B;AAGNwC,MAAAA,WAAW,EAAE,CAAC,CAAEI,qCAAqC,CACpD5C,IADoD,EAEpD6C,YAFoD,CAArC,CAGdlB;AANI,KAAP;AAQA,GAjByD,EAkB1D,CAAE3B,IAAF,EAAQC,QAAR,CAlB0D,CAA3D;AAqBA,QAAM6C,iBAAiB,GAAGhE,oBAAoB,CAAEe,UAAF,EAAc0C,aAAd,CAA9C;AACA,QAAMQ,IAAI,GAAG,CAAAD,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAEC,IAAnB,MAA2BT,SAA3B,aAA2BA,SAA3B,0CAA2BA,SAAS,CAAES,IAAtC,oDAA2B,gBAAiBC,GAA5C,CAAb;AACA,QAAMf,KAAK,GAAG,CAAAa,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAEG,KAAnB,MAA4BX,SAA5B,aAA4BA,SAA5B,uBAA4BA,SAAS,CAAEW,KAAvC,CAAd;;AACA,MAAKb,eAAL,EAAuB;AACtB,WACC,cAAC,gBAAD;AACC,MAAA,QAAQ,EAAGnC,QADZ;AAEC,MAAA,IAAI,EAAGD,IAFR;AAGC,MAAA,UAAU,EAAGH,UAHd;AAIC,MAAA,aAAa,EAAGC,aAJjB;AAKC,MAAA,IAAI,EAAGiD,IALR;AAMC,MAAA,KAAK,EAAGd;AANT,MADD;AAUA;;AACD,SACC,qBAAUhB,UAAV,EACC,cAAC,WAAD;AACC,IAAA,IAAI,EAAG8B,IADR;AAEC,IAAA,KAAK,EAAGd,KAFT;AAGC,IAAA,YAAY,EAAG5C,EAAE,CAChB,qDADgB;AAHlB,KAOG,CAAC,CAAEmD,WAAH,IACD,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,SADT;AAEC,IAAA,OAAO,EAAGzC;AAFX,KAIGV,EAAE,CAAE,QAAF,CAJL,CARF,EAgBC,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,WADT;AAEC,IAAA,OAAO,EAAG,MAAM;AACfgD,MAAAA,kBAAkB,CAAE,IAAF,CAAlB;AACA;AAJF,KAMGhD,EAAE,CAAE,aAAF,CANL,CAhBD,CADD,CADD;AA6BA;;AAED,MAAM6D,SAAS,GAAKC,KAAF,IAAa;AAC9B,QAAM;AAAElD,IAAAA,QAAF;AAAYD,IAAAA,IAAZ;AAAkBH,IAAAA;AAAlB,MAAiCsD,KAAvC;AACA,QAAM,CAAEC,2BAAF,EAA+BC,8BAA/B,IACLlF,QAAQ,CAAE,KAAF,CADT;AAEA,QAAM;AAAEmF,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,MAAgCxF,WAAW,CAAEY,gBAAF,CAAjD;AACA,QAAM6E,cAAc,GAAG1F,SAAS,CAC7B6C,MAAF,IACC,CAAC,CAAEA,MAAM,CAAEhC,gBAAF,CAAN,CAA2B8E,SAA3B,CAAsCxD,QAAtC,EAAiD0B,MAFtB,EAG/B,CAAE1B,QAAF,CAH+B,CAAhC;AAKA,QAAMyD,SAAS,GAAGF,cAAc,GAAG5D,YAAH,GAAkBuC,iBAAlD;;AACA,QAAMwB,oBAAoB,GAAKC,MAAF,IAAc;AAC1C,UAAM;AAAEC,MAAAA,SAAF;AAAaC,MAAAA;AAAb,QAAgCpE,+BAA+B,CACpEkE,MADoE,EAEpE/D,UAFoE,CAArE;AAIAyD,IAAAA,YAAY,CAAErD,QAAF,EAAY4D,SAAZ,CAAZ;;AACA,QAAKC,cAAc,CAAE,CAAF,CAAnB,EAA2B;AAC1BP,MAAAA,WAAW,CAAEO,cAAc,CAAE,CAAF,CAAhB,CAAX;AACA;AACD,GATD,CAX8B,CAqB9B;AACA;;;AACA,QAAMC,mBAAmB,GAAG1F,OAAO,CAClC,OAAQ;AACP2F,IAAAA,eAAe,EAAEnE,UAAU,CAACM,KAAX,CAAiB8D;AAD3B,GAAR,CADkC,EAIlC,CAAEpE,UAAU,CAACM,KAAX,CAAiB8D,QAAnB,CAJkC,CAAnC;AAMA,SACC,8BACC,cAAC,SAAD,eACMd,KADN;AAEC,IAAA,yBAAyB,EAAG,MAC3BE,8BAA8B,CAAE,IAAF;AAHhC,KADD,EAOGD,2BAA2B,IAC5B,cAAC,KAAD;AACC,IAAA,SAAS,EAAC,6CADX;AAEC,IAAA,KAAK,EAAG/D,EAAE,CAAE,kBAAF,CAFX;AAGC,IAAA,UAAU,EAAGA,EAAE,CAAE,QAAF,CAHhB;AAIC,IAAA,cAAc,EAAG,MAChBgE,8BAA8B,CAAE,KAAF;AALhC,KAQC,cAAC,oBAAD;AAAsB,IAAA,KAAK,EAAGU;AAA9B,KACC,cAAC,iBAAD;AACC,IAAA,SAAS,EAAG/D,IADb;AAEC,IAAA,QAAQ,EAAGC,QAFZ;AAGC,IAAA,oBAAoB,EAAG0D;AAHxB,IADD,CARD,CARF,CADD;AA4BA,CAzDD;;AA2DA,eAAeT,SAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useState, useEffect, useMemo } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tBlockContextProvider,\n\tInspectorControls,\n\tuseBlockProps,\n\tuseSetting,\n\tstore as blockEditorStore,\n\tuseInnerBlocksProps,\n\t__experimentalGetMatchingVariation as getMatchingVariation,\n\t__experimentalBlockPatternSetup as BlockPatternSetup,\n} from '@wordpress/block-editor';\nimport {\n\tButton,\n\tSelectControl,\n\tPlaceholder,\n\tModal,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport QueryToolbar from './query-toolbar';\nimport QueryInspectorControls from './inspector-controls';\nimport QueryPlaceholder from './query-placeholder';\nimport { DEFAULTS_POSTS_PER_PAGE } from '../constants';\nimport { getTransformedBlocksFromPattern } from '../utils';\n\nconst TEMPLATE = [ [ 'core/post-template' ] ];\nexport function QueryContent( {\n\tattributes,\n\tsetAttributes,\n\topenPatternSelectionModal,\n\tname,\n\tclientId,\n} ) {\n\tconst {\n\t\tqueryId,\n\t\tquery,\n\t\tdisplayLayout,\n\t\ttagName: TagName = 'div',\n\t\tlayout = {},\n\t} = attributes;\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tconst instanceId = useInstanceId( QueryContent );\n\tconst { themeSupportsLayout } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn { themeSupportsLayout: getSettings()?.supportsLayout };\n\t}, [] );\n\tconst defaultLayout = useSetting( 'layout' ) || {};\n\tconst usedLayout = !! layout && layout.inherit ? defaultLayout : layout;\n\tconst blockProps = useBlockProps();\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t\t__experimentalLayout: themeSupportsLayout ? usedLayout : undefined,\n\t} );\n\tconst { postsPerPage } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tpostsPerPage:\n\t\t\t\t+getSettings().postsPerPage || DEFAULTS_POSTS_PER_PAGE,\n\t\t};\n\t}, [] );\n\t// There are some effects running where some initialization logic is\n\t// happening and setting some values to some attributes (ex. queryId).\n\t// These updates can cause an `undo trap` where undoing will result in\n\t// resetting again, so we need to mark these changes as not persistent\n\t// with `__unstableMarkNextChangeAsNotPersistent`.\n\n\t// Changes in query property (which is an object) need to be in the same callback,\n\t// because updates are batched after the render and changes in different query properties\n\t// would cause to override previous wanted changes.\n\tuseEffect( () => {\n\t\tconst newQuery = {};\n\t\tif ( ! query.perPage && postsPerPage ) {\n\t\t\tnewQuery.perPage = postsPerPage;\n\t\t}\n\t\tif ( !! Object.keys( newQuery ).length ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateQuery( newQuery );\n\t\t}\n\t}, [ query.perPage ] );\n\t// We need this for multi-query block pagination.\n\t// Query parameters for each block are scoped to their ID.\n\tuseEffect( () => {\n\t\tif ( ! Number.isFinite( queryId ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { queryId: instanceId } );\n\t\t}\n\t}, [ queryId, instanceId ] );\n\tconst updateQuery = ( newQuery ) =>\n\t\tsetAttributes( { query: { ...query, ...newQuery } } );\n\tconst updateDisplayLayout = ( newDisplayLayout ) =>\n\t\tsetAttributes( {\n\t\t\tdisplayLayout: { ...displayLayout, ...newDisplayLayout },\n\t\t} );\n\treturn (\n\t\t<>\n\t\t\t<QueryInspectorControls\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetQuery={ updateQuery }\n\t\t\t\tsetDisplayLayout={ updateDisplayLayout }\n\t\t\t/>\n\t\t\t<BlockControls>\n\t\t\t\t<QueryToolbar\n\t\t\t\t\tname={ name }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetQuery={ updateQuery }\n\t\t\t\t\tsetDisplayLayout={ updateDisplayLayout }\n\t\t\t\t\topenPatternSelectionModal={ openPatternSelectionModal }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls __experimentalGroup=\"advanced\">\n\t\t\t\t<SelectControl\n\t\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\t\toptions={ [\n\t\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t] }\n\t\t\t\t\tvalue={ TagName }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<TagName { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n\nfunction QueryPatternSetup( {\n\tattributes,\n\tclientId,\n\tname,\n\topenPatternSelectionModal,\n\tsetAttributes,\n} ) {\n\tconst [ isStartingBlank, setIsStartingBlank ] = useState( false );\n\tconst blockProps = useBlockProps();\n\n\tconst { blockType, allVariations, hasPatterns } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockVariations, getBlockType } = select( blocksStore );\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\t__experimentalGetPatternsByBlockTypes,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\treturn {\n\t\t\t\tblockType: getBlockType( name ),\n\t\t\t\tallVariations: getBlockVariations( name ),\n\t\t\t\thasPatterns: !! __experimentalGetPatternsByBlockTypes(\n\t\t\t\t\tname,\n\t\t\t\t\trootClientId\n\t\t\t\t).length,\n\t\t\t};\n\t\t},\n\t\t[ name, clientId ]\n\t);\n\n\tconst matchingVariation = getMatchingVariation( attributes, allVariations );\n\tconst icon = matchingVariation?.icon || blockType?.icon?.src;\n\tconst label = matchingVariation?.title || blockType?.title;\n\tif ( isStartingBlank ) {\n\t\treturn (\n\t\t\t<QueryPlaceholder\n\t\t\t\tclientId={ clientId }\n\t\t\t\tname={ name }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<Placeholder\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t\tinstructions={ __(\n\t\t\t\t\t'Choose a pattern for the query loop or start blank.'\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ !! hasPatterns && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ openPatternSelectionModal }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Choose' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetIsStartingBlank( true );\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Start blank' ) }\n\t\t\t\t</Button>\n\t\t\t</Placeholder>\n\t\t</div>\n\t);\n}\n\nconst QueryEdit = ( props ) => {\n\tconst { clientId, name, attributes } = props;\n\tconst [ isPatternSelectionModalOpen, setIsPatternSelectionModalOpen ] =\n\t\tuseState( false );\n\tconst { replaceBlock, selectBlock } = useDispatch( blockEditorStore );\n\tconst hasInnerBlocks = useSelect(\n\t\t( select ) =>\n\t\t\t!! select( blockEditorStore ).getBlocks( clientId ).length,\n\t\t[ clientId ]\n\t);\n\tconst Component = hasInnerBlocks ? QueryContent : QueryPatternSetup;\n\tconst onBlockPatternSelect = ( blocks ) => {\n\t\tconst { newBlocks, queryClientIds } = getTransformedBlocksFromPattern(\n\t\t\tblocks,\n\t\t\tattributes\n\t\t);\n\t\treplaceBlock( clientId, newBlocks );\n\t\tif ( queryClientIds[ 0 ] ) {\n\t\t\tselectBlock( queryClientIds[ 0 ] );\n\t\t}\n\t};\n\t// When we preview Query Loop blocks we should prefer the current\n\t// block's postType, which is passed through block context.\n\tconst blockPreviewContext = useMemo(\n\t\t() => ( {\n\t\t\tpreviewPostType: attributes.query.postType,\n\t\t} ),\n\t\t[ attributes.query.postType ]\n\t);\n\treturn (\n\t\t<>\n\t\t\t<Component\n\t\t\t\t{ ...props }\n\t\t\t\topenPatternSelectionModal={ () =>\n\t\t\t\t\tsetIsPatternSelectionModalOpen( true )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ isPatternSelectionModalOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\tclassName=\"block-editor-query-pattern__selection-modal\"\n\t\t\t\t\ttitle={ __( 'Choose a pattern' ) }\n\t\t\t\t\tcloseLabel={ __( 'Cancel' ) }\n\t\t\t\t\tonRequestClose={ () =>\n\t\t\t\t\t\tsetIsPatternSelectionModalOpen( false )\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<BlockContextProvider value={ blockPreviewContext }>\n\t\t\t\t\t\t<BlockPatternSetup\n\t\t\t\t\t\t\tblockName={ name }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tonBlockPatternSelect={ onBlockPatternSelect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockContextProvider>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nexport default QueryEdit;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/query/edit/index.js"],"names":["useSelect","useDispatch","useState","useMemo","BlockContextProvider","store","blockEditorStore","__experimentalBlockPatternSetup","BlockPatternSetup","Modal","__","QueryContent","QueryPlaceholder","useBlockNameForPatterns","getTransformedBlocksFromPattern","QueryEdit","props","clientId","attributes","isPatternSelectionModalOpen","setIsPatternSelectionModalOpen","hasInnerBlocks","select","getBlocks","length","Component","PatternSelectionModal","replaceBlock","selectBlock","onBlockPatternSelect","blocks","newBlocks","queryClientIds","blockPreviewContext","previewPostType","query","postType","blockNameForPatterns"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,QAAT,EAAmBC,OAAnB,QAAkC,oBAAlC;AACA,SACCC,oBADD,EAECC,KAAK,IAAIC,gBAFV,EAGCC,+BAA+B,IAAIC,iBAHpC,QAIO,yBAJP;AAKA,SAASC,KAAT,QAAsB,uBAAtB;AACA,SAASC,EAAT,QAAmB,iBAAnB;AAEA;AACA;AACA;;AACA,OAAOC,YAAP,MAAyB,iBAAzB;AACA,OAAOC,gBAAP,MAA6B,qBAA7B;AACA,SACCC,uBADD,EAECC,+BAFD,QAGO,UAHP;;AAKA,MAAMC,SAAS,GAAKC,KAAF,IAAa;AAC9B,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,MAA2BF,KAAjC;AACA,QAAM,CAAEG,2BAAF,EAA+BC,8BAA/B,IACLlB,QAAQ,CAAE,KAAF,CADT;AAEA,QAAMmB,cAAc,GAAGrB,SAAS,CAC7BsB,MAAF,IACC,CAAC,CAAEA,MAAM,CAAEhB,gBAAF,CAAN,CAA2BiB,SAA3B,CAAsCN,QAAtC,EAAiDO,MAFtB,EAG/B,CAAEP,QAAF,CAH+B,CAAhC;AAKA,QAAMQ,SAAS,GAAGJ,cAAc,GAAGV,YAAH,GAAkBC,gBAAlD;AACA,SACC,8BACC,cAAC,SAAD,eACMI,KADN;AAEC,IAAA,yBAAyB,EAAG,MAC3BI,8BAA8B,CAAE,IAAF;AAHhC,KADD,EAOGD,2BAA2B,IAC5B,cAAC,qBAAD;AACC,IAAA,QAAQ,EAAGF,QADZ;AAEC,IAAA,UAAU,EAAGC,UAFd;AAGC,IAAA,8BAA8B,EAC7BE;AAJF,IARF,CADD;AAmBA,CA7BD;;AA+BA,SAASM,qBAAT,OAII;AAAA,MAJ4B;AAC/BT,IAAAA,QAD+B;AAE/BC,IAAAA,UAF+B;AAG/BE,IAAAA;AAH+B,GAI5B;AACH,QAAM;AAAEO,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,MAAgC3B,WAAW,CAAEK,gBAAF,CAAjD;;AACA,QAAMuB,oBAAoB,GAAKC,MAAF,IAAc;AAC1C,UAAM;AAAEC,MAAAA,SAAF;AAAaC,MAAAA;AAAb,QAAgClB,+BAA+B,CACpEgB,MADoE,EAEpEZ,UAFoE,CAArE;AAIAS,IAAAA,YAAY,CAAEV,QAAF,EAAYc,SAAZ,CAAZ;;AACA,QAAKC,cAAc,CAAE,CAAF,CAAnB,EAA2B;AAC1BJ,MAAAA,WAAW,CAAEI,cAAc,CAAE,CAAF,CAAhB,CAAX;AACA;AACD,GATD,CAFG,CAYH;AACA;;;AACA,QAAMC,mBAAmB,GAAG9B,OAAO,CAClC,OAAQ;AACP+B,IAAAA,eAAe,EAAEhB,UAAU,CAACiB,KAAX,CAAiBC;AAD3B,GAAR,CADkC,EAIlC,CAAElB,UAAU,CAACiB,KAAX,CAAiBC,QAAnB,CAJkC,CAAnC;AAMA,QAAMC,oBAAoB,GAAGxB,uBAAuB,CACnDI,QADmD,EAEnDC,UAFmD,CAApD;AAIA,SACC,cAAC,KAAD;AACC,IAAA,SAAS,EAAC,6CADX;AAEC,IAAA,KAAK,EAAGR,EAAE,CAAE,kBAAF,CAFX;AAGC,IAAA,UAAU,EAAGA,EAAE,CAAE,QAAF,CAHhB;AAIC,IAAA,cAAc,EAAG,MAAMU,8BAA8B,CAAE,KAAF;AAJtD,KAMC,cAAC,oBAAD;AAAsB,IAAA,KAAK,EAAGa;AAA9B,KACC,cAAC,iBAAD;AACC,IAAA,SAAS,EAAGI,oBADb;AAEC,IAAA,QAAQ,EAAGpB,QAFZ;AAGC,IAAA,oBAAoB,EAAGY;AAHxB,IADD,CAND,CADD;AAgBA;;AAED,eAAed,SAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\nimport {\n\tBlockContextProvider,\n\tstore as blockEditorStore,\n\t__experimentalBlockPatternSetup as BlockPatternSetup,\n} from '@wordpress/block-editor';\nimport { Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport QueryContent from './query-content';\nimport QueryPlaceholder from './query-placeholder';\nimport {\n\tuseBlockNameForPatterns,\n\tgetTransformedBlocksFromPattern,\n} from '../utils';\n\nconst QueryEdit = ( props ) => {\n\tconst { clientId, attributes } = props;\n\tconst [ isPatternSelectionModalOpen, setIsPatternSelectionModalOpen ] =\n\t\tuseState( false );\n\tconst hasInnerBlocks = useSelect(\n\t\t( select ) =>\n\t\t\t!! select( blockEditorStore ).getBlocks( clientId ).length,\n\t\t[ clientId ]\n\t);\n\tconst Component = hasInnerBlocks ? QueryContent : QueryPlaceholder;\n\treturn (\n\t\t<>\n\t\t\t<Component\n\t\t\t\t{ ...props }\n\t\t\t\topenPatternSelectionModal={ () =>\n\t\t\t\t\tsetIsPatternSelectionModalOpen( true )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ isPatternSelectionModalOpen && (\n\t\t\t\t<PatternSelectionModal\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetIsPatternSelectionModalOpen={\n\t\t\t\t\t\tsetIsPatternSelectionModalOpen\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nfunction PatternSelectionModal( {\n\tclientId,\n\tattributes,\n\tsetIsPatternSelectionModalOpen,\n} ) {\n\tconst { replaceBlock, selectBlock } = useDispatch( blockEditorStore );\n\tconst onBlockPatternSelect = ( blocks ) => {\n\t\tconst { newBlocks, queryClientIds } = getTransformedBlocksFromPattern(\n\t\t\tblocks,\n\t\t\tattributes\n\t\t);\n\t\treplaceBlock( clientId, newBlocks );\n\t\tif ( queryClientIds[ 0 ] ) {\n\t\t\tselectBlock( queryClientIds[ 0 ] );\n\t\t}\n\t};\n\t// When we preview Query Loop blocks we should prefer the current\n\t// block's postType, which is passed through block context.\n\tconst blockPreviewContext = useMemo(\n\t\t() => ( {\n\t\t\tpreviewPostType: attributes.query.postType,\n\t\t} ),\n\t\t[ attributes.query.postType ]\n\t);\n\tconst blockNameForPatterns = useBlockNameForPatterns(\n\t\tclientId,\n\t\tattributes\n\t);\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"block-editor-query-pattern__selection-modal\"\n\t\t\ttitle={ __( 'Choose a pattern' ) }\n\t\t\tcloseLabel={ __( 'Cancel' ) }\n\t\t\tonRequestClose={ () => setIsPatternSelectionModalOpen( false ) }\n\t\t>\n\t\t\t<BlockContextProvider value={ blockPreviewContext }>\n\t\t\t\t<BlockPatternSetup\n\t\t\t\t\tblockName={ blockNameForPatterns }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tonBlockPatternSelect={ onBlockPatternSelect }\n\t\t\t\t/>\n\t\t\t</BlockContextProvider>\n\t\t</Modal>\n\t);\n}\n\nexport default QueryEdit;\n"]}
@@ -0,0 +1,152 @@
1
+ import { createElement, Fragment } from "@wordpress/element";
2
+
3
+ /**
4
+ * WordPress dependencies
5
+ */
6
+ import { useSelect, useDispatch } from '@wordpress/data';
7
+ import { useInstanceId } from '@wordpress/compose';
8
+ import { useEffect } from '@wordpress/element';
9
+ import { BlockControls, InspectorControls, useBlockProps, useSetting, store as blockEditorStore, useInnerBlocksProps } from '@wordpress/block-editor';
10
+ import { SelectControl } from '@wordpress/components';
11
+ import { __ } from '@wordpress/i18n';
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+
16
+ import QueryToolbar from './query-toolbar';
17
+ import QueryInspectorControls from './inspector-controls';
18
+ import { DEFAULTS_POSTS_PER_PAGE } from '../constants';
19
+ const TEMPLATE = [['core/post-template']];
20
+ export default function QueryContent(_ref) {
21
+ let {
22
+ attributes,
23
+ setAttributes,
24
+ openPatternSelectionModal,
25
+ name,
26
+ clientId
27
+ } = _ref;
28
+ const {
29
+ queryId,
30
+ query,
31
+ displayLayout,
32
+ tagName: TagName = 'div',
33
+ layout = {}
34
+ } = attributes;
35
+ const {
36
+ __unstableMarkNextChangeAsNotPersistent
37
+ } = useDispatch(blockEditorStore);
38
+ const instanceId = useInstanceId(QueryContent);
39
+ const {
40
+ themeSupportsLayout
41
+ } = useSelect(select => {
42
+ var _getSettings;
43
+
44
+ const {
45
+ getSettings
46
+ } = select(blockEditorStore);
47
+ return {
48
+ themeSupportsLayout: (_getSettings = getSettings()) === null || _getSettings === void 0 ? void 0 : _getSettings.supportsLayout
49
+ };
50
+ }, []);
51
+ const defaultLayout = useSetting('layout') || {};
52
+ const usedLayout = !(layout !== null && layout !== void 0 && layout.type) ? { ...defaultLayout,
53
+ ...layout,
54
+ type: 'default'
55
+ } : { ...defaultLayout,
56
+ ...layout
57
+ };
58
+ const blockProps = useBlockProps();
59
+ const innerBlocksProps = useInnerBlocksProps(blockProps, {
60
+ template: TEMPLATE,
61
+ __experimentalLayout: themeSupportsLayout ? usedLayout : undefined
62
+ });
63
+ const {
64
+ postsPerPage
65
+ } = useSelect(select => {
66
+ const {
67
+ getSettings
68
+ } = select(blockEditorStore);
69
+ return {
70
+ postsPerPage: +getSettings().postsPerPage || DEFAULTS_POSTS_PER_PAGE
71
+ };
72
+ }, []); // There are some effects running where some initialization logic is
73
+ // happening and setting some values to some attributes (ex. queryId).
74
+ // These updates can cause an `undo trap` where undoing will result in
75
+ // resetting again, so we need to mark these changes as not persistent
76
+ // with `__unstableMarkNextChangeAsNotPersistent`.
77
+ // Changes in query property (which is an object) need to be in the same callback,
78
+ // because updates are batched after the render and changes in different query properties
79
+ // would cause to override previous wanted changes.
80
+
81
+ useEffect(() => {
82
+ const newQuery = {};
83
+
84
+ if (!query.perPage && postsPerPage) {
85
+ newQuery.perPage = postsPerPage;
86
+ }
87
+
88
+ if (!!Object.keys(newQuery).length) {
89
+ __unstableMarkNextChangeAsNotPersistent();
90
+
91
+ updateQuery(newQuery);
92
+ }
93
+ }, [query.perPage]); // We need this for multi-query block pagination.
94
+ // Query parameters for each block are scoped to their ID.
95
+
96
+ useEffect(() => {
97
+ if (!Number.isFinite(queryId)) {
98
+ __unstableMarkNextChangeAsNotPersistent();
99
+
100
+ setAttributes({
101
+ queryId: instanceId
102
+ });
103
+ }
104
+ }, [queryId, instanceId]);
105
+
106
+ const updateQuery = newQuery => setAttributes({
107
+ query: { ...query,
108
+ ...newQuery
109
+ }
110
+ });
111
+
112
+ const updateDisplayLayout = newDisplayLayout => setAttributes({
113
+ displayLayout: { ...displayLayout,
114
+ ...newDisplayLayout
115
+ }
116
+ });
117
+
118
+ return createElement(Fragment, null, createElement(QueryInspectorControls, {
119
+ attributes: attributes,
120
+ setQuery: updateQuery,
121
+ setDisplayLayout: updateDisplayLayout
122
+ }), createElement(BlockControls, null, createElement(QueryToolbar, {
123
+ name: name,
124
+ clientId: clientId,
125
+ attributes: attributes,
126
+ setQuery: updateQuery,
127
+ setDisplayLayout: updateDisplayLayout,
128
+ openPatternSelectionModal: openPatternSelectionModal
129
+ })), createElement(InspectorControls, {
130
+ __experimentalGroup: "advanced"
131
+ }, createElement(SelectControl, {
132
+ label: __('HTML element'),
133
+ options: [{
134
+ label: __('Default (<div>)'),
135
+ value: 'div'
136
+ }, {
137
+ label: '<main>',
138
+ value: 'main'
139
+ }, {
140
+ label: '<section>',
141
+ value: 'section'
142
+ }, {
143
+ label: '<aside>',
144
+ value: 'aside'
145
+ }],
146
+ value: TagName,
147
+ onChange: value => setAttributes({
148
+ tagName: value
149
+ })
150
+ })), createElement(TagName, innerBlocksProps));
151
+ }
152
+ //# sourceMappingURL=query-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-library/src/query/edit/query-content.js"],"names":["useSelect","useDispatch","useInstanceId","useEffect","BlockControls","InspectorControls","useBlockProps","useSetting","store","blockEditorStore","useInnerBlocksProps","SelectControl","__","QueryToolbar","QueryInspectorControls","DEFAULTS_POSTS_PER_PAGE","TEMPLATE","QueryContent","attributes","setAttributes","openPatternSelectionModal","name","clientId","queryId","query","displayLayout","tagName","TagName","layout","__unstableMarkNextChangeAsNotPersistent","instanceId","themeSupportsLayout","select","getSettings","supportsLayout","defaultLayout","usedLayout","type","blockProps","innerBlocksProps","template","__experimentalLayout","undefined","postsPerPage","newQuery","perPage","Object","keys","length","updateQuery","Number","isFinite","updateDisplayLayout","newDisplayLayout","label","value"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useEffect } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\tuseSetting,\n\tstore as blockEditorStore,\n\tuseInnerBlocksProps,\n} from '@wordpress/block-editor';\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport QueryToolbar from './query-toolbar';\nimport QueryInspectorControls from './inspector-controls';\nimport { DEFAULTS_POSTS_PER_PAGE } from '../constants';\n\nconst TEMPLATE = [ [ 'core/post-template' ] ];\nexport default function QueryContent( {\n\tattributes,\n\tsetAttributes,\n\topenPatternSelectionModal,\n\tname,\n\tclientId,\n} ) {\n\tconst {\n\t\tqueryId,\n\t\tquery,\n\t\tdisplayLayout,\n\t\ttagName: TagName = 'div',\n\t\tlayout = {},\n\t} = attributes;\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tconst instanceId = useInstanceId( QueryContent );\n\tconst { themeSupportsLayout } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn { themeSupportsLayout: getSettings()?.supportsLayout };\n\t}, [] );\n\tconst defaultLayout = useSetting( 'layout' ) || {};\n\tconst usedLayout = ! layout?.type\n\t\t? { ...defaultLayout, ...layout, type: 'default' }\n\t\t: { ...defaultLayout, ...layout };\n\tconst blockProps = useBlockProps();\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t\t__experimentalLayout: themeSupportsLayout ? usedLayout : undefined,\n\t} );\n\tconst { postsPerPage } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tpostsPerPage:\n\t\t\t\t+getSettings().postsPerPage || DEFAULTS_POSTS_PER_PAGE,\n\t\t};\n\t}, [] );\n\t// There are some effects running where some initialization logic is\n\t// happening and setting some values to some attributes (ex. queryId).\n\t// These updates can cause an `undo trap` where undoing will result in\n\t// resetting again, so we need to mark these changes as not persistent\n\t// with `__unstableMarkNextChangeAsNotPersistent`.\n\n\t// Changes in query property (which is an object) need to be in the same callback,\n\t// because updates are batched after the render and changes in different query properties\n\t// would cause to override previous wanted changes.\n\tuseEffect( () => {\n\t\tconst newQuery = {};\n\t\tif ( ! query.perPage && postsPerPage ) {\n\t\t\tnewQuery.perPage = postsPerPage;\n\t\t}\n\t\tif ( !! Object.keys( newQuery ).length ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateQuery( newQuery );\n\t\t}\n\t}, [ query.perPage ] );\n\t// We need this for multi-query block pagination.\n\t// Query parameters for each block are scoped to their ID.\n\tuseEffect( () => {\n\t\tif ( ! Number.isFinite( queryId ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { queryId: instanceId } );\n\t\t}\n\t}, [ queryId, instanceId ] );\n\tconst updateQuery = ( newQuery ) =>\n\t\tsetAttributes( { query: { ...query, ...newQuery } } );\n\tconst updateDisplayLayout = ( newDisplayLayout ) =>\n\t\tsetAttributes( {\n\t\t\tdisplayLayout: { ...displayLayout, ...newDisplayLayout },\n\t\t} );\n\treturn (\n\t\t<>\n\t\t\t<QueryInspectorControls\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetQuery={ updateQuery }\n\t\t\t\tsetDisplayLayout={ updateDisplayLayout }\n\t\t\t/>\n\t\t\t<BlockControls>\n\t\t\t\t<QueryToolbar\n\t\t\t\t\tname={ name }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetQuery={ updateQuery }\n\t\t\t\t\tsetDisplayLayout={ updateDisplayLayout }\n\t\t\t\t\topenPatternSelectionModal={ openPatternSelectionModal }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls __experimentalGroup=\"advanced\">\n\t\t\t\t<SelectControl\n\t\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\t\toptions={ [\n\t\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t] }\n\t\t\t\t\tvalue={ TagName }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<TagName { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n"]}
@@ -4,10 +4,74 @@ import { createElement } from "@wordpress/element";
4
4
  * WordPress dependencies
5
5
  */
6
6
  import { useSelect, useDispatch } from '@wordpress/data';
7
- import { useBlockProps, __experimentalBlockVariationPicker, store as blockEditorStore } from '@wordpress/block-editor';
8
7
  import { createBlocksFromInnerBlocksTemplate, store as blocksStore } from '@wordpress/blocks';
8
+ import { useState } from '@wordpress/element';
9
+ import { useBlockProps, store as blockEditorStore, __experimentalBlockVariationPicker, __experimentalGetMatchingVariation as getMatchingVariation } from '@wordpress/block-editor';
10
+ import { Button, Placeholder } from '@wordpress/components';
11
+ import { __ } from '@wordpress/i18n';
12
+ export default function QueryPlaceholder(_ref) {
13
+ var _blockType$icon;
9
14
 
10
- function QueryPlaceholder(_ref) {
15
+ let {
16
+ attributes,
17
+ clientId,
18
+ name,
19
+ openPatternSelectionModal,
20
+ setAttributes
21
+ } = _ref;
22
+ const [isStartingBlank, setIsStartingBlank] = useState(false);
23
+ const blockProps = useBlockProps();
24
+ const {
25
+ blockType,
26
+ allVariations,
27
+ hasPatterns
28
+ } = useSelect(select => {
29
+ const {
30
+ getBlockVariations,
31
+ getBlockType
32
+ } = select(blocksStore);
33
+ const {
34
+ getBlockRootClientId,
35
+ __experimentalGetPatternsByBlockTypes
36
+ } = select(blockEditorStore);
37
+ const rootClientId = getBlockRootClientId(clientId);
38
+ return {
39
+ blockType: getBlockType(name),
40
+ allVariations: getBlockVariations(name),
41
+ hasPatterns: !!__experimentalGetPatternsByBlockTypes(name, rootClientId).length
42
+ };
43
+ }, [name, clientId]);
44
+ const matchingVariation = getMatchingVariation(attributes, allVariations);
45
+ const icon = (matchingVariation === null || matchingVariation === void 0 ? void 0 : matchingVariation.icon) || (blockType === null || blockType === void 0 ? void 0 : (_blockType$icon = blockType.icon) === null || _blockType$icon === void 0 ? void 0 : _blockType$icon.src);
46
+ const label = (matchingVariation === null || matchingVariation === void 0 ? void 0 : matchingVariation.title) || (blockType === null || blockType === void 0 ? void 0 : blockType.title);
47
+
48
+ if (isStartingBlank) {
49
+ return createElement(QueryVariationPicker, {
50
+ clientId: clientId,
51
+ name: name,
52
+ attributes: attributes,
53
+ setAttributes: setAttributes,
54
+ icon: icon,
55
+ label: label
56
+ });
57
+ }
58
+
59
+ return createElement("div", blockProps, createElement(Placeholder, {
60
+ icon: icon,
61
+ label: label,
62
+ instructions: __('Choose a pattern for the query loop or start blank.')
63
+ }, !!hasPatterns && createElement(Button, {
64
+ variant: "primary",
65
+ onClick: openPatternSelectionModal
66
+ }, __('Choose')), createElement(Button, {
67
+ variant: "secondary",
68
+ onClick: () => {
69
+ setIsStartingBlank(true);
70
+ }
71
+ }, __('Start blank'))));
72
+ }
73
+
74
+ function QueryVariationPicker(_ref2) {
11
75
  let {
12
76
  clientId,
13
77
  name,
@@ -15,7 +79,7 @@ function QueryPlaceholder(_ref) {
15
79
  setAttributes,
16
80
  icon,
17
81
  label
18
- } = _ref;
82
+ } = _ref2;
19
83
  const {
20
84
  defaultVariation,
21
85
  scopeVariations
@@ -56,6 +120,4 @@ function QueryPlaceholder(_ref) {
56
120
  }
57
121
  }));
58
122
  }
59
-
60
- export default QueryPlaceholder;
61
123
  //# sourceMappingURL=query-placeholder.js.map