UNPKG

@atlaskit/editor-plugin-media

Version:

Media plugin for @atlaskit/editor-core

42 lines 1.51 kB
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics'; import { withAnalytics } from '@atlaskit/editor-common/editor-analytics'; import { getMediaNodeFromSelection, isSelectionMediaSingleNode } from '../../utils/media-common'; import { createCommand } from './index'; const createCommandWithAnalytics = (actionType, action, transform) => { return editorAnalyticsAPI => withAnalytics(editorAnalyticsAPI, { action: actionType, actionSubject: ACTION_SUBJECT.MEDIA, actionSubjectId: ACTION_SUBJECT_ID.ALT_TEXT, eventType: EVENT_TYPE.TRACK })(createCommand(action, transform)); }; export const closeMediaAltTextMenu = createCommand(state => { if (isSelectionMediaSingleNode(state)) { return { type: 'closeMediaAltTextMenu' }; } return false; }); export const openMediaAltTextMenu = createCommandWithAnalytics(ACTION.OPENED, state => { if (isSelectionMediaSingleNode(state)) { return { type: 'openMediaAltTextMenu' }; } return false; }, tr => tr.setMeta('scrollIntoView', false)); export const updateAltText = newAltText => createCommand(state => isSelectionMediaSingleNode(state) ? { type: 'updateAltText' } : false, (tr, state) => { const mediaNode = getMediaNodeFromSelection(state); const pos = tr.selection.from + 1; if (mediaNode) { tr.setMeta('scrollIntoView', false); tr.setNodeMarkup(pos, undefined, { ...mediaNode.attrs, alt: newAltText }); } return tr; });