vue3-sketch-ruler
Version:
> 是一个基于 Vue 3 + TypeScript 的标尺组件库,适用于低代码平台、大屏可视化、做图工具等场景,提供类似 Photoshop 的缩放与标尺辅助线体验。
160 lines • 5.02 kB
TypeScript
import { GuideLine, RulerPalette, ZoomMode } from '../state/ruler-context';
import { SketchRulerPlugin } from '@sketch-ruler/core';
export interface SketchRulerProps {
showRuler?: boolean;
scale?: number;
thick?: number;
width?: number;
height?: number;
canvasWidth?: number;
canvasHeight?: number;
palette?: Partial<RulerPalette>;
lines?: {
h: number[];
v: number[];
};
isShowReferLine?: boolean;
snapThreshold?: number;
lockLine?: boolean;
selfHandle?: boolean;
zoomStep?: number;
minZoom?: number;
maxZoom?: number;
/** 动画模式:direct | ease-out | damped | exponential */
animationMode?: 'direct' | 'ease-out' | 'damped' | 'exponential';
/** 缩放原点模式:pointer | viewport-center | content-center */
zoomMode?: ZoomMode;
/** 是否启用平滑动画 */
enableAnimation?: boolean;
/** 插件列表 */
plugins?: SketchRulerPlugin[];
/** 是否自动居中画布 */
autoCenter?: boolean;
/** 阴影区域(画布高亮) */
shadow?: {
x: number;
y: number;
width: number;
height: number;
};
/** 初始偏移(autoCenter=false 时生效) */
initialOffset?: {
x: number;
y: number;
};
/** 是否显示次刻度线,默认 false */
showMinorTicks?: boolean;
paddingRatio?: number;
eyeIcon?: string;
closeEyeIcon?: string;
/** 参考线拖出画布时显示的删除提示文案 */
deleteLabel?: string;
}
declare var __VLS_1: {
tools: {
zoomIn: () => Promise<void>;
zoomOut: () => Promise<void>;
reset: () => void;
setZoomMode: (mode: ZoomMode) => void;
zoomToPreset: (preset: number) => Promise<void>;
toggleReferLine: () => void;
};
state: {
scale: number;
offset: {
x: number;
y: number;
};
zoomMode: ZoomMode;
showReferLine: boolean;
};
}, __VLS_3: {};
type __VLS_Slots = {} & {
toolbar?: (props: typeof __VLS_1) => any;
} & {
default?: (props: typeof __VLS_3) => any;
};
declare const __VLS_base: import('vue').DefineComponent<SketchRulerProps, {
engine: import('@sketch-ruler/core').TransformEngine;
reset: () => void;
zoomIn: () => Promise<void>;
zoomOut: () => Promise<void>;
cursorClass: import('vue').Ref<string, string>;
setTransform: (t: Partial<import('@sketch-ruler/core').TransformState>) => void;
guideLines: import('vue').Ref<{
id: string;
orientation: "h" | "v";
position: number;
visible?: boolean | undefined;
locked?: boolean | undefined;
}[], GuideLine[] | {
id: string;
orientation: "h" | "v";
position: number;
visible?: boolean | undefined;
locked?: boolean | undefined;
}[]>;
setZoomMode: (mode: ZoomMode) => void;
zoomToPreset: (preset: number) => Promise<void>;
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
"update:scale": (...args: any[]) => void;
"update:offset": (...args: any[]) => void;
zoomchange: (...args: any[]) => void;
"update:lines": (...args: any[]) => void;
"update:lockLine": (...args: any[]) => void;
onCornerClick: (...args: any[]) => void;
}, string, import('vue').PublicProps, Readonly<SketchRulerProps> & Readonly<{
"onUpdate:scale"?: ((...args: any[]) => any) | undefined;
"onUpdate:offset"?: ((...args: any[]) => any) | undefined;
onZoomchange?: ((...args: any[]) => any) | undefined;
"onUpdate:lines"?: ((...args: any[]) => any) | undefined;
"onUpdate:lockLine"?: ((...args: any[]) => any) | undefined;
onOnCornerClick?: ((...args: any[]) => any) | undefined;
}>, {
animationMode: "direct" | "ease-out" | "damped" | "exponential";
initialOffset: {
x: number;
y: number;
};
minZoom: number;
maxZoom: number;
enableAnimation: boolean;
autoCenter: boolean;
paddingRatio: number;
scale: number;
thick: number;
showMinorTicks: boolean;
width: number;
height: number;
lines: {
h: number[];
v: number[];
};
palette: Partial<RulerPalette>;
canvasWidth: number;
canvasHeight: number;
deleteLabel: string;
lockLine: boolean;
showRuler: boolean;
isShowReferLine: boolean;
snapThreshold: number;
selfHandle: boolean;
zoomStep: number;
zoomMode: ZoomMode;
plugins: SketchRulerPlugin[];
shadow: {
x: number;
y: number;
width: number;
height: number;
};
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
declare const _default: typeof __VLS_export;
export default _default;
type __VLS_WithSlots<T, S> = T & {
new (): {
$slots: S;
};
};
//# sourceMappingURL=SketchRuler.vue.d.ts.map