import { BaseFabricObject } from 'fabric'; import { default as default_2 } from 'react'; import { FabricImage } from 'fabric'; import { FabricObjectProps } from 'fabric'; import { FabricText } from 'fabric'; import { ImageFormat } from 'fabric'; import { ImageProps } from 'fabric'; import { ImageSource } from 'fabric'; import { JSX } from 'react'; import { JSXElementConstructor } from 'react'; import { ObjectEvents } from 'fabric'; import { Pattern } from 'fabric'; import { PropsWithChildren } from 'react'; import { ReactElement } from 'react'; import { ReactNode } from 'react'; import { ReactPortal } from 'react'; import { Rect } from 'fabric'; import { RectProps } from 'fabric'; import { Required as Required_2 } from 'utility-types'; import { SerializedImageProps } from 'fabric'; import { SerializedRectProps } from 'fabric'; import { Shadow } from 'fabric'; import { StaticCanvas } from 'fabric'; import { StaticCanvasEvents } from 'fabric'; import { TClassProperties } from 'fabric'; import { TDegree } from 'fabric'; import { TextProps } from 'fabric'; import { TFiller } from 'fabric'; import { TOptions } from 'fabric'; import { TOriginX } from 'fabric'; import { TOriginY } from 'fabric'; import { UploadProps } from 'antd'; export declare type Block = BlockViewport | BlockBackground | BlockImage | BlockWaterMark; export declare type Block4Content = BlockBackground | BlockImage; /** * 画布根块 * @description 实现背景替换等接口 */ export declare class BlockBackground = Partial, SProps extends SerializedBlockBackgroundProps = SerializedBlockBackgroundProps, EventSpec extends ObjectEvents = ObjectEvents> extends Rect implements IBlock { static patternFromURL(url: string, size: Pick): Promise; static fromColour(hex: string, size: Pick): Promise>; static fromURL(url: string, size: Pick): Promise>; blockType: BlockTypes; _fill: string | TFiller | null; get fill(): string | TFiller | null; set fill(v: string | TFiller | null); constructor(props?: Props); toggleSelectable(): void; toObject, keyof SProps>, K extends keyof T = never>(propertiesToInclude?: K[]): Pick & SProps; } declare interface BlockBackgroundProps extends RectProps, IBlock { } declare interface BlockBackgroundProps_2 extends ImageProps, IBlock { } /** * 图片块 * @description 实现滤镜、风格话等各种图片操作接口 */ export declare class BlockImage = Partial, SProps extends SerializedBlockImageProps = SerializedBlockImageProps, EventSpec extends ObjectEvents = ObjectEvents> extends FabricImage implements IBlock { blockType: BlockTypes; constructor(elementId: string, options?: Props); constructor(element: ImageSource, options?: Props); toObject, keyof SProps>, K extends keyof T = never>(propertiesToInclude?: K[]): Pick & SProps; } export declare enum BlockTypes { Viewport = "viewport", Background = "background", Image = "image", WaterMark = "waterMark" } /** * 画布根块 * @description 实现背景替换等接口 */ export declare class BlockViewport = Partial, SProps extends SerializedBlockViewportProps = SerializedBlockViewportProps, EventSpec extends ObjectEvents = ObjectEvents> extends Rect implements IBlock { blockType: BlockTypes; constructor(props?: Props); fill: TFiller | string | null; cloneWithoutFill(): Promise; toObject, keyof SProps>, K extends keyof T = never>(propertiesToInclude?: K[]): Pick & SProps; } declare interface BlockViewportProps extends RectProps, IBlock { } /** * 水印块 * @description 实现水印等接口 */ export declare class BlockWaterMark, 'width' | 'height'> = Required_2, SProps extends SerializedBlockWaterMarkProps = SerializedBlockWaterMarkProps, EventSpec extends ObjectEvents = ObjectEvents> extends Rect implements IBlock { blockType: BlockTypes; objectCaching: boolean; selectable: boolean; evented: boolean; hasControls: boolean; static fromURL({ value, props }: WaterMark, rectOpts: Required_2, 'width' | 'height'>): Promise; minScaleLimit?: number | undefined; objectCaching?: boolean | undefined; includeDefaultValues?: boolean | undefined; excludeFromExport?: boolean | undefined; opacity?: number | undefined; globalCompositeOperation?: GlobalCompositeOperation | undefined; backgroundColor?: string | undefined; visible?: boolean | undefined; originX?: TOriginX | undefined; originY?: TOriginY | undefined; angle?: TDegree | undefined; flipX?: boolean | undefined; flipY?: boolean | undefined; scaleX?: number | undefined; scaleY?: number | undefined; skewX?: TDegree | undefined; skewY?: TDegree | undefined; paintFirst?: "fill" | "stroke" | undefined; fillRule?: CanvasFillRule | undefined; strokeWidth?: number | undefined; strokeDashArray?: number[] | null | undefined; strokeDashOffset?: number | undefined; strokeLineCap?: CanvasLineCap | undefined; strokeLineJoin?: CanvasLineJoin | undefined; strokeMiterLimit?: number | undefined; strokeUniform?: boolean | undefined; inverted?: boolean | undefined; absolutePositioned?: boolean | undefined; snapAngle?: TDegree | undefined; snapThreshold?: TDegree | undefined; centeredRotation?: boolean | undefined; centeredScaling?: boolean | undefined; cornerSize?: number | undefined; touchCornerSize?: number | undefined; transparentCorners?: boolean | undefined; cornerColor?: string | undefined; cornerStrokeColor?: string | undefined; cornerStyle?: "rect" | "circle" | undefined; cornerDashArray?: number[] | null | undefined; padding?: number | undefined; hasControls?: boolean | undefined; borderColor?: string | undefined; borderDashArray?: number[] | null | undefined; hasBorders?: boolean | undefined; borderOpacityWhenMoving?: number | undefined; borderScaleFactor?: number | undefined; lockMovementX?: boolean | undefined; lockMovementY?: boolean | undefined; lockRotation?: boolean | undefined; lockScalingX?: boolean | undefined; lockScalingY?: boolean | undefined; lockSkewingX?: boolean | undefined; lockSkewingY?: boolean | undefined; lockScalingFlip?: boolean | undefined; rx?: number | undefined; ry?: number | undefined; width: number; height: number; }, SerializedBlockWaterMarkProps, ObjectEvents>>; static fromText({ value, props }: WaterMark, rectOpts: Required_2, 'width' | 'height'>): Promise; minScaleLimit?: number | undefined; objectCaching?: boolean | undefined; includeDefaultValues?: boolean | undefined; excludeFromExport?: boolean | undefined; opacity?: number | undefined; globalCompositeOperation?: GlobalCompositeOperation | undefined; backgroundColor?: string | undefined; visible?: boolean | undefined; originX?: TOriginX | undefined; originY?: TOriginY | undefined; angle?: TDegree | undefined; flipX?: boolean | undefined; flipY?: boolean | undefined; scaleX?: number | undefined; scaleY?: number | undefined; skewX?: TDegree | undefined; skewY?: TDegree | undefined; paintFirst?: "fill" | "stroke" | undefined; fillRule?: CanvasFillRule | undefined; strokeWidth?: number | undefined; strokeDashArray?: number[] | null | undefined; strokeDashOffset?: number | undefined; strokeLineCap?: CanvasLineCap | undefined; strokeLineJoin?: CanvasLineJoin | undefined; strokeMiterLimit?: number | undefined; strokeUniform?: boolean | undefined; inverted?: boolean | undefined; absolutePositioned?: boolean | undefined; snapAngle?: TDegree | undefined; snapThreshold?: TDegree | undefined; centeredRotation?: boolean | undefined; centeredScaling?: boolean | undefined; cornerSize?: number | undefined; touchCornerSize?: number | undefined; transparentCorners?: boolean | undefined; cornerColor?: string | undefined; cornerStrokeColor?: string | undefined; cornerStyle?: "rect" | "circle" | undefined; cornerDashArray?: number[] | null | undefined; padding?: number | undefined; hasControls?: boolean | undefined; borderColor?: string | undefined; borderDashArray?: number[] | null | undefined; hasBorders?: boolean | undefined; borderOpacityWhenMoving?: number | undefined; borderScaleFactor?: number | undefined; lockMovementX?: boolean | undefined; lockMovementY?: boolean | undefined; lockRotation?: boolean | undefined; lockScalingX?: boolean | undefined; lockScalingY?: boolean | undefined; lockSkewingX?: boolean | undefined; lockSkewingY?: boolean | undefined; lockScalingFlip?: boolean | undefined; rx?: number | undefined; ry?: number | undefined; width: number; height: number; }, SerializedBlockWaterMarkProps, ObjectEvents>>; static fromWatermark(object: FabricImage | FabricText, rectOpts: Required_2, 'width' | 'height'>, offsetX?: number, offsetY?: number): Promise; minScaleLimit?: number | undefined; objectCaching?: boolean | undefined; includeDefaultValues?: boolean | undefined; excludeFromExport?: boolean | undefined; opacity?: number | undefined; globalCompositeOperation?: GlobalCompositeOperation | undefined; backgroundColor?: string | undefined; visible?: boolean | undefined; originX?: TOriginX | undefined; originY?: TOriginY | undefined; angle?: TDegree | undefined; flipX?: boolean | undefined; flipY?: boolean | undefined; scaleX?: number | undefined; scaleY?: number | undefined; skewX?: TDegree | undefined; skewY?: TDegree | undefined; paintFirst?: "fill" | "stroke" | undefined; fillRule?: CanvasFillRule | undefined; strokeWidth?: number | undefined; strokeDashArray?: number[] | null | undefined; strokeDashOffset?: number | undefined; strokeLineCap?: CanvasLineCap | undefined; strokeLineJoin?: CanvasLineJoin | undefined; strokeMiterLimit?: number | undefined; strokeUniform?: boolean | undefined; inverted?: boolean | undefined; absolutePositioned?: boolean | undefined; snapAngle?: TDegree | undefined; snapThreshold?: TDegree | undefined; centeredRotation?: boolean | undefined; centeredScaling?: boolean | undefined; cornerSize?: number | undefined; touchCornerSize?: number | undefined; transparentCorners?: boolean | undefined; cornerColor?: string | undefined; cornerStrokeColor?: string | undefined; cornerStyle?: "rect" | "circle" | undefined; cornerDashArray?: number[] | null | undefined; padding?: number | undefined; hasControls?: boolean | undefined; borderColor?: string | undefined; borderDashArray?: number[] | null | undefined; hasBorders?: boolean | undefined; borderOpacityWhenMoving?: number | undefined; borderScaleFactor?: number | undefined; lockMovementX?: boolean | undefined; lockMovementY?: boolean | undefined; lockRotation?: boolean | undefined; lockScalingX?: boolean | undefined; lockScalingY?: boolean | undefined; lockSkewingX?: boolean | undefined; lockSkewingY?: boolean | undefined; lockScalingFlip?: boolean | undefined; rx?: number | undefined; ry?: number | undefined; width: number; height: number; }, SerializedBlockWaterMarkProps, ObjectEvents>>; constructor(props: Props); toObject, keyof SProps>, K extends keyof T = never>(propertiesToInclude?: K[]): Pick & SProps; } declare interface BlockWaterMarkProps extends RectProps, IBlock { } export declare const defaultMaxPort: { width: number; height: number; }; export declare const DefaultPicexContext: IPicexContext; declare interface DesignProps { viewport?: Size; maxport?: Size; images?: PicexContentActionInit['images']; watermark?: WaterMark; historable?: boolean; uploadProps?: UploadBoxProps; downloadProps?: DownloadProps; enableOperators?: boolean; childrenZeroBlock?: default_2.ReactNode; onlyChildren?: boolean; lang?: string; childNode?: { [key: string]: default_2.ReactNode; }; activeToolKey?: string; } declare type DownloadProps = { format?: ImageFormat; filename?: string; }; export declare type IBlock = Pick & { blockType: BlockTypes; }; export declare const IBlockPropKeys: readonly ["blockType"]; export declare type IPicexToolRenderParams = { ctx: IPicexContext; dispatch: IPicexDispatch; tool?: PicexTool; }; export declare const PicexContext: default_2.Context; export declare const PicexDispatchContext: default_2.Context; export declare function PicexEditor({ tools, initialSelectedTool, activeToolKey, multiple, historable, images, watermark, viewport, children, childrenZeroBlock, left, right, layout, uploadProps, downloadProps, onlyChildren, onToolChange, lang, childNode, }: DesignProps & PropsWithChildren<{ lang?: string; tools?: PicexTool[]; multiple?: boolean; initialSelectedTool?: string; activeToolKey?: string; onToolChange?: (key: string) => void; left?: PropsWithChildren<{ style?: default_2.CSSProperties; className?: string; }>; right?: PropsWithChildren<{ style?: default_2.CSSProperties; className?: string; }>; layout?: { leftStyle?: default_2.CSSProperties; rightStyle?: default_2.CSSProperties; contentStyle?: default_2.CSSProperties; leftClassName?: string; rightClassName?: string; contentClassName?: string; }; childNode?: { [key: string]: default_2.ReactNode; }; }>): default_2.JSX.Element; export declare abstract class PicexTool { abstract key: string; abstract name: string; abstract visible: boolean; abstract disabled: boolean; toggle(v?: boolean): void; toggleDisabled(v?: boolean): void; abstract renderIcon(params: IPicexToolRenderParams): ReactNode; abstract renderPanel(params: IPicexToolRenderParams): ReactNode; renderOutput?(params: IPicexToolRenderParams): ReactNode; } export declare class PicexToolBackground extends PicexTool { protected props?: PicexToolBackgroundProps | undefined; key: string; name: any; visible: boolean; disabled: boolean; constructor(props?: PicexToolBackgroundProps | undefined); renderIcon(): JSX.Element; /** * 实现更改BlockCanvas纯色背景、图片背景的功能 */ renderPanel({ ctx, dispatch }: IPicexToolRenderParams): JSX.Element; } declare type PicexToolBackgroundProps = DesignProps & UploadBoxProps & { name?: string; maxColours?: number; maxImages?: number; }; export declare class PicexToolCustom extends PicexTool { protected props?: PicexToolCustomProps | undefined; key: string; name: string; visible: boolean; disabled: boolean; constructor(props?: PicexToolCustomProps | undefined); renderIcon(): string | number | bigint | true | Iterable | Promise> | Iterable | null | undefined> | JSX.Element; renderPanel({ ctx, dispatch }: IPicexToolRenderParams): JSX.Element; } declare type PicexToolCustomProps = { key?: string; name?: string; disabled?: boolean; visible?: boolean; panelChildren?: React.ReactNode; icon?: React.ReactNode; }; export declare class PicexToolResize extends PicexTool { key: string; icon: string; name: string; visible: boolean; disabled: boolean; renderIcon(): null; /** * 实现更改BlockCanvas大小的功能 */ renderPanel(): null; } declare interface SerializedBlockBackgroundProps extends SerializedRectProps, IBlock { } declare interface SerializedBlockImageProps extends SerializedImageProps, IBlock { } declare interface SerializedBlockViewportProps extends SerializedRectProps, IBlock { } declare interface SerializedBlockWaterMarkProps extends SerializedRectProps, IBlock { canvas: StaticCanvas; } declare type UploadBoxProps = Omit>, 'children'> & { err?: default_2.ReactNode; visible?: boolean; hidden?: boolean; icon?: default_2.ReactNode; iconClassName?: string; wordings?: default_2.ReactNode; wordingsClassName?: string; className?: string; children?: (x: { loading: boolean; error: Error | null; }) => default_2.ReactNode; }; declare type UploadFileAttrs = { url: string; width: number; height: number; }; export declare const usePicexCtx: () => IPicexContext; export declare const usePicexDispatch: () => IPicexDispatch; declare interface WaterMark { value: string; props?: Partial | Partial; } export { } declare global { interface Size { width: number; height: number; } interface IPicexContext { naturalSize?: Size; displaySize?: Size; watermark: string; blocks: Block[]; tools: PicexTool[]; currentBlock: Block | null; fcanvas: Canvas | null; error?: null | Error; elMenuWrapper: React.RefObject; elCanvasWrapper: React.RefObject; elBlockTreeWrapper: React.RefObject; elPropertiesWrapper: React.RefObject; } type PicexContentActionInit = { type: 'init'; images: Array; naturalSize?: Size; displaySize?: Size; }; type PicexContentActionCover = { type: 'cover'; blocks: Block[]; }; type PicexContentActionMount = { type: 'mount'; fcanvas: Canvas; }; type PicexContentActionAddWatermark = { type: 'addWatermark'; block: BlockWaterMark; }; type PicexContentActionAddBlock = { type: 'addBlock'; block: Block4Content; }; type PicexContentActionUpdateBlock = { type: 'updateBlock'; block: Block; payload?: Record; }; type PicexContentActionRemoveBlock = { type: 'removeBlock'; block: Block; }; type PicexContextAction = PicexContentActionInit | PicexContentActionCover | PicexContentActionMount | PicexContentActionAddWatermark | PicexContentActionAddBlock | PicexContentActionUpdateBlock | PicexContentActionRemoveBlock; type IPicexDispatch = React.Dispatch; } declare module 'fabric' { interface FabricObject { id?: string; } interface SerializedObjectProps { id?: string; } } declare module 'fabric' { interface Canvas { history?: FabricHistory; } interface CanvasEvents { 'history:append': () => void; 'history:clear': () => void; 'history:undo': () => void; 'history:redo': () => void; } }