export default function Pings()

in src/components/Pings.ts [20:62]


export default function Pings(props: {
    signature: SignatureInfo,
    selectedPing?: (ping: PingInfo | undefined) => void,
}) {
    const selectPing = (ping: PingInfo | undefined) => {
        PingInfo.setSelected(ping);
        settings.pingCrashId = ping ? pingData.crashid[ping.ping] : undefined;
        if (props.selectedPing) {
            props.selectedPing(ping);
        }
    };

    const pingData = allPings();
    const pingInfos = createMemo(() => {
        const infos = props.signature.pings.map(ping => new PingInfo(ping));

        // Load settings
        {
            const pingCrashId = untrack(() => settings.pingCrashId);
            if (pingCrashId) {
                const ping: Ping | -1 = pingData.crashid.indexOf(pingCrashId);
                if (ping !== -1) {
                    const info = infos.find(i => i.ping == ping);
                    if (info) selectPing(info);
                }
            }
        }

        return infos;
    });

    let firstRun = true;
    // Clear the selected ping whenever the selected signature changes.
    createEffect(on(() => props.signature, () => {
        if (firstRun) {
            firstRun = false;
            return;
        }
        selectPing(undefined);
    }));

    const renderPingInfo = (info: PingInfo) => html`
        <div role="row" class="listrow" classList=${() => info.selectedClassList} onClick=${(_: Event) => selectPing(info)}>