UNPKG

@atlaskit/editor-plugin-card

Version:

Card plugin for @atlaskit/editor-core

72 lines (71 loc) • 3.36 kB
"use strict"; 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 }); }; };