mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2026-08-07 07:14:49 +00:00
feat: set url hash when clicking a link
Implements #6474 Signed-off-by: Philip Molares <philip.molares@udo.edu>
This commit is contained in:
committed by
Philip Molares
parent
41cd58e72e
commit
ab3c6ffd01
@@ -7,12 +7,24 @@ import { mockI18n } from '../../../test-utils/mock-i18n'
|
||||
import { TableOfContents } from './table-of-contents'
|
||||
import type { TocAst } from '@hedgedoc/markdown-it-plugins'
|
||||
import { render } from '@testing-library/react'
|
||||
import { RendererToEditorCommunicatorContextProvider } from '../render-context/renderer-to-editor-communicator-context-provider'
|
||||
import { BaseUrlContextProvider } from '../../common/base-url/base-url-context-provider'
|
||||
import * as UseSingleStringUrlParameterMock from '../../../hooks/common/use-single-string-url-parameter'
|
||||
|
||||
jest.mock('../../../hooks/common/use-single-string-url-parameter')
|
||||
|
||||
describe('Table of contents', () => {
|
||||
beforeAll(async () => {
|
||||
await mockI18n()
|
||||
jest.spyOn(UseSingleStringUrlParameterMock, 'useSingleStringUrlParameter').mockReturnValue('test-uuid')
|
||||
})
|
||||
|
||||
const baseUrls = {
|
||||
editor: 'http://example.com',
|
||||
renderer: 'http://example.com',
|
||||
internalApiUrl: 'http://example.com'
|
||||
}
|
||||
|
||||
const level4Ast: TocAst = {
|
||||
name: 'Level 4',
|
||||
level: 4,
|
||||
@@ -41,14 +53,22 @@ describe('Table of contents', () => {
|
||||
|
||||
it('renders correctly', () => {
|
||||
const view = render(
|
||||
<TableOfContents ast={level0Ast} className={'customClassName'} baseUrl={'https://example.org'} />
|
||||
<BaseUrlContextProvider baseUrls={baseUrls}>
|
||||
<RendererToEditorCommunicatorContextProvider>
|
||||
<TableOfContents ast={level0Ast} className={'customClassName'} baseUrl={'https://example.org'} />
|
||||
</RendererToEditorCommunicatorContextProvider>
|
||||
</BaseUrlContextProvider>
|
||||
)
|
||||
expect(view.container).toMatchSnapshot()
|
||||
})
|
||||
|
||||
it('renders only in requested max depth', () => {
|
||||
const view = render(
|
||||
<TableOfContents ast={level0Ast} maxDepth={2} className={'customClassName'} baseUrl={'https://example.org'} />
|
||||
<BaseUrlContextProvider baseUrls={baseUrls}>
|
||||
<RendererToEditorCommunicatorContextProvider>
|
||||
<TableOfContents ast={level0Ast} maxDepth={2} className={'customClassName'} baseUrl={'https://example.org'} />
|
||||
</RendererToEditorCommunicatorContextProvider>
|
||||
</BaseUrlContextProvider>
|
||||
)
|
||||
expect(view.container).toMatchSnapshot()
|
||||
})
|
||||
|
||||
@@ -11,12 +11,8 @@ import { DocumentMarkdownRenderer } from './renderers/document/document-markdown
|
||||
import { SimpleMarkdownRenderer } from './renderers/simple/simple-markdown-renderer'
|
||||
import { SlideshowMarkdownRenderer } from './renderers/slideshow/slideshow-markdown-renderer'
|
||||
import { useRendererReceiveHandler } from './window-post-message-communicator/hooks/use-renderer-receive-handler'
|
||||
import type {
|
||||
BaseConfiguration} from './window-post-message-communicator/rendering-message';
|
||||
import {
|
||||
CommunicationMessageType,
|
||||
RendererType
|
||||
} from './window-post-message-communicator/rendering-message'
|
||||
import type { BaseConfiguration } from './window-post-message-communicator/rendering-message'
|
||||
import { CommunicationMessageType, RendererType } from './window-post-message-communicator/rendering-message'
|
||||
import { countWords } from './word-counter'
|
||||
import type { RevealOptions } from 'reveal.js'
|
||||
import { EventEmitter2 } from 'eventemitter2'
|
||||
|
||||
+1
-2
@@ -13,7 +13,6 @@ type EditorMessageHandler<MESSAGE_TYPE extends RendererToEditorMessageType> = Ha
|
||||
MESSAGE_TYPE
|
||||
> | null
|
||||
|
||||
|
||||
/**
|
||||
* Sets the handler for the given message type in the current editor to renderer communicator.
|
||||
*
|
||||
@@ -22,7 +21,7 @@ type EditorMessageHandler<MESSAGE_TYPE extends RendererToEditorMessageType> = Ha
|
||||
*/
|
||||
export const useEditorReceiveHandler = <MESSAGE_TYPE extends RendererToEditorMessageType>(
|
||||
messageType: MESSAGE_TYPE,
|
||||
handler: EditorMessageHandler<MESSAGE_TYPE>,
|
||||
handler: EditorMessageHandler<MESSAGE_TYPE>
|
||||
): void => {
|
||||
const editorToRendererCommunicator = useEditorToRendererCommunicator()
|
||||
useEffect(() => {
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ type RendererMessageHandler<MESSAGE_TYPE extends EditorToRendererMessageType> =
|
||||
*/
|
||||
export const useRendererReceiveHandler = <MESSAGE_TYPE extends EditorToRendererMessageType>(
|
||||
messageType: MESSAGE_TYPE,
|
||||
handler: RendererMessageHandler<MESSAGE_TYPE>,
|
||||
handler: RendererMessageHandler<MESSAGE_TYPE>
|
||||
): void => {
|
||||
const rendererToEditorCommunicator = useRendererToEditorCommunicator()
|
||||
useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user