ngx-pipes-updated
Version:
Useful angular pipes
1 lines • 159 kB
Source Map (JSON)
{"version":3,"file":"ngx-pipes-updated.mjs","sources":["../../src/ng-pipes/pipes/array/diff.ts","../../src/ng-pipes/pipes/array/initial.ts","../../src/ng-pipes/pipes/array/slice.ts","../../src/ng-pipes/pipes/array/flatten.ts","../../src/ng-pipes/pipes/array/intersection.ts","../../src/ng-pipes/pipes/helpers/helpers.ts","../../src/ng-pipes/pipes/array/reverse.ts","../../src/ng-pipes/pipes/array/tail.ts","../../src/ng-pipes/pipes/array/truthify.ts","../../src/ng-pipes/pipes/array/union.ts","../../src/ng-pipes/pipes/array/unique.ts","../../src/ng-pipes/pipes/array/without.ts","../../src/ng-pipes/pipes/array/pluck.ts","../../src/ng-pipes/pipes/array/shuffle.ts","../../src/ng-pipes/pipes/array/every.ts","../../src/ng-pipes/pipes/array/some.ts","../../src/ng-pipes/pipes/array/sample.ts","../../src/ng-pipes/pipes/array/group-by.ts","../../src/ng-pipes/pipes/array/filter-by.ts","../../src/ng-pipes/pipes/array/order-by.ts","../../src/ng-pipes/pipes/array/group-by-impure.ts","../../src/ng-pipes/pipes/array/filter-by-impure.ts","../../src/ng-pipes/pipes/array/order-by-impure.ts","../../src/ng-pipes/pipes/array/range.ts","../../src/ng-pipes/pipes/array/chunk.ts","../../src/ng-pipes/pipes/array/from-pairs.ts","../../src/ng-pipes/pipes/array/index.ts","../../src/ng-pipes/pipes/object/keys.ts","../../src/ng-pipes/pipes/object/values.ts","../../src/ng-pipes/pipes/object/pairs.ts","../../src/ng-pipes/pipes/object/pick.ts","../../src/ng-pipes/pipes/object/omit.ts","../../src/ng-pipes/pipes/object/invert.ts","../../src/ng-pipes/pipes/object/invert-by.ts","../../src/ng-pipes/pipes/object/diff-obj.ts","../../src/ng-pipes/pipes/object/index.ts","../../src/ng-pipes/pipes/string/a-or-an.ts","../../src/ng-pipes/pipes/string/ucwords.ts","../../src/ng-pipes/pipes/string/ltrim.ts","../../src/ng-pipes/pipes/string/repeat.ts","../../src/ng-pipes/pipes/string/rtrim.ts","../../src/ng-pipes/pipes/string/scan.ts","../../src/ng-pipes/pipes/string/shorten.ts","../../src/ng-pipes/pipes/string/strip-tags.ts","../../src/ng-pipes/pipes/string/trim.ts","../../src/ng-pipes/pipes/string/ucfirst.ts","../../src/ng-pipes/pipes/string/slugify.ts","../../src/ng-pipes/pipes/string/camelize.ts","../../src/ng-pipes/pipes/string/latinise.ts","../../src/ng-pipes/pipes/string/lines.ts","../../src/ng-pipes/pipes/string/underscore.ts","../../src/ng-pipes/pipes/string/match.ts","../../src/ng-pipes/pipes/string/test.ts","../../src/ng-pipes/pipes/string/lpad.ts","../../src/ng-pipes/pipes/string/rpad.ts","../../src/ng-pipes/pipes/string/pluralize.ts","../../src/ng-pipes/pipes/string/wrap.ts","../../src/ng-pipes/pipes/string/replace-regex.ts","../../src/ng-pipes/pipes/string/split.ts","../../src/ng-pipes/pipes/string/index.ts","../../src/ng-pipes/pipes/math/max.ts","../../src/ng-pipes/pipes/math/min.ts","../../src/ng-pipes/pipes/math/percentage.ts","../../src/ng-pipes/pipes/math/sum.ts","../../src/ng-pipes/pipes/math/average.ts","../../src/ng-pipes/pipes/math/floor.ts","../../src/ng-pipes/pipes/math/round.ts","../../src/ng-pipes/pipes/math/sqrt.ts","../../src/ng-pipes/pipes/math/pow.ts","../../src/ng-pipes/pipes/math/ceil.ts","../../src/ng-pipes/pipes/math/degrees.ts","../../src/ng-pipes/pipes/math/bytes.ts","../../src/ng-pipes/pipes/math/radians.ts","../../src/ng-pipes/pipes/math/index.ts","../../src/ng-pipes/pipes/boolean/is-defined.ts","../../src/ng-pipes/pipes/boolean/is-null.ts","../../src/ng-pipes/pipes/boolean/is-undefined.ts","../../src/ng-pipes/pipes/boolean/is-string.ts","../../src/ng-pipes/pipes/boolean/is-function.ts","../../src/ng-pipes/pipes/boolean/is-number.ts","../../src/ng-pipes/pipes/boolean/is-array.ts","../../src/ng-pipes/pipes/boolean/is-object.ts","../../src/ng-pipes/pipes/boolean/is-greater-equal-than.ts","../../src/ng-pipes/pipes/boolean/is-greater-than.ts","../../src/ng-pipes/pipes/boolean/is-less-equal-than.ts","../../src/ng-pipes/pipes/boolean/is-equal-to.ts","../../src/ng-pipes/pipes/boolean/is-not-equal-to.ts","../../src/ng-pipes/pipes/boolean/is-identical-to.ts","../../src/ng-pipes/pipes/boolean/is-not-identical-to.ts","../../src/ng-pipes/pipes/boolean/is-less-than.ts","../../src/ng-pipes/pipes/boolean/index.ts","../../src/ng-pipes/pipes/date/time-ago.ts","../../src/ng-pipes/pipes/date/index.ts","../../src/ng-pipes/ng-pipes.module.ts","../../ngx-pipes-updated.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'diff' })\nexport class DiffPipe implements PipeTransform {\n transform<T extends any[]>(input: T, ...args: T[]): T;\n transform<T>(input: T, ...args: any[]): T;\n\n transform(input: any, ...args: any[]) {\n if (!Array.isArray(input)) {\n return input;\n }\n\n return args.reduce((d, c) => d.filter((e: any) => !~c.indexOf(e)), input);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'initial' })\nexport class InitialPipe implements PipeTransform {\n transform<T extends any[]>(input: T, num?: number): T;\n transform<T>(input: T, num?: number): T;\n\n transform(input: any, num = 0) {\n return Array.isArray(input) ? input.slice(0, input.length - num) : input;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'sliceSafe' })\nexport class SlicePipe implements PipeTransform {\n transform<T extends any[]>(input: T, start?: number, end?: number): T;\n transform<T>(input: T, start?: number, end?: number): T;\n\n transform(input: any, start?: number, end?: number) {\n return Array.isArray(input) ? input.slice(start, end) : input;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'flatten' })\nexport class FlattenPipe implements PipeTransform {\n transform<T extends any[]>(input: T, shallow?: boolean): any[];\n transform<T>(input: T, shallow?: boolean): T;\n\n transform(input: any, shallow = false) {\n if (!Array.isArray(input)) {\n return input;\n }\n\n // eslint-disable-next-line prefer-spread\n return shallow ? [].concat.apply([], input) : this.flatten(input);\n }\n\n private flatten(array: any[]): any[] {\n return array.reduce((arr: any[], elm: any) => {\n if (Array.isArray(elm)) {\n return arr.concat(this.flatten(elm));\n }\n\n return arr.concat(elm);\n }, []);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'intersection' })\nexport class IntersectionPipe implements PipeTransform {\n transform<T extends any[]>(input: T, ...args: T): T;\n transform<T>(input: T, ...args: any[]): T;\n\n transform(input: any, ...args: any[]) {\n if (!Array.isArray(input)) {\n return input;\n }\n\n return args.reduce((n, c) => n.filter((e: any) => !!~c.indexOf(e)), input);\n }\n}\n","export function isUndefined(value: any) {\n return typeof value === 'undefined';\n}\n\nexport function isNull(value: any) {\n return value === null;\n}\n\nexport function isFunction(value: any) {\n return typeof value === 'function';\n}\n\nexport function isNumber(value: any) {\n return typeof value === 'number';\n}\n\nexport function isString(value: any) {\n return typeof value === 'string';\n}\n\nexport function isBoolean(value: any) {\n return typeof value === 'boolean';\n}\n\nexport function isObject(value: any) {\n return value !== null && typeof value === 'object';\n}\n\nexport function isNumberFinite(value: any) {\n return isNumber(value) && isFinite(value);\n}\n\nexport function isVowel(letter: string): boolean {\n const vowels = ['a', 'e', 'i', 'o', 'u'];\n\n return vowels.indexOf(letter) !== -1;\n}\n\nexport function ucFirst(text: string) {\n const [part, ...split] = text.split(/\\s/g);\n\n const ucd = part\n .toLowerCase()\n .split(/(?=['|-])/g)\n .map(\n (word: any) =>\n word.indexOf('-') + word.indexOf(\"'\") > -2\n ? word.slice(0, 2).toUpperCase() + word.slice(2)\n : word.slice(0, 1).toUpperCase() + word.slice(1)\n )\n .join('');\n\n return [ucd, ...split].join(' ');\n}\n\nexport function applyPrecision(num: number, precision: number) {\n if (precision <= 0) {\n return Math.round(num);\n }\n\n const tho = 10 ** precision;\n\n return Math.round(num * tho) / tho;\n}\n\nexport function extractDeepPropertyByMapKey(obj: any, map: string) {\n const keys = map.split('.');\n const head = keys.shift();\n\n return keys.reduce((prop: any, key: string) => {\n return !isUndefined(prop) && !isNull(prop) && !isUndefined(prop[key]) ? prop[key] : undefined;\n }, obj[head || '']);\n}\n\nexport function extractDeepPropertyByParentMapKey(obj: any, map: string) {\n const keys = map.split('.');\n const tail = keys.pop();\n const props = extractDeepPropertyByMapKey(obj, keys.join('.'));\n\n return { props, tail };\n}\n\nexport function getKeysTwoObjects(obj: any, other: any) {\n return [...Object.keys(obj), ...Object.keys(other)].filter((key, index, array) => array.indexOf(key) === index);\n}\n\nexport function isDeepEqual(obj: any, other: any) {\n if (!isObject(obj) || !isObject(other)) {\n return obj === other;\n }\n\n return getKeysTwoObjects(obj, other).every(\n (key: any): boolean => {\n if (!isObject(obj[key]) && !isObject(other[key])) {\n return obj[key] === other[key];\n }\n if (!isObject(obj[key]) || !isObject(other[key])) {\n return false;\n }\n\n return isDeepEqual(obj[key], other[key]);\n }\n );\n}\n\nexport type GenericRecord<T> = Record<string | number | symbol, T>;","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString } from '../helpers/helpers';\n\n@Pipe({ name: 'reverse' })\nexport class ReversePipe implements PipeTransform {\n transform<T extends any[]>(input: T): T;\n transform<T>(input: T): T;\n\n transform(input: any) {\n if (isString(input)) {\n return input\n .split('')\n .reverse()\n .join('');\n }\n\n return Array.isArray(input) ? input.slice().reverse() : input;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'tail' })\nexport class TailPipe implements PipeTransform {\n transform<T extends any[]>(input: T, num?: number): T;\n transform<T>(input: T, num?: number): T;\n\n transform(input: any, num = 0) {\n return Array.isArray(input) ? input.slice(num) : input;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'truthify' })\nexport class TrurthifyPipe implements PipeTransform {\n transform<T extends any[]>(input: T): T;\n transform<T>(input: T): T;\n\n transform(input: any) {\n return Array.isArray(input) ? input.filter(e => !!e) : input;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'union' })\nexport class UnionPipe implements PipeTransform {\n transform<T extends any[]>(input: T, args: T): T;\n transform<T>(input: T, args?: T): T;\n\n transform(input: any, args: any[] = []) {\n if (!Array.isArray(input) || !Array.isArray(args)) {\n return input;\n }\n\n return args.reduce((newArr, currArr) => {\n return newArr.concat(\n currArr.reduce((noDupArr: any[], curr: any) => {\n return !~noDupArr.indexOf(curr) && !~newArr.indexOf(curr) ? noDupArr.concat([curr]) : noDupArr;\n }, [])\n );\n }, input);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { extractDeepPropertyByMapKey, isObject, isUndefined } from '../helpers/helpers';\n\n@Pipe({ name: 'unique' })\nexport class UniquePipe implements PipeTransform {\n transform<T extends any[]>(input: T, propertyName: string): T;\n transform<T>(input: T, propertyName?: string): T;\n\n transform(input: any, propertyName?: string) {\n const uniques: boolean[] = [];\n\n return Array.isArray(input)\n ? isUndefined(propertyName)\n ? input.filter((e, i) => input.indexOf(e) === i)\n : input.filter((e, i) => {\n let value = extractDeepPropertyByMapKey(e, propertyName);\n value = isObject(value) ? JSON.stringify(value) : value;\n\n if (isUndefined(value) || uniques[value]) {\n return false;\n }\n\n uniques[value] = true;\n\n return true;\n })\n : input;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'without' })\nexport class WithoutPipe implements PipeTransform {\n transform<T extends any[]>(input: T, args: T): T;\n transform<T>(input: T, args?: T): T;\n\n transform(input: any, args: any[] = []) {\n return Array.isArray(input)\n ? input.filter(e => !~args.indexOf(e))\n : input;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { extractDeepPropertyByMapKey, isObject } from '../helpers/helpers';\nimport type { GenericRecord } from '../helpers/helpers';\n\n@Pipe({ name: 'pluck', pure: false })\nexport class PluckPipe implements PipeTransform {\n transform<T extends GenericRecord<any>[]>(input: T, map: string): any[];\n transform<T extends GenericRecord<any>>(input: T, map: string): any;\n transform<T>(input: T, map?: string): T;\n\n transform(input: any, map: string) {\n if (Array.isArray(input)) {\n return input.map(e => extractDeepPropertyByMapKey(e, map));\n }\n\n return isObject(input) ? extractDeepPropertyByMapKey(input, map) : input;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'shuffle' })\nexport class ShufflePipe implements PipeTransform {\n transform<T extends any[]>(input: T): T;\n transform<T>(input: T): T;\n\n // Using a version of the Fisher-Yates shuffle algorithm\n // https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle\n transform(input: any) {\n if (!Array.isArray(input)) {\n return input;\n }\n\n const shuffled = [...input];\n const n = input.length - 1;\n for (let i = 0; i < n; ++i) {\n const j = Math.floor(Math.random() * (n - i + 1)) + i;\n [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];\n }\n\n return shuffled;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'every' })\nexport class EveryPipe implements PipeTransform {\n transform<T extends any[]>(input: T, predicate: Predicate): boolean;\n transform<T>(input: T, predicate: Predicate): false;\n\n transform(input: any[], predicate: Predicate) {\n return Array.isArray(input) ? input.every(predicate) : false;\n }\n}\n\ntype Predicate = (value: any, index: number, array: any[]) => boolean;\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'some' })\nexport class SomePipe implements PipeTransform {\n transform<T extends any[]>(input: T, predicate?: Predicate): boolean;\n transform<T>(input: T, predicate?: Predicate): T;\n\n transform(input: any, predicate: Predicate) {\n return Array.isArray(input) ? input.some(predicate) : input;\n }\n}\n\ntype Predicate = (value: any, index: number, array: any[]) => boolean;","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'sample' })\nexport class SamplePipe implements PipeTransform {\n transform<T extends any[]>(input: T, len?: number): T;\n transform<T>(input: T, len?: number): T;\n\n transform(input: any, len = 1) {\n if (!Array.isArray(input)) {\n return input;\n }\n\n let sample: any[] = [];\n const tmp = [...input];\n const l = len < tmp.length ? len : tmp.length;\n for (let i = 0; i < l; ++i) {\n sample = sample.concat(tmp.splice(Math.floor(Math.random() * tmp.length), 1));\n }\n\n return sample;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { extractDeepPropertyByMapKey, isFunction } from '../helpers/helpers';\nimport type { GenericRecord } from '../helpers/helpers';\n\n@Pipe({ name: 'groupBy' })\nexport class GroupByPipe implements PipeTransform {\n transform<T extends any[]>(input: T, discriminator?: any, delimiter?: string): GenericRecord<T>;\n transform<T>(input: T, discriminator?: any, delimiter?: string): T;\n\n transform(input: any, discriminator: any = [], delimiter = '|') {\n if (!Array.isArray(input)) {\n return input;\n }\n\n return this.groupBy(input, discriminator, delimiter);\n }\n\n private groupBy(list: any[], discriminator: any, delimiter: string) {\n return list.reduce((acc: any, payload: string) => {\n const key = this.extractKeyByDiscriminator(discriminator, payload, delimiter);\n\n acc[key] = Array.isArray(acc[key]) ? acc[key].concat([payload]) : [payload];\n\n return acc;\n }, {});\n }\n\n private extractKeyByDiscriminator(discriminator: any, payload: string, delimiter: string) {\n if (isFunction(discriminator)) {\n return discriminator(payload);\n }\n\n if (Array.isArray(discriminator)) {\n return discriminator.map(k => extractDeepPropertyByMapKey(payload, k)).join(delimiter);\n }\n\n return extractDeepPropertyByMapKey(payload, discriminator as string);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {\n extractDeepPropertyByMapKey,\n extractDeepPropertyByParentMapKey,\n isBoolean,\n isNumberFinite,\n isString,\n isUndefined,\n} from '../helpers/helpers';\n\n@Pipe({ name: 'filterBy' })\nexport class FilterByPipe implements PipeTransform {\n transform<K, T extends K[]>(input: T, props: string[], search?: any, strict?: boolean): T;\n transform<T>(input: T, props?: string[], search?: any, strict?: boolean): T;\n\n transform(input: any, props: string[], search: any = '', strict = false) {\n if (\n !Array.isArray(input) ||\n (!Array.isArray(search) && !isString(search) && !isNumberFinite(search) && !isBoolean(search))\n ) {\n return input;\n }\n\n const terms = String(search)\n .toLowerCase()\n .split(',');\n\n return input.filter(obj => {\n return props.some(prop => {\n return terms.some(term => {\n const value = extractDeepPropertyByMapKey(obj, prop);\n const { props, tail } = extractDeepPropertyByParentMapKey(obj, prop);\n\n if (isUndefined(value) && !isUndefined(props) && Array.isArray(props)) {\n return props.some(parent => {\n const str = String(parent[tail as string]).toLowerCase();\n\n return strict ? str === term : !!~str.indexOf(term);\n });\n }\n\n if (isUndefined(value)) {\n return false;\n }\n\n const strValue: string = String(value).toLowerCase();\n\n return strict ? term === strValue : !!~strValue.indexOf(term);\n });\n });\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { extractDeepPropertyByMapKey, isString, isUndefined } from '../helpers/helpers';\n\n@Pipe({ name: 'orderBy' })\nexport class OrderByPipe implements PipeTransform {\n transform<T extends any[]>(input: T, config: any): T;\n transform<T>(input: T, config?: any): T;\n\n transform(input: any, config?: any) {\n if (!Array.isArray(input)) {\n return input;\n }\n\n const out = [...input];\n\n // sort by multiple properties\n if (Array.isArray(config)) {\n return out.sort((a, b) => {\n const l = config.length;\n for (let i = 0; i < l; ++i) {\n const [prop, asc] = OrderByPipe.extractFromConfig(config[i]);\n const pos = OrderByPipe.orderCompare(prop, asc, a, b);\n if (pos !== 0) {\n return pos;\n }\n }\n\n return 0;\n });\n }\n\n // sort by a single property value\n if (isString(config)) {\n const [prop, asc, sign] = OrderByPipe.extractFromConfig(config);\n\n if (config.length === 1) {\n switch (sign) {\n case '+':\n return out.sort(OrderByPipe.simpleSort.bind(this));\n case '-':\n return out.sort(OrderByPipe.simpleSort.bind(this)).reverse();\n }\n }\n\n return out.sort(OrderByPipe.orderCompare.bind(this, prop, asc));\n }\n\n // default sort by value\n return out.sort(OrderByPipe.simpleSort.bind(this));\n }\n\n private static simpleSort(a: any, b: any) {\n return isString(a) && isString(b) ? a.toLowerCase().localeCompare(b.toLowerCase()) : a - b;\n }\n\n private static orderCompare(prop: string, asc: boolean, a: any, b: any) {\n const first = extractDeepPropertyByMapKey(a, prop);\n const second = extractDeepPropertyByMapKey(b, prop);\n\n if (first === second) {\n return 0;\n }\n\n if (isUndefined(first) || first === '') {\n return 1;\n }\n\n if (isUndefined(second) || second === '') {\n return -1;\n }\n\n if (isString(first) && isString(second)) {\n const pos = first.toLowerCase().localeCompare(second.toLowerCase());\n\n return asc ? pos : -pos;\n }\n\n return asc ? first - second : second - first;\n }\n\n private static extractFromConfig(config: any) {\n const sign = config.substr(0, 1);\n const prop = config.replace(/^[-+]/, '');\n const asc = sign !== '-';\n\n return [prop, asc, sign];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { GroupByPipe } from './group-by';\n\n@Pipe({ name: 'groupByImpure', pure: false })\nexport class GroupByImpurePipe extends GroupByPipe implements PipeTransform { }\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FilterByPipe } from './filter-by';\n\n@Pipe({ name: 'filterByImpure', pure: false })\nexport class FilterByImpurePipe extends FilterByPipe implements PipeTransform { }\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OrderByPipe } from './order-by';\n\n@Pipe({ name: 'orderByImpure', pure: false })\nexport class OrderByImpurePipe extends OrderByPipe implements PipeTransform { }\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'range' })\nexport class RangePipe implements PipeTransform {\n transform(start: number, count: number, step?: number): number[];\n transform(start?: number, count?: number, step?: number): [];\n\n transform(start = 1, count = 0, step = 1) {\n return Array(count)\n .fill('')\n .map((v, i) => step * i + start);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString } from '../helpers/helpers';\n\n@Pipe({ name: 'chunk' })\nexport class ChunkPipe implements PipeTransform {\n transform<T extends any[]>(input: T, size?: number): T[];\n transform<T extends string>(input: T, size?: number): string[][];\n transform<T>(input: T, size?: number): T;\n\n transform(input: any, size = 1) {\n if (isString(input)) {\n return this.chunk(input\n .split(''), size);\n }\n\n return Array.isArray(input) ? this.chunk(input, size) : input;\n }\n\n private chunk(input: any[], size: number) {\n return Array(Math.ceil(input.length / size))\n .fill([])\n .map((_, index) => index * size)\n .map(begin => input.slice(begin, begin + size));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport type { GenericRecord } from '../helpers/helpers';\n\n@Pipe({ name: 'fromPairs' })\nexport class FromPairsPipe implements PipeTransform {\n transform<T extends any[]>(input: T): GenericRecord<any>;\n transform<T>(input: T): T;\n\n transform(input: any) {\n if (!Array.isArray(input)) {\n return input;\n }\n\n return input.reduce((obj, arr) => {\n if (!Array.isArray(arr)) {\n return obj;\n }\n\n const [prop, val] = arr;\n\n obj[prop] = val;\n\n return obj;\n }, {});\n }\n}\n","import { DiffPipe } from './diff';\nimport { InitialPipe } from './initial';\nimport { SlicePipe } from './slice';\nimport { FlattenPipe } from './flatten';\nimport { IntersectionPipe } from './intersection';\nimport { ReversePipe } from './reverse';\nimport { TailPipe } from './tail';\nimport { TrurthifyPipe } from './truthify';\nimport { UnionPipe } from './union';\nimport { UniquePipe } from './unique';\nimport { WithoutPipe } from './without';\nimport { PluckPipe } from './pluck';\nimport { ShufflePipe } from './shuffle';\nimport { EveryPipe } from './every';\nimport { SomePipe } from './some';\nimport { SamplePipe } from './sample';\nimport { GroupByPipe } from './group-by';\nimport { FilterByPipe } from './filter-by';\nimport { OrderByPipe } from './order-by';\nimport { NgModule } from '@angular/core';\nimport { GroupByImpurePipe } from './group-by-impure';\nimport { FilterByImpurePipe } from './filter-by-impure';\nimport { OrderByImpurePipe } from './order-by-impure';\nimport { RangePipe } from './range';\nimport { ChunkPipe } from './chunk';\nimport { FromPairsPipe } from './from-pairs';\n\nconst ARRAY_PIPES = [\n DiffPipe,\n FlattenPipe,\n InitialPipe,\n SlicePipe,\n IntersectionPipe,\n ReversePipe,\n TailPipe,\n TrurthifyPipe,\n UnionPipe,\n UniquePipe,\n WithoutPipe,\n PluckPipe,\n ShufflePipe,\n EveryPipe,\n SomePipe,\n SamplePipe,\n GroupByPipe,\n GroupByImpurePipe,\n FilterByPipe,\n FilterByImpurePipe,\n OrderByPipe,\n OrderByImpurePipe,\n RangePipe,\n ChunkPipe,\n FromPairsPipe\n];\n\n@NgModule({\n imports: ARRAY_PIPES,\n exports: ARRAY_PIPES,\n})\nexport class NgArrayPipesModule { }\n\nexport { DiffPipe } from './diff';\nexport { InitialPipe } from './initial';\nexport { SlicePipe } from './slice';\nexport { FlattenPipe } from './flatten';\nexport { IntersectionPipe } from './intersection';\nexport { ReversePipe } from './reverse';\nexport { TailPipe } from './tail';\nexport { TrurthifyPipe } from './truthify';\nexport { UnionPipe } from './union';\nexport { UniquePipe } from './unique';\nexport { WithoutPipe } from './without';\nexport { PluckPipe } from './pluck';\nexport { ShufflePipe } from './shuffle';\nexport { EveryPipe } from './every';\nexport { SomePipe } from './some';\nexport { SamplePipe } from './sample';\nexport { GroupByPipe } from './group-by';\nexport { FilterByPipe } from './filter-by';\nexport { OrderByPipe } from './order-by';\nexport { GroupByImpurePipe } from './group-by-impure';\nexport { FilterByImpurePipe } from './filter-by-impure';\nexport { OrderByImpurePipe } from './order-by-impure';\nexport { RangePipe } from './range';\nexport { ChunkPipe } from './chunk';\nexport { FromPairsPipe } from './from-pairs';\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isObject } from '../helpers/helpers';\nimport type { GenericRecord } from '../helpers/helpers';\n\n@Pipe({ name: 'keys' })\nexport class KeysPipe implements PipeTransform {\n transform<T extends any[]>(obj: T): T;\n transform<T>(obj: T): T extends any[] ? T : T extends GenericRecord<any> ? string[] : T;\n\n transform(obj: any) {\n if (Array.isArray(obj) || !isObject(obj)) {\n return obj;\n }\n\n return Object.keys(obj);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isObject } from '../helpers/helpers';\nimport type { GenericRecord } from '../helpers/helpers';\n\n@Pipe({ name: 'values' })\nexport class ValuesPipe implements PipeTransform {\n transform<T extends any[]>(obj: T): T;\n transform<T>(obj: T): T extends GenericRecord<any> ? any[] : T;\n\n transform(obj: any) {\n if (Array.isArray(obj) || !isObject(obj)) {\n return obj;\n }\n\n return Object.keys(obj).map(k => obj[k]);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isObject } from '../helpers/helpers';\nimport type { GenericRecord } from '../helpers/helpers';\n\n@Pipe({ name: 'pairs' })\nexport class PairsPipe implements PipeTransform {\n transform<T extends any[]>(obj: T): T;\n transform<T>(obj: T): T extends GenericRecord<any> ? [string, any][] : T;\n\n transform(obj: any) {\n if (Array.isArray(obj) || !isObject(obj)) {\n return obj;\n }\n\n return Object.entries(obj);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isObject } from '../helpers/helpers';\nimport type { GenericRecord } from '../helpers/helpers';\n\n@Pipe({ name: 'pick' })\nexport class PickPipe implements PipeTransform {\n transform<T extends any[]>(obj: T, ...args: any): T;\n transform<T, K extends (T extends GenericRecord<any> ? (keyof T)[] : never)>(obj: T, ...args: K): T extends GenericRecord<any> ? (K extends never ? T : Pick<T, K[number]>) : T;\n\n transform(obj: any, ...args: any[]) {\n if (Array.isArray(obj) || !isObject(obj)) {\n return obj;\n }\n\n return args.reduce((o, k) => {\n return Object.assign(o, { [k]: obj[k] });\n }, {});\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isObject } from '../helpers/helpers';\nimport type { GenericRecord } from '../helpers/helpers';\n\n@Pipe({ name: 'omit' })\nexport class OmitPipe implements PipeTransform {\n transform<T extends any[]>(obj: T, ...args: any): T;\n transform<T, K extends (T extends GenericRecord<any> ? (keyof T)[] : never)>(obj: T, ...args: K): T extends GenericRecord<any> ? (K extends never ? T : Omit<T, K[number]>) : T;\n\n transform(obj: any, ...args: any[]) {\n if (Array.isArray(obj) || !isObject(obj)) {\n return obj;\n }\n\n return (\n Object.keys(obj)\n .filter(k => !~args.indexOf(k))\n .reduce((o, k) => {\n return Object.assign(o, { [k]: obj[k] });\n }, {})\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isObject } from '../helpers/helpers';\nimport type { GenericRecord } from '../helpers/helpers';\n\n@Pipe({ name: 'invert' })\nexport class InvertPipe implements PipeTransform {\n transform<T extends any[]>(obj: T): T;\n transform<T>(obj: T): T extends GenericRecord<any> ? GenericRecord<any> : T;\n\n transform(obj: any) {\n if (Array.isArray(obj) || !isObject(obj)) {\n return obj;\n }\n\n return Object.keys(obj).reduce((o, k) => {\n return Object.assign(o, { [obj[k]]: k });\n }, {});\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isObject } from '../helpers/helpers';\nimport type { GenericRecord } from '../helpers/helpers';\n\n@Pipe({ name: 'invertBy' })\nexport class InvertByPipe implements PipeTransform {\n transform<T extends any[]>(obj: T): T;\n transform<T>(obj: T, cb?: (val: any) => string): T extends GenericRecord<any> ? GenericRecord<any> : T;\n\n transform(obj: any, cb?: any) {\n if (Array.isArray(obj) || !isObject(obj)) {\n return obj;\n }\n\n return Object.keys(obj).reduce((o: any, k: string) => {\n const key = cb ? cb(obj[k]) : obj[k];\n\n return Array.isArray(o[key]) ? (o[key].push(k), o) : Object.assign(o, { [key]: [k] });\n }, {});\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getKeysTwoObjects, isDeepEqual, isObject } from '../helpers/helpers';\nimport type { GenericRecord } from '../helpers/helpers';\n\n@Pipe({ name: 'diffObj' })\nexport class DiffObjPipe implements PipeTransform {\n transform<T extends any[]>(obj: T, original: any): GenericRecord<never>;\n transform<T>(obj: T, original: any): T extends GenericRecord<any> ? Partial<T> : GenericRecord<never>;\n\n transform(obj: any, original: any) {\n if (Array.isArray(obj) || Array.isArray(original) || !isObject(obj) || !isObject(original)) {\n return {};\n }\n\n return getKeysTwoObjects(obj, original).reduce((diff: any, key: any) => {\n if (!isDeepEqual(original[key], obj[key])) {\n diff[key] = obj[key];\n }\n\n return diff;\n }, {});\n }\n}\n","import { KeysPipe } from './keys';\nimport { ValuesPipe } from './values';\nimport { PairsPipe } from './pairs';\nimport { PickPipe } from './pick';\nimport { OmitPipe } from './omit';\nimport { InvertPipe } from './invert';\nimport { InvertByPipe } from './invert-by';\nimport { DiffObjPipe } from './diff-obj';\nimport { NgModule } from '@angular/core';\n\nconst OBJECT_PIPES = [KeysPipe, ValuesPipe, PairsPipe, PickPipe, InvertPipe, InvertByPipe, OmitPipe, DiffObjPipe];\n\n@NgModule({\n imports: OBJECT_PIPES,\n exports: OBJECT_PIPES,\n})\nexport class NgObjectPipesModule { }\n\nexport { KeysPipe } from './keys';\nexport { ValuesPipe } from './values';\nexport { PairsPipe } from './pairs';\nexport { PickPipe } from './pick';\nexport { OmitPipe } from './omit';\nexport { InvertPipe } from './invert';\nexport { InvertByPipe } from './invert-by';\nexport { DiffObjPipe } from './diff-obj';\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isVowel } from '../helpers/helpers';\n\n@Pipe({\n name: 'aOrAn',\n})\n/**\n * Takes a string and returns the string prepended by 'a' or 'an'.\n * Uses both naive and holdout-list approaches.\n * @constructor\n * @param {string} stringEntity - Entity to prepend 'a' or 'an' to.\n */\nexport class AorAnPipe implements PipeTransform {\n private irregularMap: any = {\n herb: 'an',\n honor: 'an',\n honorable: 'an',\n hour: 'an',\n mba: 'an',\n msc: 'an',\n 'm.sc.': 'an',\n unicorn: 'a',\n };\n transform(stringEntity: string): string {\n if (!stringEntity || stringEntity === '') {\n return '';\n } else {\n const firstWord = stringEntity.trim().split(' ')[0];\n if (this.irregularMap[firstWord.toLocaleLowerCase()]) {\n return `${this.irregularMap[firstWord.toLocaleLowerCase()]} ${stringEntity}`;\n } else {\n return isVowel(stringEntity[0]) ? `an ${stringEntity}` : `a ${stringEntity}`;\n }\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString, ucFirst } from '../helpers/helpers';\n\n@Pipe({ name: 'ucwords' })\nexport class UcWordsPipe implements PipeTransform {\n transform(text: string): string;\n transform<T>(text: T): T;\n\n transform(text: any) {\n if (isString(text)) {\n return text\n .split(' ')\n .map((sub: any) => ucFirst(sub))\n .join(' ');\n }\n\n return text;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString } from '../helpers/helpers';\n\n@Pipe({ name: 'ltrim' })\nexport class LeftTrimPipe implements PipeTransform {\n transform(text: string, chars = '\\\\s'): string {\n return isString(text) ? text.replace(new RegExp(`^[${chars}]+`), '') : text;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString } from '../helpers/helpers';\n\n@Pipe({ name: 'repeat' })\nexport class RepeatPipe implements PipeTransform {\n transform(str: string, n = 1, separator = ''): string {\n if (n <= 0) {\n throw new RangeError();\n }\n\n return n === 1 ? str : this.repeat(str, n - 1, separator);\n }\n\n private repeat(str: string, n: number, separator: string): string {\n return isString(str) ? (n === 0 ? str : str + separator + this.repeat(str, n - 1, separator)) : str;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString } from '../helpers/helpers';\n\n@Pipe({ name: 'rtrim' })\nexport class RightTrimPipe implements PipeTransform {\n transform(text: string, chars = '\\\\s'): string {\n return isString(text) ? text.replace(new RegExp(`[${chars}]+$`), '') : text;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString, isUndefined } from '../helpers/helpers';\n\n@Pipe({ name: 'scan' })\nexport class ScanPipe implements PipeTransform {\n transform(text: string, args: string[] = []): string {\n return isString(text)\n ? text.replace(/\\{(\\d+)}/g, (match, index) => (!isUndefined(args[index]) ? args[index] : match))\n : text;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString } from '../helpers/helpers';\n\n@Pipe({ name: 'shorten' })\nexport class ShortenPipe implements PipeTransform {\n transform(text: string, length?: number, suffix?: string, wordBreak?: boolean): string;\n transform<T>(text: T, length?: number, suffix?: string, wordBreak?: boolean): T;\n\n transform(text: any, length = 0, suffix = '', wordBreak = true) {\n if (!isString(text)) {\n return text;\n }\n\n if (text.length > length) {\n if (wordBreak) {\n return text.slice(0, length) + suffix;\n }\n\n if (~text.indexOf(' ', length)) {\n return text.slice(0, text.indexOf(' ', length)) + suffix;\n }\n }\n\n return text;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'stripTags' })\nexport class StripTagsPipe implements PipeTransform {\n transform(text: string, ...allowedTags: string[]): string {\n return allowedTags.length > 0\n // eslint-disable-next-line no-useless-escape\n ? text.replace(new RegExp(`<(?!\\/?(${allowedTags.join('|')})\\s*\\/?)[^>]+>`, 'g'), '')\n : text.replace(/<(?:.|\\s)*?>/g, '');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString } from '../helpers/helpers';\n\n@Pipe({ name: 'trim' })\nexport class TrimPipe implements PipeTransform {\n transform(text: string, chars = '\\\\s'): string {\n return isString(text) ? text.replace(new RegExp(`^[${chars}]+|[${chars}]+$`, 'g'), '') : text;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString, ucFirst } from '../helpers/helpers';\n\n@Pipe({ name: 'ucfirst' })\nexport class UcFirstPipe implements PipeTransform {\n transform(text: string): string;\n transform<T>(text: T): T;\n\n transform(text: any) {\n return isString(text) ? ucFirst(text) : text;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString } from '../helpers/helpers';\n\n@Pipe({ name: 'slugify' })\nexport class SlugifyPipe implements PipeTransform {\n transform(str: string): string {\n return isString(str)\n ? str\n .toLowerCase()\n .trim()\n .replace(/[^\\w-]+/g, ' ')\n .replace(/\\s+/g, '-')\n : str;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString } from '../helpers/helpers';\n\n@Pipe({ name: 'camelize' })\nexport class CamelizePipe implements PipeTransform {\n transform(input: string, chars?: string): string;\n transform<T>(input: T, chars?: string): T;\n\n transform(text: string, chars = '\\\\s') {\n if (!isString(text)) {\n return text;\n }\n\n return text\n .toLowerCase()\n .split(/[-_\\s]/g)\n .filter((v: string) => !!v)\n .map((word: string, key: any) => {\n return !key ? word : word.slice(0, 1).toUpperCase() + word.slice(1);\n })\n .join('');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString } from '../helpers/helpers';\n\n@Pipe({ name: 'latinise' })\nexport class LatinisePipe implements PipeTransform {\n // Source: http://semplicewebsites.com/removing-accents-javascript\n private latinMap: any = {\n Á: 'A',\n Ă: 'A',\n Ắ: 'A',\n Ặ: 'A',\n Ằ: 'A',\n Ẳ: 'A',\n Ẵ: 'A',\n Ǎ: 'A',\n Â: 'A',\n Ấ: 'A',\n Ậ: 'A',\n Ầ: 'A',\n Ẩ: 'A',\n Ẫ: 'A',\n Ä: 'A',\n Ǟ: 'A',\n Ȧ: 'A',\n Ǡ: 'A',\n Ạ: 'A',\n Ȁ: 'A',\n À: 'A',\n Ả: 'A',\n Ȃ: 'A',\n Ā: 'A',\n Ą: 'A',\n Å: 'A',\n Ǻ: 'A',\n Ḁ: 'A',\n Ⱥ: 'A',\n Ã: 'A',\n Ꜳ: 'AA',\n Æ: 'AE',\n Ǽ: 'AE',\n Ǣ: 'AE',\n Ꜵ: 'AO',\n Ꜷ: 'AU',\n Ꜹ: 'AV',\n Ꜻ: 'AV',\n Ꜽ: 'AY',\n Ḃ: 'B',\n Ḅ: 'B',\n Ɓ: 'B',\n Ḇ: 'B',\n Ƀ: 'B',\n Ƃ: 'B',\n Ć: 'C',\n Č: 'C',\n Ç: 'C',\n Ḉ: 'C',\n Ĉ: 'C',\n Ċ: 'C',\n Ƈ: 'C',\n Ȼ: 'C',\n Ď: 'D',\n Ḑ: 'D',\n Ḓ: 'D',\n Ḋ: 'D',\n Ḍ: 'D',\n Ɗ: 'D',\n Ḏ: 'D',\n Dz: 'D',\n Dž: 'D',\n Đ: 'D',\n Ƌ: 'D',\n DZ: 'DZ',\n DŽ: 'DZ',\n É: 'E',\n Ĕ: 'E',\n Ě: 'E',\n Ȩ: 'E',\n Ḝ: 'E',\n Ê: 'E',\n Ế: 'E',\n Ệ: 'E',\n Ề: 'E',\n Ể: 'E',\n Ễ: 'E',\n Ḙ: 'E',\n Ë: 'E',\n Ė: 'E',\n Ẹ: 'E',\n Ȅ: 'E',\n È: 'E',\n Ẻ: 'E',\n Ȇ: 'E',\n Ē: 'E',\n Ḗ: 'E',\n Ḕ: 'E',\n Ę: 'E',\n Ɇ: 'E',\n Ẽ: 'E',\n Ḛ: 'E',\n Ꝫ: 'ET',\n Ḟ: 'F',\n Ƒ: 'F',\n Ǵ: 'G',\n Ğ: 'G',\n Ǧ: 'G',\n Ģ: 'G',\n Ĝ: 'G',\n Ġ: 'G',\n Ɠ: 'G',\n Ḡ: 'G',\n Ǥ: 'G',\n Ḫ: 'H',\n Ȟ: 'H',\n Ḩ: 'H',\n Ĥ: 'H',\n Ⱨ: 'H',\n Ḧ: 'H',\n Ḣ: 'H',\n Ḥ: 'H',\n Ħ: 'H',\n Í: 'I',\n Ĭ: 'I',\n Ǐ: 'I',\n Î: 'I',\n Ï: 'I',\n Ḯ: 'I',\n İ: 'I',\n Ị: 'I',\n Ȉ: 'I',\n Ì: 'I',\n Ỉ: 'I',\n Ȋ: 'I',\n Ī: 'I',\n Į: 'I',\n Ɨ: 'I',\n Ĩ: 'I',\n Ḭ: 'I',\n Ꝺ: 'D',\n Ꝼ: 'F',\n Ᵹ: 'G',\n Ꞃ: 'R',\n Ꞅ: 'S',\n Ꞇ: 'T',\n Ꝭ: 'IS',\n Ĵ: 'J',\n Ɉ: 'J',\n Ḱ: 'K',\n Ǩ: 'K',\n Ķ: 'K',\n Ⱪ: 'K',\n Ꝃ: 'K',\n Ḳ: 'K',\n Ƙ: 'K',\n Ḵ: 'K',\n Ꝁ: 'K',\n Ꝅ: 'K',\n Ĺ: 'L',\n Ƚ: 'L',\n Ľ: 'L',\n Ļ: 'L',\n Ḽ: 'L',\n Ḷ: 'L',\n Ḹ: 'L',\n Ⱡ: 'L',\n Ꝉ: 'L',\n Ḻ: 'L',\n Ŀ: 'L',\n Ɫ: 'L',\n Lj: 'L',\n Ł: 'L',\n LJ: 'LJ',\n Ḿ: 'M',\n Ṁ: 'M',\n Ṃ: 'M',\n Ɱ: 'M',\n Ń: 'N',\n Ň: 'N',\n Ņ: 'N',\n Ṋ: 'N',\n Ṅ: 'N',\n Ṇ: 'N',\n Ǹ: 'N',\n Ɲ: 'N',\n Ṉ: 'N',\n Ƞ: 'N',\n Nj: 'N',\n Ñ: 'N',\n NJ: 'NJ',\n Ó: 'O',\n Ŏ: 'O',\n Ǒ: 'O',\n Ô: 'O',\n Ố: 'O',\n Ộ: 'O',\n Ồ: 'O',\n Ổ: 'O',\n Ỗ: 'O',\n Ö: 'O',\n Ȫ: 'O',\n Ȯ: 'O',\n Ȱ: 'O',\n Ọ: 'O',\n Ő: 'O',\n Ȍ: 'O',\n Ò: 'O',\n Ỏ: 'O',\n Ơ: 'O',\n Ớ: 'O',\n Ợ: 'O',\n Ờ: 'O',\n Ở: 'O',\n Ỡ: 'O',\n Ȏ: 'O',\n Ꝋ: 'O',\n Ꝍ: 'O',\n Ō: 'O',\n Ṓ: 'O',\n Ṑ: 'O',\n Ɵ: 'O',\n Ǫ: 'O',\n Ǭ: 'O',\n Ø: 'O',\n Ǿ: 'O',\n Õ: 'O',\n Ṍ: 'O',\n Ṏ: 'O',\n Ȭ: 'O',\n Ƣ: 'OI',\n Ꝏ: 'OO',\n Ɛ: 'E',\n Ɔ: 'O',\n Ȣ: 'OU',\n Ṕ: 'P',\n Ṗ: 'P',\n Ꝓ: 'P',\n Ƥ: 'P',\n Ꝕ: 'P',\n Ᵽ: 'P',\n Ꝑ: 'P',\n Ꝙ: 'Q',\n Ꝗ: 'Q',\n Ŕ: 'R',\n Ř: 'R',\n Ŗ: 'R',\n Ṙ: 'R',\n Ṛ: 'R',\n Ṝ: 'R',\n Ȑ: 'R',\n Ȓ: 'R',\n Ṟ: 'R',\n Ɍ: 'R',\n Ɽ: 'R',\n Ꜿ: 'C',\n Ǝ: 'E',\n Ś: 'S',\n Ṥ: 'S',\n Š: 'S',\n Ṧ: 'S',\n Ş: 'S',\n Ŝ: 'S',\n Ș: 'S',\n Ṡ: 'S',\n Ṣ: 'S',\n Ṩ: 'S',\n ẞ: 'SS',\n Ť: 'T',\n Ţ: 'T',\n Ṱ: 'T',\n Ț: 'T',\n Ⱦ: 'T',\n Ṫ: 'T',\n Ṭ: 'T',\n Ƭ: 'T',\n Ṯ: 'T',\n Ʈ: 'T',\n Ŧ: 'T',\n Ɐ: 'A',\n Ꞁ: 'L',\n Ɯ: 'M',\n Ʌ: 'V',\n Ꜩ: 'TZ',\n Ú: 'U',\n Ŭ: 'U',\n Ǔ: 'U',\n Û: 'U',\n Ṷ: 'U',\n Ü: 'U',\n Ǘ: 'U',\n Ǚ: 'U',\n Ǜ: 'U',\n Ǖ: 'U',\n Ṳ: 'U',\n Ụ: 'U',\n Ű: 'U',\n Ȕ: 'U',\n Ù: 'U',\n Ủ: 'U',\n Ư: 'U',\n Ứ: 'U',\n Ự: 'U',\n Ừ: 'U',\n Ử: 'U',\n Ữ: 'U',\n Ȗ: 'U',\n Ū: 'U',\n Ṻ: 'U',\n Ų: 'U',\n Ů: 'U',\n Ũ: 'U',\n Ṹ: 'U',\n Ṵ: 'U',\n Ꝟ: 'V',\n Ṿ: 'V',\n Ʋ: 'V',\n Ṽ: 'V',\n Ꝡ: 'VY',\n Ẃ: 'W',\n Ŵ: 'W',\n Ẅ: 'W',\n Ẇ: 'W',\n Ẉ: 'W',\n Ẁ: 'W',\n Ⱳ: 'W',\n Ẍ: 'X',\n Ẋ: 'X',\n Ý: 'Y',\n Ŷ: 'Y',\n Ÿ: 'Y',\n Ẏ: 'Y',\n Ỵ: 'Y',\n Ỳ: 'Y',\n Ƴ: 'Y',\n Ỷ: 'Y',\n Ỿ: 'Y',\n Ȳ: 'Y',\n Ɏ: 'Y',\n Ỹ: 'Y',\n Ź: 'Z',\n Ž: 'Z',\n Ẑ: 'Z',\n Ⱬ: 'Z',\n Ż: 'Z',\n Ẓ: 'Z',\n Ȥ: 'Z',\n Ẕ: 'Z',\n Ƶ: 'Z',\n IJ: 'IJ',\n Œ: 'OE',\n ᴀ: 'A',\n ᴁ: 'AE',\n ʙ: 'B',\n ᴃ: 'B',\n ᴄ: 'C',\n ᴅ: 'D',\n ᴇ: 'E',\n ꜰ: 'F',\n ɢ: 'G',\n ʛ: 'G',\n ʜ: 'H',\n ɪ: 'I',\n ʁ: 'R',\n ᴊ: 'J',\n ᴋ: 'K',\n ʟ: 'L',\n ᴌ: 'L',\n ᴍ: 'M',\n ɴ: 'N',\n ᴏ: 'O',\n ɶ: 'OE',\n ᴐ: 'O',\n ᴕ: 'OU',\n ᴘ: 'P',\n ʀ: 'R',\n ᴎ: 'N',\n ᴙ: 'R',\n ꜱ: 'S',\n ᴛ: 'T',\n ⱻ: 'E',\n ᴚ: 'R',\n ᴜ: 'U',\n ᴠ: 'V',\n ᴡ: 'W',\n ʏ: 'Y',\n ᴢ: 'Z',\n á: 'a',\n ă: 'a',\n ắ: 'a',\n ặ: 'a',\n ằ: 'a',\n ẳ: 'a',\n ẵ: 'a',\n ǎ: 'a',\n â: 'a',\n ấ: 'a',\n ậ: 'a',\n ầ: 'a',\n ẩ: 'a',\n ẫ: 'a',\n ä: 'a',\n ǟ: 'a',\n ȧ: 'a',\n ǡ: 'a',\n ạ: 'a',\n ȁ: 'a',\n à: 'a',\n ả: 'a',\n ȃ: 'a',\n ā: 'a',\n ą: 'a',\n ᶏ: 'a',\n ẚ: 'a',\n å: 'a',\n ǻ: 'a',\n ḁ: 'a',\n ⱥ: 'a',\n ã: 'a',\n ꜳ: 'aa',\n æ: 'ae',\n ǽ: 'ae',\n ǣ: 'ae',\n ꜵ: 'ao',\n ꜷ: 'au',\n ꜹ: 'av',\n ꜻ: 'av',\n ꜽ: 'ay',\n ḃ: 'b',\n ḅ: 'b',\n ɓ: 'b',\n ḇ: 'b',\n ᵬ: 'b',\n ᶀ: 'b',\n ƀ: 'b',\n ƃ: 'b',\n ɵ: 'o',\n ć: 'c',\n č: 'c',\n ç: 'c',\n ḉ: 'c',\n ĉ: 'c',\n ɕ: 'c',\n ċ: 'c',\n ƈ: 'c',\n ȼ: 'c',\n ď: 'd',\n ḑ: 'd',\n ḓ: 'd',\n ȡ: 'd',\n ḋ: 'd',\n ḍ: 'd',\n ɗ: 'd',\n ᶑ: 'd',\n ḏ: 'd',\n ᵭ: 'd',\n ᶁ: 'd',\n đ: 'd',\n ɖ: 'd',\n ƌ: 'd',\n ı: 'i',\n ȷ: 'j',\n ɟ: 'j',\n ʄ: 'j',\n dz: 'dz',\n dž: 'dz',\n é: 'e',\n ĕ: 'e',\n ě: 'e',\n ȩ: 'e',\n ḝ: 'e',\n ê: 'e',\n ế: 'e',\n ệ: 'e',\n ề: 'e',\n ể: 'e',\n ễ: 'e',\n ḙ: 'e',\n ë: 'e',\n ė: 'e',\n ẹ: 'e',\n ȅ: 'e',\n è: 'e',\n ẻ: 'e',\n ȇ: 'e',\n ē: 'e',\n ḗ: 'e',\n ḕ: 'e',\n ⱸ: 'e',\n ę: 'e',\n ᶒ: 'e',\n ɇ: 'e',\n ẽ: 'e',\n ḛ: 'e',\n ꝫ: 'et',\n ḟ: 'f',\n ƒ: 'f',\n ᵮ: 'f',\n ᶂ: 'f',\n ǵ: 'g',\n ğ: 'g',\n ǧ: 'g',\n ģ: 'g',\n ĝ: 'g',\n ġ: 'g',\n ɠ: 'g',\n ḡ: 'g',\n ᶃ: 'g',\n ǥ: 'g',\n ḫ: 'h',\n ȟ: 'h',\n ḩ: 'h',\n ĥ: 'h',\n ⱨ: 'h',\n ḧ: 'h',\n ḣ: 'h',\n ḥ: 'h',\n ɦ: 'h',\n ẖ: 'h',\n ħ: 'h',\n ƕ: 'hv',\n í: 'i',\n ĭ: 'i',\n ǐ: 'i',\n î: 'i',\n ï: 'i',\n ḯ: 'i',\n ị: 'i',\n ȉ: 'i',\n ì: 'i',\n ỉ: 'i',\n ȋ: 'i',\n ī: 'i',\n į: 'i',\n ᶖ: 'i',\n ɨ: 'i',\n ĩ: 'i',\n ḭ: 'i',\n ꝺ: 'd',\n ꝼ: 'f',\n ᵹ: 'g',\n ꞃ: 'r',\n ꞅ: 's',\n ꞇ: 't',\n ꝭ: 'is',\n ǰ: 'j',\n ĵ: 'j',\n ʝ: 'j',\n ɉ: 'j',\n ḱ: 'k',\n ǩ: 'k',\n ķ: 'k',\n ⱪ: 'k',\n ꝃ: 'k',\n ḳ: 'k',\n ƙ: 'k',\n ḵ: 'k',\n ᶄ: 'k',\n ꝁ: 'k',\n ꝅ: 'k',\n ĺ: 'l',\n ƚ: 'l',\n ɬ: 'l',\n ľ: 'l',\n ļ: 'l',\n ḽ: 'l',\n ȴ: 'l',\n ḷ: 'l',\n ḹ: 'l',\n ⱡ: 'l',\n ꝉ: 'l',\n ḻ: 'l',\n ŀ: 'l',\n ɫ: 'l',\n ᶅ: 'l',\n ɭ: 'l',\n ł: 'l',\n lj: 'lj',\n ſ: 's',\n ẜ: 's',\n ẛ: 's',\n ẝ: 's',\n ḿ: 'm',\n ṁ: 'm',\n ṃ: 'm',\n ɱ: 'm',\n ᵯ: 'm',\n ᶆ: 'm',\n ń: 'n',\n ň: 'n',\n ņ: 'n',\n ṋ: 'n',\n ȵ: 'n',\n ṅ: 'n',\n ṇ: 'n',\n ǹ: 'n',\n ɲ: 'n',\n ṉ: 'n',\n ƞ: 'n',\n ᵰ: 'n',\n ᶇ: 'n',\n ɳ: 'n',\n ñ: 'n',\n nj: 'nj',\n ó: 'o',\n ŏ: 'o',\n ǒ: 'o',\n ô: 'o',\n ố: 'o',\n ộ: 'o',\n ồ: 'o',\n ổ: 'o',\n ỗ: 'o',\n ö: 'o',\n ȫ: 'o',\n ȯ: 'o',\n ȱ: 'o',\n ọ: 'o',\n ő: 'o',\n ȍ: 'o',\n ò: 'o',\n ỏ: 'o',\n ơ: 'o',\n ớ: 'o',\n ợ: 'o',\n ờ: 'o',\n ở: 'o',\n ỡ: 'o',\n ȏ: 'o',\n ꝋ: 'o',\n ꝍ: 'o',\n ⱺ: 'o',\n ō: 'o',\n ṓ: 'o',\n ṑ: 'o',\n ǫ: 'o',\n ǭ: 'o',\n ø: 'o',\n ǿ: 'o',\n õ: 'o',\n ṍ: 'o',\n ṏ: 'o',\n ȭ: 'o',\n ƣ: 'oi',\n ꝏ: 'oo',\n ɛ: 'e',\n ᶓ: 'e',\n ɔ: 'o',\n ᶗ: 'o',\n ȣ: 'ou',\n ṕ: 'p',\n ṗ: 'p',\n ꝓ: 'p',\n ƥ: 'p',\n ᵱ: 'p',\n ᶈ: 'p',\n ꝕ: 'p',\n ᵽ: 'p',\n ꝑ: 'p',\n ꝙ: 'q',\n ʠ: 'q',\n ɋ: 'q',\n ꝗ: 'q',\n ŕ: 'r',\n ř: 'r',\n ŗ: 'r',\n ṙ: 'r',\n ṛ: 'r',\n ṝ: 'r',\n ȑ: 'r',\n ɾ: 'r',\n ᵳ: 'r',\n ȓ: 'r',\n ṟ: 'r',\n ɼ: 'r',\n ᵲ: 'r',\n ᶉ: 'r',\n ɍ: 'r',\n ɽ: 'r',\n ↄ: 'c',\n ꜿ: 'c',\n ɘ: 'e',\n ɿ: 'r',\n ś: 's',\n ṥ: 's',\n š: 's',\n ṧ: 's',\n ş: 's',\n ŝ: 's',\n ș: 's',\n ṡ: 's',\n ṣ: 's',\n ṩ: 's',\n ʂ: 's',\n ᵴ: 's',\n ᶊ: 's',\n ȿ: 's',\n ɡ: 'g',\n ß: 'ss',\n ᴑ: 'o',\n ᴓ: 'o',\n ᴝ: 'u',\n ť: 't',\n ţ: 't',\n ṱ: 't',\n ț: 't',\n ȶ: 't',\n ẗ: 't',\n ⱦ: 't',\n ṫ: 't',\n ṭ: 't',\n ƭ: 't',\n ṯ: 't',\n ᵵ: 't',\n ƫ: 't',\n ʈ: 't',\n ŧ: 't',\n ᵺ: 'th',\n ɐ: 'a',\n ᴂ: 'ae',\n ǝ: 'e',\n ᵷ: 'g',\n ɥ: 'h',\n ʮ: 'h',\n ʯ: 'h',\n ᴉ: 'i',\n ʞ: 'k',\n ꞁ: 'l',\n ɯ: 'm',\n ɰ: 'm',\n ᴔ: 'oe',\n ɹ: 'r',\n ɻ: 'r',\n ɺ: 'r',\n ⱹ: 'r',\n ʇ: 't',\n ʌ: 'v',\n ʍ: 'w',\n ʎ: 'y',\n ꜩ: 'tz',\n ú: 'u',\n ŭ: 'u',\n ǔ: 'u',\n û: 'u',\n ṷ: 'u',\n ü: 'u',\n ǘ: 'u',\n ǚ: 'u',\n ǜ: 'u',\n ǖ: 'u',\n ṳ: 'u',\n ụ: 'u',\n ű: 'u',\n ȕ: 'u',\n ù: 'u',\n ủ: 'u',\n ư: 'u',\n ứ: 'u',\n ự: 'u',\n ừ: 'u',\n ử: 'u',\n ữ: 'u',\n ȗ: 'u',\n ū: 'u',\n ṻ: 'u',\n ų: 'u',\n ᶙ: 'u',\n ů: 'u',\n ũ: 'u',\n ṹ: 'u',\n ṵ: 'u',\n ᵫ: 'ue',\n ꝸ: 'um',\n ⱴ: 'v',\n ꝟ: 'v',\n ṿ: 'v',\n ʋ: 'v',\n ᶌ: 'v',\n ⱱ: 'v',\n ṽ: 'v',\n ꝡ: 'vy',\n ẃ: 'w',\n ŵ: 'w',\n ẅ: 'w',\n ẇ: 'w',\n ẉ: 'w',\n ẁ: 'w',\n ⱳ: 'w',\n ẘ: 'w',\n ẍ: 'x',\n ẋ: 'x',\n ᶍ: 'x',\n ý: 'y',\n ŷ: 'y',\n ÿ: 'y',\n ẏ: 'y',\n ỵ: 'y',\n ỳ: 'y',\n ƴ: 'y',\n ỷ: 'y',\n ỿ: 'y',\n ȳ: 'y',\n ẙ: 'y',\n ɏ: 'y',\n ỹ: 'y',\n ź: 'z',\n ž: 'z',\n ẑ: 'z',\n ʑ: 'z',\n ⱬ: 'z',\n ż: 'z',\n ẓ: 'z',\n ȥ: 'z',\n ẕ: 'z',\n ᵶ: 'z',\n ᶎ: 'z',\n ʐ: 'z',\n ƶ: 'z',\n ɀ: 'z',\n ff: 'ff',\n ffi: 'ffi',\n ffl: 'ffl',\n fi: 'fi',\n fl: 'fl',\n ij: 'ij',\n œ: 'oe',\n st: 'st',\n ₐ: 'a',\n ₑ: 'e',\n ᵢ: 'i',\n ⱼ: 'j',\n ₒ: 'o',\n ᵣ: 'r',\n ᵤ: 'u',\n ᵥ: 'v',\n ₓ: 'x',\n };\n\n transform(input: string, chars?: string): string;\n transform<T>(input: T, chars?: string): T;\n\n transform(text: string, chars = '\\\\s') {\n return isString(text)\n ? text.replace(/[^A-Za-z0-9]/g, (key: string) => {\n return this.latinMap[key] || key;\n })\n : text;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isString } from '../helpers/helpers';\n\n@Pipe({ name: 'lines' })\nexport class LinesPipe implemen