UNPKG

@atlaskit/editor-core

Version:

A package contains Atlassian editor core functionality

32 lines 1.25 kB
import { useLayoutEffect, useState } from 'react'; import { usePreviousState } from '@atlaskit/editor-common/hooks'; import { createUniversalPreset } from '../create-editor/create-universal-preset'; import { shouldRecreatePreset } from '../create-editor/preset-utils'; export default function useUniversalPreset({ props, initialPluginConfiguration // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Required for --isolatedDeclarations; preset builder return type is too complex to spell out here. }) { const previousEditorProps = usePreviousState(props); const [preset, setPreset] = useState(() => createUniversalPreset({ props, prevProps: previousEditorProps, initialPluginConfiguration })); useLayoutEffect(() => { if (!previousEditorProps) { return; } const recreate = shouldRecreatePreset(previousEditorProps, props); if (!recreate) { return; } // we are not comparing the previous initialPluginConfiguration to the new one assuming that it never changes setPreset(createUniversalPreset({ props, prevProps: previousEditorProps, initialPluginConfiguration })); }, [props, previousEditorProps, initialPluginConfiguration]); return preset; }