@primer/react
Version:
An implementation of GitHub's Primer Design System using React
185 lines (182 loc) • 4.19 kB
JavaScript
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 };