ketcher-core
Version:
Web-based molecule sketcher
154 lines (153 loc) • 6.66 kB
TypeScript
import { EditorType } from "./editor.types";
import { type IEditorEvents } from "./editorEvents";
import type { BaseMode } from "./modes/internal";
import { type BaseTool, type Tool, type ToolEventHandlerName } from "./tools/Tool";
import { type IKetMacromoleculesContent, type IKetMonomerGroupTemplate, KetMonomerClass } from "../formatters";
import type { RenderersManager } from "../render/renderers/RenderersManager";
import { SequenceType, Vec2 } from "../../domain/entities";
import { BaseMonomer } from "../../domain/entities/BaseMonomer";
import { DrawingEntitiesManager } from "../../domain/entities/DrawingEntitiesManager";
import { type MonomerItemType } from "../../domain/types";
import { type HistoryOperationType } from './EditorHistory';
import ZoomTool from './tools/Zoom';
import { ViewModel } from "../render/view-model/ViewModel";
import type { ToolName } from "./tools/types";
import { TransientDrawingView } from "../render/renderers/TransientView/TransientDrawingView";
interface ICoreEditorConstructorParams {
ketcherId?: string;
theme: any;
canvas: SVGSVGElement;
renderersContainer: RenderersManager;
mode?: BaseMode;
}
export declare const EditorClassName = "Ketcher-polymer-editor-root";
export declare const KETCHER_MACROMOLECULES_ROOT_NODE_SELECTOR: string;
export declare const NATURAL_AMINO_ACID_MODIFICATION_TYPE = "Natural amino acid";
export declare class CoreEditor {
events: IEditorEvents;
ketcherId?: string;
_type: EditorType;
renderersContainer: RenderersManager;
transientDrawingView: TransientDrawingView;
drawingEntitiesManager: DrawingEntitiesManager;
viewModel: ViewModel;
lastCursorPosition: Vec2;
lastCursorPositionOfCanvas: Vec2;
private _monomersLibraryParsedJson;
private _monomersLibrary;
canvas: SVGSVGElement;
ketcherRootElement: HTMLDivElement | null;
drawnStructuresWrapperElement: SVGGElement;
canvasOffset: DOMRect;
ketcherRootElementBoundingClientRect: DOMRect | undefined;
nextAutochainPosition?: Vec2;
private libraryItemDragState;
private libraryItemDragCancelled;
theme: any;
zoomTool: ZoomTool;
private tool?;
get selectedTool(): Tool | BaseTool | undefined;
mode: BaseMode;
private readonly previousModes;
sequenceTypeEnterMode: SequenceType;
private readonly micromoleculesEditor;
private hotKeyEventHandler;
private copyEventHandler;
private pasteEventHandler;
private cutEventHandler;
private keydownEventHandler;
private contextMenuEventHandler;
private readonly cleanupsForDomEvents;
constructor({ ketcherId, theme, canvas, renderersContainer, mode, }: ICoreEditorConstructorParams);
private resetCanvasOffset;
private resetKetcherRootElementOffset;
private initializeGlobalEventListeners;
private readonly handleVisibilityChange;
private readonly handleWindowBlur;
private readonly handleWindowResize;
private cancelActiveDrag;
private clearSelectionAfterCopy;
clearMonomersLibrary(): void;
initializeMonomersLibraryFromKetcher(monomersLibraryUpdate?: string | JSON, monomersLibraryReplace?: string | JSON): Promise<void>;
private setMonomersLibrary;
updateMonomersLibrary(monomersDataRaw: string | JSON): void;
get monomersLibraryParsedJson(): IKetMacromoleculesContent | null;
get monomersLibrary(): MonomerItemType[];
checkIfMonomerSymbolClassPairExists(symbol: string, monomerClass: KetMonomerClass | 'rnaPreset' | undefined): boolean;
checkIfBilnAliasExists(alias: string): boolean;
checkIfPresetCodeExists(code: string): boolean;
get defaultRnaPresetsLibraryItems(): IKetMonomerGroupTemplate[];
get isLibraryItemDragCancelled(): boolean;
set isLibraryItemDragCancelled(value: boolean);
cancelLibraryItemDrag(): void;
private handleHotKeyEvents;
private setupKeyboardEvents;
private setupCopyPasteEvent;
private setupHotKeysEvents;
private setupContextMenuEvents;
private onLayoutCircular;
private subscribeEvents;
private onFlipHorizontal;
private onFlipVertical;
getDataForAutochain(): {
selectedMonomerToConnect: BaseMonomer | undefined;
newMonomerPosition: Vec2;
selectedMonomersWithFreeR2: BaseMonomer[];
selectedMonomers: BaseMonomer[];
};
private onRemoveAutochainPreview;
private onPreviewAutochain;
private onAutochain;
private onPlaceRnaPresetOnCanvas;
private onPlaceMonomerOnCanvas;
private onPlaceAmbiguousMonomerOnCanvas;
private clearTransientViews;
private clearSelection;
calculateAndStoreNextAutochainPosition(drawingEntitiesManagerOrMonomer: DrawingEntitiesManager | BaseMonomer): void;
invalidateNextAutochainPositionIfNeeded(isRnaPreset?: boolean): void;
private onEditSequence;
private onEstablishHydrogenBondSequenceMode;
private onDeleteHydrogenBondSequenceMode;
private onTurnOnSequenceEditInRNABuilderMode;
private onTurnOffSequenceEditInRNABuilderMode;
private onChangeSequenceTypeEnterMode;
private onChangeToggleIsSequenceSyncEditMode;
private onResetSequenceSyncEditMode;
private onCreateAntisenseChain;
private onSelectMonomer;
private onSelectRNAPreset;
onSelectTool(tool: ToolName, options?: object): void;
private onCreateBond;
private onCancelBondCreation;
private onSelectMode;
setMode(mode: BaseMode): void;
getAllAminoAcidsModificationTypesGroupedByNaturalAnalogue(): Record<string, string[]>;
private onModifyAminoAcids;
private get sequenceMode();
get isSequenceMode(): boolean;
get isSequenceEditMode(): boolean;
get isSequenceEditInRNABuilderMode(): boolean;
get isSequenceAnyEditMode(): boolean;
onSelectHistory(name: HistoryOperationType): void;
selectTool(name: ToolName, options?: any): void;
get isHandToolSelected(): boolean;
unsubscribeEvents(): void;
get trackedDomEvents(): {
target: Element | Document;
eventName: string;
toolEventHandler: ToolEventHandlerName;
}[];
private isMouseMainButtonPressed;
private domEventSetup;
private updateLastCursorPosition;
private useToolIfNeeded;
private useModeIfNeeded;
switchToMicromolecules(): void;
private resetModeIfNeeded;
switchToMacromolecules(): void;
isCurrentModeWithAutozoom(): boolean;
zoomToStructuresIfNeeded(): void;
scrollToTopLeftCorner(): void;
destroy(): void;
}
export {};