()
| 154 | }; |
| 155 | |
| 156 | let closeSearchMenu = () => { |
| 157 | if (!document.startViewTransition) { |
| 158 | setSearchOpen(false); |
| 159 | return; |
| 160 | } |
| 161 | |
| 162 | document.documentElement.style.viewTransitionName = 'none'; |
| 163 | let viewTransition = document.startViewTransition(() => { |
| 164 | return new Promise<void>(resolve => { |
| 165 | renderCallback.current = resolve; |
| 166 | setSearchOpen(false); |
| 167 | iconRef.current!.style.viewTransitionName = 'search-menu-icon'; |
| 168 | labelRef.current!.style.viewTransitionName = 'search-menu-label'; |
| 169 | searchRef.current!.style.viewTransitionName = 'search-menu-search-field'; |
| 170 | }); |
| 171 | }); |
| 172 | |
| 173 | viewTransition.finished.then(() => { |
| 174 | document.documentElement.style.viewTransitionName = ''; |
| 175 | iconRef.current!.style.viewTransitionName = ''; |
| 176 | labelRef.current!.style.viewTransitionName = ''; |
| 177 | searchRef.current!.style.viewTransitionName = ''; |
| 178 | }); |
| 179 | }; |
| 180 | |
| 181 | useLayoutEffect(() => { |
| 182 | renderCallback.current?.(); |
nothing calls this directly
no test coverage detected