UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

185 lines (182 loc) 4.19 kB
import { c } from 'react-compiler-runtime'; import { useRef, useReducer } from 'react'; import { AutocompleteContext } from './AutocompleteContext.js'; import AutocompleteInput from './AutocompleteInput.js'; import AutocompleteMenu from './AutocompleteMenu.js'; import AutocompleteOverlay from './AutocompleteOverlay.js'; import { useId } from '../hooks/useId.js'; import { jsx } from 'react/jsx-runtime'; const initialState = { inputValue: '', showMenu: false, isMenuDirectlyActivated: false, autocompleteSuggestion: '', selectedItemLength: 0 }; const reducer = (state, action) => { const { type, payload } = action; switch (type) { case 'inputValue': return { ...state, inputValue: payload }; case 'showMenu': return { ...state, showMenu: payload }; case 'isMenuDirectlyActivated': return { ...state, isMenuDirectlyActivated: payload }; case 'autocompleteSuggestion': return { ...state, autocompleteSuggestion: payload }; case 'selectedItemLength': return { ...state, selectedItemLength: payload }; default: return state; } }; const Autocomplete = t0 => { const $ = c(15); const { children, id: idProp } = t0; const activeDescendantRef = useRef(null); const scrollContainerRef = useRef(null); const inputRef = useRef(null); const [state, dispatch] = useReducer(reducer, initialState); const { inputValue, showMenu, autocompleteSuggestion, isMenuDirectlyActivated, selectedItemLength } = state; let t1; if ($[0] === Symbol.for("react.memo_cache_sentinel")) { t1 = value => { dispatch({ type: "inputValue", payload: value }); }; $[0] = t1; } else { t1 = $[0]; } const setInputValue = t1; let t2; if ($[1] === Symbol.for("react.memo_cache_sentinel")) { t2 = value_0 => { dispatch({ type: "showMenu", payload: value_0 }); }; $[1] = t2; } else { t2 = $[1]; } const setShowMenu = t2; let t3; if ($[2] === Symbol.for("react.memo_cache_sentinel")) { t3 = value_1 => { dispatch({ type: "autocompleteSuggestion", payload: value_1 }); }; $[2] = t3; } else { t3 = $[2]; } const setAutocompleteSuggestion = t3; let t4; if ($[3] === Symbol.for("react.memo_cache_sentinel")) { t4 = value_2 => { dispatch({ type: "isMenuDirectlyActivated", payload: value_2 }); }; $[3] = t4; } else { t4 = $[3]; } const setIsMenuDirectlyActivated = t4; let t5; if ($[4] === Symbol.for("react.memo_cache_sentinel")) { t5 = value_3 => { dispatch({ type: "selectedItemLength", payload: value_3 }); }; $[4] = t5; } else { t5 = $[4]; } const setSelectedItemLength = t5; const id = useId(idProp); let t6; if ($[5] !== autocompleteSuggestion || $[6] !== id || $[7] !== inputValue || $[8] !== isMenuDirectlyActivated || $[9] !== selectedItemLength || $[10] !== showMenu) { t6 = { activeDescendantRef, autocompleteSuggestion, id, inputRef, inputValue, isMenuDirectlyActivated, scrollContainerRef, selectedItemLength, setAutocompleteSuggestion, setInputValue, setIsMenuDirectlyActivated, setShowMenu, setSelectedItemLength, showMenu }; $[5] = autocompleteSuggestion; $[6] = id; $[7] = inputValue; $[8] = isMenuDirectlyActivated; $[9] = selectedItemLength; $[10] = showMenu; $[11] = t6; } else { t6 = $[11]; } let t7; if ($[12] !== children || $[13] !== t6) { t7 = /*#__PURE__*/jsx(AutocompleteContext.Provider, { value: t6, children: children }); $[12] = children; $[13] = t6; $[14] = t7; } else { t7 = $[14]; } return t7; }; var Autocomplete$1 = Object.assign(Autocomplete, { Context: AutocompleteContext, Input: AutocompleteInput, Menu: AutocompleteMenu, Overlay: AutocompleteOverlay }); export { Autocomplete$1 as default };