@atlaskit/editor-plugin-card
Version:
Card plugin for @atlaskit/editor-core
33 lines (32 loc) • 1.45 kB
JavaScript
import { pluginKey } from '../plugin-key';
// ============================================================================ //
// ============================== PLUGIN STATE ================================ //
// ============================================================================ //
// Used for interactions with the Card Plugin's state.
// ============================================================================ //
export const getPluginState = editorState => pluginKey.getState(editorState);
export const getPluginStateWithUpdatedPos = (pluginState, tr) => {
var _pluginState$resolved;
return {
...pluginState,
requests: pluginState.requests.map(request => ({
...request,
pos: tr.mapping.map(request.pos)
})),
cards: pluginState.cards.map(card => ({
...card,
pos: tr.mapping.map(card.pos)
})),
resolvedInlineSmartLinks: (_pluginState$resolved = pluginState.resolvedInlineSmartLinks) === null || _pluginState$resolved === void 0 ? void 0 : _pluginState$resolved.map(card => ({
...card,
pos: tr.mapping.map(card.pos)
}))
};
};
export const getNewRequests = (oldState, currentState) => {
if (oldState) {
return currentState.requests.filter(req => !oldState.requests.find(oldReq => isSameRequest(oldReq, req)));
}
return currentState.requests;
};
const isSameRequest = (requestA, requestB) => requestA.url === requestB.url && requestA.pos === requestB.pos;