import {compareObjectsEmptiness, formatMoney} from "./utils"; import {WarningIndicator} from "./CardWarnings"; import React from "react"; import {useShopStore} from "./shop_store"; import {OptionsSummaryWrapper} from "./OptionsWrapper"; // #!render_count import {useRenderCount} from "@uidotdev/usehooks"; export function SummaryCrateCard({crate_index, card_index}) { // #!render_count const renderCount = useRenderCount(); const currency = useShopStore((state) => state.currency); const deleteCard = useShopStore((state) => state.deleteCard); const setHighlight = useShopStore((state) => state.highlightCard); const resetHighlight = useShopStore((state) => state.highlightReset); const highlighted = useShopStore((state) => state.crates[crate_index].id === state.highlighted.crate && card_index === state.highlighted.card); const crate_id = useShopStore((state) => state.crates[crate_index].id); const card = useShopStore((state) => state.crates[crate_index].items[card_index], (a, b) => a.id === b.id); const card_show_warnings = useShopStore(state => state.crates[crate_index].items[card_index].show_warnings, compareObjectsEmptiness); const card_options_data = useShopStore(state => state.crates[crate_index].items[card_index].options_data, compareObjectsEmptiness); const options_disabled = useShopStore((state) => !!state.crateParams(state.crates[crate_index].crate_mode).warnings_disabled); // #!render_count console.log("SummaryCrateCard renders: ", renderCount) const options = !options_disabled && card && card.options && card.options.length > 0; const options_data = !options_disabled && card_options_data && Object.keys(card_options_data).length > 0; const warnings = !options_disabled && card_show_warnings && card_show_warnings.length > 0; return ( setHighlight(crate_id, card_index)} onMouseEnter={() => setHighlight(crate_id, card_index)} onMouseLeave={() => resetHighlight()}>  
{`${card.name_number} ${card.name} ${card.name_codename}`}
{`${currency} ${formatMoney(card.price)}`}
{(warnings ? ( ) : (   ))} {((options && options_data) ? ( ) : (   ))}
); }