@@ -11,57 +11,62 @@ export function useFilesGallery(customFiles?: GalleryItemPropsWithUrl[]) {
11
11
return {
12
12
openFilesGallery : React . useCallback (
13
13
( event : React . MouseEvent < HTMLDivElement > ) => {
14
- if ( event . target instanceof HTMLElement ) {
15
- let fileLink = '' ;
14
+ if ( ! ( event . target instanceof HTMLElement ) ) {
15
+ return false ;
16
+ }
16
17
17
- if ( event . target . tagName === 'IMG' && ! event . target . closest ( 'a' ) ) {
18
- fileLink = event . target . getAttribute ( 'src' ) ?? '' ;
19
- } else if ( event . target . tagName === 'A' ) {
20
- fileLink = event . target . getAttribute ( 'href' ) ?? '' ;
21
- }
18
+ let fileLink = '' ;
22
19
23
- if ( ! fileLink ) {
24
- return ;
25
- }
20
+ if ( event . target . tagName === 'IMG' && ! event . target . closest ( 'a' ) ) {
21
+ fileLink = event . target . getAttribute ( 'src' ) ?? '' ;
22
+ } else if ( event . target . tagName === 'A' ) {
23
+ fileLink = event . target . getAttribute ( 'href' ) ?? '' ;
24
+ }
26
25
27
- const filesFromContent = [
28
- ...( event . currentTarget ?. querySelectorAll ( 'img,a' ) ?? [ ] ) ,
29
- ] . reduce < GalleryItemPropsWithUrl [ ] > ( ( result , element ) => {
30
- const isImage = element . tagName === 'IMG' ;
31
- const link = isImage
32
- ? element . getAttribute ( 'src' )
33
- : element . getAttribute ( 'href' ) ;
34
-
35
- if ( link && ! customFiles ?. some ( ( item ) => item . url === link ) ) {
36
- const extension = link . match ( extensionRegex ) ?. [ 0 ] || '' ;
37
-
38
- if ( isImage || supportedExtensions . includes ( extension ) ) {
39
- const name =
40
- ( isImage
41
- ? element . getAttribute ( 'alt' )
42
- : element . getAttribute ( 'title' ) ) || '' ;
43
-
44
- result . push ( {
45
- ...( supportedVideoExtensions . includes ( extension )
46
- ? getGalleryItemVideo ( { src : link , name : name } )
47
- : getGalleryItemImage ( { src : link , name : name } ) ) ,
48
- url : link ,
49
- } ) ;
50
- }
51
- }
26
+ if ( ! fileLink ) {
27
+ return false ;
28
+ }
52
29
53
- return result ;
54
- } , [ ] ) ;
30
+ const filesFromContent = [
31
+ ...( event . currentTarget ?. querySelectorAll ( 'img,a' ) ?? [ ] ) ,
32
+ ] . reduce < GalleryItemPropsWithUrl [ ] > ( ( result , element ) => {
33
+ const isImage = element . tagName === 'IMG' ;
34
+ const link = isImage
35
+ ? element . getAttribute ( 'src' )
36
+ : element . getAttribute ( 'href' ) ;
55
37
56
- const files = [ ...( customFiles ?? [ ] ) , ...filesFromContent ] ;
38
+ if ( link && ! customFiles ?. some ( ( item ) => item . url === link ) ) {
39
+ const extension = link . match ( extensionRegex ) ?. [ 0 ] || '' ;
57
40
58
- const initialItemIndex = files . findIndex ( ( item ) => item . url === fileLink ) ;
41
+ if ( isImage || supportedExtensions . includes ( extension ) ) {
42
+ const name =
43
+ ( isImage
44
+ ? element . getAttribute ( 'alt' )
45
+ : element . getAttribute ( 'title' ) ) || '' ;
59
46
60
- if ( initialItemIndex !== - 1 ) {
61
- event . preventDefault ( ) ;
62
- openGallery ( files , initialItemIndex ) ;
47
+ result . push ( {
48
+ ...( supportedVideoExtensions . includes ( extension )
49
+ ? getGalleryItemVideo ( { src : link , name : name } )
50
+ : getGalleryItemImage ( { src : link , name : name } ) ) ,
51
+ url : link ,
52
+ } ) ;
53
+ }
63
54
}
55
+
56
+ return result ;
57
+ } , [ ] ) ;
58
+
59
+ const files = [ ...( customFiles ?? [ ] ) , ...filesFromContent ] ;
60
+
61
+ const initialItemIndex = files . findIndex ( ( item ) => item . url === fileLink ) ;
62
+
63
+ if ( initialItemIndex !== - 1 ) {
64
+ event . preventDefault ( ) ;
65
+ openGallery ( files , initialItemIndex ) ;
66
+ return true ;
64
67
}
68
+
69
+ return false ;
65
70
} ,
66
71
[ customFiles , openGallery ] ,
67
72
) ,
0 commit comments