UNPKG

mine-h5-ui

Version:

一款轻量级、模块化基于 Vue3.x 的 H5 前端 UI 组件库 👍

186 lines (185 loc) 3.32 kB
import { Ref, ModelRef } from 'vue'; import { DefaultSlotProp } from '../types'; /** * calcSize name */ export type CalcSizeName = 'nw' | 'n' | 'ne' | 'e' | 'se' | 's' | 'sw' | 'w'; /** * 矩形区域 */ export interface Rect { w: number; h: number; x: number; y: number; r: number; } /** * 列表项 */ export interface ListDataItem { rect: Rect; url: string; } /** * 角度和 cursor 的列表项 */ export interface AngleToCursorItem { start: number; end: number; cursor: string; } /** * 坐标 */ export interface Point { x: number; y: number; } /** * 距离 */ export interface Distance { distX: number; distY: number; } /** * 共享数据和方法 */ export interface Share { getCurItem: Ref<Rect>; onEmitChange: (type: string) => void; onUpdate: () => void; } /** * useMove 共享数据和方法 */ export interface MoveShare extends Share { listData: Ref<ListDataItem[]>; } /** * useMove 共享数据和方法 */ export interface ResizeShare extends Share { listData: Ref<ListDataItem[]>; } /** * useRotate 共享数据和方法 */ export interface RotateShare extends Share { getCenterPoint: () => Point; } /** * northResize 方法参数 */ export interface Option { startPoint: Point; centerPoint: Point; symmPoint: Point; curPoint: Point; rect: Rect; } /** * resizeGroup */ export interface ResizeGroup { nw: (option: Option) => Rect; n: (option: Option) => Rect; ne: (option: Option) => Rect; e: (option: Option) => Rect; se: (option: Option) => Rect; s: (option: Option) => Rect; sw: (option: Option) => Rect; w: (option: Option) => Rect; } /** * ScaleShare 共享数据和方法 */ export interface ScaleShare extends Share { listData: Ref<ListDataItem[]>; } /** * emits */ export interface Emits { (event: 'change', list: ListDataItem[], type: string): void; } /** * props */ export interface Props { /** * 容器宽度 */ width?: string; /** * 容器高度 */ height?: string; /** * 选中主题色 */ theme?: string; /** * 选中主题文本色 */ themeText?: string; /** * 对正角度范围 */ angleRange?: number; /** * 双指缩放一倍的像素 */ scale?: number; } /** * defineSlots */ export interface Slots { default: (props: { item: ListDataItem; index: number; }) => ReturnType<DefaultSlotProp>; } /** * 基础配置 */ interface BaseOption { props: Readonly<Required<Props>>; emit: Emits; } /** * useHandler */ export declare namespace USEHandler { interface Option extends Pick<BaseOption, 'emit'> { listModel: ModelRef<ListDataItem[]>; currentModel: ModelRef<number>; } } /** * useMove */ export declare namespace USEMove { interface Option extends MoveShare { currentModel: ModelRef<number>; } } /** * useResize */ export declare namespace USEResize { interface Option extends ResizeShare { currentModel: ModelRef<number>; } } /** * useScale */ export declare namespace USEScale { interface Option extends ScaleShare, Pick<BaseOption, 'props'> { currentModel: ModelRef<number>; } } export {};