91³Ô¹ÏÍø

Watch CBS News

Wife of Minnesota senator shielded their daughter from bullets in targeted shooting, nephew says

Amid the horror and senseless violence in the shootings of Minnesota Rep. Melissa Hortman and Sen. John Hoffman and their spouses, there are stories of heroism.

Officials say Melissa Hortman and John Hoffman were targeted because they were public servants. Their spouses, Marc Hortman and Yvette Hoffman, were targeted because they loved those public servants.

The Hoffmans' nephew says that during the shooting, Yvette Hoffman jumped on their adult daughter, Hope Hoffman, to shield her from the shots. Hope Hoffman was unharmed, while Yvette and John Hoffman were shot multiple times.

vo-hoffman-generics-wcco81fq.jpg
Minnesota Sen. John Hoffman with his wife, Yvette Hoffman (right), and his daughter, Hope Hoffman (left). John Hoffman via Facebook

Then there is the heroism and street smarts of the police who, while at the scene of the Hoffman shooting in Champlin, Minnesota, thought it would be prudent to check on Hortman, who lived just miles away in Brooklyn Park.

When officers arrived at the Hortman home, they were met with gunfire from the suspect dressed as a police officer. But the police's smarts meant the suspect left behind a lot of evidence and was soon identified. He was taken into custody on Sunday evening. 

"Otherwise, they may have had no idea, and more importantly, he may have been going on to kill others," U.S. Sen. Amy Klobuchar said.

Klobuchar has been friends with Melissa Hortman for more than two decades.

"Somehow balancing two little kids, being a Girl Scout leader, being a Sunday school teacher, her dogs and maybe all that juggling is what made her such a powerful speaker," Klobuchar said.

Minnesota Legislature
Speaker of the House Melissa Hortman addresses the house floor after being re-elected for her third term during the first day of the 2023 legislative session, Tuesday, Jan. 3, 2023, in St. Paul, Minn. Abbie Parr / AP

There were 50 to 70 names on the suspect's manifesto — an apparent hit list of abortion rights supporters, including lawmakers as well as doctors and Planned Parenthood officials past and present. That includes former Planned Parenthood executive and now U.S. Sen. Tina Smith.

"I think that we are at a tipping point, and we could either tip forward into more violence or we could take a step back," Smith said. "And I hope desperately, for the sake of everybody's safety, and also for the sake of our democracy, that we take a step back and we remove this."

You can watch WCCO Sunday Morning with Esme Murphy and Adam Del Rosso every Sunday at 6 a.m. and 10:30 a.m.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });