monaco-editor-core
Version:
A browser based code editor
112 lines • 4.77 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';
import * as nls from '../../../../nls.js';
import { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';
import { EditorContextKeys } from '../../../common/editorContextKeys.js';
import { registerEditorFeature } from '../../../common/editorFeatures.js';
import { CopyPasteController, changePasteTypeCommandId, pasteWidgetVisibleCtx } from './copyPasteController.js';
import { DefaultPasteProvidersFeature, DefaultTextPasteOrDropEditProvider } from './defaultProviders.js';
export const pasteAsCommandId = 'editor.action.pasteAs';
registerEditorContribution(CopyPasteController.ID, CopyPasteController, 0 /* EditorContributionInstantiation.Eager */); // eager because it listens to events on the container dom node of the editor
registerEditorFeature(DefaultPasteProvidersFeature);
registerEditorCommand(new class extends EditorCommand {
constructor() {
super({
id: changePasteTypeCommandId,
precondition: pasteWidgetVisibleCtx,
kbOpts: {
weight: 100 /* KeybindingWeight.EditorContrib */,
primary: 2048 /* KeyMod.CtrlCmd */ | 89 /* KeyCode.Period */,
}
});
}
runEditorCommand(_accessor, editor) {
return CopyPasteController.get(editor)?.changePasteType();
}
});
registerEditorCommand(new class extends EditorCommand {
constructor() {
super({
id: 'editor.hidePasteWidget',
precondition: pasteWidgetVisibleCtx,
kbOpts: {
weight: 100 /* KeybindingWeight.EditorContrib */,
primary: 9 /* KeyCode.Escape */,
}
});
}
runEditorCommand(_accessor, editor) {
CopyPasteController.get(editor)?.clearWidgets();
}
});
registerEditorAction(class PasteAsAction extends EditorAction {
static { this.argsSchema = {
oneOf: [
{
type: 'object',
required: ['kind'],
properties: {
kind: {
type: 'string',
description: nls.localize(913, "The kind of the paste edit to try pasting with.\nIf there are multiple edits for this kind, the editor will show a picker. If there are no edits of this kind, the editor will show an error message."),
}
},
},
{
type: 'object',
required: ['preferences'],
properties: {
preferences: {
type: 'array',
description: nls.localize(914, "List of preferred paste edit kind to try applying.\nThe first edit matching the preferences will be applied."),
items: { type: 'string' }
}
},
}
]
}; }
constructor() {
super({
id: pasteAsCommandId,
label: nls.localize2(915, "Paste As..."),
precondition: EditorContextKeys.writable,
metadata: {
description: 'Paste as',
args: [{
name: 'args',
schema: PasteAsAction.argsSchema
}]
},
canTriggerInlineEdits: true,
});
}
run(_accessor, editor, args) {
let preference;
if (args) {
if ('kind' in args) {
preference = { only: new HierarchicalKind(args.kind) };
}
else if ('preferences' in args) {
preference = { preferences: args.preferences.map(kind => new HierarchicalKind(kind)) };
}
}
return CopyPasteController.get(editor)?.pasteAs(preference);
}
});
registerEditorAction(class extends EditorAction {
constructor() {
super({
id: 'editor.action.pasteAsText',
label: nls.localize2(916, "Paste as Text"),
precondition: EditorContextKeys.writable,
canTriggerInlineEdits: true,
});
}
run(_accessor, editor) {
return CopyPasteController.get(editor)?.pasteAs({ providerId: DefaultTextPasteOrDropEditProvider.id });
}
});
//# sourceMappingURL=copyPasteContribution.js.map