diff --git a/packages/web/components/templates/article/HighlightsLayer.tsx b/packages/web/components/templates/article/HighlightsLayer.tsx index 8c2058b41..953e743db 100644 --- a/packages/web/components/templates/article/HighlightsLayer.tsx +++ b/packages/web/components/templates/article/HighlightsLayer.tsx @@ -777,8 +777,6 @@ export function HighlightsLayer(props: HighlightsLayerProps): JSX.Element { window.location.href, `#${highlightId}` ) - - // props.setShowHighlightsModal(false) }} /> diff --git a/packages/web/components/templates/article/NotebookPresenter.tsx b/packages/web/components/templates/article/NotebookPresenter.tsx index 58380fdad..206c7bf24 100644 --- a/packages/web/components/templates/article/NotebookPresenter.tsx +++ b/packages/web/components/templates/article/NotebookPresenter.tsx @@ -4,28 +4,62 @@ import { UserBasicData, useGetViewerQuery, } from '../../../lib/networking/queries/useGetViewerQuery' -import { NotebookModal } from './NotebookModal' +import SlidingPane from 'react-sliding-pane' +import 'react-sliding-pane/dist/react-sliding-pane.css' +import { NotebookContent } from './Notebook' +import { NotebookHeader } from './NotebookHeader' +import useGetWindowDimensions from '../../../lib/hooks/useGetWindowDimensions' type NotebookPresenterProps = { viewer: UserBasicData item: ReadableItem - onClose: (highlights: Highlight[]) => void + open: boolean + setOpen: (open: boolean) => void } export const NotebookPresenter = (props: NotebookPresenterProps) => { + const windowDimensions = useGetWindowDimensions() + return ( - { - console.log('NotebookModal: ', highlights) - props.onClose(highlights) + { + props.setOpen(false) }} - viewHighlightInReader={(highlightId) => { - window.location.href = `/${props.viewer.profile.username}/${props.item.slug}#${highlightId}` - }} - /> + > + <> + + { + // The timeout here is a bit of a hack to work around rerendering + setTimeout(() => { + const target = document.querySelector( + `[omnivore-highlight-id="${highlightId}"]` + ) + target?.scrollIntoView({ + block: 'center', + behavior: 'auto', + }) + }, 1) + history.replaceState( + undefined, + window.location.href, + `#${highlightId}` + ) + }} + /> + + ) } diff --git a/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx b/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx index 941280704..be6f6c396 100644 --- a/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx +++ b/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx @@ -84,13 +84,11 @@ export function HomeFeedContainer(): JSX.Element { const gridContainerRef = useRef(null) - const [labelsTarget, setLabelsTarget] = useState( - undefined - ) + const [labelsTarget, setLabelsTarget] = + useState(undefined) - const [notebookTarget, setNotebookTarget] = useState( - undefined - ) + const [notebookTarget, setNotebookTarget] = + useState(undefined) const [showAddLinkModal, setShowAddLinkModal] = useState(false) const [showEditTitleModal, setShowEditTitleModal] = useState(false) @@ -1051,11 +1049,13 @@ function LibraryItemsLayout(props: LibraryItemsLayoutProps): JSX.Element { { - if (props.notebookTarget?.node.highlights) { - props.notebookTarget.node.highlights = highlights - } - props.setNotebookTarget(undefined) + open={props.notebookTarget?.node !== undefined} + setOpen={(open: boolean) => { + // onClose={(highlights: Highlight[]) => { + // if (props.notebookTarget?.node.highlights) { + // props.notebookTarget.node.highlights = highlights + // } + props.setNotebookTarget(open ? props.notebookTarget : undefined) }} /> )}