PluginProbe ʕ •ᴥ•ʔ
GenerateBlocks / 2.0.0
GenerateBlocks v2.0.0
trunk 1.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.7.0 1.7.1 1.7.2 1.7.3 1.8.0 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 2.0.0 2.0.1 2.0.2 2.1.0 2.1.1 2.1.2 2.2.0 2.2.1 2.3.0
generateblocks / src / blocks / query-loop / components / utils.js
generateblocks / src / blocks / query-loop / components Last commit date
inspector-controls 3 years ago BlockControls.js 3 years ago InspectorAdvancedControls.js 2 years ago InspectorControls.js 3 years ago LayoutSelector.js 3 years ago LoopRenderer.js 3 years ago QueryLoopRenderer.js 2 years ago utils.js 3 years ago
utils.js
76 lines
1 import { applyFilters } from '@wordpress/hooks';
2
3 export function removeEmpty( obj ) {
4 return Object.fromEntries( Object.entries( obj ).filter( ( [ idx, value ] ) => {
5 // Allow the image alt attribute to be empty.
6 if ( 'alt' === idx ) {
7 return true;
8 }
9
10 return Array.isArray( value ) ? !! value.length : !! value;
11 } ) );
12 }
13
14 function getTaxQueryParam( taxQuery, isExclude = false ) {
15 const paramKey = isExclude ? `${ taxQuery.rest }_exclude` : taxQuery.rest;
16 return { [ paramKey ]: {
17 terms: taxQuery.terms,
18 include_children: taxQuery?.includeChildren,
19 } };
20 }
21
22 function normalizeTaxQuery( taxQueryValue, isExclude = false ) {
23 return taxQueryValue.reduce( ( normalized, taxQuery ) => {
24 return Object.assign( {}, normalized, getTaxQueryParam( taxQuery, isExclude ) );
25 }, {} );
26 }
27
28 export function normalizeRepeatableArgs( query ) {
29 let normalizedQuery = normalizeArgs( query );
30
31 if ( Array.isArray( normalizedQuery.tax_query ) ) {
32 const normalizedTaxQuery = normalizeTaxQuery( normalizedQuery.tax_query );
33
34 normalizedQuery = Object.assign(
35 {},
36 normalizedQuery,
37 normalizedTaxQuery,
38 { tax_query: undefined }
39 );
40 }
41
42 if ( Array.isArray( normalizedQuery.tax_query_exclude ) ) {
43 const normalizedTaxQueryExclude = normalizeTaxQuery( normalizedQuery.tax_query_exclude, true );
44
45 normalizedQuery = Object.assign(
46 {},
47 normalizedQuery,
48 normalizedTaxQueryExclude,
49 { tax_query_exclude: undefined }
50 );
51 }
52
53 return normalizedQuery;
54 }
55
56 export function normalizeArgs( query ) {
57 const defaultPerPage = !! query.per_page ? query.per_page : 10;
58
59 // In the editor we capped the posts.
60 const perPage = '-1' === query.per_page || parseInt( query.per_page ) > parseInt( generateBlocksInfo.queryLoopEditorPostsCap )
61 ? generateBlocksInfo.queryLoopEditorPostsCap
62 : defaultPerPage;
63
64 let sticky;
65
66 if ( 'exclude' === query.stickyPosts ) {
67 sticky = false;
68 } else if ( 'only' === query.stickyPosts ) {
69 sticky = true;
70 }
71
72 const normalizedQuery = Object.assign( {}, query, { per_page: perPage, sticky } );
73
74 return applyFilters( 'generateblocks.editor.query-loop.normalize-parameters', normalizedQuery );
75 }
76