(availableLanguages: Array<string>)
| 300 | })); |
| 301 | |
| 302 | function useTabGroupProps(availableLanguages: Array<string>) { |
| 303 | let { preferredLanguages, addPreferredLanguage } = |
| 304 | usePreferredLanguageStore(); |
| 305 | let [selectedIndex, setSelectedIndex] = useState(0); |
| 306 | let activeLanguage = [...availableLanguages].sort( |
| 307 | (a, z) => preferredLanguages.indexOf(z) - preferredLanguages.indexOf(a) |
| 308 | )[0]; |
| 309 | let languageIndex = availableLanguages.indexOf(activeLanguage); |
| 310 | let newSelectedIndex = languageIndex === -1 ? selectedIndex : languageIndex; |
| 311 | if (newSelectedIndex !== selectedIndex) { |
| 312 | setSelectedIndex(newSelectedIndex); |
| 313 | } |
| 314 | |
| 315 | let { positionRef, preventLayoutShift } = usePreventLayoutShift(); |
| 316 | |
| 317 | return { |
| 318 | as: 'div' as const, |
| 319 | ref: positionRef, |
| 320 | selectedIndex, |
| 321 | onChange: (newSelectedIndex: number) => { |
| 322 | preventLayoutShift(() => |
| 323 | addPreferredLanguage(availableLanguages[newSelectedIndex]) |
| 324 | ); |
| 325 | } |
| 326 | }; |
| 327 | } |
| 328 | |
| 329 | const CodeGroupContext = createContext(false); |
| 330 |
no test coverage detected