@primer/react
Version:
An implementation of GitHub's Primer Design System using React
190 lines (189 loc) • 5.01 kB
JavaScript
import { useId as useId$1 } from "../hooks/useId.js";
import { AutocompleteContext, AutocompleteDeferredInputContext, AutocompleteInputContext } from "./AutocompleteContext.js";
import AutocompleteInput from "./AutocompleteInput.js";
import AutocompleteMenu from "./AutocompleteMenu.js";
import AutocompleteOverlay from "./AutocompleteOverlay.js";
import { c } from "react-compiler-runtime";
import { jsx } from "react/jsx-runtime";
import { useDeferredValue, useReducer, useRef } from "react";
//#region src/Autocomplete/Autocomplete.tsx
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(24);
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$1(idProp);
let t6;
if ($[5] !== id || $[6] !== selectedItemLength || $[7] !== showMenu) {
t6 = {
activeDescendantRef,
id,
inputRef,
scrollContainerRef,
selectedItemLength,
setAutocompleteSuggestion,
setInputValue,
setIsMenuDirectlyActivated,
setShowMenu,
setSelectedItemLength,
showMenu
};
$[5] = id;
$[6] = selectedItemLength;
$[7] = showMenu;
$[8] = t6;
} else t6 = $[8];
const autocompleteContextValue = t6;
let t7;
if ($[9] !== autocompleteSuggestion || $[10] !== inputValue || $[11] !== isMenuDirectlyActivated) {
t7 = {
autocompleteSuggestion,
inputValue,
isMenuDirectlyActivated
};
$[9] = autocompleteSuggestion;
$[10] = inputValue;
$[11] = isMenuDirectlyActivated;
$[12] = t7;
} else t7 = $[12];
const autocompleteInputContextValue = t7;
const deferredInputValue = useDeferredValue(inputValue);
let t8;
if ($[13] !== deferredInputValue) {
t8 = { deferredInputValue };
$[13] = deferredInputValue;
$[14] = t8;
} else t8 = $[14];
const autocompleteDeferredInputContextValue = t8;
let t9;
if ($[15] !== autocompleteDeferredInputContextValue || $[16] !== children) {
t9 = /*#__PURE__*/ jsx(AutocompleteDeferredInputContext.Provider, {
value: autocompleteDeferredInputContextValue,
children
});
$[15] = autocompleteDeferredInputContextValue;
$[16] = children;
$[17] = t9;
} else t9 = $[17];
let t10;
if ($[18] !== autocompleteInputContextValue || $[19] !== t9) {
t10 = /*#__PURE__*/ jsx(AutocompleteInputContext.Provider, {
value: autocompleteInputContextValue,
children: t9
});
$[18] = autocompleteInputContextValue;
$[19] = t9;
$[20] = t10;
} else t10 = $[20];
let t11;
if ($[21] !== autocompleteContextValue || $[22] !== t10) {
t11 = /*#__PURE__*/ jsx(AutocompleteContext.Provider, {
value: autocompleteContextValue,
children: t10
});
$[21] = autocompleteContextValue;
$[22] = t10;
$[23] = t11;
} else t11 = $[23];
return t11;
};
var Autocomplete_default = Object.assign(Autocomplete, {
__SLOT__: Symbol("Autocomplete"),
Context: AutocompleteContext,
Input: AutocompleteInput,
Menu: AutocompleteMenu,
Overlay: AutocompleteOverlay
});
//#endregion
export { Autocomplete_default as default };