@atlaskit/editor-plugin-paste-options-toolbar
Version:
Paste options toolbar for @atlaskit/editor-core
159 lines • 6.09 kB
JavaScript
import { ACTION, ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD, PasteContents, PasteTypes } from '@atlaskit/editor-common/analytics';
import { withAnalytics } from '@atlaskit/editor-common/editor-analytics';
import { PastePluginActionTypes as ActionTypes } from '../editor-actions/actions';
import { createCommand } from '../pm-plugins/plugin-factory';
import { formatMarkdown, formatPlainText, formatRichText } from '../pm-plugins/util/format-handlers';
import { pasteOptionsPluginKey, ToolbarDropdownOption } from '../types/types';
export var showToolbar = function showToolbar(lastContentPasted, selectedOption) {
var showLegacyOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var pasteAncestorNodeNames = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
var commandAction = function commandAction(_editorState) {
var _lastContentPasted$te;
return {
type: ActionTypes.SHOW_PASTE_OPTIONS,
data: {
selectedOption: selectedOption,
plaintext: (_lastContentPasted$te = lastContentPasted.text) !== null && _lastContentPasted$te !== void 0 ? _lastContentPasted$te : '',
isPlainText: lastContentPasted.isPlainText,
richTextSlice: lastContentPasted.pastedSlice,
pasteStartPos: lastContentPasted.pasteStartPos,
pasteEndPos: lastContentPasted.pasteEndPos,
showLegacyOptions: showLegacyOptions,
pasteAncestorNodeNames: pasteAncestorNodeNames
}
};
};
return createCommand(commandAction);
};
export var changeToPlainText = function changeToPlainText() {
var plaintextTransformer = function plaintextTransformer(tr, state) {
var pluginState = pasteOptionsPluginKey.getState(state);
if (pluginState.selectedOption === ToolbarDropdownOption.PlainText) {
return tr;
}
return formatPlainText(tr, pluginState);
};
var commandAction = function commandAction(_editorState) {
return {
type: ActionTypes.CHANGE_FORMAT,
data: {
selectedOption: ToolbarDropdownOption.PlainText
}
};
};
return createCommand(commandAction, plaintextTransformer);
};
export var changeToPlainTextWithAnalytics = function changeToPlainTextWithAnalytics(editorAnalyticsAPI, sliceSize, invokedFrom) {
return function () {
return withAnalytics(editorAnalyticsAPI, {
action: ACTION.PASTED,
actionSubject: ACTION_SUBJECT.DOCUMENT,
eventType: EVENT_TYPE.TRACK,
attributes: {
inputMethod: INPUT_METHOD.TOOLBAR,
type: PasteTypes.plain,
content: PasteContents.text,
pasteSize: sliceSize,
invokedFrom: invokedFrom
}
})(changeToPlainText());
};
};
export var dropdownClickHandler = function dropdownClickHandler() {
return highlightContent();
};
export var changeToRichText = function changeToRichText() {
var transformer = function transformer(tr, state) {
var pluginState = pasteOptionsPluginKey.getState(state);
if (pluginState.selectedOption === ToolbarDropdownOption.RichText) {
return tr;
}
return formatRichText(tr, pluginState);
};
var commandAction = function commandAction(_editorState) {
return {
type: ActionTypes.CHANGE_FORMAT,
data: {
selectedOption: ToolbarDropdownOption.RichText
}
};
};
return createCommand(commandAction, transformer);
};
export var changeToRichTextWithAnalytics = function changeToRichTextWithAnalytics(editorAnalyticsAPI, invokedFrom) {
return function () {
var payloadCallback = function payloadCallback(state) {
var _pastePluginState$ric;
var pastePluginState = pasteOptionsPluginKey.getState(state);
return {
action: ACTION.PASTED,
actionSubject: ACTION_SUBJECT.DOCUMENT,
eventType: EVENT_TYPE.TRACK,
attributes: {
inputMethod: INPUT_METHOD.TOOLBAR,
type: PasteTypes.richText,
content: PasteContents.text,
pasteSize: ((_pastePluginState$ric = pastePluginState.richTextSlice) === null || _pastePluginState$ric === void 0 ? void 0 : _pastePluginState$ric.size) || 0,
invokedFrom: invokedFrom
}
};
};
return withAnalytics(editorAnalyticsAPI, payloadCallback)(changeToRichText());
};
};
export var changeToMarkDown = function changeToMarkDown() {
var markdownTransformer = function markdownTransformer(tr, state) {
var pluginState = pasteOptionsPluginKey.getState(state);
if (pluginState.selectedOption === ToolbarDropdownOption.Markdown) {
return tr;
}
return formatMarkdown(tr, pluginState);
};
var commandAction = function commandAction(_editorState) {
return {
type: ActionTypes.CHANGE_FORMAT,
data: {
selectedOption: ToolbarDropdownOption.Markdown
}
};
};
return createCommand(commandAction, markdownTransformer);
};
export var changeToMarkdownWithAnalytics = function changeToMarkdownWithAnalytics(editorAnalyticsAPI, sliceSize, invokedFrom) {
return function () {
return withAnalytics(editorAnalyticsAPI, {
action: ACTION.PASTED,
actionSubject: ACTION_SUBJECT.DOCUMENT,
eventType: EVENT_TYPE.TRACK,
attributes: {
inputMethod: INPUT_METHOD.TOOLBAR,
type: PasteTypes.markdown,
content: PasteContents.text,
pasteSize: sliceSize,
invokedFrom: invokedFrom
}
})(changeToMarkDown());
};
};
export var highlightContent = function highlightContent() {
var commandAction = function commandAction(_editorState) {
return {
type: ActionTypes.HIGHLIGHT_CONTENT
};
};
return createCommand(commandAction);
};
export var hideToolbar = function hideToolbar() {
var commandAction = function commandAction(_editorState) {
return {
type: ActionTypes.HIDE_PASTE_OPTIONS
};
};
return createCommand(commandAction);
};
export var checkAndHideToolbar = function checkAndHideToolbar(view) {
var pluginState = pasteOptionsPluginKey.getState(view.state);
if (pluginState.showToolbar) {
hideToolbar()(view.state, view.dispatch);
}
};