@atlaskit/editor-plugin-expand
Version:
Expand plugin for @atlaskit/editor-core
144 lines (143 loc) • 7.67 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.expandPlugin = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _expand = require("@atlaskit/adf-schema/expand");
var _nestedExpand = require("@atlaskit/adf-schema/nested-expand");
var _analytics = require("@atlaskit/editor-common/analytics");
var _assets = require("@atlaskit/editor-common/assets");
var _blockMenu = require("@atlaskit/editor-common/block-menu");
var _messages = require("@atlaskit/editor-common/messages");
var _utils = require("@atlaskit/editor-common/utils");
var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
var _fg = require("@atlaskit/platform-feature-flags/fg");
var _toggleExpandRange = require("../editor-commands/toggleExpandRange");
var _ExpandBlockMenuItem = require("../ui/ExpandBlockMenuItem");
var _getExpandQuickInsertComponents = require("../ui/quick-insert/getExpandQuickInsertComponents");
var _commands = require("./commands");
var _keymap = require("./pm-plugins/keymap");
var _main = require("./pm-plugins/main");
var _toolbar = require("./toolbar");
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 EXPAND_NODE_NAME = 'expand';
// Ignored via go/ees005
// eslint-disable-next-line prefer-const
var expandPlugin = exports.expandPlugin = function expandPlugin(_ref) {
var _api$blockMenu;
var _ref$config = _ref.config,
options = _ref$config === void 0 ? {} : _ref$config,
api = _ref.api;
var isRegisteredSlashCommandEnabled = (0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_slash_command');
api === null || api === void 0 || (_api$blockMenu = api.blockMenu) === null || _api$blockMenu === void 0 || _api$blockMenu.actions.registerBlockMenuComponents([{
type: 'block-menu-item',
key: _blockMenu.TRANSFORM_STRUCTURE_EXPAND_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: _blockMenu.TRANSFORM_STRUCTURE_MENU_SECTION.key,
rank: _blockMenu.TRANSFORM_STRUCTURE_MENU_SECTION_RANK[_blockMenu.TRANSFORM_STRUCTURE_EXPAND_MENU_ITEM.key]
},
component: (0, _ExpandBlockMenuItem.createExpandBlockMenuItem)(api),
isHidden: function isHidden() {
var _api$blockMenu2;
return Boolean(api === null || api === void 0 || (_api$blockMenu2 = api.blockMenu) === null || _api$blockMenu2 === void 0 ? void 0 : _api$blockMenu2.actions.isTransformOptionDisabled(EXPAND_NODE_NAME));
}
}]);
if (isRegisteredSlashCommandEnabled && options.allowInsertion === true) {
var _api$uiControlRegistr;
api === null || api === void 0 || (_api$uiControlRegistr = api.uiControlRegistry) === null || _api$uiControlRegistr === void 0 || _api$uiControlRegistr.actions.register((0, _getExpandQuickInsertComponents.getExpandQuickInsertComponents)({
api: api,
isLegacy: false
}));
}
return {
name: 'expand',
nodes: function nodes() {
return [{
name: 'expand',
node: (0, _fg.fg)('platform_editor_adf_with_localid') ? _expand.expandWithNestedExpandLocalId : _expand.expandWithNestedExpand
}, {
name: 'nestedExpand',
node: (0, _fg.fg)('platform_editor_adf_with_localid') ? _nestedExpand.nestedExpandWithLocalId : _nestedExpand.nestedExpand
}];
},
actions: {
insertExpand: (0, _commands.insertExpand)(api),
insertExpandWithInputMethod: (0, _commands.insertExpandWithInputMethod)(api)
},
commands: {
toggleExpandWithMatch: function toggleExpandWithMatch(selection) {
return (0, _commands.toggleExpandWithMatch)(selection);
},
toggleExpandRange: _toggleExpandRange.toggleExpandRange
},
getSharedState: function getSharedState() {
var _options$allowInserti;
return {
allowInsertion: (_options$allowInserti = options === null || options === void 0 ? void 0 : options.allowInsertion) !== null && _options$allowInserti !== void 0 ? _options$allowInserti : true
};
},
pmPlugins: function pmPlugins() {
return [{
name: 'expand',
plugin: function plugin(_ref2) {
var _options$allowInterac;
var dispatch = _ref2.dispatch,
getIntl = _ref2.getIntl,
nodeViewPortalProviderAPI = _ref2.nodeViewPortalProviderAPI;
return (0, _main.createPlugin)(dispatch, getIntl, options.appearance, options.useLongPressSelection, api, nodeViewPortalProviderAPI, (_options$allowInterac = options.allowInteractiveExpand) !== null && _options$allowInterac !== void 0 ? _options$allowInterac : true, options.__livePage);
}
}, {
name: 'expandKeymap',
plugin: function plugin() {
return (0, _keymap.expandKeymap)(api);
}
}];
},
pluginsOptions: _objectSpread({
floatingToolbar: (0, _toolbar.getToolbarConfig)(api)
}, !isRegisteredSlashCommandEnabled && {
quickInsert: function quickInsert(_ref3) {
var formatMessage = _ref3.formatMessage;
if (options && options.allowInsertion !== true) {
return [];
}
return [{
id: 'expand',
title: formatMessage(_messages.toolbarInsertBlockMessages.expand),
description: formatMessage(_messages.toolbarInsertBlockMessages.expandDescription),
keywords: ['accordion', 'collapse'],
priority: 600,
icon: function icon() {
return /*#__PURE__*/_react.default.createElement(_assets.IconExpand, null);
},
action: function action(insert, state, source) {
var _api$analytics;
var node = (0, _commands.createExpandNode)(state, undefined, !!(api !== null && api !== void 0 && api.localId));
if (!node) {
return false;
}
var tr = state.selection.empty ? insert(node) : (0, _fg.fg)('platform_editor_adf_with_localid') ? (0, _commands.wrapSelectionAndSetExpandedState)(state, node) : (0, _utils.createWrapSelectionTransaction)({
state: state,
type: node.type
});
api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || _api$analytics.actions.attachAnalyticsEvent({
action: _analytics.ACTION.INSERTED,
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
actionSubjectId: node.type === state.schema.nodes.nestedExpand ? _analytics.ACTION_SUBJECT_ID.NESTED_EXPAND : _analytics.ACTION_SUBJECT_ID.EXPAND,
attributes: {
inputMethod: source !== null && source !== void 0 ? source : _analytics.INPUT_METHOD.QUICK_INSERT
},
eventType: _analytics.EVENT_TYPE.TRACK
})(tr);
return tr;
}
}];
}
})
};
};