/* GoToSocial Copyright (C) GoToSocial Authors admin@gotosocial.org SPDX-License-Identifier: AGPL-3.0-or-later This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ "use strict"; const React = require("react"); module.exports = function CheckList({ field, header = "All", EntryComponent, getExtraProps }) { return (
{header}
); }; function CheckListHeader({ toggleAll, children }) { return ( ); } const CheckListEntries = React.memo( function CheckListEntries({ entries, updateValue, EntryComponent, getExtraProps }) { const deferredEntries = React.useDeferredValue(entries); return Object.values(deferredEntries).map((entry) => ( )); } ); /* React.memo is a performance optimization that only re-renders a CheckListEntry when it's props actually change, instead of every time anything in the list (CheckListEntries) updates */ const CheckListEntry = React.memo( function CheckListEntry({ entry, updateValue, getExtraProps, EntryComponent }) { const onChange = React.useCallback( (value) => updateValue(entry.key, value), [updateValue, entry.key] ); const extraProps = React.useMemo(() => getExtraProps?.(entry), [getExtraProps, entry]); return ( ); } );