{"version":3,"sources":["Content/device-fingerprint-service.ts","Content/pages/page.ts","Content/pages/login.ts","Content/pages/signin.ts","Content/app.ts"],"names":[],"mappings":"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","file":"app.js","sourcesContent":["class DeviceFingerprintService {\r\n private readonly _deviceOptions: any /*Options*/ = {\r\n excludes: {\r\n userAgent: true,\r\n webdriver: true,\r\n\r\n language: true,\r\n // colorDepth: true,\r\n\r\n deviceMemory: true, // solo chrome lo valorizza\r\n\r\n // pixelRatio: true, //ie\r\n // hardwareConcurrency: true, //\t not supported by IE\r\n // screenResolution: true, // ie\r\n availableScreenResolution: true, // edge diverso\r\n // timezoneOffset: true,\r\n // timezone: true, // ie\r\n\r\n sessionStorage: true,\r\n localStorage: true,\r\n indexedDb: true,\r\n addBehavior: true,\r\n openDatabase: true,\r\n\r\n // cpuClass: true, // ie\r\n // platform: true,\r\n\r\n doNotTrack: true,\r\n plugins: true,\r\n canvas: true,\r\n webgl: true,\r\n\r\n webglVendorAndRenderer: true, // in ff e chrome corrisponde\r\n\r\n adBlock: true,\r\n\r\n // hasLiedLanguages: true,\r\n // hasLiedResolution: true,\r\n // hasLiedOs: true,\r\n // hasLiedBrowser: true,\r\n // touchSupport: true,\r\n\r\n fonts: true,\r\n fontsFlash: true,\r\n audio: true,\r\n enumerateDevices: true\r\n }\r\n };\r\n private _deviceFingerprint: string;\r\n\r\n onDeviceFingerprintUpdate: (deviceFingerprint: string) => void;\r\n\r\n private storeFingerprint(components: Fingerprint2.Component[]): void {\r\n // console.log(components); // an array of components: {key: ..., value: ...}\r\n\r\n var values = components.map(component => component.value);\r\n this._deviceFingerprint = Fingerprint2.x64hash128(values.join(\"\"), 31);\r\n\r\n if (!!this.onDeviceFingerprintUpdate) {\r\n this.onDeviceFingerprintUpdate(this._deviceFingerprint);\r\n }\r\n };\r\n\r\n initialize(): void {\r\n if (window.requestIdleCallback) {\r\n requestIdleCallback(() => {\r\n Fingerprint2.get(this._deviceOptions, cmp => this.storeFingerprint(cmp));\r\n });\r\n } else {\r\n setTimeout(() => {\r\n Fingerprint2.get(this._deviceOptions, cmp => this.storeFingerprint(cmp));\r\n }, 50);\r\n }\r\n }\r\n\r\n getDeviceFingerprint(): string {\r\n return this._deviceFingerprint;\r\n }\r\n\r\n} \r\n\r\n//$.fn.greenify = function() {\r\n// this.css( \"color\", \"green\" );\r\n//};","namespace Pages {\r\n export interface IPage {\r\n initialize(): void;\r\n }\r\n\r\n export class Page {\r\n\r\n constructor(protected el: Element) {\r\n }\r\n\r\n protected preventDoubleSubmit(): void {\r\n const FORM_SUBMITTED = 'BrdFormSubmitted';\r\n\r\n $('input[type=submit],button[type=submit]').click(function (ev) {\r\n var self = $(this);\r\n\r\n const form = self.closest('form');\r\n\r\n if (form.valid()) {\r\n if (form.data(FORM_SUBMITTED)) {\r\n //alert('Your form has been already submited. wait please');\r\n ev.preventDefault();\r\n return false;\r\n }\r\n else {\r\n form.data(FORM_SUBMITTED, 'true');\r\n }\r\n };\r\n });\r\n }\r\n }\r\n}","declare var requestIdleCallback: (fn: () => void) => void;\r\n\r\nnamespace Pages {\r\n\r\n export class Login extends Page implements IPage {\r\n private readonly _deviceFingerprint: HTMLInputElement;\r\n private readonly _deviceFingerprintSvc: DeviceFingerprintService;\r\n\r\n constructor(el: Element) {\r\n super(el);\r\n\r\n this._deviceFingerprint = el.querySelector(\"#DeviceFingerprint\");\r\n if (!this._deviceFingerprint) {\r\n throw new Error('DeviceFingerprint input not found.');\r\n }\r\n\r\n this._deviceFingerprintSvc = new DeviceFingerprintService();\r\n }\r\n\r\n initialize(): void {\r\n\r\n this._deviceFingerprintSvc.onDeviceFingerprintUpdate = (devicefingerprint) => {\r\n this._deviceFingerprint.value = devicefingerprint;\r\n }\r\n\r\n this._deviceFingerprintSvc.initialize();\r\n }\r\n }\r\n}","declare var requestIdleCallback: (fn: () => void) => void;\r\n\r\nnamespace Pages {\r\n\r\n export class SignIn extends Page implements IPage {\r\n private readonly _deviceFingerprint: HTMLInputElement;\r\n private readonly _deviceFingerprintSvc: DeviceFingerprintService;\r\n\r\n constructor(el: Element) {\r\n super(el);\r\n\r\n this._deviceFingerprint = el.querySelector(\"#DeviceFingerprint\");\r\n if (!this._deviceFingerprint) {\r\n throw new Error('DeviceFingerprint input not found.');\r\n }\r\n\r\n this._deviceFingerprintSvc = new DeviceFingerprintService();\r\n }\r\n\r\n initialize(): void {\r\n\r\n if (!this._deviceFingerprint.value) {\r\n this._deviceFingerprintSvc.onDeviceFingerprintUpdate = (devicefingerprint) => {\r\n this._deviceFingerprint.value = devicefingerprint;\r\n }\r\n\r\n this._deviceFingerprintSvc.initialize();\r\n }\r\n }\r\n }\r\n}","document.addEventListener('DOMContentLoaded', () => {\r\n\r\n //$('input.input-validation-error').each((idx, elem) => {\r\n // $(elem).closest('.form-field').addClass('input-validation-error');\r\n //});\r\n //const inputs = document.querySelectorAll('input.input-validation-error');\r\n //inputs.forEach((elem) => {\r\n // const formGroup = elem.closest('.form-field');\r\n // formGroup?.classList.add('input-validation-error');\r\n //});\r\n\r\n jQuery.validator.setDefaults({\r\n highlight: function (element: HTMLInputElement, errorClass, validClass) {\r\n // default function\r\n if (element.type === \"radio\") {\r\n this.findByName(element.name).addClass(errorClass).removeClass(validClass);\r\n } else {\r\n $(element).addClass(errorClass).removeClass(validClass);\r\n }\r\n // custom additions\r\n $(element).closest('.form-field').addClass(errorClass).removeClass(validClass);\r\n },\r\n unhighlight: function (element: HTMLInputElement, errorClass, validClass) {\r\n // default function\r\n if (element.type === \"radio\") {\r\n this.findByName(element.name).removeClass(errorClass).addClass(validClass);\r\n } else {\r\n $(element).removeClass(errorClass).addClass(validClass);\r\n }\r\n // custom additions\r\n $(element).closest('.form-field').removeClass(errorClass).addClass(validClass);\r\n },\r\n });\r\n\r\n $.ajaxSetup({\r\n cache: false,\r\n xhrFields: {\r\n withCredentials: true\r\n }\r\n });\r\n\r\n initialize();\r\n});\r\n\r\nfunction initialize() {\r\n\r\n if ($('form').length > 0) {\r\n $.validator.unobtrusive.parse(\"form\"); \r\n }\r\n\r\n $('input.input-validation-error').each((idx, elem) => {\r\n $(elem).closest('.form-field').addClass('input-validation-error');\r\n });\r\n\r\n const pages = [{\r\n selector: '#login-page',\r\n pageCtor: Pages.Login\r\n }, {\r\n selector: '#signin-page',\r\n pageCtor: Pages.SignIn\r\n }];\r\n\r\n for (const pageItem of pages) {\r\n const pageElement = document.querySelector(pageItem.selector);\r\n if (!!pageElement) {\r\n const ctor = pageItem.pageCtor;\r\n const page = new ctor(pageElement);\r\n page.initialize();\r\n }\r\n }\r\n\r\n $('input[data-type=\"autocomplete\"]').each(function () {\r\n const $el:any = $(this);\r\n const source = $el.attr('data-source');\r\n console.log(JSON.parse(source));\r\n $el.autocomplete({\r\n source: JSON.parse(source),\r\n minLength: 0,\r\n appendTo: $(this).parent().parent().parent().parent(),\r\n select: function (event: any, ui: any) {\r\n console.log(ui.item.value);\r\n $(this).val(ui.item.value);\r\n }\r\n });\r\n });\r\n}\r\n\r\nfunction beforeRequest(jqXhr: any, ajaxSettings: JQuery.Ajax.AjaxSettingsBase) {\r\n const $form = $(\"form\");\r\n if ((ajaxSettings.type.toUpperCase() === 'POST') && ($form.length > 0) && !$form.valid()) {\r\n return false;\r\n }\r\n\r\n $('#loader').addClass('fade-in');\r\n $('.page-body').addClass('page-body-loading');\r\n $('.panel-wrapper').css('opacity', 0.8);\r\n $('.panel-wrapper').css({ 'opacity': 1, 'pointer-events': 'none' });\r\n}\r\n\r\nconst successRequest: JQuery.Ajax.SuccessCallback = function (data, textStatus, jqXhr) {\r\n\r\n const redirectDestination = jqXhr.getResponseHeader('Location');\r\n if (redirectDestination) {\r\n window.location.replace(redirectDestination);\r\n return;\r\n }\r\n\r\n $('.panel-wrapper').addClass('slide-left')\r\n // .one('webkitAnimationEnd oanimationend msAnimationEnd animationend', function (e) {\r\n .one('animationend', function (e) {\r\n $(this).find('.brd-panel:first').remove();\r\n $(this).removeClass('slide-left');\r\n $('input[autofocus]').focus();\r\n });\r\n}\r\n\r\nconst completeRequest: JQuery.Ajax.CompleteCallback = function (jqXhr, textStatus) {\r\n if (jqXhr.status < 400) {\r\n initialize();\r\n }\r\n\r\n const redirectDestination = jqXhr.getResponseHeader('Location');\r\n if (!redirectDestination) {\r\n $('#loader').removeClass('fade-in');\r\n $('.page-body').removeClass('page-body-loading');\r\n $('.panel-wrapper').css({ 'opacity': 1, 'pointer-events': 'auto'});\r\n }\r\n}\r\n\r\nconst failureRequest: JQuery.Ajax.ErrorCallback = function (jqXhr, textStatus, errorThrown) {\r\n if (jqXhr.status === 400) {\r\n // Probabilmente si tratta di una bad request dovuta all'antiforgery token scaduto poiche' \r\n // e' stata fatta la login da un altro tab\r\n location.reload();\r\n }\r\n}"]}