|
|
|
|
|
import window from './window'; |
|
|
|
let navigator = window ? window.navigator : null; |
|
let document = window ? window.document : null; |
|
|
|
let typeofstr = typeof ''; |
|
let typeofobj = typeof {}; |
|
let typeoffn = typeof function(){}; |
|
let typeofhtmlele = typeof HTMLElement; |
|
|
|
let instanceStr = function( obj ){ |
|
return obj && obj.instanceString && fn( obj.instanceString ) ? obj.instanceString() : null; |
|
}; |
|
|
|
export const defined = obj => |
|
obj != null; |
|
|
|
export const string = obj => |
|
obj != null && typeof obj == typeofstr; |
|
|
|
export const fn = obj => |
|
obj != null && typeof obj === typeoffn; |
|
|
|
export const array = obj => |
|
!(elementOrCollection(obj)) && (Array.isArray ? Array.isArray( obj ) : obj != null && obj instanceof Array); |
|
|
|
export const plainObject = obj => |
|
obj != null && typeof obj === typeofobj && !array( obj ) && obj.constructor === Object; |
|
|
|
export const object = obj => |
|
obj != null && typeof obj === typeofobj; |
|
|
|
export const number = obj => |
|
obj != null && typeof obj === typeof 1 && !isNaN( obj ); |
|
|
|
export const integer = obj => |
|
number( obj ) && Math.floor( obj ) === obj; |
|
|
|
export const bool = obj => |
|
obj != null && typeof obj === typeof true; |
|
|
|
export const htmlElement = obj => { |
|
if( 'undefined' === typeofhtmlele ){ |
|
return undefined; |
|
} else { |
|
return null != obj && obj instanceof HTMLElement; |
|
} |
|
}; |
|
|
|
export const elementOrCollection = obj => |
|
element( obj ) || collection( obj ); |
|
|
|
export const element = obj => |
|
instanceStr( obj ) === 'collection' && obj._private.single; |
|
|
|
export const collection = obj => |
|
instanceStr( obj ) === 'collection' && !obj._private.single; |
|
|
|
export const core = obj => |
|
instanceStr( obj ) === 'core'; |
|
|
|
export const style = obj => |
|
instanceStr( obj ) === 'style'; |
|
|
|
export const stylesheet = obj => |
|
instanceStr( obj ) === 'stylesheet'; |
|
|
|
export const event = obj => |
|
instanceStr( obj ) === 'event'; |
|
|
|
export const thread = obj => |
|
instanceStr( obj ) === 'thread'; |
|
|
|
export const fabric = obj => |
|
instanceStr( obj ) === 'fabric'; |
|
|
|
export const emptyString = obj => { |
|
if( obj === undefined || obj === null ){ |
|
return true; |
|
} else if( obj === '' || obj.match( /^\s+$/ ) ){ |
|
return true; |
|
} |
|
|
|
return false; |
|
}; |
|
|
|
export const nonemptyString = obj => { |
|
if( obj && string( obj ) && obj !== '' && !obj.match( /^\s+$/ ) ){ |
|
return true; |
|
} |
|
|
|
return false; |
|
}; |
|
|
|
export const domElement = obj => { |
|
if( typeof HTMLElement === 'undefined' ){ |
|
return false; |
|
} else { |
|
return obj instanceof HTMLElement; |
|
} |
|
}; |
|
|
|
export const boundingBox = obj => |
|
plainObject( obj ) && |
|
number( obj.x1 ) && number( obj.x2 ) && |
|
number( obj.y1 ) && number( obj.y2 ) |
|
; |
|
|
|
export const promise = obj => |
|
object( obj ) && fn( obj.then ); |
|
|
|
export const touch = () => |
|
window && ( ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch ); |
|
|
|
export const gecko = () => |
|
window && ( typeof InstallTrigger !== 'undefined' || ('MozAppearance' in document.documentElement.style) ); |
|
|
|
export const webkit = () => |
|
window && ( typeof webkitURL !== 'undefined' || ('WebkitAppearance' in document.documentElement.style) ); |
|
|
|
export const chromium = () => |
|
window && ( typeof chrome !== 'undefined' ); |
|
|
|
export const khtml = () => |
|
navigator && navigator.vendor.match( /kde/i ); |
|
|
|
export const khtmlEtc = () => |
|
khtml() || webkit() || chromium(); |
|
|
|
export const ms = () => |
|
navigator && navigator.userAgent.match( /msie|trident|edge/i ); |
|
|
|
export const windows = () => |
|
navigator && navigator.appVersion.match( /Win/i ); |
|
|
|
export const mac = () => |
|
navigator && navigator.appVersion.match( /Mac/i ); |
|
|
|
export const linux = () => |
|
navigator && navigator.appVersion.match( /Linux/i ); |
|
|
|
export const unix = () => |
|
navigator && navigator.appVersion.match( /X11/i ); |
|
|