66 * Side Public License, v 1.
77 */
88import { useCallback , useMemo } from 'react' ;
9- import { Query , Ast } from '@elastic/eui' ;
9+ import { Query } from '@elastic/eui' ;
1010
1111import type { Tag } from './types' ;
12- import type { State , UserContentCommonSchema } from './table_list_view' ;
12+ import type { UserContentCommonSchema } from './table_list_view' ;
1313
1414type QueryUpdater = ( query : Query , tag : Tag ) => Query ;
1515
1616export function useTags ( {
17- searchQuery ,
17+ query ,
1818 updateQuery,
1919 items,
2020} : {
21- searchQuery : State [ 'searchQuery' ] ;
21+ query : Query ;
2222 updateQuery : ( query : Query ) => void ;
2323 items : UserContentCommonSchema [ ] ;
2424} ) {
25- const initializeQuery = useCallback ( ( ) => {
26- const ast = Ast . create ( [ ] ) ;
27- return new Query ( ast , undefined , searchQuery . text ) ;
28- } , [ searchQuery ] ) ;
29-
3025 // Return a map of tag.id to an array of saved object ids having that tag
3126 // { 'abc-123': ['saved_object_id_1', 'saved_object_id_2', ...] }
3227 const tagsToTableItemMap = useMemo ( ( ) => {
@@ -49,23 +44,22 @@ export function useTags({
4944 const updateTagClauseGetter = useCallback (
5045 ( queryUpdater : QueryUpdater ) =>
5146 ( tag : Tag , q ?: Query , doUpdate : boolean = true ) => {
52- const query = q !== undefined ? q : searchQuery . query ?? initializeQuery ( ) ;
53- const updatedQuery = queryUpdater ( query , tag ) ;
47+ const updatedQuery = queryUpdater ( q !== undefined ? q : query , tag ) ;
5448 if ( doUpdate ) {
5549 updateQuery ( updatedQuery ) ;
5650 }
5751 return updatedQuery ;
5852 } ,
59- [ searchQuery . query , initializeQuery , updateQuery ]
53+ [ query , updateQuery ]
6054 ) ;
6155
6256 const hasTagInClauseGetter = useCallback (
6357 ( matchValue : 'must' | 'must_not' ) => ( tag : Tag , _query ?: Query ) => {
64- const query = Boolean ( _query ) ? _query ! : searchQuery . query ?? initializeQuery ( ) ;
58+ const q = Boolean ( _query ) ? _query ! : query ;
6559 const tagsClauses = query . ast . getFieldClauses ( 'tag' ) ;
6660
6761 if ( tagsClauses ) {
68- const mustHaveTagClauses = query . ast
62+ const mustHaveTagClauses = q . ast
6963 . getFieldClauses ( 'tag' )
7064 . find ( ( { match } ) => match === matchValue ) ?. value as string [ ] ;
7165
@@ -75,27 +69,26 @@ export function useTags({
7569 }
7670 return false ;
7771 } ,
78- [ searchQuery . query , initializeQuery ]
72+ [ query ]
7973 ) ;
8074
8175 const addTagToIncludeClause = useMemo (
82- ( ) => updateTagClauseGetter ( ( query , tag ) => query . addOrFieldValue ( 'tag' , tag . name , true , 'eq' ) ) ,
76+ ( ) => updateTagClauseGetter ( ( q , tag ) => q . addOrFieldValue ( 'tag' , tag . name , true , 'eq' ) ) ,
8377 [ updateTagClauseGetter ]
8478 ) ;
8579
8680 const removeTagFromIncludeClause = useMemo (
87- ( ) => updateTagClauseGetter ( ( query , tag ) => query . removeOrFieldValue ( 'tag' , tag . name ) ) ,
81+ ( ) => updateTagClauseGetter ( ( q , tag ) => q . removeOrFieldValue ( 'tag' , tag . name ) ) ,
8882 [ updateTagClauseGetter ]
8983 ) ;
9084
9185 const addTagToExcludeClause = useMemo (
92- ( ) =>
93- updateTagClauseGetter ( ( query , tag ) => query . addOrFieldValue ( 'tag' , tag . name , false , 'eq' ) ) ,
86+ ( ) => updateTagClauseGetter ( ( q , tag ) => q . addOrFieldValue ( 'tag' , tag . name , false , 'eq' ) ) ,
9487 [ updateTagClauseGetter ]
9588 ) ;
9689
9790 const removeTagFromExcludeClause = useMemo (
98- ( ) => updateTagClauseGetter ( ( query , tag ) => query . removeOrFieldValue ( 'tag' , tag . name ) ) ,
91+ ( ) => updateTagClauseGetter ( ( q , tag ) => q . removeOrFieldValue ( 'tag' , tag . name ) ) ,
9992 [ updateTagClauseGetter ]
10093 ) ;
10194
@@ -104,19 +97,19 @@ export function useTags({
10497
10598 const addOrRemoveIncludeTagFilter = useCallback (
10699 ( tag : Tag ) => {
107- let query : Query | undefined ;
100+ let q : Query | undefined ;
108101
109102 // Remove the tag in the "Exclude" list if it is there
110103 if ( hasTagInExclude ( tag ) ) {
111- query = removeTagFromExcludeClause ( tag , undefined , false ) ;
104+ q = removeTagFromExcludeClause ( tag , undefined , false ) ;
112105 }
113106
114- if ( hasTagInInclude ( tag , query ) ) {
107+ if ( hasTagInInclude ( tag , q ) ) {
115108 // Already selected, remove the filter
116- removeTagFromIncludeClause ( tag , query ) ;
109+ removeTagFromIncludeClause ( tag , q ) ;
117110 return ;
118111 }
119- addTagToIncludeClause ( tag , query ) ;
112+ addTagToIncludeClause ( tag , q ) ;
120113 } ,
121114 [
122115 hasTagInExclude ,
@@ -129,20 +122,20 @@ export function useTags({
129122
130123 const addOrRemoveExcludeTagFilter = useCallback (
131124 ( tag : Tag ) => {
132- let query : Query | undefined ;
125+ let q : Query | undefined ;
133126
134127 // Remove the tag in the "Include" list if it is there
135128 if ( hasTagInInclude ( tag ) ) {
136- query = removeTagFromIncludeClause ( tag , undefined , false ) ;
129+ q = removeTagFromIncludeClause ( tag , undefined , false ) ;
137130 }
138131
139- if ( hasTagInExclude ( tag , query ) ) {
132+ if ( hasTagInExclude ( tag , q ) ) {
140133 // Already selected, remove the filter
141- removeTagFromExcludeClause ( tag , query ) ;
134+ removeTagFromExcludeClause ( tag , q ) ;
142135 return ;
143136 }
144137
145- addTagToExcludeClause ( tag , query ) ;
138+ addTagToExcludeClause ( tag , q ) ;
146139 } ,
147140 [
148141 hasTagInInclude ,
@@ -154,13 +147,10 @@ export function useTags({
154147 ) ;
155148
156149 const clearTagSelection = useCallback ( ( ) => {
157- if ( ! searchQuery . query ) {
158- return ;
159- }
160- const updatedQuery = searchQuery . query . removeOrFieldClauses ( 'tag' ) ;
150+ const updatedQuery = query . removeOrFieldClauses ( 'tag' ) ;
161151 updateQuery ( updatedQuery ) ;
162152 return updateQuery ;
163- } , [ searchQuery . query , updateQuery ] ) ;
153+ } , [ query , updateQuery ] ) ;
164154
165155 return {
166156 addOrRemoveIncludeTagFilter,
0 commit comments