{"version":3,"sources":["../src/arrayHelpers.ts","../src/buckets.ts","../src/checks.ts","../src/wrappers.ts","../src/converters.ts","../src/generators.ts","../src/others.ts","../src/conditionals.ts"],"sourcesContent":["import { Func } from \".\";\n\n/**\n * Filter out and remove elements from array.\n * @param arr array\n * @param filter filter\n * @returns new array\n */\nexport function removeElementsFromArray<T>(arr: T[], filter: (t: T) => boolean): T[] {\n  const idx: number[] = [];\n  arr.forEach((t, i) => {\n    if (filter(t)) {\n      idx.push(i);\n    }\n  });\n  return idx.map(i => arr.splice(i, 1)[0]);\n}\n\n/**\n * Copy range or array.\n * @param arr array\n * @param start start pos\n * @param end end pos\n * @returns sub range of array\n */\nexport function copyOfRange<T>(arr: T[], start: number, end: number): T[] {\n  const r: T[] = [];\n  start = Math.max(0, start);\n  end = Math.min(arr.length, end);\n  for (let i = start; i < end; i++) {\n    r.push(arr[i]);\n  }\n  return r;\n}\n\n/**\n * Find first element in array which passes test.\n * @param arr array\n * @param test test\n * @returns index\n */\nexport function indexOf<T>(arr: T[], test: Func<T, boolean>) {\n  for (let i = 0; i < arr.length; i++) {\n    if (test(arr[i])) {\n      return i;\n    }\n  }\n  return -1;\n}\n","import { createSignal, Accessor, createMemo, SignalOptions, splitProps } from \"solid-js\"\nimport { Bucket, Mapper, ObjectIndex, StampedBucket, StampedData } from \".\";\n\n\n/**\n * Stamped Bucket help to trigger rerendering after updating object without recreate new object.\n * @returns StampedBucket<T>\n */\nexport function stampedBucket<T>(value: T, options?: {\n  beforeUpdate?: (value: T) => void;\n  afterUpdate?: (value: T) => void;\n  localStorageName?: string;\n}): StampedBucket<T> {\n  // load from local storage\n  if (options?.localStorageName) {\n    const raw = localStorage.getItem(options.localStorageName);\n    if (raw) {\n      value = JSON.parse(raw);\n    }\n  }\n\n  const [timestamp, setTimestamp] = createSignal(new Date().getTime());\n  const v: Accessor<StampedData<T>> = createMemo(() => {\n    return {\n      timestamp: timestamp(),\n      data: value,\n      markChanged() {\n        setTimestamp(new Date().getTime());\n      }\n    };\n  });\n  const setV = (newValue: T) => {\n    value = newValue;\n    setTimestamp(new Date().getTime());\n  };\n\n  const call = function(updater?: (v: T) => void) {\n    if (updater) {\n      options?.beforeUpdate?.(value)\n\n      updater(value)\n\n      // save to local storage\n      if (options?.localStorageName) {\n        localStorage.setItem(options.localStorageName, value ? JSON.stringify(value) : \"\")\n      }\n\n      // mark changed\n      setTimestamp(new Date().getTime());\n  \n      options?.afterUpdate?.(value)\n    }\n\n    return v().data\n  }\n\n  call.map = <O>(mapper: (v: T) => O) => {\n    return mapper(v().data);\n  };\n\n  call.markChanged = () => {\n    setTimestamp(new Date().getTime())\n  };\n\n  call.reset = (v: T) => {\n    setV(v)\n  };\n\n  return call\n}\n\nfunction getFieldOfObject(o: any, paths: ObjectIndex[]) {\n  for (let i = 0; i < paths.length - 1; i++) {\n    o = o[paths[i]];\n    if (!o) {\n      throw new Error(`cannot find ${paths.join('.')} in ${o}`)\n    }\n  }\n  return o[paths[paths.length - 1]]\n}\n\nfunction setFieldOfObject(o: any, newValue: any, paths: ObjectIndex[]) {\n  for (let i = 0; i < paths.length - 1; i++) {\n    o = o[paths[i]];\n    if (!o) {\n      throw new Error(`cannot find ${paths.join('.')} in ${o}`)\n    }\n  }\n  o[paths[paths.length - 1]] = newValue\n}\n\nexport function asBucket<O, FieldType, DecadeType>(s: StampedBucket<O>, path: ObjectIndex[], mapper?: Mapper<FieldType, DecadeType>): Bucket<FieldType> {\n  const getField = (data: O) => {\n    let v = getFieldOfObject(data, path)\n    return mapper ? mapper.from?.(v) : v\n  }\n  const setField = (data: O, v: any) => {\n    if (mapper) {\n      v = mapper.to?.(v)\n    }\n    setFieldOfObject(data, v, path)\n  }\n  return (t) => {\n    if (t != undefined) {\n      s(data => {\n        if (typeof(t) === \"function\") {\n          const oldValue = getField(data)\n          // @ts-ignore\n          setField(data, t(oldValue))\n        } else {\n          setField(data, t)\n        }\n      })\n\n    }\n    return getField(s())\n  }\n}\n\nexport function asAccessor<T, K extends (keyof T)>(v: T | Accessor<T>, k: K): Accessor<T[K]> {\n  return () => {\n    if (typeof(v) === \"function\") {\n      return (v as Function)()[k]\n    }\n    return v[k]\n  }\n}\n\n/**\n * Create a bucket to track data.\n * @param value value or Accessor of value\n * @param options options\n * @returns Bucket<T>\n */\nexport function bucket<T>(value: T | Accessor<T>, options?: {\n  useValueAsAccessor?: boolean\n  beforeUpdate?: (newValue: T) => void\n  afterUpdate?: (newValue: T) => void\n  localStorageName?: string;\n} & SignalOptions<T>): Bucket<T> {\n  if (options?.useValueAsAccessor && typeof(value) === \"function\") {\n    const [_, others] = splitProps(options, [\"useValueAsAccessor\"])\n    const memo = createMemo(() => bucket<T>((value as any)(), others))\n    return (t) => {\n      // @ts-ignore\n      return memo()(t)\n    }\n  }\n  \n  const [local, others] = options && splitProps(options, [\"beforeUpdate\", \"afterUpdate\", \"localStorageName\"]) || [];\n\n  // load from local storage\n  if (local?.localStorageName) {\n    const raw = localStorage.getItem(local.localStorageName);\n    if (raw) {\n      value = JSON.parse(raw);\n    }\n  }\n\n  // @ts-ignore\n  const [v, setV] = createSignal<T>(value, others)\n\n  return (t) => {\n    if (t !== undefined) {\n      const newValue = setV((prev) => {\n        local?.beforeUpdate?.(prev);\n        if (typeof(t) === \"function\") {\n          return (t as Function)(prev);\n        } else {\n          return t;\n        }\n      });\n      // save to local storage\n      if (local?.localStorageName) {\n        localStorage.setItem(local.localStorageName, t ? JSON.stringify(t) : \"\");\n      }\n      local?.afterUpdate?.(newValue);\n      return newValue;\n    }\n    return v()\n  };\n}\n","\n/**\n * Check if array or string is not empty.\n * @param v array of any, string or undefined\n * @returns true if target is not empty\n */\nexport function isNotEmpty<T>(v?: T[]): boolean\nexport function isNotEmpty(v?: string): boolean\nexport function isNotEmpty(v: any) {\n  if (!v) return false\n  if (typeof(v) === \"string\") {\n    return v.length > 0\n  }\n  if (typeof(v) === \"object\") {\n    if (Array.isArray(v)) {\n      return v.length > 0\n    }\n    return Object.keys(v).length > 0\n  }\n  return false\n}\n\n/**\n * Check if value is number.\n * @param v any\n * @returns true if value is number\n */\nexport function isNumber(v: any) {\n  return typeof(v) === \"number\";\n}\n\n/**\n * Compare two date string.\n * @param a date 1\n * @param b date 2\n * @returns true if a is later than b\n */\nexport function compareDateString(a: string, b: string): number {\n  return Date.parse(a) - Date.parse(b);\n}\n\n/**\n * Check whether there is an element in b exists in a as well.\n * @param a array 1\n * @param b array 2\n * @returns boolean\n */\nexport function containsAny(a: any[], b: any[]) {\n  for (let i of a) {\n    for (let j of b) {\n      if (i === j) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\n","\n\nexport function wrapDateNumber(v: number, bits: number = 2) {\n  if (v == 0) {\n    return '0'.repeat(bits);\n  }\n  \n  let n = v;\n  while (n > 0) {\n    n = Math.floor(n / 10);\n    bits--;\n  }\n  return bits > 0 ? '0'.repeat(bits) + v : v;\n}\n\nexport function wrapString(v: any): string {\n  if (typeof(v) === \"string\") {\n    return v;\n  }\n  return v?.toString() || \"\";\n}\n\nexport function wrapNumber(v: any) {\n  if (typeof(v) === \"number\") {\n    return v;\n  }\n  return 0;\n}\n","import { wrapDateNumber } from \"./wrappers\";\n\n/**\n * Parse and format timestamp from number to string.\n * @param timestamp time\n * @param showTime show only date if false\n * @param showMilliseconds show ms if true\n * @returns formatted string\n */\nexport function parseTimestamp(timestamp: number, showTime?: boolean, showMilliseconds?: boolean) {\n  const date = new Date(timestamp);\n  // TODO: toLocaleString\n  // return date.toLocaleString(undefined, {\n  // });\n  let r = `${wrapDateNumber(date.getFullYear())}-${wrapDateNumber(date.getMonth() + 1)}-${wrapDateNumber(date.getDate())}`;\n  if (showTime) {\n    r += ` ${wrapDateNumber(date.getHours())}:${wrapDateNumber(date.getMinutes())}:${wrapDateNumber(date.getSeconds())}`;\n  }\n  if (showMilliseconds) {\n    r += `.${wrapDateNumber(date.getMilliseconds(), 3)}`;\n  };\n  return r;\n}\n\nexport function toCapital(v: string) {\n  return v.charAt(0).toUpperCase() + v.substring(1);\n}","\n/**\n * Genereate a sequence.\n * @param start start\n * @param end end\n * @param step step\n * @returns array\n */\nexport function sequence(start: number, end: number, step: number = 1) {\n  const r = [];\n  for (let i = start; i < end; i += step) {\n    r.push(i);\n  }\n  return r;\n}\n\n/**\n * Generate a array of size.\n * @param size size\n * @returns \n */\nexport function iterate(size: number) {\n  return Array.from(Array(size).keys())\n}","import { Context, useContext } from \"solid-js\";\n\nexport function useCtx<T>(c: Context<T>): T {\n  const context = useContext(c);\n  if (!context) {\n    throw new Error(\"cannot find a \" + JSON.stringify(c))\n  }\n  return context;\n}\n\nexport function names(...v: (string | undefined)[]) {\n  return v.filter((name) => Boolean(name)).join(' ');\n}\n\nexport function clone(obj: any) {\n  const type = typeof(obj);\n  switch (type) {\n    case 'object': {\n      let r: any = Array.isArray(obj) ? [] : {};\n      for (let key of Object.keys(obj)) {\n        r[key] = clone(obj[key]);\n      }\n      return r;\n    }\n    default:\n      return obj;\n  }\n}\n","import { Supplier } from \".\"\n\n/**\n * Invoke function or return value if condition is true.\n * @param condition any\n * @param value function to be invoked or value to be return\n * @param defaultValue fallback value, optional\n */\nexport function conditional<T>(condition: any, value: () => void): void;\nexport function conditional<T>(condition: any, value: T, defaultValue?: T): T;\nexport function conditional<T>(condition: any, value: Supplier<T>, defaultValue?: T): T;\nexport function conditional(condition: any, value: any, defaultValue?: any) {\n  if (typeof(value) === \"function\") {\n    if (condition) {\n      const r = value()\n      if (r) {\n        return r\n      }\n    }\n    return defaultValue\n  }\n\n  if (typeof(value === \"string\")) {\n    return condition ? value : (defaultValue || '')\n  }\n\n  if (typeof(value) === \"number\") {\n    return condition ? value : (defaultValue || 0)\n  }\n\n  if (condition) {\n    return value\n  } else if (defaultValue !== undefined && defaultValue !== null) {\n    return defaultValue\n  }\n}\n"],"mappings":"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","names":["v","others"]}