UNPKG

js-web-screen-shot

Version:

web端自定义截屏插件(原生JS版)

111 lines (110 loc) 3.75 kB
import type { CropBoxBounds, CropBoxPreset } from "../../../lib/type/components/cropBox"; import type { ToolVisibilityMap, ToolPlacement, UserToolbarItem } from "../../../lib/type/components/toolbar"; import type { CanvasEventCallbacks, RightClickEventConfig } from "../../../lib/type/components/events"; import type { CanvasElementSnapshot } from "../../../lib/type/components/canvas"; import type { CustomCanvasElementAdapter } from "../../../lib/type/components/customElement"; export type HiddenScrollbarOptions = { state: boolean; color?: string; fillWidth?: number; fillHeight?: number; fillState?: boolean; }; export type ViewportOffset = { top: number; left: number; }; export type ImageSize = { w: number; h: number; }; export type ScreenShotCaptureSourceOption = "display-media" | "injected-stream" | "dom" | "snapdom" | "image"; export type ScreenShotRenderMode = "browser-frame" | "window-frame"; export type ScreenShotCursorCapture = "always" | "motion" | "never"; export type SnapDomCaptureOptions = Record<string, unknown>; export type SnapDomRenderer = { toCanvas: (element: HTMLElement, options?: SnapDomCaptureOptions) => Promise<HTMLCanvasElement>; }; export type ScreenShotCaptureOptions = { source?: ScreenShotCaptureSourceOption; render?: ScreenShotRenderMode; cursor?: ScreenShotCursorCapture; stream?: MediaStream; imageSrc?: string; snapdom?: SnapDomRenderer; snapdomOptions?: SnapDomCaptureOptions; }; export type CanvasExportType = "image/png" | "image/jpeg" | "image/webp"; export type CanvasExportOptions = { type?: CanvasExportType; quality?: number; }; export type ScreenShotOptions = { x?: number; y?: number; capture?: ScreenShotCaptureOptions; enableWebRtc?: boolean; screenFlow?: MediaStream; level?: number; menuBarHeight?: number; canvasWidth?: number; canvasHeight?: number; completeCallback?: (imgInfo: { base64: string; cutInfo: CropBoxBounds; }) => void; closeCallback?: () => void; h2cImgLoadErrCallback?: (err: Event & { imgUrl: string; }) => void; triggerCallback?: (res: { code: number; msg: string; displaySurface: string | null; displayLabel: string | null; }) => void; cancelCallback?: (res: { code: number; msg: string; errorInfo: string; }) => void; saveCallback?: (code: number, msg: string, base64: string) => void; position?: Partial<ViewportOffset>; clickCutFullScreen?: boolean; hiddenToolIco?: ToolVisibilityMap; showScreenData?: boolean; imgSrc?: string; loadCrossImg?: boolean; proxyUrl?: string; useCORS?: boolean; screenShotDom?: HTMLElement | HTMLDivElement | HTMLCanvasElement; cropBoxInfo?: CropBoxPreset; wrcReplyTime?: number; wrcImgPosition?: CropBoxPreset; noScroll?: boolean; maskColor?: { r: number; g: number; b: number; a: number; }; toolPosition?: ToolPlacement; writeBase64?: boolean; exportOptions?: CanvasExportOptions; hiddenScrollBar?: HiddenScrollbarOptions; wrcWindowMode?: boolean; customRightClickEvent?: RightClickEventConfig; cutBoxBdColor?: string; maxUndoNum?: number; useRatioArrow?: boolean; imgAutoFit?: boolean; useCustomImgSize?: boolean; customImgSize?: ImageSize; saveImgTitle?: string; destroyContainer?: boolean; userToolbar?: Array<UserToolbarItem>; canvasEvents?: CanvasEventCallbacks; customElementAdapters?: Array<CustomCanvasElementAdapter>; h2cIgnoreElementsCallback?: (element: Element) => boolean; canvasElements?: Array<CanvasElementSnapshot>; };