@atlaskit/editor-core
Version:
A package contains Atlassian editor core functionality
91 lines • 4.35 kB
JavaScript
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
import _regeneratorRuntime from "@babel/runtime/regenerator";
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 var useProviders = function useProviders(_ref) {
var editorApi = _ref.editorApi,
contextIdentifierProvider = _ref.contextIdentifierProvider,
mediaProvider = _ref.mediaProvider,
mentionProvider = _ref.mentionProvider,
cardProvider = _ref.cardProvider,
emojiProvider = _ref.emojiProvider,
autoformattingProvider = _ref.autoformattingProvider,
taskDecisionProvider = _ref.taskDecisionProvider;
useEffect(function () {
function setProvider() {
return _setProvider.apply(this, arguments);
}
function _setProvider() {
_setProvider = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
var _editorApi$core, _editorApi$contextIde;
var provider;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (contextIdentifierProvider) {
_context.next = 2;
break;
}
return _context.abrupt("return");
case 2:
_context.next = 4;
return contextIdentifierProvider;
case 4:
provider = _context.sent;
editorApi === null || editorApi === void 0 || (_editorApi$core = editorApi.core) === null || _editorApi$core === void 0 || _editorApi$core.actions.execute(editorApi === null || editorApi === void 0 || (_editorApi$contextIde = editorApi.contextIdentifier) === null || _editorApi$contextIde === void 0 ? void 0 : _editorApi$contextIde.commands.setProvider({
contextIdentifierProvider: provider
}));
case 6:
case "end":
return _context.stop();
}
}, _callee);
}));
return _setProvider.apply(this, arguments);
}
setProvider();
}, [contextIdentifierProvider, editorApi]);
useEffect(function () {
if (mediaProvider) {
var _editorApi$media;
editorApi === null || editorApi === void 0 || (_editorApi$media = editorApi.media) === null || _editorApi$media === void 0 || _editorApi$media.actions.setProvider(mediaProvider);
}
}, [mediaProvider, editorApi]);
useEffect(function () {
if (mentionProvider) {
var _editorApi$mention;
editorApi === null || editorApi === void 0 || (_editorApi$mention = editorApi.mention) === null || _editorApi$mention === void 0 || _editorApi$mention.actions.setProvider(mentionProvider);
}
}, [mentionProvider, editorApi]);
useEffect(function () {
if (cardProvider) {
var _editorApi$card;
editorApi === null || editorApi === void 0 || (_editorApi$card = editorApi.card) === null || _editorApi$card === void 0 || _editorApi$card.actions.setProvider(cardProvider);
}
}, [cardProvider, editorApi]);
useEffect(function () {
if (emojiProvider) {
var _editorApi$emoji;
editorApi === null || editorApi === void 0 || (_editorApi$emoji = editorApi.emoji) === null || _editorApi$emoji === void 0 || _editorApi$emoji.actions.setProvider(emojiProvider);
}
}, [emojiProvider, editorApi]);
useEffect(function () {
if (autoformattingProvider) {
var _editorApi$customAuto;
editorApi === null || editorApi === void 0 || (_editorApi$customAuto = editorApi.customAutoformat) === null || _editorApi$customAuto === void 0 || _editorApi$customAuto.actions.setProvider(autoformattingProvider);
}
}, [autoformattingProvider, editorApi]);
useEffect(function () {
if (taskDecisionProvider) {
var _editorApi$taskDecisi;
editorApi === null || editorApi === void 0 || (_editorApi$taskDecisi = editorApi.taskDecision) === null || _editorApi$taskDecisi === void 0 || _editorApi$taskDecisi.actions.setProvider(taskDecisionProvider);
}
}, [taskDecisionProvider, editorApi]);
};