UNPKG

@oplayer/core

Version:

Oh! Another HTML5 video player.

33 lines (26 loc) 920 B
export function isObject(item: unknown): item is Record<string, unknown> { return Boolean(item && typeof item === 'object' && !Array.isArray(item)) } export function mergeDeep<T>(target: T, ...sources: T[]): T { if (!sources.length) return target const source = sources.shift() if (isObject(target) && isObject(source)) { for (const key in source) { if (isObject(source[key])) { if (!target[key]) Object.assign(target, { [key]: {} }) mergeDeep(target[key] as T, source[key] as T) } else { Object.assign(target, { [key]: source[key] }) } } } return mergeDeep(target, ...sources) } export function isPlainObject(obj: any): boolean { if (typeof obj !== 'object' || obj === null) return false let proto = obj while (Object.getPrototypeOf(proto) !== null) { proto = Object.getPrototypeOf(proto) } return Object.getPrototypeOf(obj) === proto }