UNPKG

@atlaskit/editor-plugin-card

Version:

Card plugin for @atlaskit/editor-core

84 lines (82 loc) • 4.77 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.PreAuthValuePropositionModalListener = void 0; var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _types = require("./analytics/types"); var _utils = require("./analytics/utils"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != (0, _typeof2.default)(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var PreAuthValuePropositionModal = /*#__PURE__*/(0, _react.lazy)(function () { return Promise.resolve().then(function () { return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_smart-card-pre-auth-value-proposition-modal" */'@atlaskit/smart-card/pre-auth-value-proposition-modal')); }).then(function (module) { return { default: module.PreAuthValuePropositionModal }; }); }); var getNewSmartLinkUrl = function getNewSmartLinkUrl(event) { if (event.subject !== _types.EVENT_SUBJECT.LINK || event.data.isUndo || event.data.isRedo || (0, _utils.appearanceForLink)(event.data.node) === 'url') { return; } if (event.event === _types.EVENT.CREATED || event.event === _types.EVENT.UPDATED && event.data.previousDisplay === 'url') { return (0, _utils.getUrl)(event.data.node); } }; var ModalListener = function ModalListener(_ref) { var api = _ref.api, cardPluginEvents = _ref.cardPluginEvents; var _useState = (0, _react.useState)(), _useState2 = (0, _slicedToArray2.default)(_useState, 2), url = _useState2[0], setUrl = _useState2[1]; var _useState3 = (0, _react.useState)(false), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), isOpen = _useState4[0], setIsOpen = _useState4[1]; // While the pre-auth modal is visible, use 'overlayOpen' to suppress the floating toolbar. // Jira portals editor popups above its issue dialog, so the toolbar would otherwise appear // above the modal blanket. Keep it available while link eligibility is still being checked. // On close or unmount, restore the previous intent unless another interaction has changed it. (0, _react.useEffect)(function () { var _api$userIntent$share, _api$userIntent$share2; if (!isOpen || !(api !== null && api !== void 0 && api.userIntent)) { return; } var previousIntent = (_api$userIntent$share = (_api$userIntent$share2 = api.userIntent.sharedState.currentState()) === null || _api$userIntent$share2 === void 0 ? void 0 : _api$userIntent$share2.currentUserIntent) !== null && _api$userIntent$share !== void 0 ? _api$userIntent$share : 'default'; api.core.actions.execute(api.userIntent.commands.setCurrentUserIntent('overlayOpen')); return function () { var _api$userIntent; if (((_api$userIntent = api.userIntent) === null || _api$userIntent === void 0 || (_api$userIntent = _api$userIntent.sharedState.currentState()) === null || _api$userIntent === void 0 ? void 0 : _api$userIntent.currentUserIntent) === 'overlayOpen') { api.core.actions.execute(api.userIntent.commands.setCurrentUserIntent(previousIntent)); } }; }, [api, isOpen]); (0, _react.useEffect)(function () { return cardPluginEvents.subscribe(function (event) { var newSmartLinkUrl = getNewSmartLinkUrl(event); if (newSmartLinkUrl) { setUrl(function (currentUrl) { return currentUrl !== null && currentUrl !== void 0 ? currentUrl : newSmartLinkUrl; }); } }); }, [cardPluginEvents]); var onFinished = (0, _react.useCallback)(function () { setIsOpen(false); setUrl(undefined); }, []); return url ? /*#__PURE__*/_react.default.createElement(_react.Suspense, { fallback: null }, /*#__PURE__*/_react.default.createElement(PreAuthValuePropositionModal, { key: url, url: url, onFinished: onFinished, onOpenChange: setIsOpen })) : null; }; var PreAuthValuePropositionModalListener = exports.PreAuthValuePropositionModalListener = /*#__PURE__*/_react.default.memo(ModalListener);