diff --git a/src/js/components/tree/index.jsx b/src/js/components/tree/index.jsx index 4c55476..9cf23ba 100644 --- a/src/js/components/tree/index.jsx +++ b/src/js/components/tree/index.jsx @@ -1,6 +1,6 @@ import React from 'react' import Actions from '../actions' -import { createFileTree, isElementVisible, StorageSync, getBrowserApi } from '../../lib' +import { createFileTree, isElementVisible, StorageSync, getBrowserApi, isElementTargetAndVisible } from '../../lib' import { createTree } from '../../createTree' import BodyColor from '../bodyColor' @@ -118,7 +118,7 @@ class Tree extends React.Component { const { visibleElement } = this.state const { root } = this.props const { diffElements = [] } = root - const nextVisibleElement = diffElements.find(isElementVisible) + const nextVisibleElement = diffElements.find(isElementTargetAndVisible) || diffElements.find(isElementVisible) if (nextVisibleElement !== visibleElement) { this.setState({ visibleElement: nextVisibleElement diff --git a/src/js/lib.js b/src/js/lib.js index 23196b7..9a65768 100644 --- a/src/js/lib.js +++ b/src/js/lib.js @@ -180,6 +180,16 @@ export const isElementVisible = (el) => { return (vertInView && horInView) } +export const isElementTarget = (el) => { + if (!el) { + return false + } + + return el.matches(':target') +} + +export const isElementTargetAndVisible = (el) => isElementTarget(el) && isElementVisible(el) + const EMPTY_FILTER = '' export const getBrowserApi = () => {