/* GoToSocial Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org 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", renderEntry }) { performance.mark("RENDER_CHECKLIST"); return (
{header}
); }; function CheckListHeader({ toggleAll, children }) { return ( ); } const CheckListEntries = React.memo(function CheckListEntries({ entries, renderEntry, updateValue }) { 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, renderEntry }) { const onChange = React.useCallback( (value) => updateValue(entry.key, value), [updateValue, entry.key] ); return ( ); });