6.0.1 • Published 2 years ago
oj-mithriljs-utils v6.0.1
various utils
Various utilities
Usage
import
import { randomInt } from "oj-utils"randomInt
randomInt(min: number, max: number): numberrandomDec
randomDec(min: number, max: number): numberrandomList
randomList(list: T[]): TmapRange
mapRange(value: number, source: [number, number], target: [number, number]): numberclamp
clamp(value: number, min: number, max: number): numbercleanString
cleanString(...parts: any[]): stringUUID
UUID(): stringmmToPx
mmToPx(mm: number, dpi: number): numberpxToMm
pxToMm(px: number, dpi: number): numbergetDpi
getDpi(px: number, mm: number): numberpipe
const val = pipe(2)
  .map(x => x * 2)
  .map(x => x + "")
  .value // "4"uniqueArray
uniqueArray(arr: T[]): T[]generateHashFromString
generateHashFromString(str: string): numberfindObjKey
const k = findObjKey({ a: 1, b: 2 }, x => x === 1) // afilterObj
const obj = filterObj({ a: 1, b: 2, c: "" }, x => typeof x === "number") // { a: 1, b: 2 }reduceObj
const values = reduceObj({ a: 1, b: 2 }, (s,x) => s + "," + x, "") // "1,2"mapObj
const values = mapObj({ a: 1, b: 2 }, x => x * 2) // [2, 4]groupObj
const obj = {
  a: { id: "id 0" },
  b: { id: "id 1" },
  c: { id: "id 0" }
}
const grouped = groupObj(obj, "id")
/* {
  "id 0": [
    { "$key": "a", "id": "id 0" },
    { "$key": "c", "id": "id 0" }
  ],
  "id 1": [
    { "$key": "b", "id": "id 1" }
  ]
} */groupArr
const arr = [
  { id: "id 0" }, 
  { id: "id 1" }, 
  { id: "id 0" }
]
const grouped = groupArr(arr, "id")
/* {
  "id 0": [
    { "$key": 0, "id": "id 0" },
    { "$key": 2, "id": "id 0" }
  ],
  "id 1": [
    { "$key": 1, "id": "id 1" }
  ]
} */objToArr
const obj = {
  a: { id: "id 0" },
  b: { id: "id 1" },
  c: { id: "id 0" }
}
const arr = objToArr(obj)
/* [
  { id: "id 0", $key: "a" }, 
  { id: "id 1", $key: "b" }, 
  { id: "id 0", $key: "c" }
] */arrToObj
const arr = [
  { id: "id 0" }, 
  { id: "id 1" }, 
  { id: "id 0" }
] 
const obj = arrToObj(arr)
/* {
  a: { id: "id 0", ref: 0 },
  b: { id: "id 1", ref: 1 },
  c: { id: "id 0", ref: 2 }
}*/repeatMap
const values = repeatMap(3) // [1,2,3]
const values = repeatMap(3, x => x * 2) // [2,4,6]increment
const inc = increment()
inc() // 0
inc() // 1
inc() // 2diff
const d = diff(() => performance.now())
setInterval(() => console.log(d()), 100) // 60.3, 111.8, 203.7, 313.5, 408.3, 501.5, ...
const d = diff(() => performance.now(), true)
setInterval(() => console.log(d()), 100) // 60.1, 106.5, 108.3, 94.59, 94.01, 107.7, ...exec
const result = exec(someVar, arg1, arg2, etc) // if someVar is function, execute and return result. else return undefineddebounce
window.addEventListener("click", debounce(1000, e => {
  // api call or something, after 1000 ms of silence
}))throttle
window.addEventListener("click", throttle(1000, e => {
  // api call or something, every 1000 th ms
}, false)) // if tail is true: call last time after 1000 ms of silencememoize
const fn = memoize((a, b, c) => {
  const d = a + b + c // compute...
  return d
})
fn(1, 2, 3) // compute 6
fn(1, 2, 3) // reuse 6
fn(3, 3, 3) // compute 9
const fn = memoize((a, b, c) => {
  const d = a + b + c // compute...
  return d
}, (a, b) => `${a},${b}`)
fn(1, 2, 3) // compute 6
fn(1, 2, 10) // reuse 6, hash function uses only params a and b
fn(3, 3, 3) // compute 9chunk
const chunks = chunk(4, [1,2,3,4,5,6,7,8,9])
/* [
  [1,2,3,4],
  [5,6,7,8],
  [9]
] */createToggle
const t = createToggle()
t.toggle() // true
t.get() // false
t.on() // true
t.get() // true
t.off() // falseremoveIfExists
const arr = [1,2,3,4]
removeIfExists(arr, x => x < 3) // mutates array, unlike filter
// arr is [1,2]clone
clone(obj: T): T // uses json parse/stringifyformatSize
formatSize(bytes: number): string // n Bytes, KB, MB, GB, TBformatPrice
formatPrice(12.446, true, { pre: "€ ", dot: "," }) // "€ 12,45"createImage
createImage(src: string): Promise<HTMLImageElement>getImageTypeFromB64
getImageTypeFromB64(source: string): string //  "image/png"  "image/jpeg"base64toBlob
base64toBlob(src: string): BlobfileToB64
fileToB64(file: File | Blob): Promise<string>imageUrlToB64
imageUrlToB64(url: string): Promise<string>6.0.1
2 years ago