UNPKG

@atlaskit/editor-core

Version:

A package contains Atlassian editor core functionality

69 lines 3.3 kB
import { useEffect } from 'react'; /** * This hook is used to replace the old approach of using the `providerFactory`. * * Because plugins can't update their initial configuration, this hook listens to changes * and calls a command to push the update to the plugins shared state. * * In the future ideally consumers implement this behaviour themselves. */ export const useProviders = ({ editorApi, contextIdentifierProvider, mediaProvider, mentionProvider, cardProvider, emojiProvider, autoformattingProvider, taskDecisionProvider }) => { useEffect(() => { async function setProvider() { var _editorApi$core, _editorApi$contextIde; if (!contextIdentifierProvider) { return; } const provider = await contextIdentifierProvider; editorApi === null || editorApi === void 0 ? void 0 : (_editorApi$core = editorApi.core) === null || _editorApi$core === void 0 ? void 0 : _editorApi$core.actions.execute(editorApi === null || editorApi === void 0 ? void 0 : (_editorApi$contextIde = editorApi.contextIdentifier) === null || _editorApi$contextIde === void 0 ? void 0 : _editorApi$contextIde.commands.setProvider({ contextIdentifierProvider: provider })); } setProvider(); }, [contextIdentifierProvider, editorApi]); useEffect(() => { if (mediaProvider) { var _editorApi$media; editorApi === null || editorApi === void 0 ? void 0 : (_editorApi$media = editorApi.media) === null || _editorApi$media === void 0 ? void 0 : _editorApi$media.actions.setProvider(mediaProvider); } }, [mediaProvider, editorApi]); useEffect(() => { if (mentionProvider) { var _editorApi$mention; editorApi === null || editorApi === void 0 ? void 0 : (_editorApi$mention = editorApi.mention) === null || _editorApi$mention === void 0 ? void 0 : _editorApi$mention.actions.setProvider(mentionProvider); } }, [mentionProvider, editorApi]); useEffect(() => { if (cardProvider) { var _editorApi$card; editorApi === null || editorApi === void 0 ? void 0 : (_editorApi$card = editorApi.card) === null || _editorApi$card === void 0 ? void 0 : _editorApi$card.actions.setProvider(cardProvider); } }, [cardProvider, editorApi]); useEffect(() => { if (emojiProvider) { var _editorApi$emoji; editorApi === null || editorApi === void 0 ? void 0 : (_editorApi$emoji = editorApi.emoji) === null || _editorApi$emoji === void 0 ? void 0 : _editorApi$emoji.actions.setProvider(emojiProvider); } }, [emojiProvider, editorApi]); useEffect(() => { if (autoformattingProvider) { var _editorApi$customAuto; editorApi === null || editorApi === void 0 ? void 0 : (_editorApi$customAuto = editorApi.customAutoformat) === null || _editorApi$customAuto === void 0 ? void 0 : _editorApi$customAuto.actions.setProvider(autoformattingProvider); } }, [autoformattingProvider, editorApi]); useEffect(() => { if (taskDecisionProvider) { var _editorApi$taskDecisi; editorApi === null || editorApi === void 0 ? void 0 : (_editorApi$taskDecisi = editorApi.taskDecision) === null || _editorApi$taskDecisi === void 0 ? void 0 : _editorApi$taskDecisi.actions.setProvider(taskDecisionProvider); } }, [taskDecisionProvider, editorApi]); };