UNPKG

@ezuikit/theme-simple

Version:

极简主题

320 lines (314 loc) 9.85 kB
import * as _ezuikit_utils_service_dist_types_fetch from '@ezuikit/utils-service/dist/types/fetch'; import * as EZopenPlayer from '@ezuikit/player-ezopen'; import EZopenPlayer__default, { EZopenPlayerOptions, WaterMarkParams, MirrorFlipCommand } from '@ezuikit/player-ezopen'; export { EZopenPlayerOptions } from '@ezuikit/player-ezopen'; import { LoggerCls } from '@ezuikit/utils-logger'; import { EzopenURL } from '@ezuikit/utils-tools'; import Service from '@ezuikit/utils-service'; import EventEmitter from 'eventemitter3'; import I18n from '@ezuikit/utils-i18n'; interface ISimpleThemeOptions extends EZopenPlayerOptions { poster?: string; ignoreDownloadSnapshot?: false; customErrorDom?: string; errorWrapClassName?: string; customLoadingDom?: string; loadingText?: string; initText?: string; } interface MessageOptions { errorWrapClassName?: string; customErrorHtml?: string | (() => string) | null; } declare class Message { private readonly _options; $messageContainer: HTMLDivElement; private _timer; _prefixCls: string; constructor(id: string, options?: MessageOptions); /** * @description 展示错误 * @param {string} html 错误内容 * @param {number} duration 自动关闭的延时(单位秒) 默认0 不自动关闭 * @returns {void} */ show(html: string, duration?: number): void; showError(html: string, duration?: number): void; /** * @description 隐藏错误 * @param {boolean} clear 是否清除内容 默认不清楚 * @returns {void} */ hide(clear?: boolean): void; /** * @description 清除错误内容并隐藏 * @returns {void} */ clear(): void; /** * @private */ private _show; /** * @private */ private _hide; /** * @description 销毁错误 * @example * ```js * error.destroy() * ``` */ destroy(): void; } interface LoadingOptions { customLoadingHtml?: string | null; loadingText?: string | null; loadingClass?: string; } declare class Loading { private readonly _options; $loadingContainer: HTMLElement; _prefixCls: string; private readonly _$container; private _loading; constructor(id: string, options?: LoadingOptions); /** * @description loading 态 */ get loading(): boolean; /** * @description 展示loading * @param {string} html 展示内容 支持 html dom 字符串 * @returns {void} */ show(html?: string): void; /** * @description 隐藏loading * @param {boolean} clear 是否清除内容 默认不清楚 * @returns {void} */ hide(): void; /** * @description 销毁错误 * @example * ```js * loading.destroy() * ``` */ destroy(): void; private _renderHtml; } type ThemePlugin = (player?: EZopenPlayer__default) => void; declare class SimpleTheme { $container: HTMLElement; message: Message; version: '__VERSION__'; /** * 插件名是唯一的, 后面插入的同名插件会覆盖前一个 */ static plugins: Map<string, ThemePlugin>; loading: Loading; player: EZopenPlayer__default; logger: LoggerCls; i18n: I18n; event: EventEmitter; service: Service; _options: ISimpleThemeOptions; urlInfo: Partial<EzopenURL>; constructor(options: ISimpleThemeOptions); /** * @description 播放 * @param options * @returns */ play(options?: Partial<Pick<EZopenPlayerOptions, 'url' | 'accessToken'>>): Promise<unknown>; /** * @description 暂停播放 并断流 * @param {boolean} stopStream 是否断流 * @returns */ pause(stopStream?: boolean): Promise<unknown>; /** * @description 恢复 * @param {string} time 回放播放的开始时间 格式(YYYYMMDDhhmmss) * @returns */ resume(time: string): Promise<unknown>; /** * @description 断流并停止播放, 不可恢复(resume) */ stop(): Promise<unknown>; /** * @description 销毁(播放器和dom)并断流 * @returns */ destroy(): Promise<void>; /** * @description 截图 * @param {string} name 文件名 默认时间戳(new Date().getTime()) * @param {"jpeg"} fmt 图片格式 只支持 jpeg * @param {"base64"} type 文件格式 默认base64 * @param {boolean} download 是否直接下载 默认不直接下载 * @returns 返回base64字符 */ snapshot(name?: string, fmt?: 'jpeg', type?: 'base64', download?: boolean): Promise<EZopenPlayer.IResult<{ fileName?: string | undefined; base64?: string | undefined; } | null>>; /** * @description 设置画面尺寸, resize的值会被记录 * @param width 画面宽 * @param height 画面高 * @returns {Promise} */ resize(width?: number, height?: number): Promise<{ width: number; height: number; }>; /** * * @returns */ /** * @description 全屏, 这里宽和高不会被记录, resize的值会被记录 * @param {number} width 画面宽 * @param {number} height 画面高 * @returns {Promise} */ fullScreen(width?: number, height?: number): Promise<void>; /** * @description 退出全屏 * @returns */ exitScreen(): Promise<void>; /** * 设置音量 * @param volume 音量 0:表示静音 * @returns */ setVolume(volume: number): number | undefined; /** * @description 获取帧信息 * @returns {object} */ getFrameInfo(): { codecType: number; width: number; height: number; year: number; month: number; day: number; hour: number; minute: number; second: number; }; /** * @description 设置播放视频区域 (仅视频不是画布) * @param {number} left 视频展示区域 x轴开始位置 * @param {number} right 视频展示区域 x轴结束位置 * @param {number} top 视频展示区域 y轴开始位置 * @param {number} bottom 视频展示区域 y轴结束位置 * @param {boolean} flag * @param {boolean} isFullscreen 当页面旋转 90° 时 需要宽高互换 需要 设置为true * @returns {boolean} */ setDisplayRegion(left: number, right: number, top: number, bottom: number, flag?: boolean, isFullscreen?: boolean): boolean; /** * @description 获取当前正在播放视频的时间 (单位秒(s)) * @returns {number} */ getOSDTime(): number; /** * @description 插件管理 * @param {PlayerPlugin} plugin 插件 */ use(plugin: any): void; /** * @description 设置矫正类型和分屏的id * @param {Object} type 矫正类型 参考 src/ezopen/constants.js * @param {string=} ids 如果分屏矫正,需要传入分屏canvas的id字符串列表 如 canvas1,canvas2,canvas3 * @returns {Array<{code: number, msg: string, port: number, id: string}>} // code= 0 成功, -1 失败 * @returns */ setFECCorrectType(type: any, ids?: string): Promise<unknown>; /** * @description 设置 2D 鱼眼矫正旋转参数 * @param {number} fishSubPort 鱼眼端口 主屏默认为 0 * @param {Object} param2d */ setFEC2DParam(fishSubPort: number, param2d: object): any; /** * @description 设置 3D 矫正视角参数 * @param {object} param * @returns {Promise<boolean>} true: 成功 false: 失败 undefined: 不支持 */ setFEC3DViewParam(param: object): Promise<boolean>; /** * @description 获取 3D 矫正视角参数 * @param {object} param * @returns {Promise<object>} */ get3DViewParam(param: object): Promise<unknown>; /** * 设置封面 * @param {string} poster 封面封面地址 * @returns {void} * */ setPoster(poster: string): void; /** * @description 设置播放速度 仅回放生效 (本地回放设置倍速需要设备本身支持) * @param {0.5 | 1 | 2 | 4} rate 2的倍数 * @returns * * @FIXME: */ setPlaybackRate(rate: number): void; /** * @description 设置回放开始取流的时间(sdk 回放需要设备本身支持) * @param {string} startTime 开始时间 YYYYMMDDThhmmssZ * @param {string} stopTime 开始时间 YYYYMMDDThhmmssZ */ seek(startTime: string, stopTime: string): Promise<void>; /** * @description 获取配置 * @returns */ getOptions(): ISimpleThemeOptions; /** * @description 获取版本号 * @returns {string} */ getVersion(): string; /** * @description 设置水印 * @param {WaterMarkParams} params * @returns {Promise<any>} */ setWaterMarkFont(params: WaterMarkParams): Promise<unknown>; /** * @description 镜像翻转 (需要设备本身支持, 可以重能力集中获取) * @link https://open.ys7.com/help/59?h=%E9%95%9C%E5%83%8F%E7%BF%BB%E8%BD%AC#device_ptz-api3 * @param {MirrorFlipCommand} command 0-上下, 1-左右, 2-中心 * * @returns {Promise} */ setMirrorFlip(command: MirrorFlipCommand): Promise<_ezuikit_utils_service_dist_types_fetch.Response<any, undefined>>; /** * @description 安装插件 * @param plugins */ static install(name: string, plugin: any): void; /** * @description 批量安装插件 * @param plugins */ static installs(plugins: Array<{ name: string; plugin: any; }>): void; private _registerEvents_; } export { type ISimpleThemeOptions, type ThemePlugin, SimpleTheme as default };