{"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","../src/Handle.ts","../src/Disposable.ts","../src/SimpleEventRegistry.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, untrack } 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      if (raw === 'undefined') {\n        value = undefined as any;\n      } else {\n        value = JSON.parse(raw);\n      }\n    }\n  }\n\n  const [timestamp, setTimestamp] = createSignal(performance.now());\n  const v: Accessor<StampedData<T>> = createMemo(() => {\n    return {\n      timestamp: timestamp(),\n      data: value,\n      markChanged() {\n        setTimestamp(performance.now());\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, 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 !== null) {\n      if (raw === 'undefined') {\n        value = undefined as any;\n      } else {\n        value = JSON.parse(raw);\n      }\n    }\n  }\n\n  // @ts-ignore\n  const [v, setV] = createSignal<T>(value, others)\n\n  const b = function(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, JSON.stringify(newValue));\n      }\n      local?.afterUpdate?.(newValue);\n      return newValue;\n    }\n    return v()\n  } as Bucket<T>;\n\n  Object.defineProperty(b, 'value', {\n    get: function() {\n      return untrack(v);\n    },\n  });\n\n  return b;\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, createContext, useContext } from \"solid-js\";\n\nexport function useCtx<T>(c: Context<T>, displayName?: string): T {\n  const context = useContext(c);\n  if (!context) {\n    throw new Error(\"cannot find a context of \" + (displayName || 'unknown'))\n  }\n  return context;\n}\n\ntype UseFunc<T> = () => T;\n\n/**\n * Create context and use function\n * @returns [context, useContext]\n */\nexport function context<T>(displayName?: string): [Context<T | undefined>, UseFunc<T>] {\n  const ctx = createContext<T>();\n  const use = function () {\n    return useCtx<T>(ctx as any, displayName);\n  }\n  return [ctx, use];\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","import { onCleanup, onMount, untrack } from \"solid-js\";\nimport { DisposableCollector, DisposableSupport } from \"./Disposable\";\nimport { EventDefinitions, SimpleEventRegistry } from \"./SimpleEventRegistry\";\nimport { Consumer, IDisposableCollector, Callback } from \".\";\nimport { bucket } from \"./buckets\";\n\nexport interface HandleProps<T> {\n  handle?: Handle<T>;\n}\n\ninterface HandleFuncs<T> {\n  get mounted(): boolean;\n  safeAccess<K extends keyof T, E = T[K]>(key: K): E | undefined;\n}\n\ninterface HandleHook {\n  onMount(callback: Consumer<IDisposableCollector>): void;\n  /**\n   * Called when all SolidJS onMount hooks are invoked.\n   * @param callback callback\n   */\n  onReady(callback: Consumer<IDisposableCollector>): void;\n  onCleanup(callback: Callback): void;\n}\n\ninterface HandleHookImpl<T> {\n  mount(target: T): void;\n  cleanup(): void;\n}\n\ninterface HasMount {\n  mount(target: any): void;\n}\ninterface HasCleanup {\n  cleanup(): void;\n}\ninterface HasMounted {\n  get mounted(): boolean;\n}\ninterface HasSafeAccess<T> {\n  safeAccess<K extends keyof T, E = T[K]>(key: K): E | undefined;\n}\ninterface HasOnMount {\n  onMount: (callback: Consumer<IDisposableCollector>) => void;\n}\ninterface HasOnReady {\n  onReady: (callback: Consumer<IDisposableCollector>) => void;\n}\ninterface HasOnCleanup {\n  onCleanup: (callback: Callback) => void;\n}\n\nexport type Handle<T> = T extends (HasMount | HasCleanup | HasMounted | HasSafeAccess<T> | HasOnMount | HasOnReady | HasOnCleanup) ?\n  never : T & HandleFuncs<T> & HandleHook;\n\nclass ProxyHandlerImpl<T extends Object> implements ProxyHandler<T> {\n\n  private target = bucket<T | null>(null);\n  private mountCallbacks: Consumer<IDisposableCollector>[] = [];\n  private readyCallbacks: Consumer<IDisposableCollector>[] = [];\n  private cleanupCallbacks: Callback[] = [];\n\n  private readonly internalMethods = {\n    onMount: (callback: Consumer<IDisposableCollector>) => {\n      if (untrack(this.target)) {\n        // Execute directly.\n        const collector = new DisposableCollector();\n\n        callback(collector);\n\n        if (collector.size() > 0) {\n          this.cleanupCallbacks.push(() => {\n            collector.disposeAll();\n          });\n        }\n      } else {\n        this.mountCallbacks.push(callback);\n      }\n    },\n    onReady: (callback: Callback) => {\n      if (untrack(this.target)) {\n        // Execute directly.\n        const collector = new DisposableCollector();\n\n        callback(collector);\n\n        if (collector.size() > 0) {\n          this.cleanupCallbacks.push(() => {\n            collector.disposeAll();\n          });\n        }\n      } else {\n        this.readyCallbacks.push(callback);\n      }\n    },\n    onCleanup: (callback: Callback) => {\n      this.cleanupCallbacks.push(callback);\n    },\n    mounted: () => {\n      return Boolean(untrack(this.target));\n    },\n    safeAccess: (k: any) => {\n      const t = this.target();\n      if (t) {\n        const p = t[k as keyof T];\n        if (typeof (p) === 'function') {\n          return p.bind(t);\n        }\n        return p;\n      }\n    },\n    mount: (target: T) => {\n      this.target(target);\n      const collector = new DisposableCollector();\n      this.mountCallbacks.forEach(c => c(collector));\n      if (collector.size() > 0) {\n        this.cleanupCallbacks.push(() => {\n          collector.disposeAll();\n        });\n      }\n\n      if (this.readyCallbacks.length > 0) {\n        // Add onMount listener in onMount to make sure this is the last one.\n        onMount(() => {\n          const collector = new DisposableCollector();\n          this.readyCallbacks.forEach(c => c(collector));\n          if (collector.size() > 0) {\n            this.cleanupCallbacks.push(() => {\n              collector.disposeAll();\n            });\n          };\n        });\n      }\n    },\n    cleanup: () => {\n      this.cleanupCallbacks.forEach(c => c());\n      this.target(null);\n    }\n  }\n\n  get(_: T, methodName: string | symbol, proxy: any): any {\n    if (methodName in this.internalMethods) {\n      if (methodName === 'mounted') {\n        return this.internalMethods['mounted']();\n      }\n      return this.internalMethods[methodName as keyof typeof this.internalMethods];\n    }\n\n    const target = untrack(this.target);\n    if (!target) {\n      throw new Error(`Target is not mounted yet, cannot access ${String(methodName)}.`);\n    }\n\n    const result = target?.[methodName as keyof T];\n    if (typeof (result) === 'function') {\n      return result.bind(target);\n    }\n    return result;\n  }\n}\n\nexport function handle<T extends Object>(): Handle<T> {\n  const handler = new ProxyHandlerImpl();\n  const proxy = new Proxy({}, handler);\n  return proxy as Handle<T>;\n}\n\nexport function completeHandle<T extends Object, I extends T>(target: I, handle?: Handle<T>) {\n  if (!handle) return;\n\n  const h = handle as any as HandleHookImpl<T>;\n\n  onMount(() => {\n    h.mount(target);\n  });\n\n  onCleanup(() => {\n    h.cleanup();\n  });\n}\n\nexport class HandleTarget<T> extends DisposableSupport {\n\n  constructor(handle?: Handle<T>) {\n    super();\n    completeHandle(this, handle);\n  }\n}\n\nexport class EventSupportedHandleTarget<T, ET extends EventDefinitions>\n  extends SimpleEventRegistry<ET> {\n\n  protected readonly dc = new DisposableCollector();\n\n  constructor(handle?: Handle<T>) {\n    super();\n    completeHandle(this, handle);\n\n    onCleanup(() => {\n      this.dc.disposeAll();\n    });\n  }\n}","import { onCleanup } from \"solid-js\";\nimport { IDisposableCollector, IDisposable } from \".\";\n\nexport class DisposableSupport {\n\n  protected readonly dc = new DisposableCollector();\n\n  constructor() {\n    onCleanup(() => {\n      this.dc.disposeAll();\n    });\n  }\n}\n\nexport class DisposableCollector implements IDisposableCollector {\n\n  private dc: IDisposable[] = [];\n\n  size() {\n    return this.dc.length;\n  }\n\n  collect(disposable: IDisposable) {\n    this.dc.push(disposable);\n  }\n\n  disposeAll() {\n    this.dc.forEach(d => d.dispose());\n  }\n}","import { IDisposable, IDisposableCollector } from \".\";\n\ntype EventHandler = (...args: any[]) => void | EventHandlingResult | Promise<void | EventHandlingResult>;\n\nexport type EventDefinitions = Record<string, EventHandler>;\n\nexport type Events<D extends EventDefinitions> = { [K in keyof D]: K };\n\nexport interface IEventRegistry<ED extends EventDefinitions> {\n  emit<E extends keyof ED>(event: E, ...args: Parameters<ED[E]>): any;\n  emitAsync<E extends keyof ED>(event: E, ...args: Parameters<ED[E]>): Promise<any>;\n\n  /**\n   * Listen event.\n   * \n   * @deprecated\n   * @param event \n   * @param callback \n   * @returns disposable\n   */\n  on<E extends keyof ED>(event: E, callback: ED[E]): IDisposable;\n\n  /**\n   * Listen event.\n   * @param event \n   * @param callback \n   * @param dc disposable collector\n   */\n  on<E extends keyof ED>(event: E, callback: ED[E], dc: IDisposableCollector): void;\n\n  once<E extends keyof ED>(event: E, callback: ED[E]): void;\n}\n\nenum EventHandlingAction {\n  Forward,\n  Terminate\n}\n\nexport function forward(params?: any): EventHandlingResult {\n  return { action: EventHandlingAction.Forward, params };\n}\n\nexport function terminate(params?: any): EventHandlingResult {\n  return { action: EventHandlingAction.Terminate, params };\n}\n\nexport interface EventHandlingResult {\n  action: EventHandlingAction;\n  params: any;\n}\n\nexport abstract class SimpleEventRegistry<ED extends EventDefinitions> implements IEventRegistry<ED> {\n\n  private registry: Map<any, Set<EventHandler>> = new Map();\n\n  public emit<E extends keyof ED>(event: E, ...args: Parameters<ED[E]>) {\n    let handlers = this.registry.get(event);\n    let eventResult: any;\n\n    if (handlers) {\n      for (const cb of handlers) {\n        let r = cb(...args);\n        if (r) {\n          if (r instanceof Promise) {\n            throw new Error('emit not support Promise');\n          }\n\n          if (typeof (r) === 'object') {\n            const { action, params } = r;\n            if (action === EventHandlingAction.Terminate) {\n              return params;\n            } else {\n              eventResult = params;\n            }\n          }\n        }\n      }\n    }\n\n    return eventResult;\n  }\n\n  public async emitAsync<E extends keyof ED>(event: E, ...args: Parameters<ED[E]>) {\n    let handlers = this.registry.get(event);\n    let eventResult: any;\n\n    if (handlers) {\n      for (const cb of handlers) {\n        let r = cb(...args);\n        if (r) {\n          if (r instanceof Promise) {\n            r = await r;\n          }\n          if (typeof (r) === 'object') {\n            const { action, params } = r;\n            if (action === EventHandlingAction.Terminate) {\n              return params;\n            } else {\n              eventResult = params;\n            }\n          }\n        }\n      }\n    }\n\n    return eventResult;\n  }\n\n  /**\n   * Listen event.\n   * \n   * @deprecated\n   * @param event \n   * @param callback \n   * @returns disposable\n   */\n  public on<E extends keyof ED>(event: E, callback: ED[E]): IDisposable;\n  public on<E extends keyof ED>(event: E, callback: ED[E], dc: IDisposableCollector): void;\n  public on<E extends keyof ED>(event: E, callback: ED[E], dc?: IDisposableCollector): IDisposable | undefined {\n    let set = this.registry.get(event);\n    if (!set) {\n      set = new Set();\n      this.registry.set(event, set);\n    }\n    set.add(callback);\n\n    const disposable: IDisposable = { dispose: () => this.off(event, callback) };\n    if (dc) {\n      dc.collect(disposable);\n    } else {\n      return disposable;\n    }\n  }\n\n  once<E extends keyof ED>(event: E, callback: ED[E]): void {\n    const disposable = this.on(event, ((args) => {\n      const r = callback(args);\n      disposable.dispose();\n      return r;\n    }) as ED[E]);\n  }\n\n  private off<E extends keyof ED>(event: E, callback: EventHandler): void {\n    let set = this.registry.get(event);\n    if (set) {\n      set.delete(callback!);\n    }\n  }\n}\n\nexport class Trace {\n\n  constructor(readonly source: any, readonly parent?: any) {\n  }\n}\n"],"mappings":"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","names":["v","others","context","onCleanup","untrack","untrack","collector","handle","onCleanup"]}