{"version":3,"sources":["node_modules/@auth0/angular-jwt/fesm2015/auth0-angular-jwt.js","client/app/modules/shared/dto-models/signatureType.enum.ts","client/app/modules/shared/models/declarationType.enum.ts","client/app/modules/e-permits/permit-request/permit-request-form/permit-request-signature.utils.ts","node_modules/@almothafar/angular-signature-pad/node_modules/signature_pad/dist/signature_pad.js","node_modules/@almothafar/angular-signature-pad/fesm2020/almothafar-angular-signature-pad.mjs","client/app/modules/shared/signature-dialog/signature-dialog.component.ts","client/app/modules/shared/signature-dialog/signature-dialog.component.html"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Inject, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { defer, of } from 'rxjs';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nconst JWT_OPTIONS = new InjectionToken('JWT_OPTIONS');\n\n// tslint:disable:no-bitwise\nclass JwtHelperService {\n  constructor(config = null) {\n    this.tokenGetter = config && config.tokenGetter || function () {};\n  }\n  urlBase64Decode(str) {\n    let output = str.replace(/-/g, '+').replace(/_/g, '/');\n    switch (output.length % 4) {\n      case 0:\n        {\n          break;\n        }\n      case 2:\n        {\n          output += '==';\n          break;\n        }\n      case 3:\n        {\n          output += '=';\n          break;\n        }\n      default:\n        {\n          throw new Error('Illegal base64url string!');\n        }\n    }\n    return this.b64DecodeUnicode(output);\n  }\n  // credits for decoder goes to https://github.com/atk\n  b64decode(str) {\n    const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n    let output = '';\n    str = String(str).replace(/=+$/, '');\n    if (str.length % 4 === 1) {\n      throw new Error(`'atob' failed: The string to be decoded is not correctly encoded.`);\n    }\n    for (\n    // initialize result and counters\n    let bc = 0, bs, buffer, idx = 0;\n    // get next character\n    buffer = str.charAt(idx++);\n    // character found in table? initialize bit storage and add its ascii value;\n    ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n    // and if not first of each 4 characters,\n    // convert the first 8 bits to one ascii character\n    bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {\n      // try to find character in table (0-63, not found => -1)\n      buffer = chars.indexOf(buffer);\n    }\n    return output;\n  }\n  b64DecodeUnicode(str) {\n    return decodeURIComponent(Array.prototype.map.call(this.b64decode(str), c => {\n      return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n    }).join(''));\n  }\n  decodeToken(token = this.tokenGetter()) {\n    if (token instanceof Promise) {\n      return token.then(t => this._decodeToken(t));\n    }\n    return this._decodeToken(token);\n  }\n  _decodeToken(token) {\n    if (!token || token === '') {\n      return null;\n    }\n    const parts = token.split('.');\n    if (parts.length !== 3) {\n      throw new Error(`The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.`);\n    }\n    const decoded = this.urlBase64Decode(parts[1]);\n    if (!decoded) {\n      throw new Error('Cannot decode the token.');\n    }\n    return JSON.parse(decoded);\n  }\n  getTokenExpirationDate(token = this.tokenGetter()) {\n    if (token instanceof Promise) {\n      return token.then(t => this._getTokenExpirationDate(t));\n    }\n    return this._getTokenExpirationDate(token);\n  }\n  _getTokenExpirationDate(token) {\n    let decoded;\n    decoded = this.decodeToken(token);\n    if (!decoded || !decoded.hasOwnProperty('exp')) {\n      return null;\n    }\n    const date = new Date(0);\n    date.setUTCSeconds(decoded.exp);\n    return date;\n  }\n  isTokenExpired(token = this.tokenGetter(), offsetSeconds) {\n    if (token instanceof Promise) {\n      return token.then(t => this._isTokenExpired(t, offsetSeconds));\n    }\n    return this._isTokenExpired(token, offsetSeconds);\n  }\n  _isTokenExpired(token, offsetSeconds) {\n    if (!token || token === '') {\n      return true;\n    }\n    const date = this.getTokenExpirationDate(token);\n    offsetSeconds = offsetSeconds || 0;\n    if (date === null) {\n      return false;\n    }\n    return !(date.valueOf() > new Date().valueOf() + offsetSeconds * 1000);\n  }\n  getAuthScheme(authScheme, request) {\n    if (typeof authScheme === 'function') {\n      return authScheme(request);\n    }\n    return authScheme;\n  }\n}\nJwtHelperService.ɵfac = function JwtHelperService_Factory(__ngFactoryType__) {\n  return new (__ngFactoryType__ || JwtHelperService)(i0.ɵɵinject(JWT_OPTIONS));\n};\nJwtHelperService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: JwtHelperService,\n  factory: JwtHelperService.ɵfac\n});\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(JwtHelperService, [{\n    type: Injectable\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [JWT_OPTIONS]\n      }]\n    }];\n  }, null);\n})();\nconst fromPromiseOrValue = input => {\n  if (input instanceof Promise) {\n    return defer(() => input);\n  }\n  return of(input);\n};\nclass JwtInterceptor {\n  constructor(config, jwtHelper, document) {\n    this.jwtHelper = jwtHelper;\n    this.document = document;\n    this.standardPorts = ['80', '443'];\n    this.tokenGetter = config.tokenGetter;\n    this.headerName = config.headerName || 'Authorization';\n    this.authScheme = config.authScheme || config.authScheme === '' ? config.authScheme : 'Bearer ';\n    this.allowedDomains = config.allowedDomains || [];\n    this.disallowedRoutes = config.disallowedRoutes || [];\n    this.throwNoTokenError = config.throwNoTokenError || false;\n    this.skipWhenExpired = config.skipWhenExpired;\n  }\n  isAllowedDomain(request) {\n    const requestUrl = new URL(request.url, this.document.location.origin);\n    // If the host equals the current window origin,\n    // the domain is allowed by default\n    if (requestUrl.host === this.document.location.host) {\n      return true;\n    }\n    // If not the current domain, check the allowed list\n    const hostName = `${requestUrl.hostname}${requestUrl.port && !this.standardPorts.includes(requestUrl.port) ? ':' + requestUrl.port : ''}`;\n    return this.allowedDomains.findIndex(domain => typeof domain === 'string' ? domain === hostName : domain instanceof RegExp ? domain.test(hostName) : false) > -1;\n  }\n  isDisallowedRoute(request) {\n    const requestedUrl = new URL(request.url, this.document.location.origin);\n    return this.disallowedRoutes.findIndex(route => {\n      if (typeof route === 'string') {\n        const parsedRoute = new URL(route, this.document.location.origin);\n        return parsedRoute.hostname === requestedUrl.hostname && parsedRoute.pathname === requestedUrl.pathname;\n      }\n      if (route instanceof RegExp) {\n        return route.test(request.url);\n      }\n      return false;\n    }) > -1;\n  }\n  handleInterception(token, request, next) {\n    const authScheme = this.jwtHelper.getAuthScheme(this.authScheme, request);\n    if (!token && this.throwNoTokenError) {\n      throw new Error('Could not get token from tokenGetter function.');\n    }\n    let tokenIsExpired = of(false);\n    if (this.skipWhenExpired) {\n      tokenIsExpired = token ? fromPromiseOrValue(this.jwtHelper.isTokenExpired(token)) : of(true);\n    }\n    if (token) {\n      return tokenIsExpired.pipe(map(isExpired => isExpired && this.skipWhenExpired ? request.clone() : request.clone({\n        setHeaders: {\n          [this.headerName]: `${authScheme}${token}`\n        }\n      })), mergeMap(innerRequest => next.handle(innerRequest)));\n    }\n    return next.handle(request);\n  }\n  intercept(request, next) {\n    if (!this.isAllowedDomain(request) || this.isDisallowedRoute(request)) {\n      return next.handle(request);\n    }\n    const token = this.tokenGetter(request);\n    return fromPromiseOrValue(token).pipe(mergeMap(asyncToken => {\n      return this.handleInterception(asyncToken, request, next);\n    }));\n  }\n}\nJwtInterceptor.ɵfac = function JwtInterceptor_Factory(__ngFactoryType__) {\n  return new (__ngFactoryType__ || JwtInterceptor)(i0.ɵɵinject(JWT_OPTIONS), i0.ɵɵinject(JwtHelperService), i0.ɵɵinject(DOCUMENT));\n};\nJwtInterceptor.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: JwtInterceptor,\n  factory: JwtInterceptor.ɵfac\n});\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(JwtInterceptor, [{\n    type: Injectable\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [JWT_OPTIONS]\n      }]\n    }, {\n      type: JwtHelperService\n    }, {\n      type: Document,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\n})();\nclass JwtModule {\n  constructor(parentModule) {\n    if (parentModule) {\n      throw new Error(`JwtModule is already loaded. It should only be imported in your application's main module.`);\n    }\n  }\n  static forRoot(options) {\n    return {\n      ngModule: JwtModule,\n      providers: [{\n        provide: HTTP_INTERCEPTORS,\n        useClass: JwtInterceptor,\n        multi: true\n      }, options.jwtOptionsProvider || {\n        provide: JWT_OPTIONS,\n        useValue: options.config\n      }, JwtHelperService]\n    };\n  }\n}\nJwtModule.ɵfac = function JwtModule_Factory(__ngFactoryType__) {\n  return new (__ngFactoryType__ || JwtModule)(i0.ɵɵinject(JwtModule, 12));\n};\nJwtModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: JwtModule\n});\nJwtModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(JwtModule, [{\n    type: NgModule\n  }], function () {\n    return [{\n      type: JwtModule,\n      decorators: [{\n        type: Optional\n      }, {\n        type: SkipSelf\n      }]\n    }];\n  }, null);\n})();\n\n/*\n * Public API Surface of angular-jwt\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { JWT_OPTIONS, JwtHelperService, JwtInterceptor, JwtModule };\n","export enum SignatureTypeEnum {\n  Issuer = 1,\n  Closer,\n  PiC,\n  PiCAcceptance,\n  PiCHandback,\n}\n","export enum DeclarationTypeEnum {\n  AuthorisationText = 1,\n  PiCAcceptanceText,\n  TeamAcceptanceText,\n  SuspensionText,\n  ResumptionText,\n  HandBackText,\n  ClosureText,\n}\n","import { Guid } from \"../../../../../guid\";\nimport { SignatureDTO } from \"../../../shared/dto-models/signatureDTO.model\";\nimport { SignatureTypeEnum } from \"../../../shared/dto-models/signatureType.enum\";\nimport { DeclarationTypeEnum } from \"../../../shared/models/declarationType.enum\";\nimport { SignatureService } from \"../../../shared/signature-dialog/signature.service.interface\";\nimport { PermitRequestFormComponent } from \"./permit-request-form.component\";\n\nexport async function buildPiCSignature(\n    context: PermitRequestFormComponent,\n    userLanguage: string,\n    isHandBack: boolean,\n    personId?: number,\n    personName?: string,\n    companyName?: string\n\n): Promise<SignatureDTO> {  \n    const baseSignature = createBaseSignature(context, userLanguage);\n\n    baseSignature.personId = personId || context.permitRequest.competentPersonId;\n    baseSignature.personName = personName || context.permitRequest.competentPersonName;\n    baseSignature.companyName = companyName || context.permitRequest.companyName;\n    \n    const signatureDetails = await getSignatureDetails(context, userLanguage, isHandBack);\n\n    return {\n        ...baseSignature,\n        ...signatureDetails,\n    };\n}\n\nexport async function fetchSignatures(context: PermitRequestFormComponent) {\n    const existingSignatures = getSignaturesFromPermit(context);\n    return setupSignatures(context, existingSignatures);\n}\n\nexport function saveSignatures(\n    context: PermitRequestFormComponent,\n    signatures: SignatureDTO[]\n) {\n    context.permitRequestService.saveSignatures(signatures).subscribe(\n        (response) => response,\n        (error) =>  error\n    );\n}\n\nexport async function getLanguageSpecificDeclaration(\n    context: SignatureService<SignatureDTO>,\n    language: string,\n    permitAdminId: number,\n    declarationType: number\n): Promise<string> {\n    return new Promise((resolve, reject) => {\n        context.getDeclarationText(language, permitAdminId, declarationType).subscribe(\n            (response) => resolve(response),\n            (error) =>  reject(error)\n        );\n    });\n}\n\nasync function getSignatureDetails(\n    context: PermitRequestFormComponent,\n    userLanguage: string,\n    isHandBack: boolean\n): Promise<Partial<SignatureDTO>> {\n  \n    const signatureTypeId = isHandBack ? SignatureTypeEnum.PiCHandback : SignatureTypeEnum.PiCAcceptance;\n    const declarationTypeId = isHandBack ? DeclarationTypeEnum.HandBackText : DeclarationTypeEnum.PiCAcceptanceText;\n\n    const declarationText = await getLanguageSpecificDeclaration(\n        context.permitRequestService,\n        userLanguage,\n        context.permitAdmin.id,\n        declarationTypeId\n    );\n\n    return { signatureTypeId, declarationTypeId, declarationText };\n}\n\nfunction getSignaturesFromPermit(context: PermitRequestFormComponent): SignatureDTO[] {\n    if (context.canClosePermit) {\n        return filterSignaturesByType(context, [\n            SignatureTypeEnum.Closer,\n            SignatureTypeEnum.PiCHandback,\n        ]);\n    } else if (context.canIssuePermit) {\n        return filterSignaturesByType(context, [\n            SignatureTypeEnum.Issuer,\n            SignatureTypeEnum.PiCAcceptance,\n        ]);\n    }\n    return null;\n}\n\nasync function setupSignatures(\n    context: PermitRequestFormComponent,\n    existingSignatures: SignatureDTO[]\n): Promise<SignatureDTO[]> {\n    const userLanguage = context.regionalSettings?.language || \"en-GB\";\n\n    if (existingSignatures) {\n        await renewDeclarations(existingSignatures, context);\n        return existingSignatures;\n    }\n\n    const isHandBack = context.canClosePermit;\n    const picSignature = await buildPiCSignature(context, userLanguage, isHandBack);\n    const primarySignature = buildPrimarySignature(context, userLanguage);\n\n    return [primarySignature, picSignature];\n}\n\nfunction createBaseSignature(\n    context: PermitRequestFormComponent,\n    userLanguage: string\n): SignatureDTO {\n    return {\n        id: Guid.newGuid(),\n        personId: null,\n        personName: null,\n        companyName: null,\n        signatureTypeId: null,\n        declarationText: null,\n        declarationTypeId: null,\n        signatureDate: null,\n        image: null,\n        imageType: \"data:image/svg+xml;base64\",\n        token: null,\n        objectId: context.permitRequest.id,\n        requestedById: context.loggedInPerson.id,\n        language: userLanguage,\n    };\n}\n\nasync function renewDeclarations(\n    existingSignatures: SignatureDTO[],\n    context: PermitRequestFormComponent\n) {\n    const permitAdminId = context.permitAdmin.id;\n    for (const signature of existingSignatures) {\n        if (signature.signatureDate === null) {\n            signature.declarationText = await getLanguageSpecificDeclaration(\n                context.permitRequestService,\n                signature.language,\n                permitAdminId,\n                signature.declarationTypeId\n            );\n        }\n    }\n}\n\n\nfunction filterSignaturesByType(\n    context: PermitRequestFormComponent,\n    signatureTypes: SignatureTypeEnum[]\n): SignatureDTO[] {\n    const signatures = context.permitRequest.signatures?.filter(signature =>\n        signatureTypes.includes(signature.signatureTypeId)\n    );\n    return signatures?.length ? signatures : null;\n}\n\nfunction buildPrimarySignature(\n    context: PermitRequestFormComponent,\n    userLanguage: string\n): SignatureDTO {\n    if (context.canIssuePermit) {\n        return buildSignature(context, userLanguage, DeclarationTypeEnum.AuthorisationText, SignatureTypeEnum.Issuer, context.permitAdmin?.authorisationText);\n    } else if (context.canClosePermit) {\n        return buildSignature(context, userLanguage, DeclarationTypeEnum.ClosureText, SignatureTypeEnum.Closer, context.permitAdmin?.closureText);\n    }\n    return null;\n}\n\nfunction buildSignature(\n    context: PermitRequestFormComponent,\n    userLanguage: string,\n    declarationTypeId: DeclarationTypeEnum,\n    signatureTypeId: SignatureTypeEnum,\n    declarationText: string\n): SignatureDTO {\n    return {\n        id: Guid.newGuid(),\n        personId: context.loggedInPerson.id,\n        personName: context.loggedInPerson.fullName,\n        companyName: context.loggedInPerson.owningCompanyName,\n        declarationTypeId,\n        declarationText,\n        signatureDate: null,\n        signatureTypeId,\n        image: null,\n        imageType: \"data:image/svg+xml;base64\",\n        token: null,\n        objectId: context.permitRequest.id,\n        requestedById: null,\n        language: userLanguage,\n    };\n}\n","/*!\n * Signature Pad v4.0.10 | https://github.com/szimek/signature_pad\n * (c) 2022 Szymon Nowak | Released under the MIT license\n */\n\nclass Point {\n  constructor(x, y, pressure, time) {\n    if (isNaN(x) || isNaN(y)) {\n      throw new Error(`Point is invalid: (${x}, ${y})`);\n    }\n    this.x = +x;\n    this.y = +y;\n    this.pressure = pressure || 0;\n    this.time = time || Date.now();\n  }\n  distanceTo(start) {\n    return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2));\n  }\n  equals(other) {\n    return this.x === other.x && this.y === other.y && this.pressure === other.pressure && this.time === other.time;\n  }\n  velocityFrom(start) {\n    return this.time !== start.time ? this.distanceTo(start) / (this.time - start.time) : 0;\n  }\n}\nclass Bezier {\n  constructor(startPoint, control2, control1, endPoint, startWidth, endWidth) {\n    this.startPoint = startPoint;\n    this.control2 = control2;\n    this.control1 = control1;\n    this.endPoint = endPoint;\n    this.startWidth = startWidth;\n    this.endWidth = endWidth;\n  }\n  static fromPoints(points, widths) {\n    const c2 = this.calculateControlPoints(points[0], points[1], points[2]).c2;\n    const c3 = this.calculateControlPoints(points[1], points[2], points[3]).c1;\n    return new Bezier(points[1], c2, c3, points[2], widths.start, widths.end);\n  }\n  static calculateControlPoints(s1, s2, s3) {\n    const dx1 = s1.x - s2.x;\n    const dy1 = s1.y - s2.y;\n    const dx2 = s2.x - s3.x;\n    const dy2 = s2.y - s3.y;\n    const m1 = {\n      x: (s1.x + s2.x) / 2.0,\n      y: (s1.y + s2.y) / 2.0\n    };\n    const m2 = {\n      x: (s2.x + s3.x) / 2.0,\n      y: (s2.y + s3.y) / 2.0\n    };\n    const l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n    const l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n    const dxm = m1.x - m2.x;\n    const dym = m1.y - m2.y;\n    const k = l2 / (l1 + l2);\n    const cm = {\n      x: m2.x + dxm * k,\n      y: m2.y + dym * k\n    };\n    const tx = s2.x - cm.x;\n    const ty = s2.y - cm.y;\n    return {\n      c1: new Point(m1.x + tx, m1.y + ty),\n      c2: new Point(m2.x + tx, m2.y + ty)\n    };\n  }\n  length() {\n    const steps = 10;\n    let length = 0;\n    let px;\n    let py;\n    for (let i = 0; i <= steps; i += 1) {\n      const t = i / steps;\n      const cx = this.point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x);\n      const cy = this.point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);\n      if (i > 0) {\n        const xdiff = cx - px;\n        const ydiff = cy - py;\n        length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n      }\n      px = cx;\n      py = cy;\n    }\n    return length;\n  }\n  point(t, start, c1, c2, end) {\n    return start * (1.0 - t) * (1.0 - t) * (1.0 - t) + 3.0 * c1 * (1.0 - t) * (1.0 - t) * t + 3.0 * c2 * (1.0 - t) * t * t + end * t * t * t;\n  }\n}\nclass SignatureEventTarget {\n  constructor() {\n    try {\n      this._et = new EventTarget();\n    } catch (error) {\n      this._et = document;\n    }\n  }\n  addEventListener(type, listener, options) {\n    this._et.addEventListener(type, listener, options);\n  }\n  dispatchEvent(event) {\n    return this._et.dispatchEvent(event);\n  }\n  removeEventListener(type, callback, options) {\n    this._et.removeEventListener(type, callback, options);\n  }\n}\nfunction throttle(fn, wait = 250) {\n  let previous = 0;\n  let timeout = null;\n  let result;\n  let storedContext;\n  let storedArgs;\n  const later = () => {\n    previous = Date.now();\n    timeout = null;\n    result = fn.apply(storedContext, storedArgs);\n    if (!timeout) {\n      storedContext = null;\n      storedArgs = [];\n    }\n  };\n  return function wrapper(...args) {\n    const now = Date.now();\n    const remaining = wait - (now - previous);\n    storedContext = this;\n    storedArgs = args;\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      previous = now;\n      result = fn.apply(storedContext, storedArgs);\n      if (!timeout) {\n        storedContext = null;\n        storedArgs = [];\n      }\n    } else if (!timeout) {\n      timeout = window.setTimeout(later, remaining);\n    }\n    return result;\n  };\n}\nclass SignaturePad extends SignatureEventTarget {\n  constructor(canvas, options = {}) {\n    super();\n    this.canvas = canvas;\n    this._handleMouseDown = event => {\n      if (event.buttons === 1) {\n        this._drawningStroke = true;\n        this._strokeBegin(event);\n      }\n    };\n    this._handleMouseMove = event => {\n      if (this._drawningStroke) {\n        this._strokeMoveUpdate(event);\n      }\n    };\n    this._handleMouseUp = event => {\n      if (event.buttons === 1 && this._drawningStroke) {\n        this._drawningStroke = false;\n        this._strokeEnd(event);\n      }\n    };\n    this._handleTouchStart = event => {\n      if (event.cancelable) {\n        event.preventDefault();\n      }\n      if (event.targetTouches.length === 1) {\n        const touch = event.changedTouches[0];\n        this._strokeBegin(touch);\n      }\n    };\n    this._handleTouchMove = event => {\n      if (event.cancelable) {\n        event.preventDefault();\n      }\n      const touch = event.targetTouches[0];\n      this._strokeMoveUpdate(touch);\n    };\n    this._handleTouchEnd = event => {\n      const wasCanvasTouched = event.target === this.canvas;\n      if (wasCanvasTouched) {\n        if (event.cancelable) {\n          event.preventDefault();\n        }\n        const touch = event.changedTouches[0];\n        this._strokeEnd(touch);\n      }\n    };\n    this._handlePointerStart = event => {\n      this._drawningStroke = true;\n      event.preventDefault();\n      this._strokeBegin(event);\n    };\n    this._handlePointerMove = event => {\n      if (this._drawningStroke) {\n        event.preventDefault();\n        this._strokeMoveUpdate(event);\n      }\n    };\n    this._handlePointerEnd = event => {\n      if (this._drawningStroke) {\n        event.preventDefault();\n        this._drawningStroke = false;\n        this._strokeEnd(event);\n      }\n    };\n    this.velocityFilterWeight = options.velocityFilterWeight || 0.7;\n    this.minWidth = options.minWidth || 0.5;\n    this.maxWidth = options.maxWidth || 2.5;\n    this.throttle = 'throttle' in options ? options.throttle : 16;\n    this.minDistance = 'minDistance' in options ? options.minDistance : 5;\n    this.dotSize = options.dotSize || 0;\n    this.penColor = options.penColor || 'black';\n    this.backgroundColor = options.backgroundColor || 'rgba(0,0,0,0)';\n    this._strokeMoveUpdate = this.throttle ? throttle(SignaturePad.prototype._strokeUpdate, this.throttle) : SignaturePad.prototype._strokeUpdate;\n    this._ctx = canvas.getContext('2d');\n    this.clear();\n    this.on();\n  }\n  clear() {\n    const {\n      _ctx: ctx,\n      canvas\n    } = this;\n    ctx.fillStyle = this.backgroundColor;\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\n    ctx.fillRect(0, 0, canvas.width, canvas.height);\n    this._data = [];\n    this._reset(this._getPointGroupOptions());\n    this._isEmpty = true;\n  }\n  fromDataURL(dataUrl, options = {}) {\n    return new Promise((resolve, reject) => {\n      const image = new Image();\n      const ratio = options.ratio || window.devicePixelRatio || 1;\n      const width = options.width || this.canvas.width / ratio;\n      const height = options.height || this.canvas.height / ratio;\n      const xOffset = options.xOffset || 0;\n      const yOffset = options.yOffset || 0;\n      this._reset(this._getPointGroupOptions());\n      image.onload = () => {\n        this._ctx.drawImage(image, xOffset, yOffset, width, height);\n        resolve();\n      };\n      image.onerror = error => {\n        reject(error);\n      };\n      image.crossOrigin = 'anonymous';\n      image.src = dataUrl;\n      this._isEmpty = false;\n    });\n  }\n  toDataURL(type = 'image/png', encoderOptions) {\n    switch (type) {\n      case 'image/svg+xml':\n        return this._toSVG();\n      default:\n        return this.canvas.toDataURL(type, encoderOptions);\n    }\n  }\n  on() {\n    this.canvas.style.touchAction = 'none';\n    this.canvas.style.msTouchAction = 'none';\n    this.canvas.style.userSelect = 'none';\n    const isIOS = /Macintosh/.test(navigator.userAgent) && 'ontouchstart' in document;\n    if (window.PointerEvent && !isIOS) {\n      this._handlePointerEvents();\n    } else {\n      this._handleMouseEvents();\n      if ('ontouchstart' in window) {\n        this._handleTouchEvents();\n      }\n    }\n  }\n  off() {\n    this.canvas.style.touchAction = 'auto';\n    this.canvas.style.msTouchAction = 'auto';\n    this.canvas.style.userSelect = 'auto';\n    this.canvas.removeEventListener('pointerdown', this._handlePointerStart);\n    this.canvas.removeEventListener('pointermove', this._handlePointerMove);\n    this.canvas.ownerDocument.removeEventListener('pointerup', this._handlePointerEnd);\n    this.canvas.removeEventListener('mousedown', this._handleMouseDown);\n    this.canvas.removeEventListener('mousemove', this._handleMouseMove);\n    this.canvas.ownerDocument.removeEventListener('mouseup', this._handleMouseUp);\n    this.canvas.removeEventListener('touchstart', this._handleTouchStart);\n    this.canvas.removeEventListener('touchmove', this._handleTouchMove);\n    this.canvas.removeEventListener('touchend', this._handleTouchEnd);\n  }\n  isEmpty() {\n    return this._isEmpty;\n  }\n  fromData(pointGroups, {\n    clear = true\n  } = {}) {\n    if (clear) {\n      this.clear();\n    }\n    this._fromData(pointGroups, this._drawCurve.bind(this), this._drawDot.bind(this));\n    this._data = this._data.concat(pointGroups);\n  }\n  toData() {\n    return this._data;\n  }\n  _getPointGroupOptions(group) {\n    return {\n      penColor: group && 'penColor' in group ? group.penColor : this.penColor,\n      dotSize: group && 'dotSize' in group ? group.dotSize : this.dotSize,\n      minWidth: group && 'minWidth' in group ? group.minWidth : this.minWidth,\n      maxWidth: group && 'maxWidth' in group ? group.maxWidth : this.maxWidth,\n      velocityFilterWeight: group && 'velocityFilterWeight' in group ? group.velocityFilterWeight : this.velocityFilterWeight\n    };\n  }\n  _strokeBegin(event) {\n    this.dispatchEvent(new CustomEvent('beginStroke', {\n      detail: event\n    }));\n    const pointGroupOptions = this._getPointGroupOptions();\n    const newPointGroup = Object.assign(Object.assign({}, pointGroupOptions), {\n      points: []\n    });\n    this._data.push(newPointGroup);\n    this._reset(pointGroupOptions);\n    this._strokeUpdate(event);\n  }\n  _strokeUpdate(event) {\n    if (this._data.length === 0) {\n      this._strokeBegin(event);\n      return;\n    }\n    this.dispatchEvent(new CustomEvent('beforeUpdateStroke', {\n      detail: event\n    }));\n    const x = event.clientX;\n    const y = event.clientY;\n    const pressure = event.pressure !== undefined ? event.pressure : event.force !== undefined ? event.force : 0;\n    const point = this._createPoint(x, y, pressure);\n    const lastPointGroup = this._data[this._data.length - 1];\n    const lastPoints = lastPointGroup.points;\n    const lastPoint = lastPoints.length > 0 && lastPoints[lastPoints.length - 1];\n    const isLastPointTooClose = lastPoint ? point.distanceTo(lastPoint) <= this.minDistance : false;\n    const pointGroupOptions = this._getPointGroupOptions(lastPointGroup);\n    if (!lastPoint || !(lastPoint && isLastPointTooClose)) {\n      const curve = this._addPoint(point, pointGroupOptions);\n      if (!lastPoint) {\n        this._drawDot(point, pointGroupOptions);\n      } else if (curve) {\n        this._drawCurve(curve, pointGroupOptions);\n      }\n      lastPoints.push({\n        time: point.time,\n        x: point.x,\n        y: point.y,\n        pressure: point.pressure\n      });\n    }\n    this.dispatchEvent(new CustomEvent('afterUpdateStroke', {\n      detail: event\n    }));\n  }\n  _strokeEnd(event) {\n    this._strokeUpdate(event);\n    this.dispatchEvent(new CustomEvent('endStroke', {\n      detail: event\n    }));\n  }\n  _handlePointerEvents() {\n    this._drawningStroke = false;\n    this.canvas.addEventListener('pointerdown', this._handlePointerStart);\n    this.canvas.addEventListener('pointermove', this._handlePointerMove);\n    this.canvas.ownerDocument.addEventListener('pointerup', this._handlePointerEnd);\n  }\n  _handleMouseEvents() {\n    this._drawningStroke = false;\n    this.canvas.addEventListener('mousedown', this._handleMouseDown);\n    this.canvas.addEventListener('mousemove', this._handleMouseMove);\n    this.canvas.ownerDocument.addEventListener('mouseup', this._handleMouseUp);\n  }\n  _handleTouchEvents() {\n    this.canvas.addEventListener('touchstart', this._handleTouchStart);\n    this.canvas.addEventListener('touchmove', this._handleTouchMove);\n    this.canvas.addEventListener('touchend', this._handleTouchEnd);\n  }\n  _reset(options) {\n    this._lastPoints = [];\n    this._lastVelocity = 0;\n    this._lastWidth = (options.minWidth + options.maxWidth) / 2;\n    this._ctx.fillStyle = options.penColor;\n  }\n  _createPoint(x, y, pressure) {\n    const rect = this.canvas.getBoundingClientRect();\n    return new Point(x - rect.left, y - rect.top, pressure, new Date().getTime());\n  }\n  _addPoint(point, options) {\n    const {\n      _lastPoints\n    } = this;\n    _lastPoints.push(point);\n    if (_lastPoints.length > 2) {\n      if (_lastPoints.length === 3) {\n        _lastPoints.unshift(_lastPoints[0]);\n      }\n      const widths = this._calculateCurveWidths(_lastPoints[1], _lastPoints[2], options);\n      const curve = Bezier.fromPoints(_lastPoints, widths);\n      _lastPoints.shift();\n      return curve;\n    }\n    return null;\n  }\n  _calculateCurveWidths(startPoint, endPoint, options) {\n    const velocity = options.velocityFilterWeight * endPoint.velocityFrom(startPoint) + (1 - options.velocityFilterWeight) * this._lastVelocity;\n    const newWidth = this._strokeWidth(velocity, options);\n    const widths = {\n      end: newWidth,\n      start: this._lastWidth\n    };\n    this._lastVelocity = velocity;\n    this._lastWidth = newWidth;\n    return widths;\n  }\n  _strokeWidth(velocity, options) {\n    return Math.max(options.maxWidth / (velocity + 1), options.minWidth);\n  }\n  _drawCurveSegment(x, y, width) {\n    const ctx = this._ctx;\n    ctx.moveTo(x, y);\n    ctx.arc(x, y, width, 0, 2 * Math.PI, false);\n    this._isEmpty = false;\n  }\n  _drawCurve(curve, options) {\n    const ctx = this._ctx;\n    const widthDelta = curve.endWidth - curve.startWidth;\n    const drawSteps = Math.ceil(curve.length()) * 2;\n    ctx.beginPath();\n    ctx.fillStyle = options.penColor;\n    for (let i = 0; i < drawSteps; i += 1) {\n      const t = i / drawSteps;\n      const tt = t * t;\n      const ttt = tt * t;\n      const u = 1 - t;\n      const uu = u * u;\n      const uuu = uu * u;\n      let x = uuu * curve.startPoint.x;\n      x += 3 * uu * t * curve.control1.x;\n      x += 3 * u * tt * curve.control2.x;\n      x += ttt * curve.endPoint.x;\n      let y = uuu * curve.startPoint.y;\n      y += 3 * uu * t * curve.control1.y;\n      y += 3 * u * tt * curve.control2.y;\n      y += ttt * curve.endPoint.y;\n      const width = Math.min(curve.startWidth + ttt * widthDelta, options.maxWidth);\n      this._drawCurveSegment(x, y, width);\n    }\n    ctx.closePath();\n    ctx.fill();\n  }\n  _drawDot(point, options) {\n    const ctx = this._ctx;\n    const width = options.dotSize > 0 ? options.dotSize : (options.minWidth + options.maxWidth) / 2;\n    ctx.beginPath();\n    this._drawCurveSegment(point.x, point.y, width);\n    ctx.closePath();\n    ctx.fillStyle = options.penColor;\n    ctx.fill();\n  }\n  _fromData(pointGroups, drawCurve, drawDot) {\n    for (const group of pointGroups) {\n      const {\n        points\n      } = group;\n      const pointGroupOptions = this._getPointGroupOptions(group);\n      if (points.length > 1) {\n        for (let j = 0; j < points.length; j += 1) {\n          const basicPoint = points[j];\n          const point = new Point(basicPoint.x, basicPoint.y, basicPoint.pressure, basicPoint.time);\n          if (j === 0) {\n            this._reset(pointGroupOptions);\n          }\n          const curve = this._addPoint(point, pointGroupOptions);\n          if (curve) {\n            drawCurve(curve, pointGroupOptions);\n          }\n        }\n      } else {\n        this._reset(pointGroupOptions);\n        drawDot(points[0], pointGroupOptions);\n      }\n    }\n  }\n  _toSVG() {\n    const pointGroups = this._data;\n    const ratio = Math.max(window.devicePixelRatio || 1, 1);\n    const minX = 0;\n    const minY = 0;\n    const maxX = this.canvas.width / ratio;\n    const maxY = this.canvas.height / ratio;\n    const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n    svg.setAttribute('width', this.canvas.width.toString());\n    svg.setAttribute('height', this.canvas.height.toString());\n    this._fromData(pointGroups, (curve, {\n      penColor\n    }) => {\n      const path = document.createElement('path');\n      if (!isNaN(curve.control1.x) && !isNaN(curve.control1.y) && !isNaN(curve.control2.x) && !isNaN(curve.control2.y)) {\n        const attr = `M ${curve.startPoint.x.toFixed(3)},${curve.startPoint.y.toFixed(3)} ` + `C ${curve.control1.x.toFixed(3)},${curve.control1.y.toFixed(3)} ` + `${curve.control2.x.toFixed(3)},${curve.control2.y.toFixed(3)} ` + `${curve.endPoint.x.toFixed(3)},${curve.endPoint.y.toFixed(3)}`;\n        path.setAttribute('d', attr);\n        path.setAttribute('stroke-width', (curve.endWidth * 2.25).toFixed(3));\n        path.setAttribute('stroke', penColor);\n        path.setAttribute('fill', 'none');\n        path.setAttribute('stroke-linecap', 'round');\n        svg.appendChild(path);\n      }\n    }, (point, {\n      penColor,\n      dotSize,\n      minWidth,\n      maxWidth\n    }) => {\n      const circle = document.createElement('circle');\n      const size = dotSize > 0 ? dotSize : (minWidth + maxWidth) / 2;\n      circle.setAttribute('r', size.toString());\n      circle.setAttribute('cx', point.x.toString());\n      circle.setAttribute('cy', point.y.toString());\n      circle.setAttribute('fill', penColor);\n      svg.appendChild(circle);\n    });\n    const prefix = 'data:image/svg+xml;base64,';\n    const header = '<svg' + ' xmlns=\"http://www.w3.org/2000/svg\"' + ' xmlns:xlink=\"http://www.w3.org/1999/xlink\"' + ` viewBox=\"${minX} ${minY} ${maxX} ${maxY}\"` + ` width=\"${maxX}\"` + ` height=\"${maxY}\"` + '>';\n    let body = svg.innerHTML;\n    if (body === undefined) {\n      const dummy = document.createElement('dummy');\n      const nodes = svg.childNodes;\n      dummy.innerHTML = '';\n      for (let i = 0; i < nodes.length; i += 1) {\n        dummy.appendChild(nodes[i].cloneNode(true));\n      }\n      body = dummy.innerHTML;\n    }\n    const footer = '</svg>';\n    const data = header + body + footer;\n    return prefix + btoa(data);\n  }\n}\nexport { SignaturePad as default };\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, Input, Output, NgModule } from '@angular/core';\nimport SignaturePad from 'signature_pad';\nclass SignaturePadComponent {\n  constructor(elementRef) {\n    this.elementRef = elementRef;\n    this.options = this.options || {};\n    this.drawStart = new EventEmitter();\n    this.drawBeforeUpdate = new EventEmitter();\n    this.drawAfterUpdate = new EventEmitter();\n    this.drawEnd = new EventEmitter();\n  }\n  ngAfterContentInit() {\n    const canvas = this.getCanvas();\n    if (this.options.canvasHeight) {\n      canvas.height = this.options.canvasHeight;\n    }\n    if (this.options.canvasWidth) {\n      canvas.width = this.options.canvasWidth;\n    }\n    this.signaturePad = new SignaturePad(canvas, this.options);\n    this.signaturePad.addEventListener('beginStroke', event => this.beginStroke(event.detail));\n    this.signaturePad.addEventListener('beforeUpdateStroke', event => this.beforeUpdateStroke(event.detail));\n    this.signaturePad.addEventListener('afterUpdateStroke', event => this.afterUpdateStroke(event.detail));\n    this.signaturePad.addEventListener('endStroke', event => this.endStroke(event.detail));\n  }\n  ngOnDestroy() {\n    const canvas = this.getCanvas();\n    canvas.width = 0;\n    canvas.height = 0;\n  }\n  /**\r\n   * Redraw or Resize canvas, note this will clear data.\r\n   */\n  redrawCanvas() {\n    const canvas = this.getCanvas();\n    // when zoomed out to less than 100%, for some very strange reason,\n    // some browsers report devicePixelRatio as less than 1, and only part of the canvas is cleared then.\n    const ratio = Math.max(window.devicePixelRatio || 1, 1);\n    canvas.width = canvas.offsetWidth * ratio;\n    canvas.height = canvas.offsetHeight * ratio;\n    canvas.getContext('2d').scale(ratio, ratio);\n    this.signaturePad.clear(); // otherwise isEmpty() might return incorrect value\n  }\n  /**\r\n   * Returns signature image as an array of point groups\r\n   */\n  toData() {\n    if (this.signaturePad) {\n      return this.signaturePad.toData();\n    } else {\n      return [];\n    }\n  }\n  /**\r\n   * Draws signature image from an array of point groups\r\n   */\n  fromData(points) {\n    this.signaturePad.fromData(points);\n  }\n  /**\r\n   * Returns signature image as data URL (see https://mdn.io/todataurl for the list of possible parameters)\r\n   */\n  toDataURL(imageType, quality) {\n    return this.signaturePad.toDataURL(imageType, quality); // save image as data URL\n  }\n  /**\r\n   * Draws signature image from data URL\r\n   */\n  fromDataURL(dataURL, options = {}) {\n    // set default height and width on read data from URL\n    if (!options.hasOwnProperty('height') && this.options.canvasHeight) {\n      options.height = this.options.canvasHeight;\n    }\n    if (!options.hasOwnProperty('width') && this.options.canvasWidth) {\n      options.width = this.options.canvasWidth;\n    }\n    this.signaturePad.fromDataURL(dataURL, options);\n  }\n  /**\r\n   * Clears the canvas\r\n   */\n  clear() {\n    this.signaturePad.clear();\n  }\n  /**\r\n   * Returns true if canvas is empty, otherwise returns false\r\n   */\n  isEmpty() {\n    return this.signaturePad.isEmpty();\n  }\n  /**\r\n   * Unbinds all event handlers\r\n   */\n  off() {\n    this.signaturePad.off();\n  }\n  /**\r\n   * Rebinds all event handlers\r\n   */\n  on() {\n    this.signaturePad.on();\n  }\n  /**\r\n   * set an option on the signaturePad - e.g. set('minWidth', 50);\r\n   * @param option one of SignaturePad to set with value, properties of NgSignaturePadOptions\r\n   * @param value the value of option\r\n   */\n  set(option, value) {\n    const canvas = this.getCanvas();\n    switch (option) {\n      case 'canvasHeight':\n        canvas.height = value;\n        break;\n      case 'canvasWidth':\n        canvas.width = value;\n        break;\n      default:\n        this.signaturePad[option] = value;\n    }\n  }\n  /**\r\n   * notify subscribers on signature begin\r\n   */\n  beginStroke(event) {\n    this.drawStart.emit(event);\n  }\n  beforeUpdateStroke(event) {\n    this.drawBeforeUpdate.emit(event);\n  }\n  afterUpdateStroke(event) {\n    this.drawAfterUpdate.emit(event);\n  }\n  /**\r\n   * notify subscribers on signature end\r\n   */\n  endStroke(event) {\n    this.drawEnd.emit(event);\n  }\n  getSignaturePad() {\n    return this.signaturePad;\n  }\n  getCanvas() {\n    return this.elementRef.nativeElement.querySelector('canvas');\n  }\n}\nSignaturePadComponent.ɵfac = function SignaturePadComponent_Factory(__ngFactoryType__) {\n  return new (__ngFactoryType__ || SignaturePadComponent)(i0.ɵɵdirectiveInject(i0.ElementRef));\n};\nSignaturePadComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: SignaturePadComponent,\n  selectors: [[\"signature-pad\"]],\n  inputs: {\n    options: \"options\"\n  },\n  outputs: {\n    drawStart: \"drawStart\",\n    drawBeforeUpdate: \"drawBeforeUpdate\",\n    drawAfterUpdate: \"drawAfterUpdate\",\n    drawEnd: \"drawEnd\"\n  },\n  decls: 1,\n  vars: 0,\n  consts: [[1, \"signature-pad-canvas\"]],\n  template: function SignaturePadComponent_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelement(0, \"canvas\", 0);\n    }\n  },\n  styles: [\"[_nghost-%COMP%]{background:antiquewhite;display:flex;align-items:center;justify-content:center}[_nghost-%COMP%]   .signature-pad-canvas[_ngcontent-%COMP%]{border:1px solid gray}\"]\n});\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(SignaturePadComponent, [{\n    type: Component,\n    args: [{\n      template: '<canvas class=\"signature-pad-canvas\"></canvas>',\n      selector: 'signature-pad',\n      styles: [\":host{background:antiquewhite;display:flex;align-items:center;justify-content:center}:host .signature-pad-canvas{border:1px solid gray}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }];\n  }, {\n    options: [{\n      type: Input\n    }],\n    drawStart: [{\n      type: Output\n    }],\n    drawBeforeUpdate: [{\n      type: Output\n    }],\n    drawAfterUpdate: [{\n      type: Output\n    }],\n    drawEnd: [{\n      type: Output\n    }]\n  });\n})();\nclass AngularSignaturePadModule {}\nAngularSignaturePadModule.ɵfac = function AngularSignaturePadModule_Factory(__ngFactoryType__) {\n  return new (__ngFactoryType__ || AngularSignaturePadModule)();\n};\nAngularSignaturePadModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: AngularSignaturePadModule\n});\nAngularSignaturePadModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AngularSignaturePadModule, [{\n    type: NgModule,\n    args: [{\n      declarations: [SignaturePadComponent],\n      imports: [],\n      exports: [SignaturePadComponent]\n    }]\n  }], null, null);\n})();\n\n/*\r\n * Public API Surface of angular-signature-pad\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { AngularSignaturePadModule, SignaturePadComponent };\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  HostListener,\n  Inject,\n  OnInit,\n  ViewChild,\n} from \"@angular/core\";\nimport {\n  MatLegacyDialog as MatDialog,\n  MatLegacyDialogRef as MatDialogRef,\n  MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA,\n} from \"@angular/material/legacy-dialog\";\nimport { UntypedFormBuilder } from \"@angular/forms\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { SignaturePad } from \"angular2-signaturepad\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { SignatureDTO } from \"../dto-models/signatureDTO.model\";\nimport { SignatureTypeEnum } from \"../dto-models/signatureType.enum\";\nimport { DateTimeFormatPipe } from \"../pipes/dateFormat.pipe\";\nimport { PermitStatusEnum } from \"../models/permitStatusName.enum\";\nimport { SignatureService } from \"./signature.service.interface\";\nimport { Router } from \"@angular/router\";\nimport { JwtHelperService } from \"@auth0/angular-jwt\";\nimport * as layout from \"./../../../core/layout/shared/layout.action\";\nimport { Store } from \"@ngrx/store\";\nimport * as fromRoot from \"../../../reducers/index\";\nimport { Observable } from \"rxjs\";\nimport { ComponentsDialogComponent } from \"../components-dialog/components-dialog.component\";\nimport { LanguagesService } from \"../../system-settings/languages/languages.service\";\nimport { AuthService } from \"../services/auth.service\";\nimport { ApplicationSystemLanguage } from \"../../system-settings/languages/system-language\";\nimport { RegionalSettingsDTO } from \"../dto-models/regionalSettingsDTO.model\";\nimport { getLanguageSpecificDeclaration } from \"../../e-permits/permit-request/permit-request-form/permit-request-signature.utils\";\n\nconst helper = new JwtHelperService();\n@Component({\n  selector: \"bs-signature-dialog\",\n  templateUrl: \"./signature-dialog.component.html\",\n  styleUrls: [\"./signature-dialog.component.scss\"],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SignatureDialogComponent implements OnInit {\n  dataService: SignatureService<SignatureDTO>;\n\n  @ViewChild(\"sigPad\") signaturePad: SignaturePad;\n\n  public signaturePadOptions: Object = {\n    minWidth: 1,\n    canvasWidth: 900,\n    canvasHeight: 350,\n  };\n\n  public signature: SignatureDTO;\n  isDisabled = false;\n  ok = false;\n  signedByText: string;\n  emailSentText: string;\n  hasSignature = false;\n  hasValidToken = false;\n  status: number;\n  nextButtonClicked = false;\n  saveButtonClicked = false;\n  backgroundTaskRunning$: Observable<boolean>;\n\n  language = \"en-GB\";\n  languages: ApplicationSystemLanguage[];\n  initialLanguage: string;\n  regionalSettings: RegionalSettingsDTO;\n  permitAdminId: any;\n  token: string;\n\n  constructor(\n    private store: Store<fromRoot.State>,\n    @Inject(MAT_DIALOG_DATA) public data: any,\n    public translate: TranslateService,\n    public dialogRef: MatDialogRef<SignatureDialogComponent>,\n    private fb: UntypedFormBuilder,\n    private cd: ChangeDetectorRef,\n    public dateTimeFormat: DateTimeFormatPipe,\n    private domSanitizer: DomSanitizer,\n    private router: Router,\n    private dialog: MatDialog,\n    private languageService: LanguagesService,\n    private authService: AuthService,\n  ) {\n    this.store.select(fromRoot.getRegionalSettings).subscribe((settings) => {\n      this.regionalSettings = settings;\n      if (this.regionalSettings?.language) {\n        this.language = this.regionalSettings.language;\n      }\n    });\n  }\n\n  async ngOnInit() {\n    this.backgroundTaskRunning$ = this.store.select(\n      fromRoot.getBackgroundTaskRunning,\n    );\n\n    if (this.data) {\n      const isInternal = this.data.permitAdminId !== null;\n      if (isInternal) {\n        await this.loadLanguages();\n        this.initialLanguage = this.translate?.currentLang ?? \"en-GB\";\n      }\n\n      /* this overrides the hard coded imageType within the SignatureDTO */\n      this.checkSignaturesImageType();\n\n      this.status = this.data.status;\n      this.dataService = this.data.dataService;\n      this.permitAdminId = this.data.permitAdminId;\n      this.token = this.data.token;\n\n      this.setCurrentSignature();\n\n      this.setEmailSentText();\n\n      if (this.signature?.image) {\n        this.isDisabled = true;\n        this.setSignedByText();\n      }\n    }\n  }\n\n  private async loadLanguages() {\n    const systemId = this.authService?.identityClaims[\"application_systemId\"];\n    if (systemId) {\n      this.languages = await this.languageService\n        .getForSystem(+systemId)\n        .toPromise();\n    }\n  }\n\n  checkSignaturesImageType() {\n    this.data.signatures.map((signature, index) => {\n      if (signature.image !== null) {\n        if (signature.image.startsWith(\"<svg\")) {\n          this.data.signatures[index].imageType = \"data:image/svg+xml;base64\";\n        } else {\n          this.data.signatures[index].imageType = \"data:image/png;base64\";\n        }\n      }\n    });\n  }\n\n  private setCurrentSignature() {\n    if (this.data.signatures.length === 1 && this.data.signatures[0].token) {\n      this.signature = this.data.signatures[0];\n    } else if (\n      this.status === PermitStatusEnum.PermitRequestPrinted ||\n      this.status === PermitStatusEnum.PermitRequestApproved\n    ) {\n      this.signature = this.data.signatures.find((x) =>\n        [SignatureTypeEnum.Issuer].includes(x?.signatureTypeId),\n      );\n    } else if (this.status === PermitStatusEnum.PermitRequestIssued) {\n      const sigTypes = [\n        SignatureTypeEnum.PiCAcceptance,\n        SignatureTypeEnum.PiCHandback,\n      ];\n      this.signature = this.data.signatures.find((x) =>\n        sigTypes.includes(x?.signatureTypeId),\n      );\n    }\n\n    this.loadSignature();\n  }\n\n  private setSignedByText() {\n    let sigText = \"\";\n    if (this.signature?.image) {\n      const sig = this.signature;\n      sigText = this.translate.instant(\"SIGNATURE.SIGNED_BY_TEXT\", {\n        PersonName: sig.personName,\n        CompanyName: sig.companyName,\n        SignatureDate: this.dateTimeFormat.transform(sig.signatureDate),\n      });\n    }\n    this.signedByText = sigText;\n  }\n\n  private setEmailSentText() {\n    const sig = this.signature;\n    if (sig.personName) {\n      let sigText = \"\";\n      sigText = this.translate.instant(\"SIGNATURE.EMAIL_SENT_TEXT\", {\n        PersonName: sig.personName,\n      });\n      this.emailSentText = sigText;\n    }\n  }\n\n  @HostListener(\"window:resize\", [\"$event\"])\n  onResize(event) {}\n\n  get hasSignedorEmailed() {\n    return this.signature?.signatureDate || this.signature?.token;\n  }\n  get disabled() {\n    return this.isDisabled;\n  }\n\n  get signaturesComplete() {\n    return this.data.signatures.every((x) => x.image !== null);\n  }\n\n  get signatureTypeMatch() {\n    const sigTypes = [\n      SignatureTypeEnum.PiCAcceptance,\n      SignatureTypeEnum.PiCHandback,\n    ];\n    return sigTypes.includes(this.signature?.signatureTypeId) && !this.token;\n  }\n\n  get titleText() {\n    let title = \"\";\n\n    switch (this.signature?.signatureTypeId) {\n      case SignatureTypeEnum.Closer:\n        title = this.translate.instant(\"SIGNATURE.CLOSER_SIGNATURE_TITLE\");\n        break;\n      case SignatureTypeEnum.Issuer:\n        title = this.translate.instant(\"SIGNATURE.ISSUER_SIGNATURE_TITLE\");\n        break;\n      case SignatureTypeEnum.PiCAcceptance:\n      case SignatureTypeEnum.PiCHandback:\n        title = this.translate.instant(\"SIGNATURE.PIC_SIGNATURE_TITLE\");\n        break;\n    }\n    return title;\n  }\n\n  clearSignature() {\n    this.signaturePad?.clear();\n    this.isDisabled = true;\n  }\n\n  undoSignature() {\n    const data = this.signaturePad?.toData();\n\n    if (data) {\n      data.pop(); // remove the last dot or line\n      this.signaturePad?.fromData(data);\n    }\n  }\n\n  loadSignature() {\n    this.signaturePad?.on();\n    this.signaturePad?.clear();\n    this.isDisabled = false;\n\n    if (this.signature?.image) {\n      const encodedSvg = btoa(this.signature.image);\n      const image = `${this.signature.imageType},${encodedSvg}`;\n      const data = this.signaturePad?.fromDataURL(image);\n\n      this.signaturePad?.fromDataURL(image);\n      this.signaturePad?.off();\n      this.isDisabled = true;\n      this.hasSignature = true;\n    } else {\n      this.hasSignature = false;\n    }\n\n    if (this.signature?.token) {\n      const decodedToken = helper.urlBase64Decode(this.signature.token);\n      this.hasValidToken = !helper.isTokenExpired(decodedToken);\n    }\n\n    if (this.signaturePad?.isEmpty()) {\n      this.isDisabled = true;\n    }\n    this.language = this.signature.language;\n    this.translate.use(this.language);\n\n    this.setSignedByText();\n    this.setEmailSentText();\n\n    this.cd.detectChanges();\n  }\n\n  saveSignature() {\n    this.saveButtonClicked = true;\n    this.signature.language = this.language;\n\n    if (this.signaturePad?.isEmpty()) {\n      if (this.signature.token) {\n        this.close();\n      } else {\n        this.displayMessage(\n          this.translate.instant(\"SIGNATURE.PROVIDE_SIGNATURE\"),\n        );\n      }\n    } else {\n      const data = this.signaturePad?.toDataURL(\"image/png\");\n      const safeData = this.domSanitizer.bypassSecurityTrustHtml(\n        atob(data.split(\",\")[1]),\n      );\n      this.signature.image = safeData[\"changingThisBreaksApplicationSecurity\"];\n      this.signature.signatureDate = new Date().toISOString();\n\n      if (this.signaturesComplete) {\n        this.close();\n      } else {\n        this.next();\n      }\n    }\n  }\n\n  async email() {\n    // async get token\n    if (this.dataService) {\n      this.signature.language = this.language;\n      this.store.dispatch(new layout.StartBackgroundTask());\n\n      this.dataService.sendEmail(this.signature).subscribe((data) => {\n        this.store.dispatch(new layout.StopBackgroundTask());\n        this.signature.token = data;\n        if (data) {\n          this.displayMessage(\n            this.translate.instant(\"SIGNATURE.EMAIL_SENT_TEXT\", {\n              PersonName: this.signature.personName,\n            }),\n          );\n        } else {\n          this.displayMessage(\n            this.translate.instant(\"SIGNATURE.EMAIL_NOT_SENT_TEXT\", {\n              PersonName: this.signature.personName,\n            }),\n          );\n        }\n      });\n    } else {\n      this.displayMessage(\n        this.translate.instant(\"SIGNATURE.EMAIL_NOT_SENT_TEXT\", {\n          PersonName: this.signature.personName,\n        }),\n      );\n    }\n  }\n\n  next() {\n    this.nextButtonClicked = true;\n\n    const index = this.data.signatures.findIndex(\n      (x) => x.id === this.signature.id,\n    );\n    if (index === 0) {\n      this.signature = this.data.signatures[1];\n    } else {\n      this.signature = this.data.signatures[0];\n    }\n    this.loadSignature();\n  }\n\n  async close() {\n    await this.translate.use(this.initialLanguage);\n    this.dialogRef.close({\n      formData: this.data.signatures,\n      ok: this.ok,\n    });\n  }\n\n  async cancel() {\n    if (this.saveButtonClicked) {\n      this.close();\n    } else {\n      await this.translate.use(this.initialLanguage);\n      this.dialogRef.close();\n    }\n  }\n\n  drawComplete() {\n    if (!this.signaturePad?.isEmpty()) {\n      this.isDisabled = false;\n    }\n  }\n  // not used at the mo\n  downloadToFile() {\n    const dataURL = this.signaturePad?.toDataURL(\"image/png\");\n    this.download(dataURL, \"signature.png\");\n  }\n\n  download(dataURL, filename) {\n    const blob = this.dataURLToBlob(dataURL);\n    const url = window.URL.createObjectURL(blob);\n\n    const a = document.createElement(\"a\");\n    a.style.visibility = \"hidden\";\n    a.href = url;\n    a.download = filename;\n\n    document.body.appendChild(a);\n    a.click();\n\n    window.URL.revokeObjectURL(url);\n  }\n\n  dataURLToBlob(dataURL) {\n    const parts = dataURL.split(\";base64,\");\n    const contentType = parts[0].split(\":\")[1];\n    const raw = window.atob(parts[1]);\n    const rawLength = raw.length;\n    const uInt8Array = new Uint8Array(rawLength);\n\n    for (let i = 0; i < rawLength; ++i) {\n      uInt8Array[i] = raw.charCodeAt(i);\n    }\n\n    return new Blob([uInt8Array], { type: contentType });\n  }\n\n  signPermitDev() {\n    this.dialogRef.close();\n    this.router.navigate([`auth/sign/${this.signature.token}`]);\n  }\n\n  displayMessage(message: string): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      this.dialog\n        .open(ComponentsDialogComponent, {\n          width: \"400px\",\n          disableClose: true,\n          data: {\n            user_input: false,\n            label: message,\n            required: false,\n            showCancel: false,\n          },\n        })\n        .afterClosed()\n        .subscribe((data: any) => {\n          this.close();\n        });\n    });\n  }\n\n  async setLanguage(lang) {\n    this.translate.use(lang.value);\n    this.signature.declarationText =  await getLanguageSpecificDeclaration(\n      this.dataService,\n      lang.value,\n      this.permitAdminId,\n      this.signature.declarationTypeId,\n    );\n    this.cd.detectChanges();\n  }\n}\n","<div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n  <div fxFlex fxLayoutAlign=\"start\">\n    <h2 mat-dialog-title>{{ titleText }}</h2>\n  </div>\n  <div fxFlex=\"30\" *ngIf=\"this.languages?.length > 1\">\n    <mat-select\n      [disabled]=\"hasSignedorEmailed && hasSignature\"\n      placeholder=\"{{ 'LANGUAGE_SELECTOR.LANGUAGE_PLACEHOLDER' | translate }}\"\n      (selectionChange)=\"setLanguage($event)\"\n      [(ngModel)]=\"language\"\n      name=\"language\"\n      required\n    >\n      <mat-option *ngFor=\"let lang of languages\" [value]=\"lang.language\">\n        {{ lang.displayName }}\n      </mat-option>\n    </mat-select>\n  </div>\n</div>\n\n<form (ngSubmit)=\"close()\">\n  <mat-dialog-content>\n    <p>{{ signature?.personName }}</p>\n    <div id=\"signature-pad\" class=\"signature-pad\">\n      <span *ngIf=\"hasValidToken\" class=\"signature-information\">{{\n        emailSentText\n      }}</span>\n      <p *ngIf=\"signature?.declarationText\" class=\"signature-pad-message\">\n        {{ signature.declarationText }}\n      </p>\n      <div class=\"signature-pad-body\">\n        <signature-pad\n          class=\"signature-pad-ctrl\"\n          [options]=\"signaturePadOptions\"\n          (drawEnd)=\"drawComplete()\"\n          #sigPad\n        >\n        </signature-pad>\n      </div>\n      <div class=\"signature-pad-footer\">\n        <p>{{ \"SIGNATURE.SIGN\" | translate }}</p>\n\n        <div class=\"signature-pad-actions\">\n          <div>\n            <button\n              type=\"button\"\n              mat-raised-button\n              id=\"{{ 'signatureForm-clear' }}\"\n              class=\"green-button no-margin\"\n              (click)=\"clearSignature()\"\n              [ngClass]=\"{ disabledDiv: disabled }\"\n            >\n              {{ \"ACTIONS.CLEAR\" | translate }}\n            </button>\n          </div>\n          <div>\n            <button\n              [disabled]=\"backgroundTaskRunning$ | async\"\n              *ngIf=\"!hasSignature && signatureTypeMatch\"\n              type=\"button\"\n              mat-raised-button\n              id=\"{{ 'signatureForm-email' }}\"\n              class=\"green-button\"\n              (click)=\"email()\"\n            >\n              {{ \"SIGNATURE.EMAIL\" | translate }}\n            </button>\n            <button\n              *ngIf=\"hasSignature && !nextButtonClicked\"\n              type=\"button\"\n              mat-raised-button\n              mat-accent\n              id=\"{{ 'signatureForm-next' }}\"\n              class=\"green-button next-signature\"\n              (click)=\"next()\"\n            >\n              {{ \"ACTIONS.NEXT\" | translate }}\n            </button>\n            <button\n              *ngIf=\"!hasSignature\"\n              type=\"button\"\n              style=\"margin-right: 1rem\"\n              mat-raised-button\n              id=\"{{ 'signatureForm-save' }}\"\n              class=\"green-button\"\n              (click)=\"saveSignature()\"\n              [ngClass]=\"{ disabledDiv: disabled }\"\n            >\n              {{ \"ACTIONS.SAVE\" | translate }}\n            </button>\n            <button\n              type=\"button\"\n              mat-raised-button\n              class=\"red-button\"\n              id=\"{{ 'signatureForm-cancel' }}\"\n              (click)=\"cancel()\"\n            >\n              {{ \"ACTIONS.CANCEL\" | translate }}\n            </button>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"signature-pad-feedback\">\n        <p>{{ signedByText }}</p>\n      </div>\n    </div>\n  </mat-dialog-content>\n  <br />\n</form>\n"],"mappings":"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","names":["document","SignatureTypeEnum","DeclarationTypeEnum"],"x_google_ignoreList":[0,4,5]}