mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-15 23:54:42 -04:00
feat: add patch to add generic types to eventemitter2
EventEmitter2 has types, but they're very basic and not very type safe. I created this patch, because my improved types haven't been merged into the official package. Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
parent
11c2f57e4b
commit
caa53e3556
16 changed files with 445 additions and 22 deletions
|
@ -17,7 +17,7 @@ import type { AsyncState } from 'react-use/lib/useAsyncFn'
|
|||
export const useLoadNoteFromServer = (): [AsyncState<boolean>, () => void] => {
|
||||
const id = useSingleStringUrlParameter('noteId', undefined)
|
||||
|
||||
return useAsyncFn(async () => {
|
||||
return useAsyncFn(async (): Promise<boolean> => {
|
||||
if (id === undefined) {
|
||||
throw new Error('Invalid id')
|
||||
}
|
||||
|
|
|
@ -7,7 +7,8 @@ import type { TaskCheckedEventPayload } from '../../../../extensions/extra-integ
|
|||
import { TaskListCheckboxAppExtension } from '../../../../extensions/extra-integrations/task-list/task-list-checkbox-app-extension'
|
||||
import { WaitSpinner } from '../../../common/wait-spinner/wait-spinner'
|
||||
import { eventEmitterContext } from '../../../markdown-renderer/hooks/use-extension-event-emitter'
|
||||
import EventEmitter2 from 'eventemitter2'
|
||||
import type { Listener } from 'eventemitter2'
|
||||
import { EventEmitter2 } from 'eventemitter2'
|
||||
import React, { Suspense, useEffect, useMemo } from 'react'
|
||||
|
||||
export interface CheatsheetLineProps {
|
||||
|
@ -32,10 +33,13 @@ export const CheatsheetLine: React.FC<CheatsheetLineProps> = ({ markdown, onTask
|
|||
const eventEmitter = useMemo(() => new EventEmitter2(), [])
|
||||
|
||||
useEffect(() => {
|
||||
const handler = ({ checked }: TaskCheckedEventPayload) => onTaskCheckedChange(checked)
|
||||
eventEmitter.on(TaskListCheckboxAppExtension.EVENT_NAME, handler)
|
||||
const handler = eventEmitter.on(
|
||||
TaskListCheckboxAppExtension.EVENT_NAME,
|
||||
({ checked }: TaskCheckedEventPayload) => onTaskCheckedChange(checked),
|
||||
{ objectify: true }
|
||||
) as Listener
|
||||
return () => {
|
||||
eventEmitter.off(TaskListCheckboxAppExtension.EVENT_NAME, handler)
|
||||
handler.off()
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
import type { NodeProcessor } from '../../node-preprocessors/node-processor'
|
||||
import type { ComponentReplacer } from '../../replace-components/component-replacer'
|
||||
import type EventEmitter2 from 'eventemitter2'
|
||||
import type { EventEmitter2 } from 'eventemitter2'
|
||||
import type MarkdownIt from 'markdown-it'
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
import EventEmitter2 from 'eventemitter2'
|
||||
import { EventEmitter2 } from 'eventemitter2'
|
||||
import type { PropsWithChildren } from 'react'
|
||||
import React, { createContext, useContext, useEffect, useMemo } from 'react'
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ import { useRendererReceiveHandler } from './window-post-message-communicator/ho
|
|||
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 EventEmitter2 from 'eventemitter2'
|
||||
import { EventEmitter2 } from 'eventemitter2'
|
||||
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
||||
|
||||
/**
|
||||
|
@ -174,10 +174,10 @@ export const IframeMarkdownRenderer: React.FC = () => {
|
|||
const extensionEventEmitter = useMemo(() => new EventEmitter2({ wildcard: true }), [])
|
||||
|
||||
useEffect(() => {
|
||||
extensionEventEmitter.onAny((event, values) => {
|
||||
extensionEventEmitter.onAny((event: string, values: unknown) => {
|
||||
communicator.sendMessageToOtherSide({
|
||||
type: CommunicationMessageType.EXTENSION_EVENT,
|
||||
eventName: typeof event === 'object' ? event.join('.') : event,
|
||||
eventName: event,
|
||||
payload: values
|
||||
})
|
||||
})
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
import type { Logger } from '../../../utils/logger'
|
||||
import { Optional } from '@mrdrogdrog/optional'
|
||||
import EventEmitter2 from 'eventemitter2'
|
||||
import { EventEmitter2 } from 'eventemitter2'
|
||||
|
||||
/**
|
||||
* Error that will be thrown if a message couldn't be sent.
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
import type { Linter } from '../../components/editor-page/editor-pane/linter/linter'
|
||||
import type { MarkdownRendererExtension } from '../../components/markdown-renderer/extensions/base/markdown-renderer-extension'
|
||||
import type EventEmitter2 from 'eventemitter2'
|
||||
import type { EventEmitter2 } from 'eventemitter2'
|
||||
import type React from 'react'
|
||||
import { Fragment } from 'react'
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
import { AppExtension } from '../../base/app-extension'
|
||||
import { SetCheckboxInEditor } from './set-checkbox-in-editor'
|
||||
import { TaskListMarkdownExtension } from './task-list-markdown-extension'
|
||||
import type EventEmitter2 from 'eventemitter2'
|
||||
import type { EventEmitter2 } from 'eventemitter2'
|
||||
import type React from 'react'
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue