UNPKG

@atlaskit/editor-plugin-panel

Version:

Panel plugin for @atlaskit/editor-core.

101 lines (99 loc) 4.83 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.removePanel = exports.changePanelType = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _analytics = require("@atlaskit/editor-common/analytics"); var _panel = require("@atlaskit/editor-common/panel"); var _state = require("@atlaskit/editor-prosemirror/state"); var _utils = require("@atlaskit/editor-prosemirror/utils"); var _utils2 = require("../pm-plugins/utils/utils"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var removePanel = exports.removePanel = function removePanel(editorAnalyticsAPI) { return function (state, dispatch) { var nodes = state.schema.nodes, tr = state.tr; var payload = { action: _analytics.ACTION.DELETED, actionSubject: _analytics.ACTION_SUBJECT.PANEL, attributes: { inputMethod: _analytics.INPUT_METHOD.FLOATING_TB }, eventType: _analytics.EVENT_TYPE.TRACK }; var deleteTr = tr; if ((0, _utils.findSelectedNodeOfType)(nodes.panel)(tr.selection)) { deleteTr = (0, _utils.removeSelectedNode)(tr); } else if ((0, _utils.findParentNodeOfType)(nodes.panel)(tr.selection)) { deleteTr = (0, _utils.removeParentNodeOfType)(nodes.panel)(tr); } if (!deleteTr) { return false; } if (dispatch) { editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(payload)(deleteTr); dispatch(deleteTr); } return true; }; }; var changePanelType = exports.changePanelType = function changePanelType(editorAnalyticsAPI) { return function (panelType) { var panelOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var allowCustomPanel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; return function (state, dispatch) { var nodes = state.schema.nodes, tr = state.tr; var panelNode = (0, _utils2.findPanel)(state); if (panelNode === undefined) { return false; } var newType = panelType; var previousType = panelNode.node.attrs.panelType; var newTr; if (allowCustomPanel) { var previousColor = panelNode.node.attrs.panelType === 'custom' ? panelNode.node.attrs.panelColor || 'none' : (0, _panel.getPanelTypeBackgroundNoTokens)(previousType); var previousIcon = panelNode.node.attrs.panelIcon; var previousIconId = panelNode.node.attrs.panelIconId; var previousIconText = panelNode.node.attrs.panelIconText; var newPanelOptions = _objectSpread({ color: previousColor, emoji: previousIcon, emojiId: previousIconId, emojiText: previousIconText }, panelOptions); newTr = tr.setNodeMarkup(panelNode.pos, nodes.panel, { panelIcon: newPanelOptions.emoji, panelIconId: newPanelOptions.emojiId, panelIconText: newPanelOptions.emojiText, panelColor: newPanelOptions.color, panelType: panelType }); } else { newTr = tr.setNodeMarkup(panelNode.pos, nodes.panel, { panelType: panelType }); } var payload = { action: _analytics.ACTION.CHANGED_TYPE, actionSubject: _analytics.ACTION_SUBJECT.PANEL, attributes: { newType: newType, previousType: previousType }, eventType: _analytics.EVENT_TYPE.TRACK }; // Select the panel if it was previously selected var newTrWithSelection = state.selection instanceof _state.NodeSelection && state.selection.node.type.name === 'panel' ? newTr.setSelection(new _state.NodeSelection(tr.doc.resolve(panelNode.pos))) : newTr; editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(payload)(newTrWithSelection); newTrWithSelection.setMeta('scrollIntoView', false); if (dispatch) { dispatch(newTrWithSelection); } return true; }; }; };