{"version":3,"file":"obliczeniowo-elementary-utils.mjs","sources":["../../../../projects/components/utils/string.ts","../../../../projects/components/utils/validators.ts","../../../../projects/components/utils/data/chemical-elements.ts","../../../../projects/components/utils/obliczeniowo-elementary-utils.ts"],"sourcesContent":["export const firstToUpper = (text: string) => {\r\n  if (!text.length) {\r\n    return text;\r\n  }\r\n  return text.charAt(0).toUpperCase() + text.slice(1)\r\n}\r\n\r\nexport const allWordsFirstToUpper = (text: string) => {\r\n  return text.split(' ').map(text => firstToUpper(text)).join(' ');\r\n}\r\n\r\nexport const toCamelCase = (text: string) => {\r\n  return allWordsFirstToUpper(text.replace(/\\s/g, ' ').trim()).replace(/\\s/g, '');\r\n}","import { AbstractControl, UntypedFormGroup, ValidationErrors } from '@angular/forms';\r\n\r\nexport class OblValidators {\r\n  /**\r\n   * Expressions used to validate, you can override them on very start of your application to apply your own specific\r\n   * validation for e-mail or what so ever\r\n   */\r\n  static regs: { [name: string]: RegExp } = {\r\n    email: /^(([^<>()\\[\\]\\.,;:\\s@\\\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i,\r\n    noWhiteSpaces: /^[^\\s]*$/,\r\n    login: /^[a-zA-Z0-9]*$/,\r\n    uLogin: /^[\\p{Alphabetic}0-9]*$/u\r\n  }\r\n\r\n  /**\r\n   * Test if email is valid\r\n   *\r\n   * In case you want to override it you can just change OblValidators.regs.email to what you want\r\n   *\r\n   * @example\r\n   *\r\n   * \"test@test.pl\" => null\r\n   * \"test@test\" => { 'invalid-email': true }\r\n   * \"test\" => { 'invalid-email': true }\r\n   * \"test@\" => { 'invalid-email': true }\r\n   */\r\n  static email(control: AbstractControl): ValidationErrors | null {\r\n    const email = control.value;\r\n    const ok = null;\r\n\r\n    if (!email) {\r\n      return ok;\r\n    }\r\n\r\n    if (email !== '' && !OblValidators.regs.email.test(email)) {\r\n      return { 'invalid-email': true };\r\n    }\r\n\r\n    return ok;\r\n  }\r\n\r\n  /**\r\n   * Test Polish NIP (number of task identify)\r\n   */\r\n  static nip(control: AbstractControl): ValidationErrors | null {\r\n    let nip: string = control.value?.toString() || '';\r\n\r\n    nip = nip.replace(/[\\ \\-]/gi, '');\r\n\r\n    if (nip.length !== 10) {\r\n      return { 'nip-length': true }\r\n    }\r\n\r\n    const weights = [6, 5, 7, 2, 3, 4, 5, 6, 7];\r\n    let sum = 0;\r\n    const controlNumber = parseInt(nip.substring(9, 10));\r\n    const weightCount = weights.length;\r\n\r\n    for (let i = 0; i < weightCount; i++) {\r\n      sum += (parseInt(nip.substr(i, 1)) * weights[i]);\r\n    }\r\n\r\n    return sum % 11 === controlNumber ? null : { 'nip-sum': true };\r\n  }\r\n\r\n  /**\r\n   * Test Polish PESEL number\r\n   */\r\n  static pesel(control: AbstractControl): ValidationErrors | null {\r\n    let pesel = control.value?.toString() || '';\r\n\r\n    pesel = pesel.replace(/[\\ \\-]/gi, '');\r\n\r\n    if (pesel.length !== 10) {\r\n      return { 'pesel-length': true }\r\n    }\r\n\r\n    const weight = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3];\r\n    let sum = 0;\r\n    const controlNumber = parseInt(pesel.substring(10, 11));\r\n\r\n    for (let i = 0; i < weight.length; i++) {\r\n      sum += (parseInt(pesel.substring(i, i + 1)) * weight[i]);\r\n    }\r\n\r\n    sum = sum % 10;\r\n\r\n    return (10 - sum) % 10 === controlNumber ? null : { 'pesel-sum': true };\r\n  }\r\n\r\n  /**\r\n   * Validate Polish REGON number\r\n   */\r\n  static regon(control: AbstractControl): ValidationErrors | null {\r\n    let rawRegon = control.value?.toString();\r\n\r\n    rawRegon = rawRegon.replace(/[\\ \\-]/gi, '');\r\n\r\n    const weights9 = [8, 9, 2, 3, 4, 5, 6, 7];\r\n    const weights14 = [2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8];\r\n\r\n    if (!rawRegon) {\r\n      return null;\r\n    }\r\n\r\n    const regon = rawRegon.toString().replace(/[^a-z\\d]/gi, '');\r\n\r\n    if (regon.length !== 9 && regon.length !== 14) {\r\n      return { 'regon-length': true };\r\n    }\r\n\r\n    // calculate checksum\r\n    let sum = 0;\r\n    weights9.forEach((weight, position) => {\r\n      const digit = Number(regon[position]);\r\n      sum += weight * digit;\r\n    });\r\n\r\n    const checksum = (sum % 11) % 10;\r\n\r\n    if (checksum !== Number(regon[8])) {\r\n      return { 'regon-checksum': true };\r\n    }\r\n\r\n    if (regon.length === 14) {\r\n      // calculate second checksum\r\n      let sum2 = 0;\r\n      weights14.forEach((weight, position) => {\r\n        const digit = Number(regon[position]);\r\n        sum2 += weight * digit;\r\n      });\r\n\r\n      const checksum2 = (sum2 % 11) % 10;\r\n\r\n      if (checksum2 !== Number(regon[13])) {\r\n        return { 'regon-checksum': true };\r\n      }\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  /**\r\n   * Test if contains white spaces (space, tabulator, new line)\r\n   *\r\n   * @example\r\n   *\r\n   * \"test@#$%_01234\" => null\r\n   * \"test@#$% 01234\" => { 'white-spaces': true }\r\n   */\r\n  static noWhiteSpaces(control: AbstractControl): ValidationErrors | null {\r\n    return OblValidators.regs.noWhiteSpaces.test(control.value) ? null : { 'white-spaces': true };\r\n  }\r\n\r\n  /**\r\n   * Test if value from AbstractControl contain only any alphabetical unicode sign or number 0-9 excluding _\r\n   * this unicode version can have some problem on different types of browsers\r\n   *\r\n   * In case you want to override it you can just change OblValidators.regs.login to what you want\r\n   *\r\n   * @example\r\n   *\r\n   * \"zazolcGesiaJazn\" => null\r\n   * \"zażółćGęsiąJaźń\" => { 'non-digit-or-alphabetical': true }\r\n   * \"zazolcGesiaJazn0123456789\" => null\r\n   * \"zazolcGesiaJaznń0123456789_\" => { 'non-digit-or-alphabetical': true }\r\n   * \"zazolcGesiaJazn0123456789$%^\" => { 'non-digit-or-alphabetical': true }\r\n   * \"zazolc gesia jazn\" => { 'white-spaces': true }\r\n   */\r\n  static login(control: AbstractControl): ValidationErrors | null {\r\n    const err = OblValidators.noWhiteSpaces(control);\r\n\r\n    if (err) {\r\n      return err;\r\n    }\r\n\r\n    return OblValidators.regs.login.test(control.value) ? null : { 'non-digit-or-alphabetical': true };\r\n  }\r\n\r\n  /**\r\n   * Test if value from AbstractControl contain only any alphabetical unicode sign or number 0-9 excluding _\r\n   * this unicode version can have some problem on different types of browsers, if it's ok for you to have\r\n   * ASCII only version then please use login version\r\n   *\r\n   * In case you want to override it you can just change OblValidators.regs.uLogin to what you want\r\n   *\r\n   * @example\r\n   *\r\n   * \"zażółćGęsiąJaźń\" => null\r\n   * \"zażółćGęsiąJaźń0123456789\" => null\r\n   * \"zażółćGęsiąJaźń0123456789_\" => { 'non-digit-or-alphabetical': true }\r\n   * \"zażółćGęsiąJaźń0123456789$%^\" => { 'non-digit-or-alphabetical': true }\r\n   * \"zażółć gęsią jaźń\" => { 'white-spaces': true }\r\n   */\r\n  static uLogin(control: AbstractControl): ValidationErrors | null {\r\n    const err = OblValidators.noWhiteSpaces(control);\r\n\r\n    if (err) {\r\n      return err;\r\n    }\r\n\r\n    return OblValidators.regs.uLogin.test(control.value) ? null : { 'non-digit-or-alphabetical': true };\r\n  }\r\n\r\n  /**\r\n   * validate if values matching\r\n   */\r\n  static equalValidator(value: string) {\r\n    return (control: AbstractControl): { [key: string]: any } | null => {\r\n      if (control.value !== value) {\r\n        return { 'not-equal': true };\r\n      }\r\n      return null;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * validate if value from form group with name is equal to value to validated field\r\n   */\r\n  static equalFormFieldValidator(form: UntypedFormGroup, name: string) {\r\n    return (control: AbstractControl): { [key: string]: any } | null => {\r\n      if (control.value !== form.get(name)?.getRawValue()) {\r\n        return { 'not-equal': true };\r\n      }\r\n      return null;\r\n    }\r\n  }\r\n}\r\n","export const symbols = [\r\n  'H',\r\n  'He',\r\n  'Li',\r\n  'Be',\r\n  'B',\r\n  'C',\r\n  'N',\r\n  'O',\r\n  'F',\r\n  'Ne',\r\n  'Na',\r\n  'Mg',\r\n  'Al',\r\n  'Si',\r\n  'P',\r\n  'S',\r\n  'Cl',\r\n  'Ar',\r\n  'K',\r\n  'Ca',\r\n  'Sc',\r\n  'Ti',\r\n  'V',\r\n  'Cr',\r\n  'Mn',\r\n  'Fe',\r\n  'Co',\r\n  'Ni',\r\n  'Cu',\r\n  'Zn',\r\n  'Ga',\r\n  'Ge',\r\n  'As',\r\n  'Se',\r\n  'Br',\r\n  'Kr',\r\n  'Rb',\r\n  'Sr',\r\n  'Y',\r\n  'Zr',\r\n  'Nb',\r\n  'Mo',\r\n  'Tc',\r\n  'Ru',\r\n  'Rh',\r\n  'Pd',\r\n  'Ag',\r\n  'Cd',\r\n  'In',\r\n  'Sn',\r\n  'Sb',\r\n  'Te',\r\n  'I',\r\n  'Xe',\r\n  'Cs',\r\n  'Ba',\r\n  'La',\r\n  'Ce',\r\n  'Pr',\r\n  'Nd',\r\n  'Pm',\r\n  'Sm',\r\n  'Eu',\r\n  'Gd',\r\n  'Tb',\r\n  'Dy',\r\n  'Ho',\r\n  'Er',\r\n  'Tm',\r\n  'Yb',\r\n  'Lu',\r\n  'Hf',\r\n  'Ta',\r\n  'W',\r\n  'Re',\r\n  'Os',\r\n  'Ir',\r\n  'Pt',\r\n  'Au',\r\n  'Hg',\r\n  'Tl',\r\n  'Pb',\r\n  'Bi',\r\n  'Po',\r\n  'At',\r\n  'Rn',\r\n  'Fr',\r\n  'Ra',\r\n  'Ac',\r\n  'Th',\r\n  'Pa',\r\n  'U',\r\n  'Np',\r\n  'Pu',\r\n  'Am',\r\n  'Cm',\r\n  'Bk',\r\n  'Cf',\r\n  'Es',\r\n  'Fm',\r\n  'Md',\r\n  'No',\r\n  'Lr',\r\n  'Rf',\r\n  'Db',\r\n  'Sg',\r\n  'Bh',\r\n  'Hs',\r\n  'Mt',\r\n  'Ds',\r\n  'Rg',\r\n  'Cn',\r\n  'Nh',\r\n  'Fl',\r\n  'Mc',\r\n  'Lv',\r\n  'Ts',\r\n  'Og',\r\n];\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}