simpo-component-library 1.6.150 → 1.6.152
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +7 -41
- package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +5 -3
- package/esm2022/lib/services/storage.service.mjs +1 -4
- package/fesm2022/simpo-component-library.mjs +89 -123
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/directive/background-directive.d.ts +1 -1
- package/lib/directive/button-directive.directive.d.ts +1 -1
- package/lib/directive/color.directive.d.ts +1 -1
- package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -0
- package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
- package/package.json +1 -1
- package/simpo-component-library-1.6.151.tgz +0 -0
- package/simpo-component-library-1.6.152.tgz +0 -0
@@ -104,9 +104,6 @@ export class StorageServiceService {
|
|
104
104
|
request.subscribe((cartResponse) => {
|
105
105
|
console.log("Cart Response : ", cartResponse);
|
106
106
|
const userCart = cartResponse?.[0].data[0];
|
107
|
-
localStorage.setItem("couponId", userCart.billdetails.couponId);
|
108
|
-
localStorage.setItem("couponCode", userCart.billdetails.couponCode);
|
109
|
-
console.log("Cart Response : ", userCart);
|
110
107
|
if (userCart.cartId)
|
111
108
|
localStorage.setItem("cartId", userCart.cartId);
|
112
109
|
this.getUserCart().then((userCartResponse) => {
|
@@ -228,4 +225,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
228
225
|
providedIn: 'root'
|
229
226
|
}]
|
230
227
|
}], ctorParameters: () => [{ type: i1.EventsService }, { type: i2.CookieService }, { type: i3.RestService }] });
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUtuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQU9oQyxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQ21CLFlBQTJCLEVBQzNCLGFBQTRCLEVBQzVCLFdBQXdCO1FBRnhCLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBV25DLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBUW5DLGlCQUFZLEdBQVcsTUFBTSxDQUFDO1FBQzlCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLHVCQUFrQixHQUFXLFdBQVcsQ0FBQztRQUN6Qyw0QkFBdUIsR0FBVyxnQkFBZ0IsQ0FBQztRQUNuRCx1QkFBa0IsR0FBVyxNQUFNLENBQUM7UUFHcEMsc0JBQWlCLEdBQTBCLElBQUksQ0FBQztRQUNoRCwyQkFBc0IsR0FBMEIsSUFBSSxDQUFDO1FBQ3JELHNCQUFpQixHQUEwQixJQUFJLENBQUM7UUExQjlDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWEsRUFBQyxFQUFFO2dCQUMxRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMs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Y0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi9lY29tbWVyY2Uvc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9lY29tbWVyY2Uvc3R5bGVzL3VzZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7Q29va2llU2VydmljZX0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IENhcnQgfSBmcm9tICcuLy4uL2Vjb21tZXJjZS9zdHlsZXMvY2FydC5tb2RhbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9yYWdlU2VydmljZVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuY3JlYXRlRGF0YUJhc2UoKTtcclxuICAgIGNvbnN0IHVzZXJEZXRhaWxzID0gdGhpcy5nZXRVc2VyKCk7XHJcbiAgICBpZiAoISF1c2VyRGV0YWlscykge1xyXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJbmZvKHVzZXJEZXRhaWxzLnVzZXJJZCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgICB0aGlzLnNldFVzZXIocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvdGFsQ2FydEl0ZW1zOiBudW1iZXIgPSAwO1xyXG4gIGdldCBnZXRUb3RhbENhcnRJdGVtcygpIHtcclxuICAgIGlmICh0aGlzLnRvdGFsQ2FydEl0ZW1zIDwgMClcclxuICAgICAgdGhpcy50b3RhbENhcnRJdGVtcyA9IDA7XHJcbiAgICB0aGlzLmV2ZW50U2VydmljZS5zaG93QmFnSWNvbi5lbWl0KHRoaXMudG90YWxDYXJ0SXRlbXMgPiAwKTtcclxuICAgIHJldHVybiB0aGlzLnRvdGFsQ2FydEl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgZGF0YWJhc2VOYW1lOiBzdHJpbmcgPSBcIlVTRVJcIjtcclxuICBkYXRhYmFzZVZlcnNpb246IG51bWJlciA9IDE7XHJcbiAgY2FydENvbGxlY3Rpb25OYW1lOiBzdHJpbmcgPSBcIlVTRVJfQ0FSVFwiO1xyXG4gIGZhdm91cml0ZUNvbGxlY3Rpb25OYW1lOiBzdHJpbmcgPSBcIlVTRVJfRkFWT1VSSVRFXCI7XHJcbiAgdXNlckNvbGxlY3Rpb25OYW1lOiBzdHJpbmcgPSBcIlVTRVJcIjtcclxuICBkYXRhYmFzZSE6IElEQkRhdGFiYXNlO1xyXG5cclxuICBjYXJ0Q29sbGVjdGlvblJlZjogSURCT2JqZWN0U3RvcmUgfCBudWxsID0gbnVsbDtcclxuICBmYXZvdXJpdGVDb2xsZWN0aW9uUmVmOiBJREJPYmplY3RTdG9yZSB8IG51bGwgPSBudWxsO1xyXG4gIHVzZXJDb2xsZWN0aW9uUmVmOiBJREJPYmplY3RTdG9yZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBhc3luYyBjcmVhdGVEYXRhQmFzZSgpIHtcclxuICAgIGNvbnN0IHJlcXVlc3Q6IElEQk9wZW5EQlJlcXVlc3QgPSBhd2FpdCB3aW5kb3cuaW5kZXhlZERCLm9wZW4odGhpcy5kYXRhYmFzZU5hbWUsIDEpO1xyXG5cclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLmVtaXQodHJ1ZSk7XHJcbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7IH07XHJcbiAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFzeW5jIChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFiYXNlID0gYXdhaXQgKGV2ZW50LnRhcmdldCBhcyBJREJPcGVuREJSZXF1ZXN0KS5yZXN1bHQ7XHJcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCB0aGlzLmdldFVzZXJDYXJ0KCk7XHJcbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXN5bmMgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAoYXdhaXQgdGhpcy5nZXRVc2VyQ2FydCgpKS5vbnN1Y2Nlc3MgPSAodXNlckNhcnRSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsQ2FydEl0ZW1zID0gdXNlckNhcnRSZXNwb25zZS50YXJnZXQucmVzdWx0Lmxlbmd0aDtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5hZGRBbGxQcm9kdWN0c1RvQ2FydCh1c2VyQ2FydFJlc3BvbnNlLnRhcmdldC5yZXN1bHQpO1xyXG4gICAgICAgICAgICByZXNwb25zZS5vbmNvbXBsZXRlID0gKCk9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzcG9uc2Uub25lcnJvciA9ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBjYXRjaChleGNlcHRpb246IGFueSkge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkRhdGFiYXNlIGNyZWF0ZWRcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFVzZXJDYXJ0Lm9yZGVyZWRJdGVtcyA9IGF3YWl0IHJlc3BvbnNlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IChldmVudCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5kYXRhYmFzZSA9IChldmVudC50YXJnZXQgYXMgSURCT3BlbkRCUmVxdWVzdCkucmVzdWx0O1xyXG4gICAgICB0aGlzLmNhcnRDb2xsZWN0aW9uUmVmID0gdGhpcy5kYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSh0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSwgeyBrZXlQYXRoOiBcInZhcmllbnRJZFwiIH0pO1xyXG4gICAgICB0aGlzLmZhdm91cml0ZUNvbGxlY3Rpb25SZWYgPSB0aGlzLmRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUsIHsga2V5UGF0aDogXCJ2YXJpZW50SWRcIiB9KTtcclxuICAgICAgdGhpcy51c2VyQ29sbGVjdGlvblJlZiA9IHRoaXMuZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUodGhpcy51c2VyQ29sbGVjdGlvbk5hbWUsIHsga2V5UGF0aDogXCJ1c2VySWRcIiB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHN0b3JlRGF0YVRvSlNPTigpIHtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLmVtaXQodHJ1ZSk7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgdGhpcy5nZXRVc2VyQ2FydCgpO1xyXG4gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhc3luYyAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAvLyBVc2VyQ2FydC5vcmRlcmVkSXRlbXMgPSBhd2FpdCByZXNwb25zZS50YXJnZXQucmVzdWx0O1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcIkNhclwiLCBVc2VyQ2FydCk7XHJcbiAgICAgIGNvbnN0IGZhdlJlcXVlc3QgPSBhd2FpdCB0aGlzLmdldFVzZXJXaGlzaGxpc3QoKTtcclxuICAgICAgZmF2UmVxdWVzdC5vbnN1Y2Nlc3MgPSBhc3luYyAoZmF2UmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLmVtaXQoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsY3VsYXRlQmlsbGluZ0RldGFpbHMoKSB7XHJcbiAgICBcclxuICAgIC8vIFVzZXJDYXJ0LmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSA9IDA7XHJcbiAgICAvLyBVc2VyQ2FydC5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlID0gMDtcclxuICAgIC8vIFVzZXJDYXJ0LmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IDA7XHJcbiAgICAvLyBVc2VyQ2FydC5iaWxsZGV0YWlscy5kaXNjb3VudEFtb3VudCA9IDA7XHJcbiAgICAvLyBVc2VyQ2FydC5iaWxsZGV0YWlscy50b3RhbE9mZmVyZWRWYWx1ZSA9IDA7XHJcbiAgICAvLyBVc2VyQ2FydC5iaWxsZGV0YWlscy50b3RhbFRheCA9IDA7XHJcblxyXG4gICAgLy8gVXNlckNhcnQub3JkZXJlZEl0ZW1zLmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcyk9PiB7XHJcbiAgICAvLyAgIFVzZXJDYXJ0LmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5wcmljZSAqIGl0ZW0ucXVhbnRpdHkpO1xyXG4gICAgLy8gICBVc2VyQ2FydC5iaWxsZGV0YWlscy50b3RhbFRheCArPSAoaXRlbS5pdGVtVGF4ICogaXRlbS5xdWFudGl0eSk7XHJcbiAgICAvLyB9KVxyXG4gICAgLy8gVXNlckNhcnQuYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IChVc2VyQ2FydC5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKyBVc2VyQ2FydC5iaWxsZGV0YWlscy50b3RhbFRheCArIFVzZXJDYXJ0LmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcykgLSBVc2VyQ2FydC5iaWxsZGV0YWlscy5kaXNjb3VudEFtb3VudDtcclxuICAgIC8vIHJldHVybiBVc2VyQ2FydDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFsbERhdGEoKSB7XHJcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9IHRoaXMuZ2V0VXNlcigpO1xyXG4gICAgaWYgKCEhdXNlckRldGFpbHMpIHtcclxuICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uZW1pdCh0cnVlKTtcclxuICAgICAgY29uc3QgcmVxdWVzdCA9IGZvcmtKb2luKFtcclxuICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJdGVtcyh1c2VyRGV0YWlscy51c2VySWQsIFwiQ0FSVFwiKSxcclxuICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJdGVtcyh1c2VyRGV0YWlscy51c2VySWQsIFwiV0lTSExJU1RcIilcclxuICAgICAgXSk7XHJcbiAgICAgIHJlcXVlc3Quc3Vic2NyaWJlKChjYXJ0UmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJDYXJ0IFJlc3BvbnNlIDogXCIsIGNhcnRSZXNwb25zZSk7XHJcbiAgICAgICAgY29uc3QgdXNlckNhcnQ6IENhcnQgPSBjYXJ0UmVzcG9uc2U/LlswXS5kYXRhWzBdIGFzIENhcnQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJjb3Vwb25JZFwiLCB1c2VyQ2FydC5iaWxsZGV0YWlscy5jb3Vwb25JZCk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJjb3Vwb25Db2RlXCIsIHVzZXJDYXJ0LmJpbGxkZXRhaWxzLmNvdXBvbkNvZGUpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiQ2FydCBSZXNwb25zZSA6IFwiLCB1c2VyQ2FydCk7XHJcbiAgICAgICAgaWYgKHVzZXJDYXJ0LmNhcnRJZClcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiY2FydElkXCIsIHVzZXJDYXJ0LmNhcnRJZCk7XHJcbiAgICAgICAgdGhpcy5nZXRVc2VyQ2FydCgpLnRoZW4oKHVzZXJDYXJ0UmVzcG9uc2UpPT4ge1xyXG4gICAgICAgICAgdXNlckNhcnRSZXNwb25zZS5vbnN1Y2Nlc3MgPSAodXNlckNhcnRJbmRleERCOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdXNlckNhcnQub3JkZXJlZEl0ZW1zID0gWy4uLih1c2VyQ2FydEluZGV4REIudGFyZ2V0LnJlc3VsdCA/PyBbXSksIC4uLih1c2VyQ2FydC5vcmRlcmVkSXRlbXMgPz8gW10pXTtcclxuICAgICAgICAgICAgdGhpcy5hZGRBbGxQcm9kdWN0c1RvQ2FydCh1c2VyQ2FydC5vcmRlcmVkSXRlbXMpO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHVzZXJDYXJ0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICBjb25zdCB1c2VyV2lzaGxpc3Q6IENhcnQgPSBjYXJ0UmVzcG9uc2U/LlsxXS5kYXRhIGFzIENhcnQ7XHJcbiAgICAgICAgaWYgKHVzZXJXaXNobGlzdC5jYXJ0SWQpXHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIndpc2hsaXN0SWRcIiwgdXNlcldpc2hsaXN0LmNhcnRJZCk7XHJcbiAgICAgICAgdGhpcy5nZXRVc2VyV2hpc2hsaXN0KCkudGhlbigodXNlcldpc2hsaXN0UmVzcG9uc2UpPT4ge1xyXG4gICAgICAgICAgdXNlcldpc2hsaXN0UmVzcG9uc2Uub25zdWNjZXNzID0gKHVzZXJXaXNobGlzdEluZGV4REI6IGFueSk9PiB7XHJcbiAgICAgICAgICAgIHVzZXJXaXNobGlzdC5vcmRlcmVkSXRlbXMgPSBbLi4uKHVzZXJXaXNobGlzdEluZGV4REIudGFyZ2V0LnJlc3VsdCA/PyBbXSksIC4uLih1c2VyV2lzaGxpc3Qub3JkZXJlZEl0ZW1zID8/IFtdKV07XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQWxsUHJvZHVjdFRvV2lzaGxpc3QodXNlcldpc2hsaXN0Lm9yZGVyZWRJdGVtcyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodXNlcldpc2hsaXN0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5lbWl0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHRoaXMuc3RvcmVEYXRhVG9KU09OKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gQ0FSVCBTRVJWSUNFXHJcbiAgYXN5bmMgZ2V0VXNlckNhcnQoKTogUHJvbWlzZTxJREJSZXF1ZXN0PE9yZGVyZWRJdGVtc1tdPj4ge1xyXG4gICAgXHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lKS5nZXRBbGwoKTtcclxuICB9XHJcblxyXG4gIGFkZFByb2R1Y3RUb0NhcnQocHJvZHVjdDogT3JkZXJlZEl0ZW1zKSB7XHJcblxyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlLnRyYW5zYWN0aW9uKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lLCBcInJlYWR3cml0ZVwiKTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUpLmdldChwcm9kdWN0LnZhcmllbnRJZClcclxuICAgIHJlc3BvbnNlLm9uc3VjY2VzcyA9IChjYXJ0UmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkNhcnQgUmVzcHBuc2UgOiBcIiwgY2FydFJlc3BvbnNlKTtcclxuICAgICAgaWYgKGNhcnRSZXNwb25zZS50YXJnZXQucmVzdWx0KSB7fVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvdGFsQ2FydEl0ZW1zICs9IDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lKS5wdXQocHJvZHVjdCk7XHJcbiAgfVxyXG5cclxuICBhZGRBbGxQcm9kdWN0VG9XaXNobGlzdChwcm9kdWN0czogT3JkZXJlZEl0ZW1zW10pOiBJREJUcmFuc2FjdGlvbiB7XHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICBwcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KT0+IHtcclxuICAgICAgY29uc29sZS5sb2cocHJvZHVjdCArIFwid2lzaGxpc3RcIik7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSkucHV0KHByb2R1Y3QpO1xyXG4gICAgfSlcclxuICAgIHJldHVybiB0cmFuc2FjdGlvbjtcclxuICB9XHJcbiAgYWRkQWxsUHJvZHVjdHNUb0NhcnQocHJvZHVjdHM6IE9yZGVyZWRJdGVtc1tdKTogSURCVHJhbnNhY3Rpb24ge1xyXG5cclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZS50cmFuc2FjdGlvbih0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICBwcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KT0+IHtcclxuICAgICAgY29uc29sZS5sb2cocHJvZHVjdCArIFwiaW5mb1wiKTtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSkucHV0KHByb2R1Y3QpO1xyXG4gICAgfSlcclxuICAgIHJldHVybiB0cmFuc2FjdGlvbjtcclxuICB9XHJcbiAgcmVtb3ZlUHJvZHVjdEZyb21DYXJ0KHByb2R1Y3RJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRvdGFsQ2FydEl0ZW1zIC09IDE7XHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lKS5kZWxldGUocHJvZHVjdElkKTtcclxuICB9XHJcbiAgYXN5bmMgZ2V0UHJvZHVjdEZyb21DYXJ0KHByb2R1Y3RJZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lKS5nZXQocHJvZHVjdElkKTtcclxuICB9XHJcblxyXG4gIC8vIFdJU0hMSVNUIFNFUlZJQ0VcclxuICBhc3luYyBnZXRVc2VyV2hpc2hsaXN0KCk6IFByb21pc2U8SURCUmVxdWVzdDxPcmRlcmVkSXRlbXNbXT4+IHtcclxuICAgIFxyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlLnRyYW5zYWN0aW9uKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUpLmdldEFsbCgpO1xyXG4gIH1cclxuXHJcbiAgYWRkUHJvZHVjdFRvV2lzaGxpc3QocHJvZHVjdDogT3JkZXJlZEl0ZW1zKSB7XHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICByZXR1cm4gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSkucHV0KHByb2R1Y3QpO1xyXG4gIH1cclxuICByZW1vdmVQcm9kdWN0RnJvbVdpc2hsaXN0KHByb2R1Y3RJZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICByZXR1cm4gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSkuZGVsZXRlKHByb2R1Y3RJZCk7XHJcbiAgfVxyXG4gIGFzeW5jIGdldFByb2R1Y3RGcm9tV2lzaGxpc3QocHJvZHVjdElkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZS50cmFuc2FjdGlvbih0aGlzLmZhdm91cml0ZUNvbGxlY3Rpb25OYW1lLCBcInJlYWR3cml0ZVwiKTtcclxuICAgIHJldHVybiBhd2FpdCB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmZhdm91cml0ZUNvbGxlY3Rpb25OYW1lKS5nZXQocHJvZHVjdElkKTtcclxuICB9XHJcblxyXG4gIGNsZWFyVXNlckNhcnQoKSB7XHJcbiAgICB0aGlzLnRvdGFsQ2FydEl0ZW1zID0gMDtcclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZS50cmFuc2FjdGlvbih0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICByZXR1cm4gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUpLmNsZWFyKCk7XHJcbiAgfVxyXG4gIGNsZWFyVXNlcldpc2hsaXN0KCkge1xyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlLnRyYW5zYWN0aW9uKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUpLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICAvLyBVU0VSIFNFUlZJQ0VcclxuICBzZXRVc2VyKHVzZXI6IFVzZXIpOiBVc2VyIHtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoXCJ1c2VyXCIsIEpTT04uc3RyaW5naWZ5KHVzZXIgPz8gXCJ7fVwiKSwgNyk7XHJcbiAgICByZXR1cm4gdXNlcjtcclxuICB9XHJcbiAgZ2V0VXNlcigpOiBVc2VyIHwgbnVsbCB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB1c2VyOiBVc2VyID0gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwidXNlclwiKSk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwicGVySWRcIiwgdXNlcj8udXNlcklkKTtcclxuICAgICAgcmV0dXJuIHVzZXI7XHJcbiAgICB9IGNhdGNoKGV4Y2VwdGlvbikge31cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8gcGF5bWVudCBpc3N1ZVxyXG4gIHN0b3JlUGF5bWVudEZvcihwYXltZW50Rm9yOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoXCJwYXltZW50Rm9yXCIsIHBheW1lbnRGb3IsIDcpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIGNsZWFyQWxsSXRlbXNGcm9tQ2FydCgpIHtcclxuICAvLyAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgLy8gICAgIGlmICh0aGlzLmRhdGFiYXNlICE9IHVuZGVmaW5lZCkge1xyXG4gIC8vICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCB0aGlzLmRhdGFiYXNlXHJcbiAgLy8gICAgICAgICAudHJhbnNhY3Rpb24odGhpcy5vYmplY3RTdG9yYWdlTmFtZSwgJ3JlYWR3cml0ZScpXHJcbiAgLy8gICAgICAgICAub2JqZWN0U3RvcmUodGhpcy5vYmplY3RTdG9yYWdlTmFtZSlcclxuICAvLyAgICAgICAgIC5jbGVhcigpO1xyXG5cclxuICAvLyAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGF3YWl0IGZ1bmN0aW9uIChldmVudDogYW55KSB7XHJcblxyXG4gIC8vICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQpIHtcclxuICAvLyAgICAgICAgICAgcmVzb2x2ZShldmVudC5yZXN1bHQpO1xyXG4gIC8vICAgICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgICAgcmVzb2x2ZSgnU1VDQ0VTUycpO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH07XHJcbiAgLy8gICAgICAgcmVxdWVzdC5vbmVycm9yID0gYXdhaXQgZnVuY3Rpb24gKF9ldmVudCkge1xyXG4gIC8vICAgICAgICAgcmVqZWN0KFwiTm8gZGF0YVwiKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxufVxyXG4iXX0=
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUtuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQU9oQyxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQ21CLFlBQTJCLEVBQzNCLGFBQTRCLEVBQzVCLFdBQXdCO1FBRnhCLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBV25DLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBUW5DLGlCQUFZLEdBQVcsTUFBTSxDQUFDO1FBQzlCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLHVCQUFrQixHQUFXLFdBQVcsQ0FBQztRQUN6Qyw0QkFBdUIsR0FBVyxnQkFBZ0IsQ0FBQztRQUNuRCx1QkFBa0IsR0FBVyxNQUFNLENBQUM7UUFHcEMsc0JBQWlCLEdBQTBCLElBQUksQ0FBQztRQUNoRCwyQkFBc0IsR0FBMEIsSUFBSSxDQUFDO1FBQ3JELHNCQUFpQixHQUEwQixJQUFJLENBQUM7UUExQjlDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWEsRUFBQyxFQUFFO2dCQUMxRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMs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SSxDQUFDLHVCQUF1QixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3pGLE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBRUQsZUFBZTtJQUNmLE9BQU8sQ0FBQyxJQUFVO1FBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPO1FBQ0wsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzlELFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM1QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFNLFNBQVMsRUFBRSxDQUFDLENBQUEsQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsZUFBZSxDQUFDLFVBQWtCO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs4R0E5T1UscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi9lY29tbWVyY2Uvc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9lY29tbWVyY2Uvc3R5bGVzL3VzZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7Q29va2llU2VydmljZX0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IENhcnQgfSBmcm9tICcuLy4uL2Vjb21tZXJjZS9zdHlsZXMvY2FydC5tb2RhbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9yYWdlU2VydmljZVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuY3JlYXRlRGF0YUJhc2UoKTtcclxuICAgIGNvbnN0IHVzZXJEZXRhaWxzID0gdGhpcy5nZXRVc2VyKCk7XHJcbiAgICBpZiAoISF1c2VyRGV0YWlscykge1xyXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJbmZvKHVzZXJEZXRhaWxzLnVzZXJJZCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgICB0aGlzLnNldFVzZXIocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvdGFsQ2FydEl0ZW1zOiBudW1iZXIgPSAwO1xyXG4gIGdldCBnZXRUb3RhbENhcnRJdGVtcygpIHtcclxuICAgIGlmICh0aGlzLnRvdGFsQ2FydEl0ZW1zIDwgMClcclxuICAgICAgdGhpcy50b3RhbENhcnRJdGVtcyA9IDA7XHJcbiAgICB0aGlzLmV2ZW50U2VydmljZS5zaG93QmFnSWNvbi5lbWl0KHRoaXMudG90YWxDYXJ0SXRlbXMgPiAwKTtcclxuICAgIHJldHVybiB0aGlzLnRvdGFsQ2FydEl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgZGF0YWJhc2VOYW1lOiBzdHJpbmcgPSBcIlVTRVJcIjtcclxuICBkYXRhYmFzZVZlcnNpb246IG51bWJlciA9IDE7XHJcbiAgY2FydENvbGxlY3Rpb25OYW1lOiBzdHJpbmcgPSBcIlVTRVJfQ0FSVFwiO1xyXG4gIGZhdm91cml0ZUNvbGxlY3Rpb25OYW1lOiBzdHJpbmcgPSBcIlVTRVJfRkFWT1VSSVRFXCI7XHJcbiAgdXNlckNvbGxlY3Rpb25OYW1lOiBzdHJpbmcgPSBcIlVTRVJcIjtcclxuICBkYXRhYmFzZSE6IElEQkRhdGFiYXNlO1xyXG5cclxuICBjYXJ0Q29sbGVjdGlvblJlZjogSURCT2JqZWN0U3RvcmUgfCBudWxsID0gbnVsbDtcclxuICBmYXZvdXJpdGVDb2xsZWN0aW9uUmVmOiBJREJPYmplY3RTdG9yZSB8IG51bGwgPSBudWxsO1xyXG4gIHVzZXJDb2xsZWN0aW9uUmVmOiBJREJPYmplY3RTdG9yZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBhc3luYyBjcmVhdGVEYXRhQmFzZSgpIHtcclxuICAgIGNvbnN0IHJlcXVlc3Q6IElEQk9wZW5EQlJlcXVlc3QgPSBhd2FpdCB3aW5kb3cuaW5kZXhlZERCLm9wZW4odGhpcy5kYXRhYmFzZU5hbWUsIDEpO1xyXG5cclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLmVtaXQodHJ1ZSk7XHJcbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7IH07XHJcbiAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFzeW5jIChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFiYXNlID0gYXdhaXQgKGV2ZW50LnRhcmdldCBhcyBJREJPcGVuREJSZXF1ZXN0KS5yZXN1bHQ7XHJcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCB0aGlzLmdldFVzZXJDYXJ0KCk7XHJcbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXN5bmMgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAoYXdhaXQgdGhpcy5nZXRVc2VyQ2FydCgpKS5vbnN1Y2Nlc3MgPSAodXNlckNhcnRSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsQ2FydEl0ZW1zID0gdXNlckNhcnRSZXNwb25zZS50YXJnZXQucmVzdWx0Lmxlbmd0aDtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5hZGRBbGxQcm9kdWN0c1RvQ2FydCh1c2VyQ2FydFJlc3BvbnNlLnRhcmdldC5yZXN1bHQpO1xyXG4gICAgICAgICAgICByZXNwb25zZS5vbmNvbXBsZXRlID0gKCk9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzcG9uc2Uub25lcnJvciA9ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBjYXRjaChleGNlcHRpb246IGFueSkge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkRhdGFiYXNlIGNyZWF0ZWRcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFVzZXJDYXJ0Lm9yZGVyZWRJdGVtcyA9IGF3YWl0IHJlc3BvbnNlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IChldmVudCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5kYXRhYmFzZSA9IChldmVudC50YXJnZXQgYXMgSURCT3BlbkRCUmVxdWVzdCkucmVzdWx0O1xyXG4gICAgICB0aGlzLmNhcnRDb2xsZWN0aW9uUmVmID0gdGhpcy5kYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSh0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSwgeyBrZXlQYXRoOiBcInZhcmllbnRJZFwiIH0pO1xyXG4gICAgICB0aGlzLmZhdm91cml0ZUNvbGxlY3Rpb25SZWYgPSB0aGlzLmRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUsIHsga2V5UGF0aDogXCJ2YXJpZW50SWRcIiB9KTtcclxuICAgICAgdGhpcy51c2VyQ29sbGVjdGlvblJlZiA9IHRoaXMuZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUodGhpcy51c2VyQ29sbGVjdGlvbk5hbWUsIHsga2V5UGF0aDogXCJ1c2VySWRcIiB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHN0b3JlRGF0YVRvSlNPTigpIHtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLmVtaXQodHJ1ZSk7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgdGhpcy5nZXRVc2VyQ2FydCgpO1xyXG4gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhc3luYyAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAvLyBVc2VyQ2FydC5vcmRlcmVkSXRlbXMgPSBhd2FpdCByZXNwb25zZS50YXJnZXQucmVzdWx0O1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcIkNhclwiLCBVc2VyQ2FydCk7XHJcbiAgICAgIGNvbnN0IGZhdlJlcXVlc3QgPSBhd2FpdCB0aGlzLmdldFVzZXJXaGlzaGxpc3QoKTtcclxuICAgICAgZmF2UmVxdWVzdC5vbnN1Y2Nlc3MgPSBhc3luYyAoZmF2UmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLmVtaXQoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsY3VsYXRlQmlsbGluZ0RldGFpbHMoKSB7XHJcbiAgICBcclxuICAgIC8vIFVzZXJDYXJ0LmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSA9IDA7XHJcbiAgICAvLyBVc2VyQ2FydC5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlID0gMDtcclxuICAgIC8vIFVzZXJDYXJ0LmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IDA7XHJcbiAgICAvLyBVc2VyQ2FydC5iaWxsZGV0YWlscy5kaXNjb3VudEFtb3VudCA9IDA7XHJcbiAgICAvLyBVc2VyQ2FydC5iaWxsZGV0YWlscy50b3RhbE9mZmVyZWRWYWx1ZSA9IDA7XHJcbiAgICAvLyBVc2VyQ2FydC5iaWxsZGV0YWlscy50b3RhbFRheCA9IDA7XHJcblxyXG4gICAgLy8gVXNlckNhcnQub3JkZXJlZEl0ZW1zLmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcyk9PiB7XHJcbiAgICAvLyAgIFVzZXJDYXJ0LmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5wcmljZSAqIGl0ZW0ucXVhbnRpdHkpO1xyXG4gICAgLy8gICBVc2VyQ2FydC5iaWxsZGV0YWlscy50b3RhbFRheCArPSAoaXRlbS5pdGVtVGF4ICogaXRlbS5xdWFudGl0eSk7XHJcbiAgICAvLyB9KVxyXG4gICAgLy8gVXNlckNhcnQuYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IChVc2VyQ2FydC5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKyBVc2VyQ2FydC5iaWxsZGV0YWlscy50b3RhbFRheCArIFVzZXJDYXJ0LmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcykgLSBVc2VyQ2FydC5iaWxsZGV0YWlscy5kaXNjb3VudEFtb3VudDtcclxuICAgIC8vIHJldHVybiBVc2VyQ2FydDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFsbERhdGEoKSB7XHJcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9IHRoaXMuZ2V0VXNlcigpO1xyXG4gICAgaWYgKCEhdXNlckRldGFpbHMpIHtcclxuICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uZW1pdCh0cnVlKTtcclxuICAgICAgY29uc3QgcmVxdWVzdCA9IGZvcmtKb2luKFtcclxuICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJdGVtcyh1c2VyRGV0YWlscy51c2VySWQsIFwiQ0FSVFwiKSxcclxuICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJdGVtcyh1c2VyRGV0YWlscy51c2VySWQsIFwiV0lTSExJU1RcIilcclxuICAgICAgXSk7XHJcbiAgICAgIHJlcXVlc3Quc3Vic2NyaWJlKChjYXJ0UmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJDYXJ0IFJlc3BvbnNlIDogXCIsIGNhcnRSZXNwb25zZSk7XHJcbiAgICAgICAgY29uc3QgdXNlckNhcnQ6IENhcnQgPSBjYXJ0UmVzcG9uc2U/LlswXS5kYXRhWzBdIGFzIENhcnQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHVzZXJDYXJ0LmNhcnRJZClcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiY2FydElkXCIsIHVzZXJDYXJ0LmNhcnRJZCk7XHJcbiAgICAgICAgdGhpcy5nZXRVc2VyQ2FydCgpLnRoZW4oKHVzZXJDYXJ0UmVzcG9uc2UpPT4ge1xyXG4gICAgICAgICAgdXNlckNhcnRSZXNwb25zZS5vbnN1Y2Nlc3MgPSAodXNlckNhcnRJbmRleERCOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdXNlckNhcnQub3JkZXJlZEl0ZW1zID0gWy4uLih1c2VyQ2FydEluZGV4REIudGFyZ2V0LnJlc3VsdCA/PyBbXSksIC4uLih1c2VyQ2FydC5vcmRlcmVkSXRlbXMgPz8gW10pXTtcclxuICAgICAgICAgICAgdGhpcy5hZGRBbGxQcm9kdWN0c1RvQ2FydCh1c2VyQ2FydC5vcmRlcmVkSXRlbXMpO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHVzZXJDYXJ0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICBjb25zdCB1c2VyV2lzaGxpc3Q6IENhcnQgPSBjYXJ0UmVzcG9uc2U/LlsxXS5kYXRhIGFzIENhcnQ7XHJcbiAgICAgICAgaWYgKHVzZXJXaXNobGlzdC5jYXJ0SWQpXHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIndpc2hsaXN0SWRcIiwgdXNlcldpc2hsaXN0LmNhcnRJZCk7XHJcbiAgICAgICAgdGhpcy5nZXRVc2VyV2hpc2hsaXN0KCkudGhlbigodXNlcldpc2hsaXN0UmVzcG9uc2UpPT4ge1xyXG4gICAgICAgICAgdXNlcldpc2hsaXN0UmVzcG9uc2Uub25zdWNjZXNzID0gKHVzZXJXaXNobGlzdEluZGV4REI6IGFueSk9PiB7XHJcbiAgICAgICAgICAgIHVzZXJXaXNobGlzdC5vcmRlcmVkSXRlbXMgPSBbLi4uKHVzZXJXaXNobGlzdEluZGV4REIudGFyZ2V0LnJlc3VsdCA/PyBbXSksIC4uLih1c2VyV2lzaGxpc3Qub3JkZXJlZEl0ZW1zID8/IFtdKV07XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQWxsUHJvZHVjdFRvV2lzaGxpc3QodXNlcldpc2hsaXN0Lm9yZGVyZWRJdGVtcyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodXNlcldpc2hsaXN0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5lbWl0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHRoaXMuc3RvcmVEYXRhVG9KU09OKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gQ0FSVCBTRVJWSUNFXHJcbiAgYXN5bmMgZ2V0VXNlckNhcnQoKTogUHJvbWlzZTxJREJSZXF1ZXN0PE9yZGVyZWRJdGVtc1tdPj4ge1xyXG4gICAgXHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lKS5nZXRBbGwoKTtcclxuICB9XHJcblxyXG4gIGFkZFByb2R1Y3RUb0NhcnQocHJvZHVjdDogT3JkZXJlZEl0ZW1zKSB7XHJcblxyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlLnRyYW5zYWN0aW9uKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lLCBcInJlYWR3cml0ZVwiKTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUpLmdldChwcm9kdWN0LnZhcmllbnRJZClcclxuICAgIHJlc3BvbnNlLm9uc3VjY2VzcyA9IChjYXJ0UmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkNhcnQgUmVzcHBuc2UgOiBcIiwgY2FydFJlc3BvbnNlKTtcclxuICAgICAgaWYgKGNhcnRSZXNwb25zZS50YXJnZXQucmVzdWx0KSB7fVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvdGFsQ2FydEl0ZW1zICs9IDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lKS5wdXQocHJvZHVjdCk7XHJcbiAgfVxyXG5cclxuICBhZGRBbGxQcm9kdWN0VG9XaXNobGlzdChwcm9kdWN0czogT3JkZXJlZEl0ZW1zW10pOiBJREJUcmFuc2FjdGlvbiB7XHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICBwcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KT0+IHtcclxuICAgICAgY29uc29sZS5sb2cocHJvZHVjdCArIFwid2lzaGxpc3RcIik7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSkucHV0KHByb2R1Y3QpO1xyXG4gICAgfSlcclxuICAgIHJldHVybiB0cmFuc2FjdGlvbjtcclxuICB9XHJcbiAgYWRkQWxsUHJvZHVjdHNUb0NhcnQocHJvZHVjdHM6IE9yZGVyZWRJdGVtc1tdKTogSURCVHJhbnNhY3Rpb24ge1xyXG5cclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZS50cmFuc2FjdGlvbih0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICBwcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KT0+IHtcclxuICAgICAgY29uc29sZS5sb2cocHJvZHVjdCArIFwiaW5mb1wiKTtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSkucHV0KHByb2R1Y3QpO1xyXG4gICAgfSlcclxuICAgIHJldHVybiB0cmFuc2FjdGlvbjtcclxuICB9XHJcbiAgcmVtb3ZlUHJvZHVjdEZyb21DYXJ0KHByb2R1Y3RJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRvdGFsQ2FydEl0ZW1zIC09IDE7XHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lKS5kZWxldGUocHJvZHVjdElkKTtcclxuICB9XHJcbiAgYXN5bmMgZ2V0UHJvZHVjdEZyb21DYXJ0KHByb2R1Y3RJZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lKS5nZXQocHJvZHVjdElkKTtcclxuICB9XHJcblxyXG4gIC8vIFdJU0hMSVNUIFNFUlZJQ0VcclxuICBhc3luYyBnZXRVc2VyV2hpc2hsaXN0KCk6IFByb21pc2U8SURCUmVxdWVzdDxPcmRlcmVkSXRlbXNbXT4+IHtcclxuICAgIFxyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlLnRyYW5zYWN0aW9uKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUpLmdldEFsbCgpO1xyXG4gIH1cclxuXHJcbiAgYWRkUHJvZHVjdFRvV2lzaGxpc3QocHJvZHVjdDogT3JkZXJlZEl0ZW1zKSB7XHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICByZXR1cm4gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSkucHV0KHByb2R1Y3QpO1xyXG4gIH1cclxuICByZW1vdmVQcm9kdWN0RnJvbVdpc2hsaXN0KHByb2R1Y3RJZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICByZXR1cm4gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSkuZGVsZXRlKHByb2R1Y3RJZCk7XHJcbiAgfVxyXG4gIGFzeW5jIGdldFByb2R1Y3RGcm9tV2lzaGxpc3QocHJvZHVjdElkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZS50cmFuc2FjdGlvbih0aGlzLmZhdm91cml0ZUNvbGxlY3Rpb25OYW1lLCBcInJlYWR3cml0ZVwiKTtcclxuICAgIHJldHVybiBhd2FpdCB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmZhdm91cml0ZUNvbGxlY3Rpb25OYW1lKS5nZXQocHJvZHVjdElkKTtcclxuICB9XHJcblxyXG4gIGNsZWFyVXNlckNhcnQoKSB7XHJcbiAgICB0aGlzLnRvdGFsQ2FydEl0ZW1zID0gMDtcclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZS50cmFuc2FjdGlvbih0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICByZXR1cm4gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUpLmNsZWFyKCk7XHJcbiAgfVxyXG4gIGNsZWFyVXNlcldpc2hsaXN0KCkge1xyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlLnRyYW5zYWN0aW9uKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUpLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICAvLyBVU0VSIFNFUlZJQ0VcclxuICBzZXRVc2VyKHVzZXI6IFVzZXIpOiBVc2VyIHtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoXCJ1c2VyXCIsIEpTT04uc3RyaW5naWZ5KHVzZXIgPz8gXCJ7fVwiKSwgNyk7XHJcbiAgICByZXR1cm4gdXNlcjtcclxuICB9XHJcbiAgZ2V0VXNlcigpOiBVc2VyIHwgbnVsbCB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB1c2VyOiBVc2VyID0gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwidXNlclwiKSk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwicGVySWRcIiwgdXNlcj8udXNlcklkKTtcclxuICAgICAgcmV0dXJuIHVzZXI7XHJcbiAgICB9IGNhdGNoKGV4Y2VwdGlvbikge31cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8gcGF5bWVudCBpc3N1ZVxyXG4gIHN0b3JlUGF5bWVudEZvcihwYXltZW50Rm9yOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoXCJwYXltZW50Rm9yXCIsIHBheW1lbnRGb3IsIDcpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIGNsZWFyQWxsSXRlbXNGcm9tQ2FydCgpIHtcclxuICAvLyAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgLy8gICAgIGlmICh0aGlzLmRhdGFiYXNlICE9IHVuZGVmaW5lZCkge1xyXG4gIC8vICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCB0aGlzLmRhdGFiYXNlXHJcbiAgLy8gICAgICAgICAudHJhbnNhY3Rpb24odGhpcy5vYmplY3RTdG9yYWdlTmFtZSwgJ3JlYWR3cml0ZScpXHJcbiAgLy8gICAgICAgICAub2JqZWN0U3RvcmUodGhpcy5vYmplY3RTdG9yYWdlTmFtZSlcclxuICAvLyAgICAgICAgIC5jbGVhcigpO1xyXG5cclxuICAvLyAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGF3YWl0IGZ1bmN0aW9uIChldmVudDogYW55KSB7XHJcblxyXG4gIC8vICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQpIHtcclxuICAvLyAgICAgICAgICAgcmVzb2x2ZShldmVudC5yZXN1bHQpO1xyXG4gIC8vICAgICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgICAgcmVzb2x2ZSgnU1VDQ0VTUycpO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH07XHJcbiAgLy8gICAgICAgcmVxdWVzdC5vbmVycm9yID0gYXdhaXQgZnVuY3Rpb24gKF9ldmVudCkge1xyXG4gIC8vICAgICAgICAgcmVqZWN0KFwiTm8gZGF0YVwiKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxufVxyXG4iXX0=
|
@@ -3599,9 +3599,6 @@ class StorageServiceService {
|
|
3599
3599
|
request.subscribe((cartResponse) => {
|
3600
3600
|
console.log("Cart Response : ", cartResponse);
|
3601
3601
|
const userCart = cartResponse?.[0].data[0];
|
3602
|
-
localStorage.setItem("couponId", userCart.billdetails.couponId);
|
3603
|
-
localStorage.setItem("couponCode", userCart.billdetails.couponCode);
|
3604
|
-
console.log("Cart Response : ", userCart);
|
3605
3602
|
if (userCart.cartId)
|
3606
3603
|
localStorage.setItem("cartId", userCart.cartId);
|
3607
3604
|
this.getUserCart().then((userCartResponse) => {
|
@@ -3724,85 +3721,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
3724
3721
|
}]
|
3725
3722
|
}], ctorParameters: () => [{ type: EventsService }, { type: i2$2.CookieService }, { type: RestService }] });
|
3726
3723
|
|
3727
|
-
class UserBasicInfoComponent {
|
3728
|
-
constructor(restService, router, dialogRef, storageService, messageService) {
|
3729
|
-
this.restService = restService;
|
3730
|
-
this.router = router;
|
3731
|
-
this.dialogRef = dialogRef;
|
3732
|
-
this.storageService = storageService;
|
3733
|
-
this.messageService = messageService;
|
3734
|
-
this.gender = null;
|
3735
|
-
this.firstName = "";
|
3736
|
-
this.middleName = "";
|
3737
|
-
this.lastName = "";
|
3738
|
-
this.mobile = "";
|
3739
|
-
this.email = "";
|
3740
|
-
this.profilePic = "";
|
3741
|
-
this.userDetails = null;
|
3742
|
-
this.isEdit = false;
|
3743
|
-
}
|
3744
|
-
ngOnInit() {
|
3745
|
-
this.userDetails = this.storageService.getUser();
|
3746
|
-
this.isEdit = !!this.userDetails;
|
3747
|
-
this.firstName = this.userDetails?.contact?.name?.split(" ")?.[0] ?? "";
|
3748
|
-
// this.middleName = this.userDetails?.contact?.name?.split(" ")?.[1] ?? "";
|
3749
|
-
this.lastName = this.userDetails?.contact?.name?.split(" ")?.[1] ?? "";
|
3750
|
-
this.email = this.userDetails?.contact?.email ?? "";
|
3751
|
-
this.mobile = this.userDetails?.contact.mobile ?? "";
|
3752
|
-
this.gender = this.userDetails?.gender;
|
3753
|
-
this.profilePic = this.userDetails?.profilePic ?? "";
|
3754
|
-
}
|
3755
|
-
close() {
|
3756
|
-
this.dialogRef.close();
|
3757
|
-
}
|
3758
|
-
saveProfile() {
|
3759
|
-
const payload = {
|
3760
|
-
userId: this.userDetails?.userId,
|
3761
|
-
businessId: localStorage.getItem("bId") ?? localStorage.getItem("businessId"),
|
3762
|
-
gender: this.gender,
|
3763
|
-
profilePic: this.profilePic,
|
3764
|
-
contact: {
|
3765
|
-
countryCode: "91",
|
3766
|
-
email: this.email,
|
3767
|
-
name: this.firstName + " " + (this.middleName?.length > 0 ? this.middleName + " " : "") + this.lastName
|
3768
|
-
}
|
3769
|
-
};
|
3770
|
-
this.restService.updateProfile(payload).subscribe((response) => {
|
3771
|
-
this.storageService.setUser(response.data);
|
3772
|
-
this.messageService.add({ severity: 'success', summary: 'Updated Successfully', detail: 'User detail updated' });
|
3773
|
-
if (this.dialogRef)
|
3774
|
-
this.dialogRef.close();
|
3775
|
-
else
|
3776
|
-
this.router.navigate(['/']);
|
3777
|
-
}, (error) => {
|
3778
|
-
this.messageService.add({ severity: 'error', summary: 'Error', detail: 'Failed to update your details try agin.' });
|
3779
|
-
});
|
3780
|
-
}
|
3781
|
-
validateName(event) {
|
3782
|
-
if ((event.keyCode >= 65 && event.keyCode <= 90) || event.keyCode == 16 || event.keyCode == 8 || event.keyCode == 32 || event.keyCode == 46) {
|
3783
|
-
return;
|
3784
|
-
}
|
3785
|
-
event.preventDefault();
|
3786
|
-
}
|
3787
|
-
get isMobile() {
|
3788
|
-
return window.innerWidth < 475;
|
3789
|
-
}
|
3790
|
-
get isEmailValid() {
|
3791
|
-
return this.email?.includes("@") && this.email.includes(".com") || (this.email?.length == 0);
|
3792
|
-
}
|
3793
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: UserBasicInfoComponent, deps: [{ token: RestService }, { token: i2$3.Router }, { token: i5.MatDialogRef }, { token: StorageServiceService }, { token: i7.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
3794
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: UserBasicInfoComponent, isStandalone: true, selector: "simpo-user-basic-info", providers: [MessageService], ngImport: i0, template: "<section style=\"padding: 20px\" class=\"position-relative\">\r\n <div class=\"d-flex flex-wrap justify-content-between\">\r\n <div class=\"form-control-group\">\r\n <div class=\"label\">First Name</div>\r\n <input type=\"text\" placeholder=\"Enter first name\" [(ngModel)]=\"firstName\" (keydown)=\"validateName($event)\">\r\n </div>\r\n <!-- <div class=\"form-control-group-3\">\r\n <div class=\"label\">Middle Name</div>\r\n <input type=\"text\" placeholder=\"Enter middle name\" [(ngModel)]=\"middleName\">\r\n </div> -->\r\n <div class=\"form-control-group\">\r\n <div class=\"label\">Last Name</div>\r\n <input type=\"text\" placeholder=\"Enter last name\" [(ngModel)]=\"lastName\" (keydown)=\"validateName($event)\">\r\n </div>\r\n\r\n <div class=\"form-control-group\" *ngIf=\"isEdit\">\r\n <div class=\"label required\">Mobile</div>\r\n <input type=\"number\" placeholder=\"Enter mobile\" [(ngModel)]=\"mobile\" disabled>\r\n </div>\r\n <div class=\"form-control-group\">\r\n <div class=\"label\">Email</div>\r\n <input type=\"text\" placeholder=\"Enter email\" [(ngModel)]=\"email\">\r\n <span class=\"error-msg\" [style.visibility]=\"isEmailValid ? 'hidden' : 'visible'\">Please enter valid email</span>\r\n </div>\r\n \r\n <div class=\"form-control-group-full\">\r\n <div class=\"label\">Select Gender</div>\r\n <div class=\"d-flex align-items-center\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" src=\"https://img.icons8.com/?size=100&id=108296&format=png&color=000000\" alt=\"\"\r\n (click)=\"gender = 'MALE'\" [ngClass]=\"{'active': gender == 'MALE' }\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" src=\"https://img.icons8.com/?size=100&id=108295&format=png&color=000000\" alt=\"\"\r\n (click)=\"gender = 'FEMALE'\" [ngClass]=\"{'active': gender == 'FEMALE'}\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"action-btn\">\r\n <span class=\"skip-btn\" (click)=\"close()\">{{!isEdit ? 'Skip' : 'Close'}}</span>\r\n <button (click)=\"saveProfile()\">Save Profile</button>\r\n </div>\r\n</section>\r\n<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\" [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>", styles: [".form-control-group,.form-control-group-3,.form-control-group-full{width:100%}:is(.form-control-group,.form-control-group-3,.form-control-group-full)>input{width:100%;padding:10px;border-radius:3px;border:1.5px solid lightgray}.label{color:#000}.form-control-group-3{width:32%!important}.form-control-group-full{width:100%}img{height:60px;width:60px;object-fit:cover;margin:0 5px;border:2px solid transparent;cursor:pointer;border-radius:50%}.active{border:2px solid #0267C1}.form-control-group{margin:10px 0}.action-btn{position:relative;bottom:0;right:0;display:flex;align-items:center;justify-content:flex-end;gap:20px}.action-btn .skip-btn{color:#0267c1;cursor:pointer}.action-btn button{width:100px!important;border:none;background-color:#0267c1;color:#fff;cursor:pointer;border-radius:3px;padding:8px 0;font-size:14px!important;font-weight:500!important}.required:after{content:\"*\";color:tomato}.error-msg{color:tomato}@media screen and (max-width: 475px){.action-btn .skip-btn{color:#0267c1;cursor:pointer}.action-btn button{width:100px!important;border:none;background-color:#0267c1;color:#fff;cursor:pointer;border-radius:3px;padding:8px 0;font-size:14px!important;font-weight:500!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i17.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
|
3795
|
-
}
|
3796
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: UserBasicInfoComponent, decorators: [{
|
3797
|
-
type: Component,
|
3798
|
-
args: [{ selector: 'simpo-user-basic-info', standalone: true, imports: [
|
3799
|
-
CommonModule,
|
3800
|
-
MatDialogModule,
|
3801
|
-
FormsModule,
|
3802
|
-
ToastModule
|
3803
|
-
], providers: [MessageService], template: "<section style=\"padding: 20px\" class=\"position-relative\">\r\n <div class=\"d-flex flex-wrap justify-content-between\">\r\n <div class=\"form-control-group\">\r\n <div class=\"label\">First Name</div>\r\n <input type=\"text\" placeholder=\"Enter first name\" [(ngModel)]=\"firstName\" (keydown)=\"validateName($event)\">\r\n </div>\r\n <!-- <div class=\"form-control-group-3\">\r\n <div class=\"label\">Middle Name</div>\r\n <input type=\"text\" placeholder=\"Enter middle name\" [(ngModel)]=\"middleName\">\r\n </div> -->\r\n <div class=\"form-control-group\">\r\n <div class=\"label\">Last Name</div>\r\n <input type=\"text\" placeholder=\"Enter last name\" [(ngModel)]=\"lastName\" (keydown)=\"validateName($event)\">\r\n </div>\r\n\r\n <div class=\"form-control-group\" *ngIf=\"isEdit\">\r\n <div class=\"label required\">Mobile</div>\r\n <input type=\"number\" placeholder=\"Enter mobile\" [(ngModel)]=\"mobile\" disabled>\r\n </div>\r\n <div class=\"form-control-group\">\r\n <div class=\"label\">Email</div>\r\n <input type=\"text\" placeholder=\"Enter email\" [(ngModel)]=\"email\">\r\n <span class=\"error-msg\" [style.visibility]=\"isEmailValid ? 'hidden' : 'visible'\">Please enter valid email</span>\r\n </div>\r\n \r\n <div class=\"form-control-group-full\">\r\n <div class=\"label\">Select Gender</div>\r\n <div class=\"d-flex align-items-center\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" src=\"https://img.icons8.com/?size=100&id=108296&format=png&color=000000\" alt=\"\"\r\n (click)=\"gender = 'MALE'\" [ngClass]=\"{'active': gender == 'MALE' }\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" src=\"https://img.icons8.com/?size=100&id=108295&format=png&color=000000\" alt=\"\"\r\n (click)=\"gender = 'FEMALE'\" [ngClass]=\"{'active': gender == 'FEMALE'}\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"action-btn\">\r\n <span class=\"skip-btn\" (click)=\"close()\">{{!isEdit ? 'Skip' : 'Close'}}</span>\r\n <button (click)=\"saveProfile()\">Save Profile</button>\r\n </div>\r\n</section>\r\n<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\" [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>", styles: [".form-control-group,.form-control-group-3,.form-control-group-full{width:100%}:is(.form-control-group,.form-control-group-3,.form-control-group-full)>input{width:100%;padding:10px;border-radius:3px;border:1.5px solid lightgray}.label{color:#000}.form-control-group-3{width:32%!important}.form-control-group-full{width:100%}img{height:60px;width:60px;object-fit:cover;margin:0 5px;border:2px solid transparent;cursor:pointer;border-radius:50%}.active{border:2px solid #0267C1}.form-control-group{margin:10px 0}.action-btn{position:relative;bottom:0;right:0;display:flex;align-items:center;justify-content:flex-end;gap:20px}.action-btn .skip-btn{color:#0267c1;cursor:pointer}.action-btn button{width:100px!important;border:none;background-color:#0267c1;color:#fff;cursor:pointer;border-radius:3px;padding:8px 0;font-size:14px!important;font-weight:500!important}.required:after{content:\"*\";color:tomato}.error-msg{color:tomato}@media screen and (max-width: 475px){.action-btn .skip-btn{color:#0267c1;cursor:pointer}.action-btn button{width:100px!important;border:none;background-color:#0267c1;color:#fff;cursor:pointer;border-radius:3px;padding:8px 0;font-size:14px!important;font-weight:500!important}}\n"] }]
|
3804
|
-
}], ctorParameters: () => [{ type: RestService }, { type: i2$3.Router }, { type: i5.MatDialogRef }, { type: StorageServiceService }, { type: i7.MessageService }] });
|
3805
|
-
|
3806
3724
|
class AuthenticationRequiredComponent {
|
3807
3725
|
constructor(restService, router, messageService, storageService, matDialog, dialogRef, bottomsheetRef) {
|
3808
3726
|
this.restService = restService;
|
@@ -3927,43 +3845,7 @@ class AuthenticationRequiredComponent {
|
|
3927
3845
|
countryCode: "91",
|
3928
3846
|
enteredOtp: this.otp
|
3929
3847
|
};
|
3930
|
-
this.restService.verifySignupOTP(verifySignData).subscribe((response) => {
|
3931
|
-
const userDetails = this.storageService.setUser(response.data);
|
3932
|
-
this.storageService.updateAllData();
|
3933
|
-
if (this.dialogRef)
|
3934
|
-
this.dialogRef.close("SUCCESS");
|
3935
|
-
if (this.bottomsheetRef)
|
3936
|
-
this.bottomsheetRef.dismiss("SUCCESS");
|
3937
|
-
this.buttonLoading = false;
|
3938
|
-
Swal.fire({
|
3939
|
-
icon: "success",
|
3940
|
-
title: "Hurray",
|
3941
|
-
text: "Your account successfully created",
|
3942
|
-
showCancelButton: !(userDetails.contact?.name?.length > 0),
|
3943
|
-
confirmButtonText: "I loved it",
|
3944
|
-
cancelButtonText: "Fill other basic details",
|
3945
|
-
cancelButtonColor: "#928c8c",
|
3946
|
-
}).then((result) => {
|
3947
|
-
if (result.isConfirmed) {
|
3948
|
-
if (this.dialogRef)
|
3949
|
-
this.dialogRef.close("SUCCESS");
|
3950
|
-
if (this.bottomsheetRef)
|
3951
|
-
this.bottomsheetRef.dismiss("SUCCESS");
|
3952
|
-
}
|
3953
|
-
else if (result.isDismissed) {
|
3954
|
-
if (this.dialogRef)
|
3955
|
-
this.dialogRef.close("SUCCESS");
|
3956
|
-
if (this.bottomsheetRef)
|
3957
|
-
this.bottomsheetRef.dismiss("SUCCESS");
|
3958
|
-
this.matDialog.open(UserBasicInfoComponent, {
|
3959
|
-
height: '50vh',
|
3960
|
-
width: window.innerWidth > 475 ? '40vw' : '95vw',
|
3961
|
-
maxWidth: window.innerWidth > 475 ? '100vw' : '80vw',
|
3962
|
-
data: {}
|
3963
|
-
});
|
3964
|
-
}
|
3965
|
-
});
|
3966
|
-
}, (error) => {
|
3848
|
+
this.restService.verifySignupOTP(verifySignData).subscribe((response) => { }, (error) => {
|
3967
3849
|
this.buttonLoading = false;
|
3968
3850
|
if (error.status === 500) {
|
3969
3851
|
this.messageService.add({ severity: 'error', summary: 'User already exists' });
|
@@ -4011,11 +3893,14 @@ class AuthenticationRequiredComponent {
|
|
4011
3893
|
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
4012
3894
|
return !emailRegex.test(this.email);
|
4013
3895
|
}
|
3896
|
+
get isPasswordValid() {
|
3897
|
+
return true;
|
3898
|
+
}
|
4014
3899
|
get isMobile() {
|
4015
3900
|
return window.innerWidth <= 475;
|
4016
3901
|
}
|
4017
3902
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: AuthenticationRequiredComponent, deps: [{ token: RestService }, { token: i2$3.Router }, { token: i7.MessageService }, { token: StorageServiceService }, { token: i5.MatDialog }, { token: i5.MatDialogRef, optional: true }, { token: i5$1.MatBottomSheetRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
4018
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: AuthenticationRequiredComponent, isStandalone: true, selector: "simpo-authentication-required", providers: [MessageService], ngImport: i0, template: "\r\n<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n<div class=\"close-icon\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n</div>\r\n<section>\r\n <div class=\"main\"> \t\r\n <input type=\"checkbox\" id=\"chk\" aria-hidden=\"true\">\r\n\r\n <div class=\"signup\">\r\n <form>\r\n <label for=\"chk\" aria-hidden=\"true\">Login</label>\r\n <div class=\"d-flex justify-content-center\" style=\"gap: 5px;\">\r\n <div class=\"login-type\" [ngClass]=\"{'login-type__active': loginType == 'OTP'}\" (click)=\"loginType = 'OTP'\">OTP Login</div>\r\n <div class=\"login-type\" [ngClass]=\"{'login-type__active': loginType == 'PASSWORD'}\" (click)=\"loginType = 'PASSWORD'\">Password Login</div>\r\n </div>\r\n <ng-container *ngIf=\"loginType == 'PASSWORD'\">\r\n <input type=\"email\" name=\"email\" placeholder=\"Email\" required=\"\" [(ngModel)]=\"email\">\r\n <input type=\"password\" name=\"pswd\" placeholder=\"Password\" required=\"\" [(ngModel)]=\"password\">\r\n </ng-container>\r\n <ng-container *ngIf=\"loginType == 'OTP'\">\r\n <input type=\"mobile\" name=\"mobile\" placeholder=\"Mobile\" required=\"\" (keypress)=\"validateNumber($event)\" [(ngModel)]=\"mobile\" (ngModelChange)=\"enterMobile()\">\r\n <input type=\"otp\" name=\"otp\" placeholder=\"Enter received otp\" required=\"\" [(ngModel)]=\"otp\">\r\n </ng-container>\r\n <button (click)=\"login()\" *ngIf=\"!buttonLoading\" [disabled]=\"(loginType == 'PASSWORD' ? !isEmailValid : false)\">Login</button>\r\n <button *ngIf=\"buttonLoading\">Loading...</button>\r\n </form>\r\n </div>\r\n\r\n <div class=\"login\">\r\n <form>\r\n <label for=\"chk\" aria-hidden=\"true\">Sign up</label>\r\n <input type=\"email\" name=\"email\" placeholder=\"Email\" required=\"\" [(ngModel)]=\"email\">\r\n <input type=\"mobile\" name=\"mobile\" placeholder=\"Mobile\" required=\"\" (keypress)=\"validateNumber($event)\" [(ngModel)]=\"mobile\" (ngModelChange)=\"sendSignupOTP()\">\r\n <input type=\"otp\" name=\"otp\" placeholder=\"OTP\" required=\"\" [(ngModel)]=\"otp\" (ngModelChange)=\"verifySignupOTP()\">\r\n <input type=\"password\" name=\"password\" placeholder=\"Create Password\" required=\"\" [(ngModel)]=\"password\">\r\n <button (click)=\"createAccount()\" [disabled]=\"!isEmailValid\">Sign up</button>\r\n </form>\r\n \r\n </div>\r\n </div>\r\n</section>", styles: ["section{margin:0;padding:0;display:flex;justify-content:center;align-items:center;height:100%;font-family:Jost,sans-serif;background:linear-gradient(to bottom,#0f0c29,#302b63,#24243e)}.close-icon{position:absolute;top:10px;right:10px;background-color:#fff;border-radius:50%;padding:5px;height:30px;width:30px;display:flex;align-items:center;justify-content:center;cursor:pointer}.close-icon .mat-icon{position:relative;right:2px}.login-type{background-color:#fff;border:#573b8a;color:#573b8a;width:130px!important;font-size:14px!important;padding:5px;border-radius:5px;display:flex;justify-content:center;cursor:pointer}.login-type__active{width:150px!important;font-size:14px!important;font-weight:500!important;padding:5px;border-radius:5px;display:flex;justify-content:center;cursor:pointer;font-weight:800!important;border:1px solid #573b8a}.main{width:350px;height:500px;background:red;overflow:hidden;background:url(https://doc-08-2c-docs.googleusercontent.com/docs/securesc/68c90smiglihng9534mvqmq1946dmis5/fo0picsp1nhiucmc0l25s29respgpr4j/1631524275000/03522360960922298374/03522360960922298374/1Sx0jhdpEpnNIydS4rnN4kHSJtU1EyWka?e=view&authuser=0&nonce=gcrocepgbb17m&user=03522360960922298374&hash=tfhgbs86ka6divo3llbvp93mg4csvb38) no-repeat center/ cover;border-radius:10px;box-shadow:5px 20px 50px #000}#chk{display:none}.signup{position:relative;width:100%;height:100%}label{color:#fff;font-size:2.3em;justify-content:center;display:flex;margin:50px 50px 20px;font-weight:700;cursor:pointer;transition:.5s ease-in-out}input{width:80%;height:10px;background:#e0dede;justify-content:center;display:flex;margin:20px auto;padding:18px;border:none;outline:none;border-radius:5px}button{width:80%!important;height:40px;margin:10px auto;justify-content:center;display:block;color:#fff;background:#573b8a;font-size:1em;font-weight:700;outline:none;border:none;border-radius:5px;transition:.2s ease-in;cursor:pointer}button:hover{background:#6d44b8}.login{height:460px;background:#eee;border-radius:60%/10%;transform:translateY(-180px);transition:.8s ease-in-out}.login label{color:#573b8a;transform:scale(.6)}#chk:checked~.login{transform:translateY(-500px)}#chk:checked~.login label{transform:scale(1)}#chk:checked~.signup label{transform:scale(.6)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i17.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
3903
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: AuthenticationRequiredComponent, isStandalone: true, selector: "simpo-authentication-required", providers: [MessageService], ngImport: i0, template: "\r\n<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n<div class=\"close-icon\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n</div>\r\n<section>\r\n <div class=\"main\"> \t\r\n <input type=\"checkbox\" id=\"chk\" aria-hidden=\"true\">\r\n\r\n <div class=\"signup\">\r\n <form>\r\n <label for=\"chk\" aria-hidden=\"true\">Login</label>\r\n <div class=\"d-flex justify-content-center\" style=\"gap: 5px;\">\r\n <div class=\"login-type\" [ngClass]=\"{'login-type__active': loginType == 'OTP'}\" (click)=\"loginType = 'OTP'\">OTP Login</div>\r\n <div class=\"login-type\" [ngClass]=\"{'login-type__active': loginType == 'PASSWORD'}\" (click)=\"loginType = 'PASSWORD'\">Password Login</div>\r\n </div>\r\n <ng-container *ngIf=\"loginType == 'PASSWORD'\">\r\n <input type=\"email\" name=\"email\" placeholder=\"Email\" required=\"\" [(ngModel)]=\"email\">\r\n <input type=\"password\" name=\"pswd\" placeholder=\"Password\" required=\"\" [(ngModel)]=\"password\">\r\n </ng-container>\r\n <ng-container *ngIf=\"loginType == 'OTP'\">\r\n <input type=\"mobile\" name=\"mobile\" placeholder=\"Mobile\" required=\"\" (keypress)=\"validateNumber($event)\" [(ngModel)]=\"mobile\" (ngModelChange)=\"enterMobile()\">\r\n <input type=\"otp\" name=\"otp\" placeholder=\"Enter received otp\" required=\"\" [(ngModel)]=\"otp\">\r\n </ng-container>\r\n <button (click)=\"login()\" *ngIf=\"!buttonLoading\" [disabled]=\"(loginType == 'PASSWORD' ? !isEmailValid : false)\">Login</button>\r\n <button *ngIf=\"buttonLoading\">Loading...</button>\r\n </form>\r\n </div>\r\n\r\n <div class=\"login\">\r\n <form>\r\n <label for=\"chk\" aria-hidden=\"true\">Sign up</label>\r\n <input type=\"email\" name=\"email\" placeholder=\"Email\" required=\"\" [(ngModel)]=\"email\">\r\n <input type=\"mobile\" name=\"mobile\" placeholder=\"Mobile\" required=\"\" (keypress)=\"validateNumber($event)\" [(ngModel)]=\"mobile\" (ngModelChange)=\"sendSignupOTP()\">\r\n <input type=\"otp\" name=\"otp\" placeholder=\"OTP\" required=\"\" [(ngModel)]=\"otp\" (ngModelChange)=\"verifySignupOTP()\">\r\n <input type=\"password\" name=\"password\" placeholder=\"Create Password\" required=\"\" [(ngModel)]=\"password\">\r\n <button (click)=\"createAccount()\" [disabled]=\"!isEmailValid || !isPasswordValid\">Sign up</button>\r\n </form>\r\n \r\n </div>\r\n </div>\r\n</section>", styles: ["section{margin:0;padding:0;display:flex;justify-content:center;align-items:center;height:100%;font-family:Jost,sans-serif;background:linear-gradient(to bottom,#0f0c29,#302b63,#24243e)}.close-icon{position:absolute;top:10px;right:10px;background-color:#fff;border-radius:50%;padding:5px;height:30px;width:30px;display:flex;align-items:center;justify-content:center;cursor:pointer}.close-icon .mat-icon{position:relative;right:2px}.login-type{background-color:#fff;border:#573b8a;color:#573b8a;width:130px!important;font-size:14px!important;padding:5px;border-radius:5px;display:flex;justify-content:center;cursor:pointer}.login-type__active{width:150px!important;font-size:14px!important;font-weight:500!important;padding:5px;border-radius:5px;display:flex;justify-content:center;cursor:pointer;font-weight:800!important;border:1px solid #573b8a}.main{width:350px;height:500px;background:red;overflow:hidden;background:url(https://doc-08-2c-docs.googleusercontent.com/docs/securesc/68c90smiglihng9534mvqmq1946dmis5/fo0picsp1nhiucmc0l25s29respgpr4j/1631524275000/03522360960922298374/03522360960922298374/1Sx0jhdpEpnNIydS4rnN4kHSJtU1EyWka?e=view&authuser=0&nonce=gcrocepgbb17m&user=03522360960922298374&hash=tfhgbs86ka6divo3llbvp93mg4csvb38) no-repeat center/ cover;border-radius:10px;box-shadow:5px 20px 50px #000}#chk{display:none}.signup{position:relative;width:100%;height:100%}label{color:#fff;font-size:2.3em;justify-content:center;display:flex;margin:50px 50px 20px;font-weight:700;cursor:pointer;transition:.5s ease-in-out}input{width:80%;height:10px;background:#e0dede;justify-content:center;display:flex;margin:20px auto;padding:18px;border:none;outline:none;border-radius:5px}button{width:80%!important;height:40px;margin:10px auto;justify-content:center;display:block;color:#fff;background:#573b8a;font-size:1em;font-weight:700;outline:none;border:none;border-radius:5px;transition:.2s ease-in;cursor:pointer}button:hover{background:#6d44b8}.login{height:460px;background:#eee;border-radius:60%/10%;transform:translateY(-180px);transition:.8s ease-in-out}.login label{color:#573b8a;transform:scale(.6)}#chk:checked~.login{transform:translateY(-500px)}#chk:checked~.login label{transform:scale(1)}#chk:checked~.signup label{transform:scale(.6)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i17.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
4019
3904
|
}
|
4020
3905
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: AuthenticationRequiredComponent, decorators: [{
|
4021
3906
|
type: Component,
|
@@ -4024,7 +3909,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
4024
3909
|
FormsModule,
|
4025
3910
|
ToastModule,
|
4026
3911
|
MatIconModule
|
4027
|
-
], providers: [MessageService], template: "\r\n<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n<div class=\"close-icon\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n</div>\r\n<section>\r\n <div class=\"main\"> \t\r\n <input type=\"checkbox\" id=\"chk\" aria-hidden=\"true\">\r\n\r\n <div class=\"signup\">\r\n <form>\r\n <label for=\"chk\" aria-hidden=\"true\">Login</label>\r\n <div class=\"d-flex justify-content-center\" style=\"gap: 5px;\">\r\n <div class=\"login-type\" [ngClass]=\"{'login-type__active': loginType == 'OTP'}\" (click)=\"loginType = 'OTP'\">OTP Login</div>\r\n <div class=\"login-type\" [ngClass]=\"{'login-type__active': loginType == 'PASSWORD'}\" (click)=\"loginType = 'PASSWORD'\">Password Login</div>\r\n </div>\r\n <ng-container *ngIf=\"loginType == 'PASSWORD'\">\r\n <input type=\"email\" name=\"email\" placeholder=\"Email\" required=\"\" [(ngModel)]=\"email\">\r\n <input type=\"password\" name=\"pswd\" placeholder=\"Password\" required=\"\" [(ngModel)]=\"password\">\r\n </ng-container>\r\n <ng-container *ngIf=\"loginType == 'OTP'\">\r\n <input type=\"mobile\" name=\"mobile\" placeholder=\"Mobile\" required=\"\" (keypress)=\"validateNumber($event)\" [(ngModel)]=\"mobile\" (ngModelChange)=\"enterMobile()\">\r\n <input type=\"otp\" name=\"otp\" placeholder=\"Enter received otp\" required=\"\" [(ngModel)]=\"otp\">\r\n </ng-container>\r\n <button (click)=\"login()\" *ngIf=\"!buttonLoading\" [disabled]=\"(loginType == 'PASSWORD' ? !isEmailValid : false)\">Login</button>\r\n <button *ngIf=\"buttonLoading\">Loading...</button>\r\n </form>\r\n </div>\r\n\r\n <div class=\"login\">\r\n <form>\r\n <label for=\"chk\" aria-hidden=\"true\">Sign up</label>\r\n <input type=\"email\" name=\"email\" placeholder=\"Email\" required=\"\" [(ngModel)]=\"email\">\r\n <input type=\"mobile\" name=\"mobile\" placeholder=\"Mobile\" required=\"\" (keypress)=\"validateNumber($event)\" [(ngModel)]=\"mobile\" (ngModelChange)=\"sendSignupOTP()\">\r\n <input type=\"otp\" name=\"otp\" placeholder=\"OTP\" required=\"\" [(ngModel)]=\"otp\" (ngModelChange)=\"verifySignupOTP()\">\r\n <input type=\"password\" name=\"password\" placeholder=\"Create Password\" required=\"\" [(ngModel)]=\"password\">\r\n <button (click)=\"createAccount()\" [disabled]=\"!isEmailValid\">Sign up</button>\r\n </form>\r\n \r\n </div>\r\n </div>\r\n</section>", styles: ["section{margin:0;padding:0;display:flex;justify-content:center;align-items:center;height:100%;font-family:Jost,sans-serif;background:linear-gradient(to bottom,#0f0c29,#302b63,#24243e)}.close-icon{position:absolute;top:10px;right:10px;background-color:#fff;border-radius:50%;padding:5px;height:30px;width:30px;display:flex;align-items:center;justify-content:center;cursor:pointer}.close-icon .mat-icon{position:relative;right:2px}.login-type{background-color:#fff;border:#573b8a;color:#573b8a;width:130px!important;font-size:14px!important;padding:5px;border-radius:5px;display:flex;justify-content:center;cursor:pointer}.login-type__active{width:150px!important;font-size:14px!important;font-weight:500!important;padding:5px;border-radius:5px;display:flex;justify-content:center;cursor:pointer;font-weight:800!important;border:1px solid #573b8a}.main{width:350px;height:500px;background:red;overflow:hidden;background:url(https://doc-08-2c-docs.googleusercontent.com/docs/securesc/68c90smiglihng9534mvqmq1946dmis5/fo0picsp1nhiucmc0l25s29respgpr4j/1631524275000/03522360960922298374/03522360960922298374/1Sx0jhdpEpnNIydS4rnN4kHSJtU1EyWka?e=view&authuser=0&nonce=gcrocepgbb17m&user=03522360960922298374&hash=tfhgbs86ka6divo3llbvp93mg4csvb38) no-repeat center/ cover;border-radius:10px;box-shadow:5px 20px 50px #000}#chk{display:none}.signup{position:relative;width:100%;height:100%}label{color:#fff;font-size:2.3em;justify-content:center;display:flex;margin:50px 50px 20px;font-weight:700;cursor:pointer;transition:.5s ease-in-out}input{width:80%;height:10px;background:#e0dede;justify-content:center;display:flex;margin:20px auto;padding:18px;border:none;outline:none;border-radius:5px}button{width:80%!important;height:40px;margin:10px auto;justify-content:center;display:block;color:#fff;background:#573b8a;font-size:1em;font-weight:700;outline:none;border:none;border-radius:5px;transition:.2s ease-in;cursor:pointer}button:hover{background:#6d44b8}.login{height:460px;background:#eee;border-radius:60%/10%;transform:translateY(-180px);transition:.8s ease-in-out}.login label{color:#573b8a;transform:scale(.6)}#chk:checked~.login{transform:translateY(-500px)}#chk:checked~.login label{transform:scale(1)}#chk:checked~.signup label{transform:scale(.6)}\n"] }]
|
3912
|
+
], providers: [MessageService], template: "\r\n<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n<div class=\"close-icon\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n</div>\r\n<section>\r\n <div class=\"main\"> \t\r\n <input type=\"checkbox\" id=\"chk\" aria-hidden=\"true\">\r\n\r\n <div class=\"signup\">\r\n <form>\r\n <label for=\"chk\" aria-hidden=\"true\">Login</label>\r\n <div class=\"d-flex justify-content-center\" style=\"gap: 5px;\">\r\n <div class=\"login-type\" [ngClass]=\"{'login-type__active': loginType == 'OTP'}\" (click)=\"loginType = 'OTP'\">OTP Login</div>\r\n <div class=\"login-type\" [ngClass]=\"{'login-type__active': loginType == 'PASSWORD'}\" (click)=\"loginType = 'PASSWORD'\">Password Login</div>\r\n </div>\r\n <ng-container *ngIf=\"loginType == 'PASSWORD'\">\r\n <input type=\"email\" name=\"email\" placeholder=\"Email\" required=\"\" [(ngModel)]=\"email\">\r\n <input type=\"password\" name=\"pswd\" placeholder=\"Password\" required=\"\" [(ngModel)]=\"password\">\r\n </ng-container>\r\n <ng-container *ngIf=\"loginType == 'OTP'\">\r\n <input type=\"mobile\" name=\"mobile\" placeholder=\"Mobile\" required=\"\" (keypress)=\"validateNumber($event)\" [(ngModel)]=\"mobile\" (ngModelChange)=\"enterMobile()\">\r\n <input type=\"otp\" name=\"otp\" placeholder=\"Enter received otp\" required=\"\" [(ngModel)]=\"otp\">\r\n </ng-container>\r\n <button (click)=\"login()\" *ngIf=\"!buttonLoading\" [disabled]=\"(loginType == 'PASSWORD' ? !isEmailValid : false)\">Login</button>\r\n <button *ngIf=\"buttonLoading\">Loading...</button>\r\n </form>\r\n </div>\r\n\r\n <div class=\"login\">\r\n <form>\r\n <label for=\"chk\" aria-hidden=\"true\">Sign up</label>\r\n <input type=\"email\" name=\"email\" placeholder=\"Email\" required=\"\" [(ngModel)]=\"email\">\r\n <input type=\"mobile\" name=\"mobile\" placeholder=\"Mobile\" required=\"\" (keypress)=\"validateNumber($event)\" [(ngModel)]=\"mobile\" (ngModelChange)=\"sendSignupOTP()\">\r\n <input type=\"otp\" name=\"otp\" placeholder=\"OTP\" required=\"\" [(ngModel)]=\"otp\" (ngModelChange)=\"verifySignupOTP()\">\r\n <input type=\"password\" name=\"password\" placeholder=\"Create Password\" required=\"\" [(ngModel)]=\"password\">\r\n <button (click)=\"createAccount()\" [disabled]=\"!isEmailValid || !isPasswordValid\">Sign up</button>\r\n </form>\r\n \r\n </div>\r\n </div>\r\n</section>", styles: ["section{margin:0;padding:0;display:flex;justify-content:center;align-items:center;height:100%;font-family:Jost,sans-serif;background:linear-gradient(to bottom,#0f0c29,#302b63,#24243e)}.close-icon{position:absolute;top:10px;right:10px;background-color:#fff;border-radius:50%;padding:5px;height:30px;width:30px;display:flex;align-items:center;justify-content:center;cursor:pointer}.close-icon .mat-icon{position:relative;right:2px}.login-type{background-color:#fff;border:#573b8a;color:#573b8a;width:130px!important;font-size:14px!important;padding:5px;border-radius:5px;display:flex;justify-content:center;cursor:pointer}.login-type__active{width:150px!important;font-size:14px!important;font-weight:500!important;padding:5px;border-radius:5px;display:flex;justify-content:center;cursor:pointer;font-weight:800!important;border:1px solid #573b8a}.main{width:350px;height:500px;background:red;overflow:hidden;background:url(https://doc-08-2c-docs.googleusercontent.com/docs/securesc/68c90smiglihng9534mvqmq1946dmis5/fo0picsp1nhiucmc0l25s29respgpr4j/1631524275000/03522360960922298374/03522360960922298374/1Sx0jhdpEpnNIydS4rnN4kHSJtU1EyWka?e=view&authuser=0&nonce=gcrocepgbb17m&user=03522360960922298374&hash=tfhgbs86ka6divo3llbvp93mg4csvb38) no-repeat center/ cover;border-radius:10px;box-shadow:5px 20px 50px #000}#chk{display:none}.signup{position:relative;width:100%;height:100%}label{color:#fff;font-size:2.3em;justify-content:center;display:flex;margin:50px 50px 20px;font-weight:700;cursor:pointer;transition:.5s ease-in-out}input{width:80%;height:10px;background:#e0dede;justify-content:center;display:flex;margin:20px auto;padding:18px;border:none;outline:none;border-radius:5px}button{width:80%!important;height:40px;margin:10px auto;justify-content:center;display:block;color:#fff;background:#573b8a;font-size:1em;font-weight:700;outline:none;border:none;border-radius:5px;transition:.2s ease-in;cursor:pointer}button:hover{background:#6d44b8}.login{height:460px;background:#eee;border-radius:60%/10%;transform:translateY(-180px);transition:.8s ease-in-out}.login label{color:#573b8a;transform:scale(.6)}#chk:checked~.login{transform:translateY(-500px)}#chk:checked~.login label{transform:scale(1)}#chk:checked~.signup label{transform:scale(.6)}\n"] }]
|
4028
3913
|
}], ctorParameters: () => [{ type: RestService }, { type: i2$3.Router }, { type: i7.MessageService }, { type: StorageServiceService }, { type: i5.MatDialog }, { type: i5.MatDialogRef, decorators: [{
|
4029
3914
|
type: Optional
|
4030
3915
|
}] }, { type: i5$1.MatBottomSheetRef, decorators: [{
|
@@ -4645,12 +4530,14 @@ class CartComponent extends BaseSection {
|
|
4645
4530
|
removeCoupon(event) {
|
4646
4531
|
this.cartInfo.billdetails.couponId = "";
|
4647
4532
|
this.cartInfo.billdetails.couponCode = "";
|
4648
|
-
this.cartInfo.
|
4649
|
-
|
4533
|
+
const restResponse = this.restService.addItemToDB(this.cartInfo).toPromise();
|
4534
|
+
restResponse.then((response) => {
|
4650
4535
|
this.calculateCart();
|
4651
4536
|
localStorage.removeItem("couponId");
|
4652
4537
|
localStorage.removeItem("couponCode");
|
4653
4538
|
this.messageService.add({ severity: 'success', summary: 'Coupon', detail: 'Coupon Removed' });
|
4539
|
+
this.cartInfo.billdetails.discountAmount = 0;
|
4540
|
+
this.couponDialogRef?.close();
|
4654
4541
|
});
|
4655
4542
|
event.preventDefault();
|
4656
4543
|
}
|
@@ -8982,6 +8869,85 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
8982
8869
|
type: Output
|
8983
8870
|
}] } });
|
8984
8871
|
|
8872
|
+
class UserBasicInfoComponent {
|
8873
|
+
constructor(restService, router, dialogRef, storageService, messageService) {
|
8874
|
+
this.restService = restService;
|
8875
|
+
this.router = router;
|
8876
|
+
this.dialogRef = dialogRef;
|
8877
|
+
this.storageService = storageService;
|
8878
|
+
this.messageService = messageService;
|
8879
|
+
this.gender = null;
|
8880
|
+
this.firstName = "";
|
8881
|
+
this.middleName = "";
|
8882
|
+
this.lastName = "";
|
8883
|
+
this.mobile = "";
|
8884
|
+
this.email = "";
|
8885
|
+
this.profilePic = "";
|
8886
|
+
this.userDetails = null;
|
8887
|
+
this.isEdit = false;
|
8888
|
+
}
|
8889
|
+
ngOnInit() {
|
8890
|
+
this.userDetails = this.storageService.getUser();
|
8891
|
+
this.isEdit = !!this.userDetails;
|
8892
|
+
this.firstName = this.userDetails?.contact?.name?.split(" ")?.[0] ?? "";
|
8893
|
+
// this.middleName = this.userDetails?.contact?.name?.split(" ")?.[1] ?? "";
|
8894
|
+
this.lastName = this.userDetails?.contact?.name?.split(" ")?.[1] ?? "";
|
8895
|
+
this.email = this.userDetails?.contact?.email ?? "";
|
8896
|
+
this.mobile = this.userDetails?.contact.mobile ?? "";
|
8897
|
+
this.gender = this.userDetails?.gender;
|
8898
|
+
this.profilePic = this.userDetails?.profilePic ?? "";
|
8899
|
+
}
|
8900
|
+
close() {
|
8901
|
+
this.dialogRef.close();
|
8902
|
+
}
|
8903
|
+
saveProfile() {
|
8904
|
+
const payload = {
|
8905
|
+
userId: this.userDetails?.userId,
|
8906
|
+
businessId: localStorage.getItem("bId") ?? localStorage.getItem("businessId"),
|
8907
|
+
gender: this.gender,
|
8908
|
+
profilePic: this.profilePic,
|
8909
|
+
contact: {
|
8910
|
+
countryCode: "91",
|
8911
|
+
email: this.email,
|
8912
|
+
name: this.firstName + " " + (this.middleName?.length > 0 ? this.middleName + " " : "") + this.lastName
|
8913
|
+
}
|
8914
|
+
};
|
8915
|
+
this.restService.updateProfile(payload).subscribe((response) => {
|
8916
|
+
this.storageService.setUser(response.data);
|
8917
|
+
this.messageService.add({ severity: 'success', summary: 'Updated Successfully', detail: 'User detail updated' });
|
8918
|
+
if (this.dialogRef)
|
8919
|
+
this.dialogRef.close();
|
8920
|
+
else
|
8921
|
+
this.router.navigate(['/']);
|
8922
|
+
}, (error) => {
|
8923
|
+
this.messageService.add({ severity: 'error', summary: 'Error', detail: 'Failed to update your details try agin.' });
|
8924
|
+
});
|
8925
|
+
}
|
8926
|
+
validateName(event) {
|
8927
|
+
if ((event.keyCode >= 65 && event.keyCode <= 90) || event.keyCode == 16 || event.keyCode == 8 || event.keyCode == 32 || event.keyCode == 46) {
|
8928
|
+
return;
|
8929
|
+
}
|
8930
|
+
event.preventDefault();
|
8931
|
+
}
|
8932
|
+
get isMobile() {
|
8933
|
+
return window.innerWidth < 475;
|
8934
|
+
}
|
8935
|
+
get isEmailValid() {
|
8936
|
+
return this.email?.includes("@") && this.email.includes(".com") || (this.email?.length == 0);
|
8937
|
+
}
|
8938
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: UserBasicInfoComponent, deps: [{ token: RestService }, { token: i2$3.Router }, { token: i5.MatDialogRef }, { token: StorageServiceService }, { token: i7.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
8939
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: UserBasicInfoComponent, isStandalone: true, selector: "simpo-user-basic-info", providers: [MessageService], ngImport: i0, template: "<section style=\"padding: 20px\" class=\"position-relative\">\r\n <div class=\"d-flex flex-wrap justify-content-between\">\r\n <div class=\"form-control-group\">\r\n <div class=\"label\">First Name</div>\r\n <input type=\"text\" placeholder=\"Enter first name\" [(ngModel)]=\"firstName\" (keydown)=\"validateName($event)\">\r\n </div>\r\n <!-- <div class=\"form-control-group-3\">\r\n <div class=\"label\">Middle Name</div>\r\n <input type=\"text\" placeholder=\"Enter middle name\" [(ngModel)]=\"middleName\">\r\n </div> -->\r\n <div class=\"form-control-group\">\r\n <div class=\"label\">Last Name</div>\r\n <input type=\"text\" placeholder=\"Enter last name\" [(ngModel)]=\"lastName\" (keydown)=\"validateName($event)\">\r\n </div>\r\n\r\n <div class=\"form-control-group\" *ngIf=\"isEdit\">\r\n <div class=\"label required\">Mobile</div>\r\n <input type=\"number\" placeholder=\"Enter mobile\" [(ngModel)]=\"mobile\" disabled>\r\n </div>\r\n <div class=\"form-control-group\">\r\n <div class=\"label\">Email</div>\r\n <input type=\"text\" placeholder=\"Enter email\" [(ngModel)]=\"email\">\r\n <span class=\"error-msg\" [style.visibility]=\"isEmailValid ? 'hidden' : 'visible'\">Please enter valid email</span>\r\n </div>\r\n \r\n <div class=\"form-control-group-full\">\r\n <div class=\"label\">Select Gender</div>\r\n <div class=\"d-flex align-items-center\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" src=\"https://img.icons8.com/?size=100&id=108296&format=png&color=000000\" alt=\"\"\r\n (click)=\"gender = 'MALE'\" [ngClass]=\"{'active': gender == 'MALE' }\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" src=\"https://img.icons8.com/?size=100&id=108295&format=png&color=000000\" alt=\"\"\r\n (click)=\"gender = 'FEMALE'\" [ngClass]=\"{'active': gender == 'FEMALE'}\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"action-btn\">\r\n <span class=\"skip-btn\" (click)=\"close()\">{{!isEdit ? 'Skip' : 'Close'}}</span>\r\n <button (click)=\"saveProfile()\">Save Profile</button>\r\n </div>\r\n</section>\r\n<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\" [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>", styles: [".form-control-group,.form-control-group-3,.form-control-group-full{width:100%}:is(.form-control-group,.form-control-group-3,.form-control-group-full)>input{width:100%;padding:10px;border-radius:3px;border:1.5px solid lightgray}.label{color:#000}.form-control-group-3{width:32%!important}.form-control-group-full{width:100%}img{height:60px;width:60px;object-fit:cover;margin:0 5px;border:2px solid transparent;cursor:pointer;border-radius:50%}.active{border:2px solid #0267C1}.form-control-group{margin:10px 0}.action-btn{position:relative;bottom:0;right:0;display:flex;align-items:center;justify-content:flex-end;gap:20px}.action-btn .skip-btn{color:#0267c1;cursor:pointer}.action-btn button{width:100px!important;border:none;background-color:#0267c1;color:#fff;cursor:pointer;border-radius:3px;padding:8px 0;font-size:14px!important;font-weight:500!important}.required:after{content:\"*\";color:tomato}.error-msg{color:tomato}@media screen and (max-width: 475px){.action-btn .skip-btn{color:#0267c1;cursor:pointer}.action-btn button{width:100px!important;border:none;background-color:#0267c1;color:#fff;cursor:pointer;border-radius:3px;padding:8px 0;font-size:14px!important;font-weight:500!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i17.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
|
8940
|
+
}
|
8941
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: UserBasicInfoComponent, decorators: [{
|
8942
|
+
type: Component,
|
8943
|
+
args: [{ selector: 'simpo-user-basic-info', standalone: true, imports: [
|
8944
|
+
CommonModule,
|
8945
|
+
MatDialogModule,
|
8946
|
+
FormsModule,
|
8947
|
+
ToastModule
|
8948
|
+
], providers: [MessageService], template: "<section style=\"padding: 20px\" class=\"position-relative\">\r\n <div class=\"d-flex flex-wrap justify-content-between\">\r\n <div class=\"form-control-group\">\r\n <div class=\"label\">First Name</div>\r\n <input type=\"text\" placeholder=\"Enter first name\" [(ngModel)]=\"firstName\" (keydown)=\"validateName($event)\">\r\n </div>\r\n <!-- <div class=\"form-control-group-3\">\r\n <div class=\"label\">Middle Name</div>\r\n <input type=\"text\" placeholder=\"Enter middle name\" [(ngModel)]=\"middleName\">\r\n </div> -->\r\n <div class=\"form-control-group\">\r\n <div class=\"label\">Last Name</div>\r\n <input type=\"text\" placeholder=\"Enter last name\" [(ngModel)]=\"lastName\" (keydown)=\"validateName($event)\">\r\n </div>\r\n\r\n <div class=\"form-control-group\" *ngIf=\"isEdit\">\r\n <div class=\"label required\">Mobile</div>\r\n <input type=\"number\" placeholder=\"Enter mobile\" [(ngModel)]=\"mobile\" disabled>\r\n </div>\r\n <div class=\"form-control-group\">\r\n <div class=\"label\">Email</div>\r\n <input type=\"text\" placeholder=\"Enter email\" [(ngModel)]=\"email\">\r\n <span class=\"error-msg\" [style.visibility]=\"isEmailValid ? 'hidden' : 'visible'\">Please enter valid email</span>\r\n </div>\r\n \r\n <div class=\"form-control-group-full\">\r\n <div class=\"label\">Select Gender</div>\r\n <div class=\"d-flex align-items-center\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" src=\"https://img.icons8.com/?size=100&id=108296&format=png&color=000000\" alt=\"\"\r\n (click)=\"gender = 'MALE'\" [ngClass]=\"{'active': gender == 'MALE' }\">\r\n <img loading=\"lazy\" onerror=\"this.src='https://i.postimg.cc/hPS2JpV0/no-image-available.jpg'\" src=\"https://img.icons8.com/?size=100&id=108295&format=png&color=000000\" alt=\"\"\r\n (click)=\"gender = 'FEMALE'\" [ngClass]=\"{'active': gender == 'FEMALE'}\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"action-btn\">\r\n <span class=\"skip-btn\" (click)=\"close()\">{{!isEdit ? 'Skip' : 'Close'}}</span>\r\n <button (click)=\"saveProfile()\">Save Profile</button>\r\n </div>\r\n</section>\r\n<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\" [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>", styles: [".form-control-group,.form-control-group-3,.form-control-group-full{width:100%}:is(.form-control-group,.form-control-group-3,.form-control-group-full)>input{width:100%;padding:10px;border-radius:3px;border:1.5px solid lightgray}.label{color:#000}.form-control-group-3{width:32%!important}.form-control-group-full{width:100%}img{height:60px;width:60px;object-fit:cover;margin:0 5px;border:2px solid transparent;cursor:pointer;border-radius:50%}.active{border:2px solid #0267C1}.form-control-group{margin:10px 0}.action-btn{position:relative;bottom:0;right:0;display:flex;align-items:center;justify-content:flex-end;gap:20px}.action-btn .skip-btn{color:#0267c1;cursor:pointer}.action-btn button{width:100px!important;border:none;background-color:#0267c1;color:#fff;cursor:pointer;border-radius:3px;padding:8px 0;font-size:14px!important;font-weight:500!important}.required:after{content:\"*\";color:tomato}.error-msg{color:tomato}@media screen and (max-width: 475px){.action-btn .skip-btn{color:#0267c1;cursor:pointer}.action-btn button{width:100px!important;border:none;background-color:#0267c1;color:#fff;cursor:pointer;border-radius:3px;padding:8px 0;font-size:14px!important;font-weight:500!important}}\n"] }]
|
8949
|
+
}], ctorParameters: () => [{ type: RestService }, { type: i2$3.Router }, { type: i5.MatDialogRef }, { type: StorageServiceService }, { type: i7.MessageService }] });
|
8950
|
+
|
8985
8951
|
class UserProfileComponent extends BaseSection {
|
8986
8952
|
constructor(router, _eventService, restService, storageService, cartService, matDialog, matBottomSheet, cookieService, messageService) {
|
8987
8953
|
super();
|