{"version":3,"file":"notiz-toolbelt-rxjs.mjs","sources":["../../../../libs/toolbelt/rxjs/src/ifElse.ts","../../../../libs/toolbelt/rxjs/src/interpolate.ts","../../../../libs/toolbelt/rxjs/src/log.ts","../../../../libs/toolbelt/rxjs/src/required.ts","../../../../libs/toolbelt/rxjs/src/suspense.ts","../../../../libs/toolbelt/rxjs/src/notiz-toolbelt-rxjs.ts"],"sourcesContent":["import { MonoTypeOperatorFunction, tap } from 'rxjs';\n\nexport function ifElse<T>(\n  condition: (value: T) => boolean,\n  trueNext: (value: T) => void,\n  falseNext: (value: T) => void = () => {}\n): MonoTypeOperatorFunction<T> {\n  return tap((value) => {\n    if (condition(value)) {\n      trueNext(value);\n    } else {\n      falseNext(value);\n    }\n  });\n}\n","import { map, Observable } from 'rxjs';\n\ntype ExtrapolateType = 'extend' | 'identity' | 'clamp';\n\nfunction interpolateFunction(\n  input: number,\n  inputRange: [number, number],\n  outputRange: [number, number],\n  options: {\n    easing: (input: number) => number;\n    extrapolateLeft: ExtrapolateType;\n    extrapolateRight: ExtrapolateType;\n  }\n): number {\n  const { extrapolateLeft, extrapolateRight, easing } = options;\n\n  let result = input;\n  const [inputMin, inputMax] = inputRange;\n  const [outputMin, outputMax] = outputRange;\n\n  if (result < inputMin) {\n    if (extrapolateLeft === 'identity') {\n      return result;\n    }\n\n    if (extrapolateLeft === 'clamp') {\n      result = inputMin;\n    } else if (extrapolateLeft === 'extend') {\n      // noop\n    }\n  }\n\n  if (result > inputMax) {\n    if (extrapolateRight === 'identity') {\n      return result;\n    }\n\n    if (extrapolateRight === 'clamp') {\n      result = inputMax;\n    } else if (extrapolateRight === 'extend') {\n      // noop\n    }\n  }\n\n  if (outputMin === outputMax) {\n    return outputMin;\n  }\n\n  // Input Range\n  result = (result - inputMin) / (inputMax - inputMin);\n\n  // Easing\n  result = easing(result);\n\n  // Output Range\n  result = result * (outputMax - outputMin) + outputMin;\n\n  return result;\n}\n\nfunction findRange(input: number, inputRange: readonly number[]) {\n  let i;\n  for (i = 1; i < inputRange.length - 1; ++i) {\n    if (inputRange[i] >= input) {\n      break;\n    }\n  }\n\n  return i - 1;\n}\n\nfunction checkValidInputRange(arr: readonly number[]) {\n  for (let i = 1; i < arr.length; ++i) {\n    if (!(arr[i] > arr[i - 1])) {\n      throw new Error(\n        `inputRange must be strictly monotonically non-decreasing but got [${arr.join(\n          ','\n        )}]`\n      );\n    }\n  }\n}\n\nfunction checkInfiniteRange(name: string, arr: readonly number[]) {\n  if (arr.length < 2) {\n    throw new Error(name + ' must have at least 2 elements');\n  }\n\n  for (const index in arr) {\n    if (typeof arr[index] !== 'number') {\n      throw new Error(`${name} must contain only numbers`);\n    }\n\n    if (arr[index] === -Infinity || arr[index] === Infinity) {\n      throw new Error(\n        `${name} must contain only finite numbers, but got [${arr.join(',')}]`\n      );\n    }\n  }\n}\n\nexport function _interpolate(\n  input: number,\n  inputRange: readonly number[],\n  outputRange: readonly number[],\n  options?: {\n    easing?: (input: number) => number;\n    extrapolateLeft?: ExtrapolateType;\n    extrapolateRight?: ExtrapolateType;\n  }\n): number {\n  if (\n    typeof input === 'undefined' ||\n    typeof inputRange === 'undefined' ||\n    typeof outputRange === 'undefined'\n  ) {\n    throw new Error('input or inputRange or outputRange can not be undefined');\n  }\n\n  if (inputRange.length !== outputRange.length) {\n    throw new Error(\n      'inputRange (' +\n        inputRange.length +\n        ') and outputRange (' +\n        outputRange.length +\n        ') must have the same length'\n    );\n  }\n\n  checkInfiniteRange('inputRange', inputRange);\n  checkInfiniteRange('outputRange', outputRange);\n\n  checkValidInputRange(inputRange);\n\n  const easing = options?.easing ?? ((num: number): number => num);\n\n  let extrapolateLeft: ExtrapolateType = 'extend';\n  if (options?.extrapolateLeft !== undefined) {\n    extrapolateLeft = options.extrapolateLeft;\n  }\n\n  let extrapolateRight: ExtrapolateType = 'extend';\n  if (options?.extrapolateRight !== undefined) {\n    extrapolateRight = options.extrapolateRight;\n  }\n\n  if (typeof input !== 'number') {\n    throw new TypeError('Cannot interpolation an input which is not a number');\n  }\n\n  const range = findRange(input, inputRange);\n  return interpolateFunction(\n    input,\n    [inputRange[range], inputRange[range + 1]],\n    [outputRange[range], outputRange[range + 1]],\n    {\n      easing,\n      extrapolateLeft,\n      extrapolateRight,\n    }\n  );\n}\n\nexport function interpolate(\n  inputRange: readonly number[],\n  outputRange: readonly number[],\n  options?: {\n    easing?: (input: number) => number;\n    extrapolateLeft?: ExtrapolateType;\n    extrapolateRight?: ExtrapolateType;\n  }\n) {\n  return function (frame: Observable<number>): Observable<number> {\n    return frame.pipe(\n      map((n) => _interpolate(n, inputRange, outputRange, options))\n    );\n  };\n}\n","import { MonoTypeOperatorFunction, tap } from 'rxjs';\n\nexport function log<T>(tag: string): MonoTypeOperatorFunction<T> {\n  return tap({\n    next(value) {\n      console.log(\n        `%c[${tag} - Next]:`,\n        'background: #67E8F9; color: #000; padding: 0.25rem; font-size: 0.6rem;',\n        value\n      );\n    },\n    error(error) {\n      console.log(\n        `%c[${tag} - Error]:`,\n        'background: #DC2626; color: #000; padding: 0.25rem; font-size: 0.6rem;',\n        error\n      );\n    },\n    complete() {\n      console.log(\n        `%c[${tag} - Complete]`,\n        'background: #16A34A; color: #000; padding: 0.25rem; font-size: 0.6rem;'\n      );\n    },\n  });\n}\n","import { OperatorFunction, filter } from 'rxjs';\n\nexport function required<T>(): OperatorFunction<T, NonNullable<T>> {\n  return filter(\n    (value): value is NonNullable<typeof value> =>\n      value !== null && value !== undefined\n  );\n}\n","import {\n  catchError,\n  OperatorFunction,\n  of,\n  last,\n  map,\n  share,\n  startWith,\n  merge,\n  filter,\n} from 'rxjs';\n\nexport interface Suspense<T> {\n  pending: boolean;\n  value: T | null;\n  error?: any;\n  finalized: boolean;\n}\n\nexport function suspense<T>(): OperatorFunction<T, Suspense<T>> {\n  return (value) => {\n    const initial: Suspense<T> = {\n      pending: true,\n      finalized: false,\n      value: null,\n    };\n    const state = value.pipe(\n      map<T, Suspense<T>>((value) => ({\n        pending: false,\n        value,\n        finalized: false,\n      })),\n      catchError((error) =>\n        of({\n          pending: false,\n          error,\n          finalized: true,\n          value: null,\n        } as Suspense<T>)\n      ),\n      startWith(initial),\n      share()\n    );\n\n    const complete = state.pipe(\n      last(),\n      map((v) => ({ ...v, pending: false, finalized: true } as Suspense<T>)),\n      filter((v) => !v.error)\n    );\n\n    return merge(state, complete);\n  };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}