UNPKG

@atlaskit/editor-plugin-track-changes

Version:

ShowDiff plugin for @atlaskit/editor-core

77 lines (76 loc) 2.96 kB
import type { EditorCommand, NextEditorPlugin, OptionalPlugin } from '@atlaskit/editor-common/types'; import type { HistoryPlugin } from '@atlaskit/editor-plugin-history'; import type { PrimaryToolbarPlugin } from '@atlaskit/editor-plugin-primary-toolbar'; import type { ShowDiffPlugin } from '@atlaskit/editor-plugin-show-diff'; import type { ToolbarPlugin } from '@atlaskit/editor-plugin-toolbar'; export interface TrackChangesPluginOptions { /** * Custom wrapper component for the track changes button. */ ButtonWrapper?: React.ComponentType<{ children: React.ReactNode; }>; /** * Whether the track changes button should be shown on the toolbar. * Defaults to false. */ showOnToolbar?: boolean; } export type TrackChangesPlugin = NextEditorPlugin<'trackChanges', { commands: { /** * Resets the baseline used for tracking changes in the editor. */ resetBaseline: EditorCommand; /** * Disables (or re-enables) the ability to toggle track changes. * * Intended for other plugins that temporarily own the diff decorations — for example * the AI Review moment — so the toolbar button and keyboard shortcut don't fight over * the same diff. While disabled the toolbar button renders in a disabled state and * `toggleChanges` becomes a no-op. * * Callers are responsible for re-enabling (passing `false`) once they are done. */ setToggleChangesDisabled: (isDisabled: boolean) => EditorCommand; /** * Toggles the displaying of changes in the editor. */ toggleChanges: EditorCommand; }; dependencies: [ /** * Primary toolbar plugin for registering the track changes button. */ OptionalPlugin<PrimaryToolbarPlugin>, /** * For ensuring the tracked changes align with the history */ OptionalPlugin<HistoryPlugin>, /** * Show diff plugin for showing the changes in a diff view. */ ShowDiffPlugin, OptionalPlugin<ToolbarPlugin> ]; pluginConfiguration?: TrackChangesPluginOptions | undefined; sharedState: { /** * Whether the track changes feature is currently displaying changes. * Defaults to false. */ isDisplayingChanges: boolean; /** * If there are changes in the document that determine if track changes button * should be enabled. * This will only be false initially before any changes in the session. */ isShowDiffAvailable: boolean; /** * Whether toggling track changes has been disabled by another plugin that currently * owns the diff decorations (see the `setToggleChangesDisabled` command). * Defaults to false. */ isToggleChangesDisabled: boolean; }; }>;