|
184 | 184 | }) |
185 | 185 | } |
186 | 186 |
|
| 187 | + const showTurboFrameConnections = (triggerElement) => { |
| 188 | + if (selected.type !== SELECTABLE_TYPES.TURBO_FRAME || !selected.uuid) return |
| 189 | +
|
| 190 | + const triggerSelector = triggerElement ? selectorByUUID(triggerElement.uuid) : null |
| 191 | +
|
| 192 | + addHighlightOverlay(`${triggerSelector}, ${selectorByUUID(selected.uuid)}`) |
| 193 | + panelPostMessage({ |
| 194 | + action: PANEL_TO_BACKEND_MESSAGES.SHOW_TURBO_FRAME_CONNECTIONS, |
| 195 | + source: HOTWIRE_DEV_TOOLS_PANEL_SOURCE, |
| 196 | + turboFrameId: selected.frame.id, |
| 197 | + triggerSelector: triggerSelector, |
| 198 | + }) |
| 199 | + } |
| 200 | +
|
| 201 | + const showAllTurboFrameConnections = () => { |
| 202 | + if (selected.type !== SELECTABLE_TYPES.TURBO_FRAME || !selected.uuid) return |
| 203 | + const triggerElements = selected.frame.referenceElements |
| 204 | + const selectors = triggerElements.map((el) => selectorByUUID(el.uuid)) |
| 205 | + selectors.push(selectorByUUID(selected.uuid)) |
| 206 | + addHighlightOverlay(selectors.join(", ")) |
| 207 | + panelPostMessage({ |
| 208 | + action: PANEL_TO_BACKEND_MESSAGES.SHOW_TURBO_FRAME_CONNECTIONS, |
| 209 | + source: HOTWIRE_DEV_TOOLS_PANEL_SOURCE, |
| 210 | + turboFrameId: selected.frame.id, |
| 211 | + triggerSelector: `[data-turbo-frame='${selected.frame.id}']`, |
| 212 | + }) |
| 213 | + } |
| 214 | +
|
| 215 | + const hideTurboFrameConnections = () => { |
| 216 | + panelPostMessage({ |
| 217 | + action: PANEL_TO_BACKEND_MESSAGES.HIDE_TURBO_FRAME_CONNECTIONS, |
| 218 | + source: HOTWIRE_DEV_TOOLS_PANEL_SOURCE, |
| 219 | + }) |
| 220 | + hideHighlightOverlay() |
| 221 | + } |
| 222 | +
|
187 | 223 | const handleFrameListKeyboardNavigation = (event) => { |
188 | 224 | if (!turboFrames.length) return |
189 | 225 | event.preventDefault() // Prevents automatic browser scrolling |
|
475 | 511 | {#if selected.type === SELECTABLE_TYPES.TURBO_FRAME && selected.uuid} |
476 | 512 | <div class="pane-scrollable-list"> |
477 | 513 | {#if selected.frame.referenceElements.length > 0} |
478 | | - <div class="pane-section-heading"> |
| 514 | + <div class="pane-section-heading" onmouseenter={showAllTurboFrameConnections} onmouseleave={hideTurboFrameConnections} role="button" tabindex="0"> |
479 | 515 | <span>Targeted by</span> |
480 | 516 | </div> |
481 | 517 | {#each selected.frame.referenceElements as referenceElement} |
482 | | - <div class="entry-row p-2 border-bottom" onmouseenter={() => addHighlightOverlay(selectorByUUID(referenceElement.uuid))} onmouseleave={() => hideHighlightOverlay()} role="button" tabindex="0"> |
| 518 | + <div class="entry-row p-2 border-bottom" onmouseenter={() => showTurboFrameConnections(referenceElement)} onmouseleave={hideTurboFrameConnections} role="button" tabindex="0"> |
483 | 519 | <div class="d-flex justify-content-between align-items-center"> |
484 | 520 | <StripedHtmlTag element={referenceElement} /> |
485 | 521 | <InspectButton class="btn-hoverable" uuid={referenceElement.uuid}></InspectButton> |
|
0 commit comments