PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.3.1
GiveWP – Donation Plugin and Fundraising Platform v4.3.1
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / FormTaxonomies / resources / form-builder / utils / terms.ts
give / src / FormTaxonomies / resources / form-builder / utils Last commit date
terms.ts 1 year ago
terms.ts
92 lines
1 /**
2 * WordPress dependencies
3 */
4 import { decodeEntities } from '@wordpress/html-entities';
5
6 /**
7 * Returns terms in a tree form.
8 *
9 * @since 3.16.0
10 *
11 * @param {Array} flatTerms Array of terms in flat format.
12 *
13 * @return {Array} Array of terms in tree format.
14 */
15 export function buildTermsTree( flatTerms ) {
16 const flatTermsWithParentAndChildren = flatTerms.map( ( term ) => {
17 return {
18 children: [],
19 parent: null,
20 ...term,
21 };
22 } );
23
24 // All terms should have a `parent` because we're about to index them by it.
25 if (
26 flatTermsWithParentAndChildren.some( ( { parent } ) => parent === null )
27 ) {
28 return flatTermsWithParentAndChildren;
29 }
30
31 const termsByParent = flatTermsWithParentAndChildren.reduce(
32 ( acc, term ) => {
33 const { parent } = term;
34 if ( ! acc[ parent ] ) {
35 acc[ parent ] = [];
36 }
37 acc[ parent ].push( term );
38 return acc;
39 },
40 {}
41 );
42
43 const fillWithChildren = ( terms ) => {
44 return terms.map( ( term ) => {
45 const children = termsByParent[ term.id ];
46 return {
47 ...term,
48 children:
49 children && children.length
50 ? fillWithChildren( children )
51 : [],
52 };
53 } );
54 };
55
56 return fillWithChildren( termsByParent[ '0' ] || [] );
57 }
58
59 export const unescapeString = ( arg ) => {
60 return decodeEntities( arg );
61 };
62
63 /**
64 * Returns a term object with name unescaped.
65 *
66 * @since 3.16.0
67 *
68 * @param {Object} term The term object to unescape.
69 *
70 * @return {Object} Term object with name property unescaped.
71 */
72 export const unescapeTerm = ( term ) => {
73 return {
74 ...term,
75 name: unescapeString( term.name ),
76 };
77 };
78
79 /**
80 * Returns an array of term objects with names unescaped.
81 * The unescape of each term is performed using the unescapeTerm function.
82 *
83 * @since 3.16.0
84 *
85 * @param {Object[]} terms Array of term objects to unescape.
86 *
87 * @return {Object[]} Array of term objects unescaped.
88 */
89 export const unescapeTerms = ( terms ) => {
90 return ( terms ?? [] ).map( unescapeTerm );
91 };
92