@atlaskit/editor-plugin-card
Version:
Card plugin for @atlaskit/editor-core
72 lines (71 loc) • 3.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.embedCardNodeViewWithPreservation = void 0;
var _preserveNodeView = require("@atlaskit/editor-common/preserve-node-view");
var _constants = require("@atlaskit/editor-shared-styles/constants");
var _embedCard = require("./embedCard");
var embedCardNodeViewWithPreservation = exports.embedCardNodeViewWithPreservation = function embedCardNodeViewWithPreservation(properties) {
return function (node, view, getPos) {
var _properties$pluginInj;
var width = (_properties$pluginInj = properties.pluginInjectionApi) === null || _properties$pluginInj === void 0 || (_properties$pluginInj = _properties$pluginInj.width) === null || _properties$pluginInj === void 0 || (_properties$pluginInj = _properties$pluginInj.sharedState.currentState()) === null || _properties$pluginInj === void 0 ? void 0 : _properties$pluginInj.width;
var useResponsiveRenderer = (0, _embedCard.isPreviewPanelResponsivenessEnabled)() && !!width && width <= _constants.akEditorFullPageNarrowBreakout;
if (useResponsiveRenderer) {
return (0, _embedCard.embedCardNodeView)(properties)(node, view, getPos);
}
var _properties$pmPluginF = properties.pmPluginFactoryParams,
portalProviderAPI = _properties$pmPluginF.portalProviderAPI,
eventDispatcher = _properties$pmPluginF.eventDispatcher,
dispatchAnalyticsEvent = _properties$pmPluginF.dispatchAnalyticsEvent;
var renderProps = {
eventDispatcher: eventDispatcher,
allowResizing: properties.allowResizing,
fullWidthMode: properties.fullWidthMode,
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
pluginInjectionApi: properties.pluginInjectionApi,
actionOptions: properties.actionOptions,
onClickCallback: properties.onClickCallback,
CompetitorPrompt: properties.CompetitorPrompt,
isPageSSRed: properties.isPageSSRed,
provider: properties.provider,
intl: properties.intl,
smartCardContext: properties.smartCardContext
};
var createCard = function createCard(cardNode) {
return new _embedCard.EmbedCard(cardNode, view, getPos, portalProviderAPI, eventDispatcher, renderProps);
};
return (0, _preserveNodeView.preserveNodeView)({
node: node,
view: view,
getPos: getPos,
renderProps: renderProps,
rendererKind: portalProviderAPI,
createNodeView: createCard,
isSameNode: function isSameNode(previous, next) {
return previous === next;
},
canUpdateNode: function canUpdateNode(previous, next) {
return previous.type === next.type;
},
canReuse: function canReuse(inner) {
if (!(inner instanceof _embedCard.EmbedCard) || !inner.canReuseWith(properties.provider, properties.pmPluginFactoryParams.eventDispatcher)) {
return false;
}
var nodeIdentityCount = 0;
view.state.doc.descendants(function (candidate) {
if (candidate === inner.node) {
nodeIdentityCount++;
}
});
return nodeIdentityCount === 1;
},
onAttach: function onAttach(inner, slot, freshGetPos) {
if (inner instanceof _embedCard.EmbedCard) {
inner.attachPreservationSlot(slot, freshGetPos);
}
},
requireUniqueMatch: true
});
};
};