devexpress-richedit
Version:
DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.
47 lines (46 loc) • 2.22 kB
JavaScript
import { ChangeFieldHyperlinkInfoHistoryItem } from '../../model/history/items/change-field-hyperlink-info-history-item';
import { Url } from '@devexpress/utils/lib/utils/url';
import { ReadOnlyMode } from '../../interfaces/i-rich-edit-core';
import { RichEditClientCommand } from '../client-command';
import { CommandSimpleOptions } from '../command-base';
import { HyperlinkCommandBase } from './hyperlink-command-base';
import { createUrlValidationOptions, UrlUtils } from '../../../common/utils/utils';
export class OpenHyperlinkCommand extends HyperlinkCommandBase {
executeCore(state, options) {
let field;
if (options.param)
field = options.param;
else {
if (!state.visible)
return false;
field = state.value;
}
var hyperlinkInfo = field.getHyperlinkInfo();
const fieldIsEditable = this.selection.activeSubDocument.isEditable([field.getAllFieldInterval()]);
if (!hyperlinkInfo.visited && this.control.readOnly != ReadOnlyMode.Persistent && fieldIsEditable) {
var newHyperlinkInfo = hyperlinkInfo.clone();
newHyperlinkInfo.visited = true;
this.history.beginTransaction();
this.history.addAndRedo(new ChangeFieldHyperlinkInfoHistoryItem(this.modelManipulator, this.selection.activeSubDocument, field.index, newHyperlinkInfo));
this.history.endTransaction();
this.aspxForceSendingRequest();
}
if (hyperlinkInfo.isUri()) {
const options = createUrlValidationOptions(this.control.modelManager);
let uri = hyperlinkInfo.getUriWithAnchor();
if (!UrlUtils.isValid(uri, options))
uri = UrlUtils.EmptyPage;
Url.navigate(uri, "_blank");
}
else {
this.control.commandManager.getCommand(RichEditClientCommand.GoToBookmark)
.execute(this.control.commandManager.isPublicApiCall, new CommandSimpleOptions(this.control, hyperlinkInfo.anchor));
}
return true;
}
isEnabledInReadOnlyMode() {
return true;
}
aspxForceSendingRequest() {
}
}