import * as sort from './sort' export { sort } export const is_iphone = !!((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) export const is_ipad = !!(navigator.userAgent.match(/iPad/i)) export const is_android = !!(navigator.userAgent.match(/Android/i)) export const is_mobile = is_iphone || is_ipad || is_android export const is_desktop = ! is_mobile; const htmlClassList = document.body.parentNode.classList htmlClassList.add(is_desktop ? 'desktop' : 'mobile') htmlClassList.remove('loading') // window.debug = false export function clamp(n,a,b) { return n radix) { n /= radix nums.unshift(r((n * 10) % 10)) nums.unshift(".") } do { i = n % 10 n = r(n / 10) if (n && ! (++counter % 3)) { i = ' ' + r(i) } nums.unshift(r(i)) } while (n) return nums.join("") } export function carbon_date (date, no_bold) { var span = (+new Date() - new Date(date)) / 1000, color if (! no_bold && span < 86400) // modified today { color = "new" } else if (span < 604800) // modifed this week { color = "recent" } else if (span < 1209600) // modifed 2 weeks ago { color = "med" } else if (span < 3024000) // modifed 5 weeks ago { color = "old" } else if (span < 12315200) // modifed 6 months ago { color = "older" } else { color = "quiet" } return color } export function hush_views (n, bias, no_bold) { var txt = commatize(n, 1000) bias = bias || 1 n = n || 0 if (n < 30) { return["quiet", n + " v."] } if (n < 200) { return ["quiet", txt + " v."] } else if (n < 500) { return ["quiet", txt + " v."] } else if (n < 1000) { return ["old", txt + " v."] } else if (n < 5000) { return ["med", txt + " kv."] } else if (no_bold || n < 10000) { return ["recent", txt + " kv."] } else { return ["new", txt + " kv."] } } export function hush_threads (n, bias, no_bold) { var txt = commatize(n, 1000) bias = bias || 1 n = n || 0 if (n < 10) { return["quiet", n + " t."] } else if (n < 25) { return ["old", txt + " t."] } else if (n < 50) { return ["med", txt + " t."] } else if (no_bold || n < 100) { return ["recent", txt + " t."] } else { return ["new", txt + " t."] } } export function hush_size (n, bias, no_bold) { var txt = commatize(Math.round(n / 1024)) bias = 1 || bias n = n || 0 if (! n) { return ['', ''] } if (n < 1000) { return ["quiet", n + " b."] } if (n < 1000000) { return ["quiet", txt + " kb."] } else if (n < (20000000/bias)) { return ["quiet", txt + " mb."] } else if (n < (50000000/bias)) { return ["old", txt + " mb."] } else if (n < (80000000/bias)) { return ["med", txt + " mb."] } else if (no_bold || n < (170000000/bias)) { return ["recent", txt + " mb."] } else { return ["new", txt + " mb."] } } export function hush_null (n, unit, no_bold) { var s = unit ? n + " " + unit + "." : n if (n < 3) { return ["quiet", s] } else if (n < 6) { return ["older", s] } else if (n < 10) { return ["old", s] } else if (n < 16) { return ["med", s] } else if (no_bold || n < 21) { return ["recent", s] } else { return ["new", s] } } export function get_age (t) { var age = Math.abs(+Date.now() - new Date(t))/1000 var r = Math.floor var m if (age < 5) { return "now" } if (age < 60) { return r(age) + "s" } age /= 60 if (age < 60) { return r(age) + "m" } m = r(age % 60) age /= 60 if (m > 0 && age < 2) { return r(age) + "h" + m + "m" } if (age < 24) { return r(age) + "h" } age /= 24 if (age < 7) { return r(age) + "d" } age /= 7 if (age < 12) { return r(age) + "w" } age /= 4 if (age < 12) { return r(age) + "m" } age /= 12 return r(age) + "y" } export function courtesy_s (n, s) { return n == 1 ? "" : (s || "s") }