85 lines
1.8 KiB
JavaScript
85 lines
1.8 KiB
JavaScript
/* @flow */
|
|
import { map } from 'ramda'
|
|
|
|
export let capitalise0 = (name: string) => name[0].toUpperCase() + name.slice(1)
|
|
|
|
export let getUrl = () => window.location.href.toString()
|
|
|
|
export let parseDataAttributes = (value: any) =>
|
|
value === 'undefined'
|
|
? undefined
|
|
: value === null
|
|
? null
|
|
: !isNaN(value)
|
|
? +value
|
|
: /* value is a normal string */
|
|
value
|
|
|
|
export let getIframeOption = (optionName: string) => {
|
|
let url = getUrl(),
|
|
hasOption = url.includes(optionName + '=')
|
|
return parseDataAttributes(
|
|
hasOption && url.split(optionName + '=')[1].split('&')[0]
|
|
)
|
|
}
|
|
|
|
export function isNumeric(val: number) {
|
|
return Number(parseFloat(val)) === val
|
|
}
|
|
|
|
export function debounce<ArgType: any>(
|
|
timeout: number,
|
|
fn: ArgType => void
|
|
): ArgType => void {
|
|
let timeoutId
|
|
return (...args) => {
|
|
clearTimeout(timeoutId)
|
|
timeoutId = setTimeout(() => fn(...args), timeout)
|
|
}
|
|
}
|
|
|
|
export function isIE() {
|
|
return (
|
|
navigator.appName == 'Microsoft Internet Explorer' ||
|
|
(navigator.appName == 'Netscape' &&
|
|
new RegExp('Trident/.*rv:([0-9]{1,}[.0-9]{0,})').exec(
|
|
navigator.userAgent
|
|
) != null)
|
|
)
|
|
}
|
|
|
|
export const mapDispatchWithRouter = (actionCreators: Object) => (
|
|
dispatch: (...any) => void,
|
|
ownProps: Object
|
|
) =>
|
|
map(
|
|
actionCreator => (...args) =>
|
|
dispatch(actionCreator(...args, ownProps.router)),
|
|
actionCreators
|
|
)
|
|
|
|
export function inIframe() {
|
|
try {
|
|
return window.self !== window.top
|
|
} catch (e) {
|
|
return true
|
|
}
|
|
}
|
|
|
|
export const normalizeBasePath = (basePath: string) =>
|
|
basePath + (basePath.endsWith('/') ? '' : '/')
|
|
|
|
export function softCatch<ArgType: any, ReturnType: any>(
|
|
fn: ArgType => ReturnType
|
|
): ArgType => ReturnType | null {
|
|
return function(...args) {
|
|
try {
|
|
return fn(...args)
|
|
} catch (e) {
|
|
// eslint-disable-next-line no-console
|
|
console.warn(e)
|
|
return null
|
|
}
|
|
}
|
|
}
|