import type { NodeWithPos } from '@atlaskit/editor-prosemirror/utils'; import type { EditorView } from '@atlaskit/editor-prosemirror/view'; import type { CSSToken } from '@atlaskit/tokens'; export type WidthTypes = 'percentage' | 'pixel'; export type LengthGuide = { isFullWidth?: boolean; left: number; length: number; right: number; }; export type Range = { end: number; start: number; }; export type VerticalPosition = { x: number; y?: Range; }; export type HorizontalPosition = { x?: Range; y: number; }; export type Position = VerticalPosition | HorizontalPosition; export type GuidelineStyles = { active?: boolean; show?: boolean; styles?: { capStyle?: 'line'; color?: CSSToken; lineStyle?: 'dashed' | 'solid'; }; }; export type GuidelineConfig = { isFullWidth?: boolean; key: string; position: Position; } & GuidelineStyles; export type GuidelineContainerRect = { left: number; top: number; }; export type GuidelinePluginState = { guidelines: GuidelineConfig[]; rect?: GuidelineContainerRect; }; export type GuidelinePluginOptions = Object; export type DisplayGrid = (props: GuidelinePluginState) => boolean; export type DisplayGuideline = (view: EditorView) => DisplayGrid; export type GuidelineSnap = { guidelineKey: string; width: number; }; export type GuidelineSnapsReference = { guidelineReference: GuidelineSnap[]; snaps: { x?: number[]; y?: number[]; }; }; export type GuidelineTypes = 'default' | 'temporary' | 'relative' | 'none'; export type RelativeGuides = { height?: { [key: number]: NodeWithPos[]; }; width?: { [key: number]: NodeWithPos[]; }; };