{"version":3,"file":"obliczeniowo-elementary-password.mjs","sources":["../../../../projects/components/password/components/password-strength/password-strength.component.ts","../../../../projects/components/password/components/password-strength/password-strength.component.html","../../../../projects/components/password/password.module.ts","../../../../projects/components/password/obliczeniowo-elementary-password.ts"],"sourcesContent":["import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\r\nimport { PasswordType } from '../../types/types';\r\n\r\n@Component({\r\n    selector: 'obl-password-strength',\r\n    templateUrl: './password-strength.component.html',\r\n    styleUrls: ['./password-strength.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: false\r\n})\r\nexport class PasswordStrengthComponent {\r\n  @Input() password = '';\r\n\r\n  readonly height = 1;\r\n\r\n  readonly weryWeak = Math.pow(26, 10);\r\n  readonly weak = Math.pow(26 + 26, 10);\r\n  readonly strong = Math.pow(26 + 26 + 10, 10);\r\n  readonly weryStrong = Math.pow(26 + 26 + 10 + 30, 10);\r\n\r\n  translations: {\r\n    weryWeak: string,\r\n    weak: string,\r\n    strong: string,\r\n    weryStrong: string\r\n  } = {\r\n      weryWeak: 'wery weak',\r\n      weak: 'weak',\r\n      strong: 'strong',\r\n      weryStrong: 'wery strong'\r\n    };\r\n\r\n  id!: string;\r\n  strengthType: PasswordType = 'weryWeak';\r\n\r\n  constructor(protected change: ChangeDetectorRef) {\r\n    const generate = () => `Password_${Math.floor(Math.random() * 100000000)}`;\r\n    this.id = generate();\r\n    while (document.querySelector('#' + this.id)) {\r\n      this.id = generate();\r\n    }\r\n  }\r\n\r\n  getK(): number {\r\n    const strength = this.getStrength();\r\n    if (strength < this.weryWeak) {\r\n      this.strengthType = 'weryWeak';\r\n      return 0.4 * strength / this.weryWeak;\r\n    } else if (strength < this.weak) {\r\n      this.strengthType = 'weak';\r\n      return 0.4 + 0.4 * strength / this.weak;\r\n    } else if (strength < this.strong) {\r\n      this.strengthType = 'strong';\r\n      return 0.8 + 0.1 * strength / this.strong;\r\n    } else if (strength < this.weryStrong) {\r\n      this.strengthType = 'weryStrong';\r\n      return 0.9 + 0.1 * strength / this.weryStrong;\r\n    }\r\n    this.strengthType = 'weryStrong';\r\n    return 1;\r\n  }\r\n\r\n  getStrength(): number {\r\n    const hasLowerCase = /[a-z]/.test(this.password);\r\n    const hasUpperCase = /[A-Z]/.test(this.password);\r\n    const hasNumbers = /[0-9]/.test(this.password);\r\n    const hasSpecialChars = /[^a-zA-Z0-9\\s]/.test(this.password);\r\n    const hasWhiteSpace = /[ \\t]/.test(this.password);\r\n\r\n    return Math.pow((hasLowerCase && 26 || 0) +\r\n      (hasUpperCase && 26 || 0) +\r\n      (hasNumbers && 10 || 0) +\r\n      (hasSpecialChars && 30 || 0) +\r\n      (hasWhiteSpace && 2 || 0),\r\n      this.password.length\r\n    );\r\n  }\r\n}\r\n","<svg height=\"5\" viewBox=\"0 0 52.916665 1.3229167\">\r\n  <defs id=\"defs2\">\r\n    <clipPath [attr.id]=\"id\">\r\n      <rect [attr.width]=\"100 * getK() + '%'\" height=\"1.3229166\" x=\"0\" y=\"0\" />\r\n    </clipPath>\r\n  </defs>\r\n  <path\r\n    class=\"background\"\r\n    d=\"M 0,0 V 1.3229166 H 11.90625 V 0 Z M 13.229167,0 V 1.3229166 H 25.135416 V 0 Z m 13.229166,0 v 1.3229166 h 11.90625 V 0 Z M 39.6875,0 v 1.3229166 h 6.614583 V 0 Z m 7.937499,0 v 1.3229166 h 5.291667 V 0 Z\"\r\n  />\r\n  <g [attr.clip-path]=\"'url(#' + id + ')'\">\r\n    <path class=\"weak\" d=\"M -1.666668e-8,0 V 1.3229167 H 11.90625 V 0 Z\" />\r\n    <path class=\"weak\" d=\"m 13.229167,0 v 1.3229167 h 11.90625 V 0 Z\" />\r\n    <path class=\"weak\" d=\"m 26.458333,0 v 1.3229167 h 11.90625 V 0 Z\" />\r\n    <path class=\"strong\" d=\"m 39.6875,0 v 1.3229167 h 6.614583 V 0 Z\" />\r\n    <path class=\"wery-strong\" d=\"m 47.625,0 v 1.3229167 h 5.291666 V 0 Z\" />\r\n  </g>\r\n</svg>\r\n{{ translations[strengthType] }}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PasswordStrengthComponent } from './components/password-strength/password-strength.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    PasswordStrengthComponent\r\n  ],\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  exports: [\r\n    PasswordStrengthComponent\r\n  ]\r\n})\r\nexport class PasswordModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}