@iktos-oss/molecule-representation
Version:
exports interactif molecule represnetations as react components
56 lines (55 loc) • 1.75 kB
TypeScript
/// <reference types="react" />
export declare const createSvgElement: (svg: string, svgProps?: Record<string, unknown>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
export declare const computeIconsCoords: ({ svg, attachedIcons, }: {
svg: string;
attachedIcons: AttachedSvgIcon[];
}) => IconCoords[];
export declare const buildBondsHitboxes: ({ numAtoms, svg, isClickable, }: {
numAtoms: number;
svg: string;
isClickable: boolean;
}) => SVGPathElement[];
export declare const buildAtomsHitboxes: ({ numAtoms, svg, clickableAtoms, isClickable, }: {
numAtoms: number;
svg: string;
clickableAtoms: Set<number> | null;
isClickable: boolean;
}) => SVGEllipseElement[];
export declare const applyUserStyles: ({ svg, numAtoms, atomsStyles, bondsStyles, }: {
svg: string;
numAtoms: number;
atomsStyles: AtomsStyles | undefined;
bondsStyles: BondsStyles | undefined;
}) => string;
export interface AttachedSvgIcon {
svg: string;
atomIds: number[];
bondIds: number[];
}
export interface IconCoords {
svg: string;
scale: number;
placements: IconsPlacements[];
}
interface IconsPlacements {
xTranslate: number;
yTranslate: number;
}
export interface BondIdentifiers {
bondId: string;
startAtomId: string;
endAtomId: string;
}
type CustomStyles = Record<string, string | number>;
export interface AtomsStyles {
[atomId: number]: CustomStyles;
default?: CustomStyles;
}
export interface BondsStyles {
[bondId: number]: CustomStyles;
[atomIds: `${number}-${number}`]: CustomStyles;
[atomIds: `${number}-*`]: CustomStyles;
[atomIds: `*-${number}`]: CustomStyles;
default?: CustomStyles;
}
export {};