| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /**
- * External dependencies
- */
- import { useMemo } from 'react';
- /**
- * WordPress dependencies
- */
- import { useEntityProp } from '@wordpress/core-data';
- /**
- * Fetches values and setters for various search configuration values.
- *
- * @returns {object} values and setters
- */
- export default function useSearchOptions() {
- const [ theme, setTheme ] = useEntityProp( 'root', 'site', 'jetpack_search_color_theme' );
- const [ resultFormat, setResultFormat ] = useEntityProp(
- 'root',
- 'site',
- 'jetpack_search_result_format'
- );
- const [ sort, setSort ] = useEntityProp( 'root', 'site', 'jetpack_search_default_sort' );
- const [ trigger, setTrigger ] = useEntityProp( 'root', 'site', 'jetpack_search_overlay_trigger' );
- const [ color, setColor ] = useEntityProp( 'root', 'site', 'jetpack_search_highlight_color' );
- const [ sortEnabled, setSortEnabled ] = useEntityProp(
- 'root',
- 'site',
- 'jetpack_search_enable_sort'
- );
- const [ infiniteScroll, setInfiniteScroll ] = useEntityProp(
- 'root',
- 'site',
- 'jetpack_search_inf_scroll'
- );
- const [ showLogo, setShowLogo ] = useEntityProp(
- 'root',
- 'site',
- 'jetpack_search_show_powered_by'
- );
- const [ excludedPostTypesCsv, setExcludedPostTypesCsv ] = useEntityProp(
- 'root',
- 'site',
- 'jetpack_search_excluded_post_types'
- );
- // Excluded Post Types is stored as a CSV string in site options. Convert into array of strings.
- // Caveat: csv can be an empty string, which can produces [ '' ] if only csv.split is used.
- const excludedPostTypes = useMemo(
- () => excludedPostTypesCsv?.split( ',' ).filter( type => type?.length > 0 ),
- [ excludedPostTypesCsv ]
- );
- const setExcludedPostTypes = postTypesArr => setExcludedPostTypesCsv( postTypesArr.join( ',' ) );
- return {
- color,
- excludedPostTypes,
- infiniteScroll,
- resultFormat,
- setColor,
- setExcludedPostTypes,
- setInfiniteScroll,
- setResultFormat,
- setShowLogo,
- setSort,
- setSortEnabled,
- setTheme,
- setTrigger,
- showLogo,
- sort,
- sortEnabled,
- theme,
- trigger,
- };
- }
|