/**
 * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
 */

/**
 * @module restricted-editing/restrictededitingconfig
 */

/**
 * The configuration of the restricted editing mode feature.
 * The option is used by the {@link module:restricted-editing/restrictededitingmode~RestrictedEditingMode} feature.
 *
 * ```ts
 * ClassicEditor
 *   .create( {
 *     restrictedEditing: {
 *       allowedCommands: [ 'bold', 'link', 'unlink' ],
 *       allowedAttributes: [ 'bold', 'linkHref' ]
 *     }
 *   } )
 *   .then( ... )
 *   .catch( ... );
 * ```
 *
 * See {@link module:core/editor/editorconfig~EditorConfig all editor options}.
 */
export interface RestrictedEditingConfig {

	/**
	 * The command names allowed in inline non-restricted areas of the content.
	 *
	 * Defines which feature commands should be enabled in the restricted editing mode. The commands used for typing and deleting text
	 * (`'input'`, `'delete'` and `'deleteForward'`) are allowed by the feature inside non-restricted regions and do not need to be defined.
	 *
	 * **Note**: The restricted editing mode always allows to use the restricted mode navigation commands as well as `'undo'` and `'redo'`
	 * commands.
	 *
	 * The default value is:
	 *
	 * ```ts
	 * const restrictedEditingConfig = {
	 *   allowedCommands: [ 'bold', 'italic', 'link', 'unlink' ]
	 * };
	 * ```
	 *
	 * Only inline content inserting or editing commands are allowed in this setting. Block content commands such as
	 * `insertTable` or `enter` cannot be allowed via this setting, as they are not supported in the restricted editing mode.
	 *
	 * To make a command always enabled (also outside non-restricted areas) use the
	 * {@link module:restricted-editing/restrictededitingmodeediting~RestrictedEditingModeEditing#enableCommand} method.
	 */
	allowedCommands: Array<string>;

	/**
	 * The text attribute names allowed when pasting content in inline non-restricted areas.
	 *
	 * The default value is:
	 *
	 * ```ts
	 * const restrictedEditingConfig = {
	 *   allowedAttributes: [ 'bold', 'italic', 'linkHref' ]
	 * };
	 * ```
	 */
	allowedAttributes: Array<string>;
}
