@rolatech/angular-account 17.2.3 → 17.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,6 +8,7 @@ export class UserItemComponent {
8
8
  this.isFollowing = input(true);
9
9
  this.follow = output();
10
10
  this.unfollow = output();
11
+ this.own = input();
11
12
  }
12
13
  onFollow() {
13
14
  this.follow.emit(this.user().username);
@@ -16,13 +17,13 @@ export class UserItemComponent {
16
17
  this.unfollow.emit(this.user().username);
17
18
  }
18
19
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: UserItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: UserItemComponent, isStandalone: true, selector: "rolatech-account-user-item", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, isFollowing: { classPropertyName: "isFollowing", publicName: "isFollowing", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { follow: "follow", unfollow: "unfollow" }, host: { properties: { "class.rolatech-account-user-item": "this.hasClass" } }, ngImport: i0, template: "<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (isFollowing()) {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-gray-300 rounded-md cursor-pointer\"\n (click)=\"onUnFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u53D6\u6D88\u5173\u6CE8</span>\n </a>\n </div>\n } @else {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-orange-600 text-white rounded-md cursor-pointer\"\n (click)=\"onFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u5173\u6CE8</span>\n </a>\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: UserItemComponent, isStandalone: true, selector: "rolatech-account-user-item", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, isFollowing: { classPropertyName: "isFollowing", publicName: "isFollowing", isSignal: true, isRequired: false, transformFunction: null }, own: { classPropertyName: "own", publicName: "own", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { follow: "follow", unfollow: "unfollow" }, host: { properties: { "class.rolatech-account-user-item": "this.hasClass" } }, ngImport: i0, template: "<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (!own()) {\n @if (isFollowing()) {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-gray-300 rounded-md cursor-pointer\"\n (click)=\"onUnFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u53D6\u6D88\u5173\u6CE8</span>\n </a>\n </div>\n } @else {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-orange-600 text-white rounded-md cursor-pointer\"\n (click)=\"onFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u5173\u6CE8</span>\n </a>\n </div>\n }\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None }); }
20
21
  }
21
22
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: UserItemComponent, decorators: [{
22
23
  type: Component,
23
- args: [{ selector: 'rolatech-account-user-item', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (isFollowing()) {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-gray-300 rounded-md cursor-pointer\"\n (click)=\"onUnFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u53D6\u6D88\u5173\u6CE8</span>\n </a>\n </div>\n } @else {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-orange-600 text-white rounded-md cursor-pointer\"\n (click)=\"onFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u5173\u6CE8</span>\n </a>\n </div>\n }\n</div>\n" }]
24
+ args: [{ selector: 'rolatech-account-user-item', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (!own()) {\n @if (isFollowing()) {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-gray-300 rounded-md cursor-pointer\"\n (click)=\"onUnFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u53D6\u6D88\u5173\u6CE8</span>\n </a>\n </div>\n } @else {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-orange-600 text-white rounded-md cursor-pointer\"\n (click)=\"onFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u5173\u6CE8</span>\n </a>\n </div>\n }\n }\n</div>\n" }]
24
25
  }], propDecorators: { hasClass: [{
25
26
  type: HostBinding,
26
27
  args: ['class.rolatech-account-user-item']
27
28
  }] } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy91c2VyLWl0ZW0vdXNlci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy91c2VyLWl0ZW0vdXNlci1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVUvQyxNQUFNLE9BQU8saUJBQWlCO0lBUjlCO1FBU21ELGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDakUsU0FBSSxHQUFHLEtBQUssRUFBTyxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxNQUFNLEVBQVUsQ0FBQztRQUMxQixhQUFRLEdBQUcsTUFBTSxFQUFFLENBQUM7S0FPckI7SUFOQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OEdBWFUsaUJBQWlCO2tHQUFqQixpQkFBaUIscWVDWDlCLGluQ0FvQ0EseUREOUJZLFlBQVk7OzJGQUtYLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDRSw0QkFBNEIsY0FDMUIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLGlCQUdSLGlCQUFpQixDQUFDLElBQUk7OEJBR1ksUUFBUTtzQkFBeEQsV0FBVzt1QkFBQyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtYWNjb3VudC11c2VyLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi91c2VyLWl0ZW0uY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VySXRlbUNvbXBvbmVudCB7XG4gIEBIb3N0QmluZGluZygnY2xhc3Mucm9sYXRlY2gtYWNjb3VudC11c2VyLWl0ZW0nKSBoYXNDbGFzcyA9IHRydWU7XG4gIHVzZXIgPSBpbnB1dDxhbnk+KCk7XG4gIGlzRm9sbG93aW5nID0gaW5wdXQodHJ1ZSk7XG4gIGZvbGxvdyA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIHVuZm9sbG93ID0gb3V0cHV0KCk7XG4gIG9uRm9sbG93KCkge1xuICAgIHRoaXMuZm9sbG93LmVtaXQodGhpcy51c2VyKCkudXNlcm5hbWUpO1xuICB9XG4gIG9uVW5Gb2xsb3coKSB7XG4gICAgdGhpcy51bmZvbGxvdy5lbWl0KHRoaXMudXNlcigpLnVzZXJuYW1lKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcC0yIGhvdmVyOmJnLWdyYXktMTAwIGN1cnNvci1wb2ludGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJiZy1vcmFuZ2UtNjAwIHctMTIgaC0xMiByb3VuZGVkLWZ1bGxcIj5cbiAgICAgIEBpZiAodXNlcigpLmF2YXRhcikge1xuICAgICAgICA8aW1nIGNsYXNzPVwidy0xMiBoLTEyIG9iamVjdC1jb3ZlciByb3VuZGVkLWZ1bGxcIiBbc3JjXT1cInVzZXIoKS5hdmF0YXJcIiAvPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1sLTNcIj5cbiAgICAgIDxhIGNsYXNzPVwidGV4dC1sZyBmb250LWJvbGRcIj5cbiAgICAgICAgPHNwYW4+e3sgdXNlcigpLm5hbWUgfX08L3NwYW4+XG4gICAgICA8L2E+XG4gICAgICA8YSBjbGFzcz1cInRleHQtbWRcIj5cbiAgICAgICAgPHNwYW4+e3sgdXNlcigpLnVzZXJuYW1lIH19PC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgQGlmIChpc0ZvbGxvd2luZygpKSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ3LVsxMDBweF0gcHktMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ncmF5LTMwMCByb3VuZGVkLW1kIGN1cnNvci1wb2ludGVyXCJcbiAgICAgIChjbGljayk9XCJvblVuRm9sbG93KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgPlxuICAgICAgPGE+XG4gICAgICAgIDxzcGFuPuWPlua2iOWFs+azqDwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ3LVsxMDBweF0gcHktMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1vcmFuZ2UtNjAwIHRleHQtd2hpdGUgcm91bmRlZC1tZCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAoY2xpY2spPVwib25Gb2xsb3coKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICA+XG4gICAgICA8YT5cbiAgICAgICAgPHNwYW4+5YWz5rOoPC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy91c2VyLWl0ZW0vdXNlci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy91c2VyLWl0ZW0vdXNlci1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVUvQyxNQUFNLE9BQU8saUJBQWlCO0lBUjlCO1FBU21ELGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDakUsU0FBSSxHQUFHLEtBQUssRUFBTyxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxNQUFNLEVBQVUsQ0FBQztRQUMxQixhQUFRLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDcEIsUUFBRyxHQUFHLEtBQUssRUFBRSxDQUFDO0tBT2Y7SUFOQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OEdBWlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsdWxCQ1g5Qiw4cUNBc0NBLHlERGhDWSxZQUFZOzsyRkFLWCxpQkFBaUI7a0JBUjdCLFNBQVM7K0JBQ0UsNEJBQTRCLGNBQzFCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJOzhCQUdZLFFBQVE7c0JBQXhELFdBQVc7dUJBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgVmlld0VuY2Fwc3VsYXRpb24sIGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWFjY291bnQtdXNlci1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdXNlci1pdGVtLmNvbXBvbmVudC5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlckl0ZW1Db21wb25lbnQge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJvbGF0ZWNoLWFjY291bnQtdXNlci1pdGVtJykgaGFzQ2xhc3MgPSB0cnVlO1xuICB1c2VyID0gaW5wdXQ8YW55PigpO1xuICBpc0ZvbGxvd2luZyA9IGlucHV0KHRydWUpO1xuICBmb2xsb3cgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICB1bmZvbGxvdyA9IG91dHB1dCgpO1xuICBvd24gPSBpbnB1dCgpO1xuICBvbkZvbGxvdygpIHtcbiAgICB0aGlzLmZvbGxvdy5lbWl0KHRoaXMudXNlcigpLnVzZXJuYW1lKTtcbiAgfVxuICBvblVuRm9sbG93KCkge1xuICAgIHRoaXMudW5mb2xsb3cuZW1pdCh0aGlzLnVzZXIoKS51c2VybmFtZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHAtMiBob3ZlcjpiZy1ncmF5LTEwMCBjdXJzb3ItcG9pbnRlclwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYmctb3JhbmdlLTYwMCB3LTEyIGgtMTIgcm91bmRlZC1mdWxsXCI+XG4gICAgICBAaWYgKHVzZXIoKS5hdmF0YXIpIHtcbiAgICAgICAgPGltZyBjbGFzcz1cInctMTIgaC0xMiBvYmplY3QtY292ZXIgcm91bmRlZC1mdWxsXCIgW3NyY109XCJ1c2VyKCkuYXZhdGFyXCIgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBtbC0zXCI+XG4gICAgICA8YSBjbGFzcz1cInRleHQtbGcgZm9udC1ib2xkXCI+XG4gICAgICAgIDxzcGFuPnt7IHVzZXIoKS5uYW1lIH19PC9zcGFuPlxuICAgICAgPC9hPlxuICAgICAgPGEgY2xhc3M9XCJ0ZXh0LW1kXCI+XG4gICAgICAgIDxzcGFuPnt7IHVzZXIoKS51c2VybmFtZSB9fTwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIEBpZiAoIW93bigpKSB7XG4gICAgQGlmIChpc0ZvbGxvd2luZygpKSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidy1bMTAwcHhdIHB5LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctZ3JheS0zMDAgcm91bmRlZC1tZCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgIChjbGljayk9XCJvblVuRm9sbG93KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICA+XG4gICAgICAgIDxhPlxuICAgICAgICAgIDxzcGFuPuWPlua2iOWFs+azqDwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidy1bMTAwcHhdIHB5LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctb3JhbmdlLTYwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbWQgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAoY2xpY2spPVwib25Gb2xsb3coKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgID5cbiAgICAgICAgPGE+XG4gICAgICAgICAgPHNwYW4+5YWz5rOoPC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIH1cbjwvZGl2PlxuIl19
@@ -91,7 +91,7 @@ export class HomeComponent extends BaseComponent {
91
91
  console.log(event);
92
92
  }
93
93
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: HomeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
94
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: HomeComponent, isStandalone: true, selector: "rolatech-account-home", usesInheritance: true, ngImport: i0, template: "@if (user$ | async; as user) {\n <div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <!-- <rolatech-spinner></rolatech-spinner> -->\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <div class=\"p-3 mb-3\">\n <div class=\"w-20 h-20 rounded-full bg-orange-600\">\n @if (user.avatar) {\n <img class=\"w-20 h-20 rounded-full object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </div>\n <p class=\"text-3xl\">\u6B22\u8FCE\u56DE\u6765, {{ user.name }}</p>\n <p class=\"text-md\">\u7528\u6237\u4E2D\u5FC3, \u65B9\u4FBF\u60A8\u7EF4\u62A4\u4E2A\u4EBA\u4FE1\u606F, \u8FD9\u4F1A\u6709\u4E00\u4E2A\u5F88\u597D\u7684\u4F53\u9A8C</p>\n <!-- <button (click)=\"follow()\">Follow</button>\n <button (click)=\"unfollow()\">UnFollow</button> -->\n <button (click)=\"listFollowingByUsername()\">listFollowingByUsername</button>\n <button (click)=\"listFollowersByUsername()\">List Followers</button>\n <button (click)=\"stats()\">Stats</button>\n\n <!-- <button (click)=\"friendships()\">friendships</button> -->\n </div>\n </div>\n </div>\n}\n<rolatech-toolbar title=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\" subtitle=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\u7684\u63CF\u8FF0\" link=\"/\"></rolatech-toolbar>\n\n<rolatech-tabs [(select)]=\"selectIndex\">\n <rolatech-tab label=\"\u5173\u6CE8\"></rolatech-tab>\n <rolatech-tab label=\"\u7C89\u4E1D\"></rolatech-tab>\n</rolatech-tabs>\n@for (item of users; track $index) {\n <rolatech-account-user-item\n [user]=\"item\"\n [isFollowing]=\"item.isFollowing\"\n (click)=\"onClick($event)\"\n (follow)=\"follow(item)\"\n (unfollow)=\"unfollow(item)\"\n [routerLink]=\"'/' + item.username\"\n ></rolatech-account-user-item>\n}\n<!-- @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <rolatech-account-user-item></rolatech-account-user-item>\n} -->\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: UserItemComponent, selector: "rolatech-account-user-item", inputs: ["user", "isFollowing"], outputs: ["follow", "unfollow"] }, { kind: "component", type: TabsComponent, selector: "rolatech-tabs", inputs: ["select"], outputs: ["selectChange"] }, { kind: "component", type: TabComponent, selector: "rolatech-tab", inputs: ["label"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link"] }] }); }
94
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: HomeComponent, isStandalone: true, selector: "rolatech-account-home", usesInheritance: true, ngImport: i0, template: "@if (user$ | async; as user) {\n <div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <!-- <rolatech-spinner></rolatech-spinner> -->\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <div class=\"p-3 mb-3\">\n <div class=\"w-20 h-20 rounded-full bg-orange-600\">\n @if (user.avatar) {\n <img class=\"w-20 h-20 rounded-full object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </div>\n <p class=\"text-3xl\">\u6B22\u8FCE\u56DE\u6765, {{ user.name }}</p>\n <p class=\"text-md\">\u7528\u6237\u4E2D\u5FC3, \u65B9\u4FBF\u60A8\u7EF4\u62A4\u4E2A\u4EBA\u4FE1\u606F, \u8FD9\u4F1A\u6709\u4E00\u4E2A\u5F88\u597D\u7684\u4F53\u9A8C</p>\n <!-- <button (click)=\"follow()\">Follow</button>\n <button (click)=\"unfollow()\">UnFollow</button> -->\n <button (click)=\"listFollowingByUsername()\">listFollowingByUsername</button>\n <button (click)=\"listFollowersByUsername()\">List Followers</button>\n <button (click)=\"stats()\">Stats</button>\n\n <!-- <button (click)=\"friendships()\">friendships</button> -->\n </div>\n </div>\n </div>\n}\n<rolatech-toolbar title=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\" subtitle=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\u7684\u63CF\u8FF0\" link=\"/\"></rolatech-toolbar>\n\n<rolatech-tabs [(select)]=\"selectIndex\">\n <rolatech-tab label=\"\u5173\u6CE8\"></rolatech-tab>\n <rolatech-tab label=\"\u7C89\u4E1D\"></rolatech-tab>\n</rolatech-tabs>\n@for (item of users; track $index) {\n <rolatech-account-user-item\n [user]=\"item\"\n [isFollowing]=\"item.isFollowing\"\n (follow)=\"follow(item)\"\n (unfollow)=\"unfollow(item)\"\n [routerLink]=\"'/' + item.username\"\n ></rolatech-account-user-item>\n}\n<!-- @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <rolatech-account-user-item></rolatech-account-user-item>\n} -->\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: UserItemComponent, selector: "rolatech-account-user-item", inputs: ["user", "isFollowing", "own"], outputs: ["follow", "unfollow"] }, { kind: "component", type: TabsComponent, selector: "rolatech-tabs", inputs: ["select"], outputs: ["selectChange"] }, { kind: "component", type: TabComponent, selector: "rolatech-tab", inputs: ["label"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link"] }] }); }
95
95
  }
96
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: HomeComponent, decorators: [{
97
97
  type: Component,
@@ -103,6 +103,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
103
103
  TabsComponent,
104
104
  TabComponent,
105
105
  ToolbarComponent,
106
- ], selector: 'rolatech-account-home', template: "@if (user$ | async; as user) {\n <div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <!-- <rolatech-spinner></rolatech-spinner> -->\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <div class=\"p-3 mb-3\">\n <div class=\"w-20 h-20 rounded-full bg-orange-600\">\n @if (user.avatar) {\n <img class=\"w-20 h-20 rounded-full object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </div>\n <p class=\"text-3xl\">\u6B22\u8FCE\u56DE\u6765, {{ user.name }}</p>\n <p class=\"text-md\">\u7528\u6237\u4E2D\u5FC3, \u65B9\u4FBF\u60A8\u7EF4\u62A4\u4E2A\u4EBA\u4FE1\u606F, \u8FD9\u4F1A\u6709\u4E00\u4E2A\u5F88\u597D\u7684\u4F53\u9A8C</p>\n <!-- <button (click)=\"follow()\">Follow</button>\n <button (click)=\"unfollow()\">UnFollow</button> -->\n <button (click)=\"listFollowingByUsername()\">listFollowingByUsername</button>\n <button (click)=\"listFollowersByUsername()\">List Followers</button>\n <button (click)=\"stats()\">Stats</button>\n\n <!-- <button (click)=\"friendships()\">friendships</button> -->\n </div>\n </div>\n </div>\n}\n<rolatech-toolbar title=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\" subtitle=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\u7684\u63CF\u8FF0\" link=\"/\"></rolatech-toolbar>\n\n<rolatech-tabs [(select)]=\"selectIndex\">\n <rolatech-tab label=\"\u5173\u6CE8\"></rolatech-tab>\n <rolatech-tab label=\"\u7C89\u4E1D\"></rolatech-tab>\n</rolatech-tabs>\n@for (item of users; track $index) {\n <rolatech-account-user-item\n [user]=\"item\"\n [isFollowing]=\"item.isFollowing\"\n (click)=\"onClick($event)\"\n (follow)=\"follow(item)\"\n (unfollow)=\"unfollow(item)\"\n [routerLink]=\"'/' + item.username\"\n ></rolatech-account-user-item>\n}\n<!-- @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <rolatech-account-user-item></rolatech-account-user-item>\n} -->\n" }]
106
+ ], selector: 'rolatech-account-home', template: "@if (user$ | async; as user) {\n <div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <!-- <rolatech-spinner></rolatech-spinner> -->\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <div class=\"p-3 mb-3\">\n <div class=\"w-20 h-20 rounded-full bg-orange-600\">\n @if (user.avatar) {\n <img class=\"w-20 h-20 rounded-full object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </div>\n <p class=\"text-3xl\">\u6B22\u8FCE\u56DE\u6765, {{ user.name }}</p>\n <p class=\"text-md\">\u7528\u6237\u4E2D\u5FC3, \u65B9\u4FBF\u60A8\u7EF4\u62A4\u4E2A\u4EBA\u4FE1\u606F, \u8FD9\u4F1A\u6709\u4E00\u4E2A\u5F88\u597D\u7684\u4F53\u9A8C</p>\n <!-- <button (click)=\"follow()\">Follow</button>\n <button (click)=\"unfollow()\">UnFollow</button> -->\n <button (click)=\"listFollowingByUsername()\">listFollowingByUsername</button>\n <button (click)=\"listFollowersByUsername()\">List Followers</button>\n <button (click)=\"stats()\">Stats</button>\n\n <!-- <button (click)=\"friendships()\">friendships</button> -->\n </div>\n </div>\n </div>\n}\n<rolatech-toolbar title=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\" subtitle=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\u7684\u63CF\u8FF0\" link=\"/\"></rolatech-toolbar>\n\n<rolatech-tabs [(select)]=\"selectIndex\">\n <rolatech-tab label=\"\u5173\u6CE8\"></rolatech-tab>\n <rolatech-tab label=\"\u7C89\u4E1D\"></rolatech-tab>\n</rolatech-tabs>\n@for (item of users; track $index) {\n <rolatech-account-user-item\n [user]=\"item\"\n [isFollowing]=\"item.isFollowing\"\n (follow)=\"follow(item)\"\n (unfollow)=\"unfollow(item)\"\n [routerLink]=\"'/' + item.username\"\n ></rolatech-account-user-item>\n}\n<!-- @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <rolatech-account-user-item></rolatech-account-user-item>\n} -->\n" }]
107
107
  }], ctorParameters: () => [] });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL3BhZ2VzL215YWNjb3VudC9ob21lL2hvbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY291bnQvc3JjL2xpYi9wYWdlcy9teWFjY291bnQvaG9tZS9ob21lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osYUFBYSxFQUNiLGdCQUFnQixHQUNqQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7QUFpQjdCLE1BQU0sT0FBTyxhQUFjLFNBQVEsYUFBYTtJQU05QztRQUNFLEtBQUssRUFBRSxDQUFDO1FBTFYsb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUMsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUl0QixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxD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RyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxNQUFNLENBQUMsV0FBZ0I7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sQ0FBQyxLQUFLO1FBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDOzhHQXBGVSxhQUFhO2tHQUFiLGFBQWEsd0dDOUIxQixpOERBNENBLHlERDFCSSxtQkFBbUIsb1VBQ25CLHVCQUF1QiwrQkFFdkIsaUJBQWlCLHlJQUNqQixhQUFhLHlHQUNiLFlBQVksNEVBQ1osZ0JBQWdCOzsyRkFNUCxhQUFhO2tCQWZ6QixTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixnQkFBZ0I7cUJBQ2pCLFlBQ1MsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QsIGluamVjdCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhVc2VyU2VydmljZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWF1dGgnO1xuaW1wb3J0IHtcbiAgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsXG4gIEJhc2VDb21wb25lbnQsXG4gIFNwaW5uZXJDb21wb25lbnQsXG4gIFRhYkNvbXBvbmVudCxcbiAgVGFic0NvbXBvbmVudCxcbiAgVG9vbGJhckNvbXBvbmVudCxcbn0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IFVzZXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdsb2Rhc2gnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFuZ3VsYXJDb21tb25Nb2R1bGUsXG4gICAgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsXG4gICAgU3Bpbm5lckNvbXBvbmVudCxcbiAgICBVc2VySXRlbUNvbXBvbmVudCxcbiAgICBUYWJzQ29tcG9uZW50LFxuICAgIFRhYkNvbXBvbmVudCxcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICBdLFxuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWFjY291bnQtaG9tZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ob21lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaG9tZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBIb21lQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHVzZXIkITogT2JzZXJ2YWJsZTxhbnk+O1xuICBhdXRoVXNlclNlcnZpY2UgPSBpbmplY3QoQXV0aFVzZXJTZXJ2aWNlKTtcbiAgdXNlcnM6IGFueSA9IFtdO1xuICBzZWxlY3RJbmRleCA9IHNpZ25hbCgwKTtcbiAgZnJpZW5kc2hpcHNEYXRhOiBhbnk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RJbmRleCgpO1xuICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgIHRoaXMubGlzdEZvbGxvd2luZ0J5VXNlcm5hbWUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRleCA9PT0gMSkge1xuICAgICAgICB0aGlzLmxpc3RGb2xsb3dlcnNCeVVzZXJuYW1lKCk7XG4gICAgICB9XG4gICAgICBpZiAoaW5kZXggPT09IDIpIHtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXIkID0gdGhpcy5hdXRoVXNlclNlcnZpY2UubWUoKTtcbiAgfVxuICBmcmllbmRzaGlwcyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgLy91c2VyLWV3NTdtbjd3cXpzNFxuICAgIC8vIHVzZXItbG5lcmZvb3RpaHZ5XG4gICAgLy8gWycyMDY3MjMxNTE5NzEwMDAzMicsICcxNTY3OTM5MjQ2NjQ3Mjk2MCcsICcxNTY3OTM5MjQ2NjQnXTtcbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5mcmllbmRzaGlwcyhpZHMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybWF0KHJlcy5kYXRhKTtcbiAgICAgICAgdGhpcy5mcmllbmRzaGlwc0RhdGEgPSByZXMuZGF0YTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgc3RhdHMoKSB7XG4gICAgdGhpcy5hdXRoVXNlclNlcnZpY2UuZm9sbG93ZXJzU3RhdHMoJ3BpbnhpYW9rZScpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGZvbGxvdyh1c2VyOiBhbnkpIHtcbiAgICAvL3VzZXItZXc1N21uN3dxenM0XG4gICAgLy8gdXNlci1sbmVyZm9vdGlodnlcbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5mb2xsb3codXNlci51c2VybmFtZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgICAgdXNlci5pc0ZvbGxvd2luZyA9IHRydWU7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHVuZm9sbG93KHVzZXI6IGFueSkge1xuICAgIHRoaXMuYXV0aFVzZXJTZXJ2aWNlLnVuZm9sbG93KHVzZXIudXNlcm5hbWUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHVzZXIuaXNGb2xsb3dpbmcgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgbGlzdEZvbGxvd2luZ0J5VXNlcm5hbWUoKSB7XG4gICAgdGhpcy5hdXRoVXNlclNlcnZpY2UubGlzdEZvbGxvd2luZ0J5VXNlcm5hbWUoJ3BpbnhpYW9rZScpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMudXNlcnMgPSBtYXAocmVzLmRhdGEsICd1c2VyJyk7XG4gICAgICAgIGNvbnN0IGlkcyA9IG1hcChyZXMuZGF0YSwgJ3VzZXIuaWQnKTtcbiAgICAgICAgdGhpcy5mcmllbmRzaGlwcyhpZHMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBsaXN0Rm9sbG93ZXJzQnlVc2VybmFtZSgpIHtcbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5saXN0Rm9sbG93ZXJzQnlVc2VybmFtZSgncGlueGlhb2tlJykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy51c2VycyA9IG1hcChyZXMuZGF0YSwgJ2ZvbGxvd2VyJyk7XG4gICAgICAgIGNvbnN0IGlkcyA9IG1hcChyZXMuZGF0YSwgJ2ZvbGxvd2VyLmlkJyk7XG4gICAgICAgIHRoaXMuZnJpZW5kc2hpcHMoaWRzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgZm9ybWF0KGZyaWVuZHNoaXBzOiBhbnkpIHtcbiAgICB0aGlzLnVzZXJzLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5pc0ZvbGxvd2luZyA9IGZyaWVuZHNoaXBzW2l0ZW0uaWRdLmZvbGxvd2luZztcbiAgICB9KTtcbiAgfVxuICBvbkNsaWNrKGV2ZW50KSB7XG4gICAgY29uc29sZS5sb2coZXZlbnQpO1xuICB9XG59XG4iLCJAaWYgKHVzZXIkIHwgYXN5bmM7IGFzIHVzZXIpIHtcbiAgPGRpdiBjbGFzcz1cIm1heC13LVsxMTIwcHhdIG0tYXV0b1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtYXgtdy1bODIwcHhdIG0tM1wiPlxuICAgICAgPCEtLSA8cm9sYXRlY2gtc3Bpbm5lcj48L3JvbGF0ZWNoLXNwaW5uZXI+IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHAtMyBtYi0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC0zIG1iLTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yMCBoLTIwIHJvdW5kZWQtZnVsbCBiZy1vcmFuZ2UtNjAwXCI+XG4gICAgICAgICAgICBAaWYgKHVzZXIuYXZhdGFyKSB7XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTIwIGgtMjAgcm91bmRlZC1mdWxsIG9iamVjdC1jb3ZlclwiIFtzcmNdPVwidXNlci5hdmF0YXJcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LTN4bFwiPuasoui/juWbnuadpSwge3sgdXNlci5uYW1lIH19PC9wPlxuICAgICAgICA8cCBjbGFzcz1cInRleHQtbWRcIj7nlKjmiLfkuK3lv4MsIOaWueS+v+aCqOe7tOaKpOS4quS6uuS/oeaBrywg6L+Z5Lya5pyJ5LiA5Liq5b6I5aW955qE5L2T6aqMPC9wPlxuICAgICAgICA8IS0tIDxidXR0b24gKGNsaWNrKT1cImZvbGxvdygpXCI+Rm9sbG93PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInVuZm9sbG93KClcIj5VbkZvbGxvdzwvYnV0dG9uPiAtLT5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibGlzdEZvbGxvd2luZ0J5VXNlcm5hbWUoKVwiPmxpc3RGb2xsb3dpbmdCeVVzZXJuYW1lPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImxpc3RGb2xsb3dlcnNCeVVzZXJuYW1lKClcIj5MaXN0IEZvbGxvd2VyczwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzdGF0cygpXCI+U3RhdHM8L2J1dHRvbj5cblxuICAgICAgICA8IS0tIDxidXR0b24gKGNsaWNrKT1cImZyaWVuZHNoaXBzKClcIj5mcmllbmRzaGlwczwvYnV0dG9uPiAtLT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn1cbjxyb2xhdGVjaC10b29sYmFyIHRpdGxlPVwi5a6i5oi356uv5Yib5bu6XCIgc3VidGl0bGU9XCLlrqLmiLfnq6/liJvlu7rnmoTmj4/ov7BcIiBsaW5rPVwiL1wiPjwvcm9sYXRlY2gtdG9vbGJhcj5cblxuPHJvbGF0ZWNoLXRhYnMgWyhzZWxlY3QpXT1cInNlbGVjdEluZGV4XCI+XG4gIDxyb2xhdGVjaC10YWIgbGFiZWw9XCLlhbPms6hcIj48L3JvbGF0ZWNoLXRhYj5cbiAgPHJvbGF0ZWNoLXRhYiBsYWJlbD1cIueyieS4nVwiPjwvcm9sYXRlY2gtdGFiPlxuPC9yb2xhdGVjaC10YWJzPlxuQGZvciAoaXRlbSBvZiB1c2VyczsgdHJhY2sgJGluZGV4KSB7XG4gIDxyb2xhdGVjaC1hY2NvdW50LXVzZXItaXRlbVxuICAgIFt1c2VyXT1cIml0ZW1cIlxuICAgIFtpc0ZvbGxvd2luZ109XCJpdGVtLmlzRm9sbG93aW5nXCJcbiAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAoZm9sbG93KT1cImZvbGxvdyhpdGVtKVwiXG4gICAgKHVuZm9sbG93KT1cInVuZm9sbG93KGl0ZW0pXCJcbiAgICBbcm91dGVyTGlua109XCInLycgKyBpdGVtLnVzZXJuYW1lXCJcbiAgPjwvcm9sYXRlY2gtYWNjb3VudC11c2VyLWl0ZW0+XG59XG48IS0tIEBmb3IgKG51bWJlciBvZiBbMCwgMSwgMiwgMywgNCwgNV07IHRyYWNrIG51bWJlcikge1xuICA8cm9sYXRlY2gtYWNjb3VudC11c2VyLWl0ZW0+PC9yb2xhdGVjaC1hY2NvdW50LXVzZXItaXRlbT5cbn0gLS0+XG4iXX0=
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL3BhZ2VzL215YWNjb3VudC9ob21lL2hvbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY291bnQvc3JjL2xpYi9wYWdlcy9teWFjY291bnQvaG9tZS9ob21lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osYUFBYSxFQUNiLGdCQUFnQixHQUNqQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7QUFpQjdCLE1BQU0sT0FBTyxhQUFjLFNBQVEsYUFBYTtJQU05QztRQUNFLEtBQUssRUFBRSxDQUFDO1FBTFYsb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUMsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUl0QixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxD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RyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxNQUFNLENBQUMsV0FBZ0I7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sQ0FBQyxLQUFLO1FBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDOzhHQXBGVSxhQUFhO2tHQUFiLGFBQWEsd0dDOUIxQixnNkRBMkNBLHlERHpCSSxtQkFBbUIsb1VBQ25CLHVCQUF1QiwrQkFFdkIsaUJBQWlCLGdKQUNqQixhQUFhLHlHQUNiLFlBQVksNEVBQ1osZ0JBQWdCOzsyRkFNUCxhQUFhO2tCQWZ6QixTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixnQkFBZ0I7cUJBQ2pCLFlBQ1MsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QsIGluamVjdCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhVc2VyU2VydmljZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWF1dGgnO1xuaW1wb3J0IHtcbiAgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsXG4gIEJhc2VDb21wb25lbnQsXG4gIFNwaW5uZXJDb21wb25lbnQsXG4gIFRhYkNvbXBvbmVudCxcbiAgVGFic0NvbXBvbmVudCxcbiAgVG9vbGJhckNvbXBvbmVudCxcbn0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IFVzZXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdsb2Rhc2gnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFuZ3VsYXJDb21tb25Nb2R1bGUsXG4gICAgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsXG4gICAgU3Bpbm5lckNvbXBvbmVudCxcbiAgICBVc2VySXRlbUNvbXBvbmVudCxcbiAgICBUYWJzQ29tcG9uZW50LFxuICAgIFRhYkNvbXBvbmVudCxcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICBdLFxuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWFjY291bnQtaG9tZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ob21lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaG9tZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBIb21lQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHVzZXIkITogT2JzZXJ2YWJsZTxhbnk+O1xuICBhdXRoVXNlclNlcnZpY2UgPSBpbmplY3QoQXV0aFVzZXJTZXJ2aWNlKTtcbiAgdXNlcnM6IGFueSA9IFtdO1xuICBzZWxlY3RJbmRleCA9IHNpZ25hbCgwKTtcbiAgZnJpZW5kc2hpcHNEYXRhOiBhbnk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RJbmRleCgpO1xuICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgIHRoaXMubGlzdEZvbGxvd2luZ0J5VXNlcm5hbWUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRleCA9PT0gMSkge1xuICAgICAgICB0aGlzLmxpc3RGb2xsb3dlcnNCeVVzZXJuYW1lKCk7XG4gICAgICB9XG4gICAgICBpZiAoaW5kZXggPT09IDIpIHtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXIkID0gdGhpcy5hdXRoVXNlclNlcnZpY2UubWUoKTtcbiAgfVxuICBmcmllbmRzaGlwcyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgLy91c2VyLWV3NTdtbjd3cXpzNFxuICAgIC8vIHVzZXItbG5lcmZvb3RpaHZ5XG4gICAgLy8gWycyMDY3MjMxNTE5NzEwMDAzMicsICcxNTY3OTM5MjQ2NjQ3Mjk2MCcsICcxNTY3OTM5MjQ2NjQnXTtcbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5mcmllbmRzaGlwcyhpZHMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybWF0KHJlcy5kYXRhKTtcbiAgICAgICAgdGhpcy5mcmllbmRzaGlwc0RhdGEgPSByZXMuZGF0YTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgc3RhdHMoKSB7XG4gICAgdGhpcy5hdXRoVXNlclNlcnZpY2UuZm9sbG93ZXJzU3RhdHMoJ3BpbnhpYW9rZScpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGZvbGxvdyh1c2VyOiBhbnkpIHtcbiAgICAvL3VzZXItZXc1N21uN3dxenM0XG4gICAgLy8gdXNlci1sbmVyZm9vdGlodnlcbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5mb2xsb3codXNlci51c2VybmFtZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgICAgdXNlci5pc0ZvbGxvd2luZyA9IHRydWU7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHVuZm9sbG93KHVzZXI6IGFueSkge1xuICAgIHRoaXMuYXV0aFVzZXJTZXJ2aWNlLnVuZm9sbG93KHVzZXIudXNlcm5hbWUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHVzZXIuaXNGb2xsb3dpbmcgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgbGlzdEZvbGxvd2luZ0J5VXNlcm5hbWUoKSB7XG4gICAgdGhpcy5hdXRoVXNlclNlcnZpY2UubGlzdEZvbGxvd2luZ0J5VXNlcm5hbWUoJ3BpbnhpYW9rZScpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMudXNlcnMgPSBtYXAocmVzLmRhdGEsICd1c2VyJyk7XG4gICAgICAgIGNvbnN0IGlkcyA9IG1hcChyZXMuZGF0YSwgJ3VzZXIuaWQnKTtcbiAgICAgICAgdGhpcy5mcmllbmRzaGlwcyhpZHMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBsaXN0Rm9sbG93ZXJzQnlVc2VybmFtZSgpIHtcbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5saXN0Rm9sbG93ZXJzQnlVc2VybmFtZSgncGlueGlhb2tlJykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy51c2VycyA9IG1hcChyZXMuZGF0YSwgJ2ZvbGxvd2VyJyk7XG4gICAgICAgIGNvbnN0IGlkcyA9IG1hcChyZXMuZGF0YSwgJ2ZvbGxvd2VyLmlkJyk7XG4gICAgICAgIHRoaXMuZnJpZW5kc2hpcHMoaWRzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgZm9ybWF0KGZyaWVuZHNoaXBzOiBhbnkpIHtcbiAgICB0aGlzLnVzZXJzLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5pc0ZvbGxvd2luZyA9IGZyaWVuZHNoaXBzW2l0ZW0uaWRdLmZvbGxvd2luZztcbiAgICB9KTtcbiAgfVxuICBvbkNsaWNrKGV2ZW50KSB7XG4gICAgY29uc29sZS5sb2coZXZlbnQpO1xuICB9XG59XG4iLCJAaWYgKHVzZXIkIHwgYXN5bmM7IGFzIHVzZXIpIHtcbiAgPGRpdiBjbGFzcz1cIm1heC13LVsxMTIwcHhdIG0tYXV0b1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtYXgtdy1bODIwcHhdIG0tM1wiPlxuICAgICAgPCEtLSA8cm9sYXRlY2gtc3Bpbm5lcj48L3JvbGF0ZWNoLXNwaW5uZXI+IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHAtMyBtYi0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC0zIG1iLTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yMCBoLTIwIHJvdW5kZWQtZnVsbCBiZy1vcmFuZ2UtNjAwXCI+XG4gICAgICAgICAgICBAaWYgKHVzZXIuYXZhdGFyKSB7XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTIwIGgtMjAgcm91bmRlZC1mdWxsIG9iamVjdC1jb3ZlclwiIFtzcmNdPVwidXNlci5hdmF0YXJcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LTN4bFwiPuasoui/juWbnuadpSwge3sgdXNlci5uYW1lIH19PC9wPlxuICAgICAgICA8cCBjbGFzcz1cInRleHQtbWRcIj7nlKjmiLfkuK3lv4MsIOaWueS+v+aCqOe7tOaKpOS4quS6uuS/oeaBrywg6L+Z5Lya5pyJ5LiA5Liq5b6I5aW955qE5L2T6aqMPC9wPlxuICAgICAgICA8IS0tIDxidXR0b24gKGNsaWNrKT1cImZvbGxvdygpXCI+Rm9sbG93PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInVuZm9sbG93KClcIj5VbkZvbGxvdzwvYnV0dG9uPiAtLT5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibGlzdEZvbGxvd2luZ0J5VXNlcm5hbWUoKVwiPmxpc3RGb2xsb3dpbmdCeVVzZXJuYW1lPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImxpc3RGb2xsb3dlcnNCeVVzZXJuYW1lKClcIj5MaXN0IEZvbGxvd2VyczwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzdGF0cygpXCI+U3RhdHM8L2J1dHRvbj5cblxuICAgICAgICA8IS0tIDxidXR0b24gKGNsaWNrKT1cImZyaWVuZHNoaXBzKClcIj5mcmllbmRzaGlwczwvYnV0dG9uPiAtLT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn1cbjxyb2xhdGVjaC10b29sYmFyIHRpdGxlPVwi5a6i5oi356uv5Yib5bu6XCIgc3VidGl0bGU9XCLlrqLmiLfnq6/liJvlu7rnmoTmj4/ov7BcIiBsaW5rPVwiL1wiPjwvcm9sYXRlY2gtdG9vbGJhcj5cblxuPHJvbGF0ZWNoLXRhYnMgWyhzZWxlY3QpXT1cInNlbGVjdEluZGV4XCI+XG4gIDxyb2xhdGVjaC10YWIgbGFiZWw9XCLlhbPms6hcIj48L3JvbGF0ZWNoLXRhYj5cbiAgPHJvbGF0ZWNoLXRhYiBsYWJlbD1cIueyieS4nVwiPjwvcm9sYXRlY2gtdGFiPlxuPC9yb2xhdGVjaC10YWJzPlxuQGZvciAoaXRlbSBvZiB1c2VyczsgdHJhY2sgJGluZGV4KSB7XG4gIDxyb2xhdGVjaC1hY2NvdW50LXVzZXItaXRlbVxuICAgIFt1c2VyXT1cIml0ZW1cIlxuICAgIFtpc0ZvbGxvd2luZ109XCJpdGVtLmlzRm9sbG93aW5nXCJcbiAgICAoZm9sbG93KT1cImZvbGxvdyhpdGVtKVwiXG4gICAgKHVuZm9sbG93KT1cInVuZm9sbG93KGl0ZW0pXCJcbiAgICBbcm91dGVyTGlua109XCInLycgKyBpdGVtLnVzZXJuYW1lXCJcbiAgPjwvcm9sYXRlY2gtYWNjb3VudC11c2VyLWl0ZW0+XG59XG48IS0tIEBmb3IgKG51bWJlciBvZiBbMCwgMSwgMiwgMywgNCwgNV07IHRyYWNrIG51bWJlcikge1xuICA8cm9sYXRlY2gtYWNjb3VudC11c2VyLWl0ZW0+PC9yb2xhdGVjaC1hY2NvdW50LXVzZXItaXRlbT5cbn0gLS0+XG4iXX0=
@@ -3,7 +3,7 @@ import { inject, signal, effect, Component } from '@angular/core';
3
3
  import { AuthUserService } from '@rolatech/angular-auth';
4
4
  import { BaseComponent, AngularComponentsModule, TabsComponent, TabComponent, ToolbarComponent, SpinnerComponent } from '@rolatech/angular-components';
5
5
  import { AngularCommonModule } from '@rolatech/angular-common';
6
- import { U as UserItemComponent } from './rolatech-angular-account-rolatech-angular-account-KFjjX5Uc.mjs';
6
+ import { U as UserItemComponent } from './rolatech-angular-account-rolatech-angular-account-P3NArisC.mjs';
7
7
  import { map } from 'lodash';
8
8
  import * as i1 from '@angular/common';
9
9
  import * as i1$1 from '@angular/router';
@@ -98,7 +98,7 @@ class HomeComponent extends BaseComponent {
98
98
  console.log(event);
99
99
  }
100
100
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: HomeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: HomeComponent, isStandalone: true, selector: "rolatech-account-home", usesInheritance: true, ngImport: i0, template: "@if (user$ | async; as user) {\n <div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <!-- <rolatech-spinner></rolatech-spinner> -->\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <div class=\"p-3 mb-3\">\n <div class=\"w-20 h-20 rounded-full bg-orange-600\">\n @if (user.avatar) {\n <img class=\"w-20 h-20 rounded-full object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </div>\n <p class=\"text-3xl\">\u6B22\u8FCE\u56DE\u6765, {{ user.name }}</p>\n <p class=\"text-md\">\u7528\u6237\u4E2D\u5FC3, \u65B9\u4FBF\u60A8\u7EF4\u62A4\u4E2A\u4EBA\u4FE1\u606F, \u8FD9\u4F1A\u6709\u4E00\u4E2A\u5F88\u597D\u7684\u4F53\u9A8C</p>\n <!-- <button (click)=\"follow()\">Follow</button>\n <button (click)=\"unfollow()\">UnFollow</button> -->\n <button (click)=\"listFollowingByUsername()\">listFollowingByUsername</button>\n <button (click)=\"listFollowersByUsername()\">List Followers</button>\n <button (click)=\"stats()\">Stats</button>\n\n <!-- <button (click)=\"friendships()\">friendships</button> -->\n </div>\n </div>\n </div>\n}\n<rolatech-toolbar title=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\" subtitle=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\u7684\u63CF\u8FF0\" link=\"/\"></rolatech-toolbar>\n\n<rolatech-tabs [(select)]=\"selectIndex\">\n <rolatech-tab label=\"\u5173\u6CE8\"></rolatech-tab>\n <rolatech-tab label=\"\u7C89\u4E1D\"></rolatech-tab>\n</rolatech-tabs>\n@for (item of users; track $index) {\n <rolatech-account-user-item\n [user]=\"item\"\n [isFollowing]=\"item.isFollowing\"\n (click)=\"onClick($event)\"\n (follow)=\"follow(item)\"\n (unfollow)=\"unfollow(item)\"\n [routerLink]=\"'/' + item.username\"\n ></rolatech-account-user-item>\n}\n<!-- @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <rolatech-account-user-item></rolatech-account-user-item>\n} -->\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: UserItemComponent, selector: "rolatech-account-user-item", inputs: ["user", "isFollowing"], outputs: ["follow", "unfollow"] }, { kind: "component", type: TabsComponent, selector: "rolatech-tabs", inputs: ["select"], outputs: ["selectChange"] }, { kind: "component", type: TabComponent, selector: "rolatech-tab", inputs: ["label"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link"] }] }); }
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: HomeComponent, isStandalone: true, selector: "rolatech-account-home", usesInheritance: true, ngImport: i0, template: "@if (user$ | async; as user) {\n <div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <!-- <rolatech-spinner></rolatech-spinner> -->\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <div class=\"p-3 mb-3\">\n <div class=\"w-20 h-20 rounded-full bg-orange-600\">\n @if (user.avatar) {\n <img class=\"w-20 h-20 rounded-full object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </div>\n <p class=\"text-3xl\">\u6B22\u8FCE\u56DE\u6765, {{ user.name }}</p>\n <p class=\"text-md\">\u7528\u6237\u4E2D\u5FC3, \u65B9\u4FBF\u60A8\u7EF4\u62A4\u4E2A\u4EBA\u4FE1\u606F, \u8FD9\u4F1A\u6709\u4E00\u4E2A\u5F88\u597D\u7684\u4F53\u9A8C</p>\n <!-- <button (click)=\"follow()\">Follow</button>\n <button (click)=\"unfollow()\">UnFollow</button> -->\n <button (click)=\"listFollowingByUsername()\">listFollowingByUsername</button>\n <button (click)=\"listFollowersByUsername()\">List Followers</button>\n <button (click)=\"stats()\">Stats</button>\n\n <!-- <button (click)=\"friendships()\">friendships</button> -->\n </div>\n </div>\n </div>\n}\n<rolatech-toolbar title=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\" subtitle=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\u7684\u63CF\u8FF0\" link=\"/\"></rolatech-toolbar>\n\n<rolatech-tabs [(select)]=\"selectIndex\">\n <rolatech-tab label=\"\u5173\u6CE8\"></rolatech-tab>\n <rolatech-tab label=\"\u7C89\u4E1D\"></rolatech-tab>\n</rolatech-tabs>\n@for (item of users; track $index) {\n <rolatech-account-user-item\n [user]=\"item\"\n [isFollowing]=\"item.isFollowing\"\n (follow)=\"follow(item)\"\n (unfollow)=\"unfollow(item)\"\n [routerLink]=\"'/' + item.username\"\n ></rolatech-account-user-item>\n}\n<!-- @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <rolatech-account-user-item></rolatech-account-user-item>\n} -->\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: UserItemComponent, selector: "rolatech-account-user-item", inputs: ["user", "isFollowing", "own"], outputs: ["follow", "unfollow"] }, { kind: "component", type: TabsComponent, selector: "rolatech-tabs", inputs: ["select"], outputs: ["selectChange"] }, { kind: "component", type: TabComponent, selector: "rolatech-tab", inputs: ["label"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link"] }] }); }
102
102
  }
103
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: HomeComponent, decorators: [{
104
104
  type: Component,
@@ -110,8 +110,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
110
110
  TabsComponent,
111
111
  TabComponent,
112
112
  ToolbarComponent,
113
- ], selector: 'rolatech-account-home', template: "@if (user$ | async; as user) {\n <div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <!-- <rolatech-spinner></rolatech-spinner> -->\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <div class=\"p-3 mb-3\">\n <div class=\"w-20 h-20 rounded-full bg-orange-600\">\n @if (user.avatar) {\n <img class=\"w-20 h-20 rounded-full object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </div>\n <p class=\"text-3xl\">\u6B22\u8FCE\u56DE\u6765, {{ user.name }}</p>\n <p class=\"text-md\">\u7528\u6237\u4E2D\u5FC3, \u65B9\u4FBF\u60A8\u7EF4\u62A4\u4E2A\u4EBA\u4FE1\u606F, \u8FD9\u4F1A\u6709\u4E00\u4E2A\u5F88\u597D\u7684\u4F53\u9A8C</p>\n <!-- <button (click)=\"follow()\">Follow</button>\n <button (click)=\"unfollow()\">UnFollow</button> -->\n <button (click)=\"listFollowingByUsername()\">listFollowingByUsername</button>\n <button (click)=\"listFollowersByUsername()\">List Followers</button>\n <button (click)=\"stats()\">Stats</button>\n\n <!-- <button (click)=\"friendships()\">friendships</button> -->\n </div>\n </div>\n </div>\n}\n<rolatech-toolbar title=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\" subtitle=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\u7684\u63CF\u8FF0\" link=\"/\"></rolatech-toolbar>\n\n<rolatech-tabs [(select)]=\"selectIndex\">\n <rolatech-tab label=\"\u5173\u6CE8\"></rolatech-tab>\n <rolatech-tab label=\"\u7C89\u4E1D\"></rolatech-tab>\n</rolatech-tabs>\n@for (item of users; track $index) {\n <rolatech-account-user-item\n [user]=\"item\"\n [isFollowing]=\"item.isFollowing\"\n (click)=\"onClick($event)\"\n (follow)=\"follow(item)\"\n (unfollow)=\"unfollow(item)\"\n [routerLink]=\"'/' + item.username\"\n ></rolatech-account-user-item>\n}\n<!-- @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <rolatech-account-user-item></rolatech-account-user-item>\n} -->\n" }]
113
+ ], selector: 'rolatech-account-home', template: "@if (user$ | async; as user) {\n <div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <!-- <rolatech-spinner></rolatech-spinner> -->\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <div class=\"p-3 mb-3\">\n <div class=\"w-20 h-20 rounded-full bg-orange-600\">\n @if (user.avatar) {\n <img class=\"w-20 h-20 rounded-full object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </div>\n <p class=\"text-3xl\">\u6B22\u8FCE\u56DE\u6765, {{ user.name }}</p>\n <p class=\"text-md\">\u7528\u6237\u4E2D\u5FC3, \u65B9\u4FBF\u60A8\u7EF4\u62A4\u4E2A\u4EBA\u4FE1\u606F, \u8FD9\u4F1A\u6709\u4E00\u4E2A\u5F88\u597D\u7684\u4F53\u9A8C</p>\n <!-- <button (click)=\"follow()\">Follow</button>\n <button (click)=\"unfollow()\">UnFollow</button> -->\n <button (click)=\"listFollowingByUsername()\">listFollowingByUsername</button>\n <button (click)=\"listFollowersByUsername()\">List Followers</button>\n <button (click)=\"stats()\">Stats</button>\n\n <!-- <button (click)=\"friendships()\">friendships</button> -->\n </div>\n </div>\n </div>\n}\n<rolatech-toolbar title=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\" subtitle=\"\u5BA2\u6237\u7AEF\u521B\u5EFA\u7684\u63CF\u8FF0\" link=\"/\"></rolatech-toolbar>\n\n<rolatech-tabs [(select)]=\"selectIndex\">\n <rolatech-tab label=\"\u5173\u6CE8\"></rolatech-tab>\n <rolatech-tab label=\"\u7C89\u4E1D\"></rolatech-tab>\n</rolatech-tabs>\n@for (item of users; track $index) {\n <rolatech-account-user-item\n [user]=\"item\"\n [isFollowing]=\"item.isFollowing\"\n (follow)=\"follow(item)\"\n (unfollow)=\"unfollow(item)\"\n [routerLink]=\"'/' + item.username\"\n ></rolatech-account-user-item>\n}\n<!-- @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <rolatech-account-user-item></rolatech-account-user-item>\n} -->\n" }]
114
114
  }], ctorParameters: () => [] });
115
115
 
116
116
  export { HomeComponent };
117
- //# sourceMappingURL=rolatech-angular-account-home.component-Ca7IHVk4.mjs.map
117
+ //# sourceMappingURL=rolatech-angular-account-home.component-B28zyXQ7.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rolatech-angular-account-home.component-Ca7IHVk4.mjs","sources":["../../../../libs/angular-account/src/lib/pages/myaccount/home/home.component.ts","../../../../libs/angular-account/src/lib/pages/myaccount/home/home.component.html"],"sourcesContent":["import { Observable } from 'rxjs';\nimport { Component, effect, inject, OnInit, signal } from '@angular/core';\nimport { AuthUserService } from '@rolatech/angular-auth';\nimport {\n AngularComponentsModule,\n BaseComponent,\n SpinnerComponent,\n TabComponent,\n TabsComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { UserItemComponent } from '../../../components';\nimport { map } from 'lodash';\n\n@Component({\n standalone: true,\n imports: [\n AngularCommonModule,\n AngularComponentsModule,\n SpinnerComponent,\n UserItemComponent,\n TabsComponent,\n TabComponent,\n ToolbarComponent,\n ],\n selector: 'rolatech-account-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.scss'],\n})\nexport class HomeComponent extends BaseComponent implements OnInit {\n user$!: Observable<any>;\n authUserService = inject(AuthUserService);\n users: any = [];\n selectIndex = signal(0);\n friendshipsData: any;\n constructor() {\n super();\n effect(() => {\n const index = this.selectIndex();\n if (index === 0) {\n this.listFollowingByUsername();\n }\n if (index === 1) {\n this.listFollowersByUsername();\n }\n if (index === 2) {\n }\n });\n }\n ngOnInit(): void {\n this.user$ = this.authUserService.me();\n }\n friendships(ids: string[]) {\n //user-ew57mn7wqzs4\n // user-lnerfootihvy\n // ['20672315197100032', '15679392466472960', '156793924664'];\n this.authUserService.friendships(ids).subscribe({\n next: (res) => {\n this.format(res.data);\n this.friendshipsData = res.data;\n },\n });\n }\n stats() {\n this.authUserService.followersStats('pinxiaoke').subscribe({\n next: (res) => {\n console.log(res);\n },\n });\n }\n follow(user: any) {\n //user-ew57mn7wqzs4\n // user-lnerfootihvy\n this.authUserService.follow(user.username).subscribe({\n next: (res) => {\n console.log(res);\n user.isFollowing = true;\n },\n });\n }\n unfollow(user: any) {\n this.authUserService.unfollow(user.username).subscribe({\n next: (res) => {\n user.isFollowing = false;\n console.log(res);\n },\n });\n }\n listFollowingByUsername() {\n this.authUserService.listFollowingByUsername('pinxiaoke').subscribe({\n next: (res) => {\n this.users = map(res.data, 'user');\n const ids = map(res.data, 'user.id');\n this.friendships(ids);\n },\n });\n }\n listFollowersByUsername() {\n this.authUserService.listFollowersByUsername('pinxiaoke').subscribe({\n next: (res) => {\n this.users = map(res.data, 'follower');\n const ids = map(res.data, 'follower.id');\n this.friendships(ids);\n },\n });\n }\n format(friendships: any) {\n this.users.map((item) => {\n item.isFollowing = friendships[item.id].following;\n });\n }\n onClick(event) {\n console.log(event);\n }\n}\n","@if (user$ | async; as user) {\n <div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <!-- <rolatech-spinner></rolatech-spinner> -->\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <div class=\"p-3 mb-3\">\n <div class=\"w-20 h-20 rounded-full bg-orange-600\">\n @if (user.avatar) {\n <img class=\"w-20 h-20 rounded-full object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </div>\n <p class=\"text-3xl\">欢迎回来, {{ user.name }}</p>\n <p class=\"text-md\">用户中心, 方便您维护个人信息, 这会有一个很好的体验</p>\n <!-- <button (click)=\"follow()\">Follow</button>\n <button (click)=\"unfollow()\">UnFollow</button> -->\n <button (click)=\"listFollowingByUsername()\">listFollowingByUsername</button>\n <button (click)=\"listFollowersByUsername()\">List Followers</button>\n <button (click)=\"stats()\">Stats</button>\n\n <!-- <button (click)=\"friendships()\">friendships</button> -->\n </div>\n </div>\n </div>\n}\n<rolatech-toolbar title=\"客户端创建\" subtitle=\"客户端创建的描述\" link=\"/\"></rolatech-toolbar>\n\n<rolatech-tabs [(select)]=\"selectIndex\">\n <rolatech-tab label=\"关注\"></rolatech-tab>\n <rolatech-tab label=\"粉丝\"></rolatech-tab>\n</rolatech-tabs>\n@for (item of users; track $index) {\n <rolatech-account-user-item\n [user]=\"item\"\n [isFollowing]=\"item.isFollowing\"\n (click)=\"onClick($event)\"\n (follow)=\"follow(item)\"\n (unfollow)=\"unfollow(item)\"\n [routerLink]=\"'/' + item.username\"\n ></rolatech-account-user-item>\n}\n<!-- @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <rolatech-account-user-item></rolatech-account-user-item>\n} -->\n"],"names":["i2"],"mappings":"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"}
1
+ {"version":3,"file":"rolatech-angular-account-home.component-B28zyXQ7.mjs","sources":["../../../../libs/angular-account/src/lib/pages/myaccount/home/home.component.ts","../../../../libs/angular-account/src/lib/pages/myaccount/home/home.component.html"],"sourcesContent":["import { Observable } from 'rxjs';\nimport { Component, effect, inject, OnInit, signal } from '@angular/core';\nimport { AuthUserService } from '@rolatech/angular-auth';\nimport {\n AngularComponentsModule,\n BaseComponent,\n SpinnerComponent,\n TabComponent,\n TabsComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { UserItemComponent } from '../../../components';\nimport { map } from 'lodash';\n\n@Component({\n standalone: true,\n imports: [\n AngularCommonModule,\n AngularComponentsModule,\n SpinnerComponent,\n UserItemComponent,\n TabsComponent,\n TabComponent,\n ToolbarComponent,\n ],\n selector: 'rolatech-account-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.scss'],\n})\nexport class HomeComponent extends BaseComponent implements OnInit {\n user$!: Observable<any>;\n authUserService = inject(AuthUserService);\n users: any = [];\n selectIndex = signal(0);\n friendshipsData: any;\n constructor() {\n super();\n effect(() => {\n const index = this.selectIndex();\n if (index === 0) {\n this.listFollowingByUsername();\n }\n if (index === 1) {\n this.listFollowersByUsername();\n }\n if (index === 2) {\n }\n });\n }\n ngOnInit(): void {\n this.user$ = this.authUserService.me();\n }\n friendships(ids: string[]) {\n //user-ew57mn7wqzs4\n // user-lnerfootihvy\n // ['20672315197100032', '15679392466472960', '156793924664'];\n this.authUserService.friendships(ids).subscribe({\n next: (res) => {\n this.format(res.data);\n this.friendshipsData = res.data;\n },\n });\n }\n stats() {\n this.authUserService.followersStats('pinxiaoke').subscribe({\n next: (res) => {\n console.log(res);\n },\n });\n }\n follow(user: any) {\n //user-ew57mn7wqzs4\n // user-lnerfootihvy\n this.authUserService.follow(user.username).subscribe({\n next: (res) => {\n console.log(res);\n user.isFollowing = true;\n },\n });\n }\n unfollow(user: any) {\n this.authUserService.unfollow(user.username).subscribe({\n next: (res) => {\n user.isFollowing = false;\n console.log(res);\n },\n });\n }\n listFollowingByUsername() {\n this.authUserService.listFollowingByUsername('pinxiaoke').subscribe({\n next: (res) => {\n this.users = map(res.data, 'user');\n const ids = map(res.data, 'user.id');\n this.friendships(ids);\n },\n });\n }\n listFollowersByUsername() {\n this.authUserService.listFollowersByUsername('pinxiaoke').subscribe({\n next: (res) => {\n this.users = map(res.data, 'follower');\n const ids = map(res.data, 'follower.id');\n this.friendships(ids);\n },\n });\n }\n format(friendships: any) {\n this.users.map((item) => {\n item.isFollowing = friendships[item.id].following;\n });\n }\n onClick(event) {\n console.log(event);\n }\n}\n","@if (user$ | async; as user) {\n <div class=\"max-w-[1120px] m-auto\">\n <div class=\"max-w-[820px] m-3\">\n <!-- <rolatech-spinner></rolatech-spinner> -->\n <div class=\"flex flex-col justify-center items-center p-3 mb-12\">\n <div class=\"p-3 mb-3\">\n <div class=\"w-20 h-20 rounded-full bg-orange-600\">\n @if (user.avatar) {\n <img class=\"w-20 h-20 rounded-full object-cover\" [src]=\"user.avatar\" />\n }\n </div>\n </div>\n <p class=\"text-3xl\">欢迎回来, {{ user.name }}</p>\n <p class=\"text-md\">用户中心, 方便您维护个人信息, 这会有一个很好的体验</p>\n <!-- <button (click)=\"follow()\">Follow</button>\n <button (click)=\"unfollow()\">UnFollow</button> -->\n <button (click)=\"listFollowingByUsername()\">listFollowingByUsername</button>\n <button (click)=\"listFollowersByUsername()\">List Followers</button>\n <button (click)=\"stats()\">Stats</button>\n\n <!-- <button (click)=\"friendships()\">friendships</button> -->\n </div>\n </div>\n </div>\n}\n<rolatech-toolbar title=\"客户端创建\" subtitle=\"客户端创建的描述\" link=\"/\"></rolatech-toolbar>\n\n<rolatech-tabs [(select)]=\"selectIndex\">\n <rolatech-tab label=\"关注\"></rolatech-tab>\n <rolatech-tab label=\"粉丝\"></rolatech-tab>\n</rolatech-tabs>\n@for (item of users; track $index) {\n <rolatech-account-user-item\n [user]=\"item\"\n [isFollowing]=\"item.isFollowing\"\n (follow)=\"follow(item)\"\n (unfollow)=\"unfollow(item)\"\n [routerLink]=\"'/' + item.username\"\n ></rolatech-account-user-item>\n}\n<!-- @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <rolatech-account-user-item></rolatech-account-user-item>\n} -->\n"],"names":["i2"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { inject, PLATFORM_ID, Component } from '@angular/core';
3
3
  import { AuthService } from '@rolatech/angular-auth';
4
4
  import { APP_CONFIG, AngularCommonModule } from '@rolatech/angular-common';
5
5
  import { BaseComponent, AngularComponentsModule } from '@rolatech/angular-components';
6
- import { W as WeChatLoginService } from './rolatech-angular-account-rolatech-angular-account-KFjjX5Uc.mjs';
6
+ import { W as WeChatLoginService } from './rolatech-angular-account-rolatech-angular-account-P3NArisC.mjs';
7
7
  import '@angular/common';
8
8
  import '@angular/material/snack-bar';
9
9
  import '@angular/router';
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
52
52
  const loginRoutes = [{ path: '', component: LoginWechatComponent }];
53
53
 
54
54
  export { loginRoutes as default };
55
- //# sourceMappingURL=rolatech-angular-account-login.routes-D4UOEl1F.mjs.map
55
+ //# sourceMappingURL=rolatech-angular-account-login.routes-DjxoOzuE.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rolatech-angular-account-login.routes-D4UOEl1F.mjs","sources":["../../../../libs/angular-account/src/lib/components/login/login-wechat/login-wechat.component.ts","../../../../libs/angular-account/src/lib/components/login/login-wechat/login-wechat.component.html","../../../../libs/angular-account/src/lib/components/login/login.routes.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { Component, OnInit, PLATFORM_ID, inject } from '@angular/core';\nimport { AuthService } from '@rolatech/angular-auth';\nimport { APP_CONFIG, AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';\nimport { WeChatLoginService } from '../../../services/wechat-login.service';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule],\n selector: 'rolatech-account-login-wechat',\n templateUrl: './login-wechat.component.html',\n styleUrls: ['./login-wechat.component.scss'],\n})\nexport class LoginWechatComponent extends BaseComponent implements OnInit {\n authService = inject(AuthService);\n environment = inject(APP_CONFIG);\n platformId = inject(PLATFORM_ID);\n wechtLoginService = inject(WeChatLoginService);\n\n ngOnInit(): void {\n this.route.queryParams.subscribe({\n next: (params: any) => {\n this.wechatLogin(params.code, params.state);\n },\n });\n }\n wechatLogin(code: string, state: string) {\n window.parent.postMessage({ code: 23 }, this.environment.accountsUrl);\n\n this.authService.wechatLogin(code, state).subscribe({\n next: (res) => {\n if (res.name) {\n window.parent.postMessage({ code: 200 }, this.environment.accountsUrl);\n }\n // if (isPlatformBrowser(this.platformId) && res.code === 200) {\n // window.parent.postMessage({ code: res.code }, this.environment.myaccountUrl);\n // }\n },\n });\n }\n}\n","<div>loading...</div>\n","import { Routes } from '@angular/router';\nimport { LoginWechatComponent } from './login-wechat/login-wechat.component';\n\nconst loginRoutes: Routes = [{ path: '', component: LoginWechatComponent }];\nexport default loginRoutes;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAcM,MAAO,oBAAqB,SAAQ,aAAa,CAAA;AAPvD,IAAA,WAAA,GAAA;;AAQE,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAuBhD,KAAA;IArBC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,EAAE,CAAC,MAAW,KAAI;gBACpB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;aAC7C;AACF,SAAA,CAAC,CAAC;KACJ;IACD,WAAW,CAAC,IAAY,EAAE,KAAa,EAAA;AACrC,QAAA,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEtE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC;AAClD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,GAAG,CAAC,IAAI,EAAE;AACZ,oBAAA,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;iBACxE;;;;aAIF;AACF,SAAA,CAAC,CAAC;KACJ;8GA1BU,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,ECdjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,yBACA,EDQY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,8BAAE,uBAAuB,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAK3C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,WACP,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,YAC7C,+BAA+B,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA;;;AEP3C,MAAM,WAAW,GAAW,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE;;;;"}
1
+ {"version":3,"file":"rolatech-angular-account-login.routes-DjxoOzuE.mjs","sources":["../../../../libs/angular-account/src/lib/components/login/login-wechat/login-wechat.component.ts","../../../../libs/angular-account/src/lib/components/login/login-wechat/login-wechat.component.html","../../../../libs/angular-account/src/lib/components/login/login.routes.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { Component, OnInit, PLATFORM_ID, inject } from '@angular/core';\nimport { AuthService } from '@rolatech/angular-auth';\nimport { APP_CONFIG, AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';\nimport { WeChatLoginService } from '../../../services/wechat-login.service';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule],\n selector: 'rolatech-account-login-wechat',\n templateUrl: './login-wechat.component.html',\n styleUrls: ['./login-wechat.component.scss'],\n})\nexport class LoginWechatComponent extends BaseComponent implements OnInit {\n authService = inject(AuthService);\n environment = inject(APP_CONFIG);\n platformId = inject(PLATFORM_ID);\n wechtLoginService = inject(WeChatLoginService);\n\n ngOnInit(): void {\n this.route.queryParams.subscribe({\n next: (params: any) => {\n this.wechatLogin(params.code, params.state);\n },\n });\n }\n wechatLogin(code: string, state: string) {\n window.parent.postMessage({ code: 23 }, this.environment.accountsUrl);\n\n this.authService.wechatLogin(code, state).subscribe({\n next: (res) => {\n if (res.name) {\n window.parent.postMessage({ code: 200 }, this.environment.accountsUrl);\n }\n // if (isPlatformBrowser(this.platformId) && res.code === 200) {\n // window.parent.postMessage({ code: res.code }, this.environment.myaccountUrl);\n // }\n },\n });\n }\n}\n","<div>loading...</div>\n","import { Routes } from '@angular/router';\nimport { LoginWechatComponent } from './login-wechat/login-wechat.component';\n\nconst loginRoutes: Routes = [{ path: '', component: LoginWechatComponent }];\nexport default loginRoutes;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAcM,MAAO,oBAAqB,SAAQ,aAAa,CAAA;AAPvD,IAAA,WAAA,GAAA;;AAQE,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAuBhD,KAAA;IArBC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,EAAE,CAAC,MAAW,KAAI;gBACpB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;aAC7C;AACF,SAAA,CAAC,CAAC;KACJ;IACD,WAAW,CAAC,IAAY,EAAE,KAAa,EAAA;AACrC,QAAA,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEtE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC;AAClD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,GAAG,CAAC,IAAI,EAAE;AACZ,oBAAA,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;iBACxE;;;;aAIF;AACF,SAAA,CAAC,CAAC;KACJ;8GA1BU,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,ECdjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,yBACA,EDQY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,8BAAE,uBAAuB,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAK3C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,WACP,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,YAC7C,+BAA+B,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA;;;AEP3C,MAAM,WAAW,GAAW,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE;;;;"}
@@ -21,6 +21,7 @@ class UserItemComponent {
21
21
  this.isFollowing = input(true);
22
22
  this.follow = output();
23
23
  this.unfollow = output();
24
+ this.own = input();
24
25
  }
25
26
  onFollow() {
26
27
  this.follow.emit(this.user().username);
@@ -29,11 +30,11 @@ class UserItemComponent {
29
30
  this.unfollow.emit(this.user().username);
30
31
  }
31
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: UserItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: UserItemComponent, isStandalone: true, selector: "rolatech-account-user-item", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, isFollowing: { classPropertyName: "isFollowing", publicName: "isFollowing", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { follow: "follow", unfollow: "unfollow" }, host: { properties: { "class.rolatech-account-user-item": "this.hasClass" } }, ngImport: i0, template: "<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (isFollowing()) {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-gray-300 rounded-md cursor-pointer\"\n (click)=\"onUnFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u53D6\u6D88\u5173\u6CE8</span>\n </a>\n </div>\n } @else {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-orange-600 text-white rounded-md cursor-pointer\"\n (click)=\"onFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u5173\u6CE8</span>\n </a>\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: UserItemComponent, isStandalone: true, selector: "rolatech-account-user-item", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, isFollowing: { classPropertyName: "isFollowing", publicName: "isFollowing", isSignal: true, isRequired: false, transformFunction: null }, own: { classPropertyName: "own", publicName: "own", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { follow: "follow", unfollow: "unfollow" }, host: { properties: { "class.rolatech-account-user-item": "this.hasClass" } }, ngImport: i0, template: "<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (!own()) {\n @if (isFollowing()) {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-gray-300 rounded-md cursor-pointer\"\n (click)=\"onUnFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u53D6\u6D88\u5173\u6CE8</span>\n </a>\n </div>\n } @else {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-orange-600 text-white rounded-md cursor-pointer\"\n (click)=\"onFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u5173\u6CE8</span>\n </a>\n </div>\n }\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None }); }
33
34
  }
34
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: UserItemComponent, decorators: [{
35
36
  type: Component,
36
- args: [{ selector: 'rolatech-account-user-item', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (isFollowing()) {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-gray-300 rounded-md cursor-pointer\"\n (click)=\"onUnFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u53D6\u6D88\u5173\u6CE8</span>\n </a>\n </div>\n } @else {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-orange-600 text-white rounded-md cursor-pointer\"\n (click)=\"onFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u5173\u6CE8</span>\n </a>\n </div>\n }\n</div>\n" }]
37
+ args: [{ selector: 'rolatech-account-user-item', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (!own()) {\n @if (isFollowing()) {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-gray-300 rounded-md cursor-pointer\"\n (click)=\"onUnFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u53D6\u6D88\u5173\u6CE8</span>\n </a>\n </div>\n } @else {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-orange-600 text-white rounded-md cursor-pointer\"\n (click)=\"onFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>\u5173\u6CE8</span>\n </a>\n </div>\n }\n }\n</div>\n" }]
37
38
  }], propDecorators: { hasClass: [{
38
39
  type: HostBinding,
39
40
  args: ['class.rolatech-account-user-item']
@@ -351,7 +352,7 @@ const accountRoutes = [
351
352
  { path: 'signin', canActivate: [AuthGuard], component: SigninComponent, data: { title: 'Signin' } },
352
353
  { path: 'signup', component: SignupComponent, data: { title: 'Signup' } },
353
354
  { path: 'logout', component: LogoutComponent },
354
- { path: 'login', loadChildren: () => import('./rolatech-angular-account-login.routes-D4UOEl1F.mjs') },
355
+ { path: 'login', loadChildren: () => import('./rolatech-angular-account-login.routes-DjxoOzuE.mjs') },
355
356
  {
356
357
  path: 'passwordreset/:token',
357
358
  component: PasswordresetComponent,
@@ -375,7 +376,7 @@ const accountRoutes = [
375
376
  const myaccountRoutes = [
376
377
  {
377
378
  path: '',
378
- loadComponent: () => import('./rolatech-angular-account-home.component-Ca7IHVk4.mjs').then((c) => c.HomeComponent),
379
+ loadComponent: () => import('./rolatech-angular-account-home.component-B28zyXQ7.mjs').then((c) => c.HomeComponent),
379
380
  data: { title: '首页' },
380
381
  },
381
382
  {
@@ -425,4 +426,4 @@ function provideAngularAuthRoutes() {
425
426
  */
426
427
 
427
428
  export { TopbarLoginComponent as T, UserItemComponent as U, WeChatLoginService as W, accountRoutes as a, myaccountRoutes as m, provideAngularAuthRoutes as p };
428
- //# sourceMappingURL=rolatech-angular-account-rolatech-angular-account-KFjjX5Uc.mjs.map
429
+ //# sourceMappingURL=rolatech-angular-account-rolatech-angular-account-P3NArisC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolatech-angular-account-rolatech-angular-account-P3NArisC.mjs","sources":["../../../../libs/angular-account/src/lib/components/user-item/user-item.component.ts","../../../../libs/angular-account/src/lib/components/user-item/user-item.component.html","../../../../libs/angular-account/src/lib/components/topbar-login/topbar-login.component.ts","../../../../libs/angular-account/src/lib/components/topbar-login/topbar-login.component.html","../../../../libs/angular-account/src/lib/components/forgot-password/forgot-password.component.ts","../../../../libs/angular-account/src/lib/components/forgot-password/forgot-password.component.html","../../../../libs/angular-account/src/lib/components/logout/logout.component.ts","../../../../libs/angular-account/src/lib/components/logout/logout.component.html","../../../../libs/angular-account/src/lib/components/passwordreset/passwordreset.component.ts","../../../../libs/angular-account/src/lib/components/passwordreset/passwordreset.component.html","../../../../libs/angular-account/src/lib/services/wechat-login.service.ts","../../../../libs/angular-account/src/lib/pages/accounts/signin/signin.component.ts","../../../../libs/angular-account/src/lib/pages/accounts/signin/signin.component.html","../../../../libs/angular-account/src/lib/pages/accounts/signup/signup.component.ts","../../../../libs/angular-account/src/lib/pages/accounts/signup/signup.component.html","../../../../libs/angular-account/src/lib/account.routes.ts","../../../../libs/angular-account/src/lib/myaccount.routes.ts","../../../../libs/angular-account/src/provider.ts","../../../../libs/angular-account/src/rolatech-angular-account.ts"],"sourcesContent":["import { Component, HostBinding, ViewEncapsulation, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-account-user-item',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './user-item.component.html',\n styleUrl: './user-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserItemComponent {\n @HostBinding('class.rolatech-account-user-item') hasClass = true;\n user = input<any>();\n isFollowing = input(true);\n follow = output<string>();\n unfollow = output();\n own = input();\n onFollow() {\n this.follow.emit(this.user().username);\n }\n onUnFollow() {\n this.unfollow.emit(this.user().username);\n }\n}\n","<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (!own()) {\n @if (isFollowing()) {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-gray-300 rounded-md cursor-pointer\"\n (click)=\"onUnFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>取消关注</span>\n </a>\n </div>\n } @else {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-orange-600 text-white rounded-md cursor-pointer\"\n (click)=\"onFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>关注</span>\n </a>\n </div>\n }\n }\n</div>\n","import { Component, OnInit, PLATFORM_ID, inject, input } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { APP_CONFIG } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-account-topbar-login',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './topbar-login.component.html',\n styleUrl: './topbar-login.component.scss',\n})\nexport class TopbarLoginComponent implements OnInit {\n environment = inject(APP_CONFIG);\n platformId = inject(PLATFORM_ID);\n service = input('www');\n signinUrl = '';\n signupUrl = this.environment.accountsUrl + '/signup';\n logoutUrl = this.environment.accountsUrl + `/logout?service=${this.service()}`;\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.signinUrl = `${this.environment.accountsUrl}/signin?continue=` + window.location.href;\n this.logoutUrl = this.environment.accountsUrl + `/logout?service=${this.service()}&continue=` + window.location.origin;\n }\n }\n}\n","<div class=\"flex\">\n <a class=\"inline-block sm:border border-black py-2 px-5 mr-2 cursor-pointer rounded-md\" [href]=\"signinUrl\"\n ><span>登录</span></a\n >\n <a class=\"inline-block sm:border border-white py-2 px-5 text-white bg-orange-600 cursor-pointer rounded-md\" [href]=\"signupUrl\"\n ><span>注册</span></a\n >\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'rolatech-account-forgot-password',\n templateUrl: './forgot-password.component.html',\n styleUrls: ['./forgot-password.component.scss'],\n standalone: true,\n})\nexport class ForgotPasswordComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>forgot-password works!</p>\n","import { isPlatformBrowser } from '@angular/common';\nimport { Component, inject, OnInit, PLATFORM_ID } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AuthService } from '@rolatech/angular-auth';\nimport { APP_CONFIG, AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { map, take } from 'rxjs';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule],\n selector: 'rolatech-account-logout',\n templateUrl: './logout.component.html',\n styleUrls: ['./logout.component.scss'],\n})\nexport class LogoutComponent implements OnInit {\n service = '';\n continue = '';\n environment = inject(APP_CONFIG);\n platformId = inject(PLATFORM_ID);\n route = inject(ActivatedRoute);\n router = inject(Router);\n authService = inject(AuthService);\n snackBar = inject(MatSnackBar);\n\n ngOnInit(): void {\n this.service = this.route.snapshot.queryParams['service'] || 'www';\n this.continue = this.route.snapshot.queryParams['continue'] || '/';\n if (isPlatformBrowser(this.platformId)) {\n this.logout();\n }\n }\n logout() {\n this.authService.logout().subscribe({\n next: (res) => {\n this.router.navigate(['/signin'], {\n queryParams: { continue: this.continue },\n });\n },\n error: (error) => {\n this.snackBar.open(error.message);\n },\n });\n }\n}\n","<p>Please waiting...</p>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'rolatech-account-passwordreset',\n templateUrl: './passwordreset.component.html',\n styleUrls: ['./passwordreset.component.scss'],\n standalone: true,\n})\nexport class PasswordresetComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>passwordreset works!</p>\n","import { Injectable, output } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WeChatLoginService {\n onWeChatLogin = output<any>();\n\n constructor() {}\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Component, effect, HostListener, inject, OnInit, PLATFORM_ID, signal } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { MatTabChangeEvent } from '@angular/material/tabs';\nimport { SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';\nimport { AngularCommonModule, APP_CONFIG } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent, TabComponent, TabsComponent } from '@rolatech/angular-components';\nimport { AuthService, AuthUserService } from '@rolatech/angular-auth';\nimport { WeChatLoginService } from '../../../services/wechat-login.service';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, TabsComponent, TabComponent],\n selector: 'rolatech-account-auth-signin',\n templateUrl: './signin.component.html',\n styleUrls: ['./signin.component.scss'],\n})\nexport class SigninComponent extends BaseComponent implements OnInit {\n passrodForm!: FormGroup;\n codeForm!: FormGroup;\n continue = '';\n environment = inject(APP_CONFIG);\n platformId = inject(PLATFORM_ID);\n formBuilder = inject(FormBuilder);\n authService = inject(AuthService);\n authUserService = inject(AuthUserService);\n wechtLoginService = inject(WeChatLoginService);\n sanitizer = inject(DomSanitizer);\n tabIndex = signal(0);\n countDown = false;\n countDownTime = 60;\n showButtonText = '发送验证码';\n appid = 'wx567acbea73439828';\n state = 'add';\n urlSafe: SafeResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl('');\n baseUrl = 'https://open.weixin.qq.com/connect/qrconnect';\n\n @HostListener('window:message', ['$event'])\n onLogin(event: any): void {\n if (event.origin !== window.location.origin || /react-devtools/gi.test(event.data.source)) {\n return;\n }\n if (event.origin === this.environment.accountsUrl && event.data.code === 200) {\n window.location.href = this.continue === this.environment.accountsUrl ? this.environment.myaccountUrl : this.continue;\n }\n }\n constructor() {\n super();\n effect(() => {\n const index = this.tabIndex();\n if (index === 0) {\n this.codeForm.reset();\n }\n if (index === 1) {\n this.passrodForm.reset();\n }\n if (index === 2) {\n this.codeForm.reset();\n this.passrodForm.reset();\n this.wechat();\n }\n });\n }\n ngOnInit(): void {\n this.titleService.setTitle('账号登录 - 拼小课');\n this.passrodForm = this.formBuilder.group({\n account: [null, Validators.required],\n password: [null, Validators.required],\n });\n this.codeForm = this.formBuilder.group({\n phone: [null, [Validators.required, Validators.pattern('1(3|4|5|6|7|8|9)\\\\d{9}')]],\n code: [null, Validators.required],\n });\n this.continue = this.route.snapshot.queryParams['continue'] || '/';\n }\n get form() {\n return this.tabIndex() === 0 ? this.passrodForm.controls : this.codeForm.controls;\n }\n sendSMSCode() {\n const phoneControl = this.codeForm.get('phone');\n if (!phoneControl?.valid) {\n return;\n }\n const phone = phoneControl.value;\n this.countDown = true;\n const start = setInterval(() => {\n if (this.countDownTime >= 0) {\n this.showButtonText = `${this.countDownTime--}秒重发`;\n } else {\n clearInterval(start);\n this.showButtonText = '重新发送';\n this.countDown = false;\n this.countDownTime = 60;\n }\n }, 1000);\n\n this.authUserService.sendSMSCode('+86', phone).subscribe({\n next: (res) => {\n this.snackBarService.open('发送成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n login() {\n let data = {};\n if (this.tabIndex() === 0) {\n if (!this.passrodForm.valid) {\n return;\n }\n data = {\n account: this.form['account'].value,\n password: this.form['password'].value,\n };\n }\n if (this.tabIndex() === 1) {\n if (!this.codeForm.valid) {\n return;\n }\n data = {\n phone: this.form['phone'].value,\n code: this.form['code'].value,\n };\n }\n\n this.authService.login(data).subscribe({\n next: () => {\n if (isPlatformBrowser(this.platformId)) {\n window.location.href = this.continue === this.environment.accountsUrl ? this.environment.myaccountUrl : this.continue;\n }\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n wechat() {\n const redirectUri = 'https://accounts.pinxiaoke.cn/login?continue';\n // const redirectUri = `${window.location.origin}/login?continue`;\n const href = 'https://cloudcache.tencent-cloud.com/open_proj/proj_qcloud_v2/gateway/login-regist/css/link-wx-login.css';\n const encodedURI = encodeURI(redirectUri);\n const src = `${this.baseUrl}?appid=${this.appid}&response_type=code&self_redirect=true&scope=snsapi_login&href=${href}&redirect_uri=${encodedURI}&state=${this.state}#wechat_redirect`;\n this.urlSafe = this.sanitizer.bypassSecurityTrustResourceUrl(src);\n }\n}\n","<div class=\"h-full flex flex-col items-center sm:justify-center sm:bg-gray-100\">\n <div\n class=\"w-full p-6 lg:p-11 rounded-xl bg-white flex flex-col lg:flex-row justify-between xl:w-[800px] lg:w-[600px] sm:w-[600px]\"\n >\n <!-- header -->\n <div class=\"flex flex-col py-6\">\n <div class=\"text-3xl font-medium mb-3 ml-2\">登录</div>\n <div class=\"text-md ml-2\">使用拼小课账号登录</div>\n </div>\n <div>\n <rolatech-tabs [(select)]=\"tabIndex\">\n <rolatech-tab label=\"账号密码\"></rolatech-tab>\n <rolatech-tab label=\"短信验证码\"></rolatech-tab>\n <rolatech-tab label=\"微信扫码\"></rolatech-tab>\n </rolatech-tabs>\n <!-- content -->\n <div class=\"pt-6 min-w-[190px] min-h-[214px]\">\n @if (tabIndex() === 0) {\n <form [formGroup]=\"passrodForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 用户名/手机号 </mat-label>\n <input matInput formControlName=\"account\" required />\n @if (passrodForm.controls['account'].touched && passrodForm.controls['account'].invalid) {\n <mat-error>\n @if (passrodForm.controls['account'].errors?.['required']) {\n <span>用户名必填</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 密码 </mat-label>\n <input autocomplete matInput formControlName=\"password\" type=\"password\" />\n @if (passrodForm.controls['password'].touched && passrodForm.controls['password'].invalid) {\n <mat-error>\n @if (passrodForm.controls['password'].errors?.['required']) {\n <span>请输入密码</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n }\n @if (tabIndex() === 1) {\n <form [formGroup]=\"codeForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 手机号 </mat-label>\n <input autocomplete matInput formControlName=\"phone\" required />\n @if (codeForm.controls['phone'].touched && codeForm.controls['phone'].invalid) {\n <mat-error>\n @if (codeForm.controls['phone'].errors?.['required']) {\n <span> 手机号必填</span>\n }\n @if (codeForm.controls['phone'].errors?.['pattern']) {\n <span> 手机号格式错误 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex justify-between items-start\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 验证码 </mat-label>\n <input matInput formControlName=\"code\" type=\"text\" required />\n @if (codeForm.controls['code'].touched && codeForm.controls['code'].invalid) {\n <mat-error>\n @if (codeForm.controls['code'].errors?.['required']) {\n <span> 请输入验证码 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <button\n (click)=\"sendSMSCode()\"\n [disabled]=\"countDown\"\n [ngClass]=\"countDown ? 'bg-orange-300' : 'bg-orange-600 shadow shadow-gray-300 cursor-pointer'\"\n class=\"max-w-[128px] p-3 mt-2 text-white rounded text-center\"\n >\n <span>{{ showButtonText }}</span>\n </button>\n </div>\n </form>\n }\n @if (tabIndex() === 2) {\n <div class=\"w-[190px] h-[190px] mx-auto\">\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\" #iframe></iframe>\n <div></div>\n </div>\n }\n </div>\n <!-- actions -->\n <div class=\"flex justify-between items-center py-2 pl-2\">\n <a class=\"underline underline-offset-4\" href=\"signup\">创建账号</a>\n <div\n (click)=\"login()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>登录</span>\n </div>\n </div>\n </div>\n\n <!-- 3-part -->\n <!-- <div class=\"flex flex-col justify-center items-center mt-6\">\n <div class=\"flex items-center\">\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n <span class=\"px-3\">第三方登录</span>\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n </div>\n <div class=\"mt-3 flex items-center hover:shadow hover:shadow-gray-400 cursor-pointer p-3\">\n <img class=\"w-4 h-4\" src=\"assets/images/icon64_appwx_logo.png\" />\n <span class=\"ml-1\">微信</span>\n </div>\n </div> -->\n </div>\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { AngularCommonModule, APP_CONFIG, WINDOW } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';\nimport { AuthUserService } from '@rolatech/angular-auth';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule],\n selector: 'rolatech-account-signup',\n templateUrl: './signup.component.html',\n styleUrls: ['./signup.component.scss'],\n})\nexport class SignupComponent extends BaseComponent implements OnInit {\n signupForm!: FormGroup;\n continue = '/';\n authUserService = inject(AuthUserService);\n formBuilder = inject(FormBuilder);\n environment = inject(APP_CONFIG);\n window = inject(WINDOW);\n countDown = false;\n countDownTime = 60;\n showButtonText = '发送验证码';\n\n ngOnInit(): void {\n this.titleService.setTitle('账号注册 - 拼小课');\n this.signupForm = this.formBuilder.group({\n name: [null, Validators.required],\n phone: [null, [Validators.required, Validators.pattern('1(3|4|5|6|7|8|9)\\\\d{9}')]],\n code: [null, Validators.required],\n password: [null, Validators.required],\n rePassword: [null, Validators.required],\n });\n this.continue = this.route.snapshot.queryParams['continue'] || '/';\n }\n sendSMSCode() {\n const phoneControl = this.signupForm.get('phone');\n if (!phoneControl?.valid) {\n return;\n }\n const phone = phoneControl.value;\n this.countDown = true;\n const start = setInterval(() => {\n if (this.countDownTime >= 0) {\n this.showButtonText = `${this.countDownTime--}秒重发`;\n } else {\n clearInterval(start);\n this.showButtonText = '重新发送';\n this.countDown = false;\n this.countDownTime = 60;\n }\n }, 1000);\n this.authUserService.sendSMSCode('+86', phone).subscribe({\n next: (res) => {\n this.snackBarService.open('发送成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n submit() {\n if (!this.signupForm.valid) {\n return;\n }\n const data = {};\n this.authUserService.signup(this.signupForm.value).subscribe({\n next: (res) => {\n this.window.location.href = this.continue ? this.continue : this.environment.myaccountUrl;\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n}\n","<div class=\"h-full flex flex-col md:justify-center items-center\">\n <div class=\"md:shadow-md p-8 rounded-md\">\n <div class=\"text-2xl pl-2 pb-6\">注册</div>\n <form [formGroup]=\"signupForm\" (submit)=\"submit()\">\n <!-- name -->\n <mat-form-field appearance=\"fill\">\n <mat-label> 姓名 </mat-label>\n <input matInput formControlName=\"name\" required />\n @if (signupForm.controls['name'].touched && signupForm.controls['name'].invalid) {\n <mat-error>\n @if (signupForm.controls['name'].errors?.['required']) {\n <span>姓名必填</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <!-- phone -->\n <mat-form-field appearance=\"fill\">\n <mat-label> 手机号 </mat-label>\n <input matInput formControlName=\"phone\" required />\n @if (signupForm.controls['phone'].touched && signupForm.controls['phone'].invalid) {\n <mat-error>\n @if (signupForm.controls['phone'].errors?.['required']) {\n <span>手机号必填</span>\n }\n @if (signupForm.controls['phone'].errors?.['pattern']) {\n <span> 手机号格式错误 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <!-- phone code -->\n <div class=\"flex justify-between items-start gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 验证码 </mat-label>\n <input matInput formControlName=\"code\" required />\n @if (signupForm.controls['code'].touched && signupForm.controls['code'].invalid) {\n <mat-error>\n @if (signupForm.controls['code'].errors?.['required']) {\n <span>验证码必填</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div\n (click)=\"sendSMSCode()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 mt-2 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>发送验证码</span>\n </div>\n </div>\n\n <!-- password -->\n <mat-form-field appearance=\"fill\">\n <mat-label> 密码 </mat-label>\n <input matInput formControlName=\"password\" type=\"password\" autocomplete=\"password\" />\n @if (signupForm.controls['password'].touched && signupForm.controls['password'].invalid) {\n <mat-error>\n @if (signupForm.controls['password'].errors?.['required']) {\n <span>请输入密码</span>\n }\n </mat-error>\n }\n </mat-form-field>\n\n <!-- password confirm -->\n <mat-form-field appearance=\"fill\">\n <mat-label> 确认密码 </mat-label>\n <input matInput formControlName=\"rePassword\" type=\"password\" autocomplete=\"rePassword\" />\n @if (signupForm.controls['rePassword'].touched && signupForm.controls['rePassword'].invalid) {\n <mat-error>\n @if (signupForm.controls['rePassword'].errors?.['required']) {\n <span>请确认密码</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n <div class=\"flex justify-between items-center px-3\">\n <a mat-button href=\"/signin\">登录</a>\n <div\n (click)=\"submit()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>注册</span>\n </div>\n </div>\n </div>\n</div>\n","import { Routes } from '@angular/router';\nimport { AuthGuard, ForbiddenComponent, UnauthorizedComponent } from '@rolatech/angular-auth';\nimport { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';\nimport { LogoutComponent } from './components/logout/logout.component';\nimport { PasswordresetComponent } from './components/passwordreset/passwordreset.component';\nimport { SigninComponent } from './pages/accounts/signin/signin.component';\nimport { SignupComponent } from './pages/accounts/signup/signup.component';\n\nexport const accountRoutes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'signin',\n },\n { path: 'signin', canActivate: [AuthGuard], component: SigninComponent, data: { title: 'Signin' } },\n { path: 'signup', component: SignupComponent, data: { title: 'Signup' } },\n { path: 'logout', component: LogoutComponent },\n { path: 'login', loadChildren: () => import('./components/login/login.routes') },\n {\n path: 'passwordreset/:token',\n component: PasswordresetComponent,\n data: { title: 'Password Reset' },\n },\n {\n path: 'forgot',\n component: ForgotPasswordComponent,\n data: { title: 'Forgot Password' },\n },\n {\n path: 'unauthorized',\n component: UnauthorizedComponent,\n },\n {\n path: 'forbidden',\n component: ForbiddenComponent,\n },\n];\n","import { Routes } from '@angular/router';\n\nexport const myaccountRoutes: Routes = [\n {\n path: '',\n loadComponent: () => import('./pages/myaccount/home/home.component').then((c) => c.HomeComponent),\n data: { title: '首页' },\n },\n {\n path: 'personal-info',\n loadComponent: () => import('./pages/myaccount/personal-info/info.component').then((c) => c.InfoComponent),\n },\n {\n path: 'profile',\n loadComponent: () => import('./pages/myaccount/personal-info/profile/profile.component').then((c) => c.ProfileComponent),\n },\n {\n path: 'username',\n loadComponent: () => import('./pages/myaccount/personal-info/username/username.component').then((c) => c.UsernameComponent),\n },\n { path: 'gender', loadComponent: () => import('./pages/myaccount/gender/gender.component').then((c) => c.GenderComponent) },\n { path: 'email', loadComponent: () => import('./pages/myaccount/email/email.component').then((c) => c.EmailComponent) },\n {\n path: 'email-verification/:id',\n loadComponent: () =>\n import('./pages/myaccount/email-verification/email-verification.component').then((c) => c.EmailVerificationComponent),\n },\n { path: 'phone', loadComponent: () => import('./pages/myaccount/phone/phone.component').then((c) => c.PhoneComponent) },\n {\n path: 'security',\n loadChildren: () => import('./pages/myaccount/security/security.routes'),\n data: { title: 'Security' },\n },\n {\n path: 'notifications',\n loadChildren: () => import('@rolatech/angular-notification').then((m) => m.notificationRoutes),\n data: { title: '通知中心' },\n },\n];\n","import { EnvironmentProviders, Provider, makeEnvironmentProviders } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport { accountRoutes } from './lib/account.routes';\n\nexport function provideAngularAuthRoutes(): EnvironmentProviders {\n const provider: Provider[] = [\n {\n provide: ROUTES,\n useValue: accountRoutes,\n multi: true,\n },\n ];\n return makeEnvironmentProviders(provider);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { T as TopbarLoginComponent, U as UserItemComponent, a as accountRoutes, m as myaccountRoutes, p as provideAngularAuthRoutes } from './rolatech-angular-account-rolatech-angular-account-KFjjX5Uc.mjs';
1
+ export { T as TopbarLoginComponent, U as UserItemComponent, a as accountRoutes, m as myaccountRoutes, p as provideAngularAuthRoutes } from './rolatech-angular-account-rolatech-angular-account-P3NArisC.mjs';
2
2
  import '@angular/core';
3
3
  import '@angular/common';
4
4
  import '@rolatech/angular-common';
@@ -5,8 +5,9 @@ export declare class UserItemComponent {
5
5
  isFollowing: import("@angular/core").InputSignal<boolean>;
6
6
  follow: import("@angular/core").OutputEmitterRef<string>;
7
7
  unfollow: import("@angular/core").OutputEmitterRef<void>;
8
+ own: import("@angular/core").InputSignal<unknown>;
8
9
  onFollow(): void;
9
10
  onUnFollow(): void;
10
11
  static ɵfac: i0.ɵɵFactoryDeclaration<UserItemComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<UserItemComponent, "rolatech-account-user-item", never, { "user": { "alias": "user"; "required": false; "isSignal": true; }; "isFollowing": { "alias": "isFollowing"; "required": false; "isSignal": true; }; }, { "follow": "follow"; "unfollow": "unfollow"; }, never, never, true, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<UserItemComponent, "rolatech-account-user-item", never, { "user": { "alias": "user"; "required": false; "isSignal": true; }; "isFollowing": { "alias": "isFollowing"; "required": false; "isSignal": true; }; "own": { "alias": "own"; "required": false; "isSignal": true; }; }, { "follow": "follow"; "unfollow": "unfollow"; }, never, never, true, never>;
12
13
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolatech/angular-account",
3
- "version": "17.2.3",
3
+ "version": "17.2.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.2.0",
6
6
  "@angular/core": "^17.2.0"
@@ -1 +0,0 @@
1
- {"version":3,"file":"rolatech-angular-account-rolatech-angular-account-KFjjX5Uc.mjs","sources":["../../../../libs/angular-account/src/lib/components/user-item/user-item.component.ts","../../../../libs/angular-account/src/lib/components/user-item/user-item.component.html","../../../../libs/angular-account/src/lib/components/topbar-login/topbar-login.component.ts","../../../../libs/angular-account/src/lib/components/topbar-login/topbar-login.component.html","../../../../libs/angular-account/src/lib/components/forgot-password/forgot-password.component.ts","../../../../libs/angular-account/src/lib/components/forgot-password/forgot-password.component.html","../../../../libs/angular-account/src/lib/components/logout/logout.component.ts","../../../../libs/angular-account/src/lib/components/logout/logout.component.html","../../../../libs/angular-account/src/lib/components/passwordreset/passwordreset.component.ts","../../../../libs/angular-account/src/lib/components/passwordreset/passwordreset.component.html","../../../../libs/angular-account/src/lib/services/wechat-login.service.ts","../../../../libs/angular-account/src/lib/pages/accounts/signin/signin.component.ts","../../../../libs/angular-account/src/lib/pages/accounts/signin/signin.component.html","../../../../libs/angular-account/src/lib/pages/accounts/signup/signup.component.ts","../../../../libs/angular-account/src/lib/pages/accounts/signup/signup.component.html","../../../../libs/angular-account/src/lib/account.routes.ts","../../../../libs/angular-account/src/lib/myaccount.routes.ts","../../../../libs/angular-account/src/provider.ts","../../../../libs/angular-account/src/rolatech-angular-account.ts"],"sourcesContent":["import { Component, HostBinding, ViewEncapsulation, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-account-user-item',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './user-item.component.html',\n styleUrl: './user-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserItemComponent {\n @HostBinding('class.rolatech-account-user-item') hasClass = true;\n user = input<any>();\n isFollowing = input(true);\n follow = output<string>();\n unfollow = output();\n onFollow() {\n this.follow.emit(this.user().username);\n }\n onUnFollow() {\n this.unfollow.emit(this.user().username);\n }\n}\n","<div class=\"flex w-full justify-between items-center p-2 hover:bg-gray-100 cursor-pointer\">\n <div class=\"flex items-center\">\n <div class=\"bg-orange-600 w-12 h-12 rounded-full\">\n @if (user().avatar) {\n <img class=\"w-12 h-12 object-cover rounded-full\" [src]=\"user().avatar\" />\n }\n </div>\n <div class=\"flex flex-col ml-3\">\n <a class=\"text-lg font-bold\">\n <span>{{ user().name }}</span>\n </a>\n <a class=\"text-md\">\n <span>{{ user().username }}</span>\n </a>\n </div>\n </div>\n @if (isFollowing()) {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-gray-300 rounded-md cursor-pointer\"\n (click)=\"onUnFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>取消关注</span>\n </a>\n </div>\n } @else {\n <div\n class=\"w-[100px] py-1 flex items-center justify-center bg-orange-600 text-white rounded-md cursor-pointer\"\n (click)=\"onFollow(); $event.stopPropagation()\"\n >\n <a>\n <span>关注</span>\n </a>\n </div>\n }\n</div>\n","import { Component, OnInit, PLATFORM_ID, inject, input } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { APP_CONFIG } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-account-topbar-login',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './topbar-login.component.html',\n styleUrl: './topbar-login.component.scss',\n})\nexport class TopbarLoginComponent implements OnInit {\n environment = inject(APP_CONFIG);\n platformId = inject(PLATFORM_ID);\n service = input('www');\n signinUrl = '';\n signupUrl = this.environment.accountsUrl + '/signup';\n logoutUrl = this.environment.accountsUrl + `/logout?service=${this.service()}`;\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.signinUrl = `${this.environment.accountsUrl}/signin?continue=` + window.location.href;\n this.logoutUrl = this.environment.accountsUrl + `/logout?service=${this.service()}&continue=` + window.location.origin;\n }\n }\n}\n","<div class=\"flex\">\n <a class=\"inline-block sm:border border-black py-2 px-5 mr-2 cursor-pointer rounded-md\" [href]=\"signinUrl\"\n ><span>登录</span></a\n >\n <a class=\"inline-block sm:border border-white py-2 px-5 text-white bg-orange-600 cursor-pointer rounded-md\" [href]=\"signupUrl\"\n ><span>注册</span></a\n >\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'rolatech-account-forgot-password',\n templateUrl: './forgot-password.component.html',\n styleUrls: ['./forgot-password.component.scss'],\n standalone: true,\n})\nexport class ForgotPasswordComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>forgot-password works!</p>\n","import { isPlatformBrowser } from '@angular/common';\nimport { Component, inject, OnInit, PLATFORM_ID } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AuthService } from '@rolatech/angular-auth';\nimport { APP_CONFIG, AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { map, take } from 'rxjs';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule],\n selector: 'rolatech-account-logout',\n templateUrl: './logout.component.html',\n styleUrls: ['./logout.component.scss'],\n})\nexport class LogoutComponent implements OnInit {\n service = '';\n continue = '';\n environment = inject(APP_CONFIG);\n platformId = inject(PLATFORM_ID);\n route = inject(ActivatedRoute);\n router = inject(Router);\n authService = inject(AuthService);\n snackBar = inject(MatSnackBar);\n\n ngOnInit(): void {\n this.service = this.route.snapshot.queryParams['service'] || 'www';\n this.continue = this.route.snapshot.queryParams['continue'] || '/';\n if (isPlatformBrowser(this.platformId)) {\n this.logout();\n }\n }\n logout() {\n this.authService.logout().subscribe({\n next: (res) => {\n this.router.navigate(['/signin'], {\n queryParams: { continue: this.continue },\n });\n },\n error: (error) => {\n this.snackBar.open(error.message);\n },\n });\n }\n}\n","<p>Please waiting...</p>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'rolatech-account-passwordreset',\n templateUrl: './passwordreset.component.html',\n styleUrls: ['./passwordreset.component.scss'],\n standalone: true,\n})\nexport class PasswordresetComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>passwordreset works!</p>\n","import { Injectable, output } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WeChatLoginService {\n onWeChatLogin = output<any>();\n\n constructor() {}\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Component, effect, HostListener, inject, OnInit, PLATFORM_ID, signal } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { MatTabChangeEvent } from '@angular/material/tabs';\nimport { SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';\nimport { AngularCommonModule, APP_CONFIG } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent, TabComponent, TabsComponent } from '@rolatech/angular-components';\nimport { AuthService, AuthUserService } from '@rolatech/angular-auth';\nimport { WeChatLoginService } from '../../../services/wechat-login.service';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, TabsComponent, TabComponent],\n selector: 'rolatech-account-auth-signin',\n templateUrl: './signin.component.html',\n styleUrls: ['./signin.component.scss'],\n})\nexport class SigninComponent extends BaseComponent implements OnInit {\n passrodForm!: FormGroup;\n codeForm!: FormGroup;\n continue = '';\n environment = inject(APP_CONFIG);\n platformId = inject(PLATFORM_ID);\n formBuilder = inject(FormBuilder);\n authService = inject(AuthService);\n authUserService = inject(AuthUserService);\n wechtLoginService = inject(WeChatLoginService);\n sanitizer = inject(DomSanitizer);\n tabIndex = signal(0);\n countDown = false;\n countDownTime = 60;\n showButtonText = '发送验证码';\n appid = 'wx567acbea73439828';\n state = 'add';\n urlSafe: SafeResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl('');\n baseUrl = 'https://open.weixin.qq.com/connect/qrconnect';\n\n @HostListener('window:message', ['$event'])\n onLogin(event: any): void {\n if (event.origin !== window.location.origin || /react-devtools/gi.test(event.data.source)) {\n return;\n }\n if (event.origin === this.environment.accountsUrl && event.data.code === 200) {\n window.location.href = this.continue === this.environment.accountsUrl ? this.environment.myaccountUrl : this.continue;\n }\n }\n constructor() {\n super();\n effect(() => {\n const index = this.tabIndex();\n if (index === 0) {\n this.codeForm.reset();\n }\n if (index === 1) {\n this.passrodForm.reset();\n }\n if (index === 2) {\n this.codeForm.reset();\n this.passrodForm.reset();\n this.wechat();\n }\n });\n }\n ngOnInit(): void {\n this.titleService.setTitle('账号登录 - 拼小课');\n this.passrodForm = this.formBuilder.group({\n account: [null, Validators.required],\n password: [null, Validators.required],\n });\n this.codeForm = this.formBuilder.group({\n phone: [null, [Validators.required, Validators.pattern('1(3|4|5|6|7|8|9)\\\\d{9}')]],\n code: [null, Validators.required],\n });\n this.continue = this.route.snapshot.queryParams['continue'] || '/';\n }\n get form() {\n return this.tabIndex() === 0 ? this.passrodForm.controls : this.codeForm.controls;\n }\n sendSMSCode() {\n const phoneControl = this.codeForm.get('phone');\n if (!phoneControl?.valid) {\n return;\n }\n const phone = phoneControl.value;\n this.countDown = true;\n const start = setInterval(() => {\n if (this.countDownTime >= 0) {\n this.showButtonText = `${this.countDownTime--}秒重发`;\n } else {\n clearInterval(start);\n this.showButtonText = '重新发送';\n this.countDown = false;\n this.countDownTime = 60;\n }\n }, 1000);\n\n this.authUserService.sendSMSCode('+86', phone).subscribe({\n next: (res) => {\n this.snackBarService.open('发送成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n login() {\n let data = {};\n if (this.tabIndex() === 0) {\n if (!this.passrodForm.valid) {\n return;\n }\n data = {\n account: this.form['account'].value,\n password: this.form['password'].value,\n };\n }\n if (this.tabIndex() === 1) {\n if (!this.codeForm.valid) {\n return;\n }\n data = {\n phone: this.form['phone'].value,\n code: this.form['code'].value,\n };\n }\n\n this.authService.login(data).subscribe({\n next: () => {\n if (isPlatformBrowser(this.platformId)) {\n window.location.href = this.continue === this.environment.accountsUrl ? this.environment.myaccountUrl : this.continue;\n }\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n wechat() {\n const redirectUri = 'https://accounts.pinxiaoke.cn/login?continue';\n // const redirectUri = `${window.location.origin}/login?continue`;\n const href = 'https://cloudcache.tencent-cloud.com/open_proj/proj_qcloud_v2/gateway/login-regist/css/link-wx-login.css';\n const encodedURI = encodeURI(redirectUri);\n const src = `${this.baseUrl}?appid=${this.appid}&response_type=code&self_redirect=true&scope=snsapi_login&href=${href}&redirect_uri=${encodedURI}&state=${this.state}#wechat_redirect`;\n this.urlSafe = this.sanitizer.bypassSecurityTrustResourceUrl(src);\n }\n}\n","<div class=\"h-full flex flex-col items-center sm:justify-center sm:bg-gray-100\">\n <div\n class=\"w-full p-6 lg:p-11 rounded-xl bg-white flex flex-col lg:flex-row justify-between xl:w-[800px] lg:w-[600px] sm:w-[600px]\"\n >\n <!-- header -->\n <div class=\"flex flex-col py-6\">\n <div class=\"text-3xl font-medium mb-3 ml-2\">登录</div>\n <div class=\"text-md ml-2\">使用拼小课账号登录</div>\n </div>\n <div>\n <rolatech-tabs [(select)]=\"tabIndex\">\n <rolatech-tab label=\"账号密码\"></rolatech-tab>\n <rolatech-tab label=\"短信验证码\"></rolatech-tab>\n <rolatech-tab label=\"微信扫码\"></rolatech-tab>\n </rolatech-tabs>\n <!-- content -->\n <div class=\"pt-6 min-w-[190px] min-h-[214px]\">\n @if (tabIndex() === 0) {\n <form [formGroup]=\"passrodForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 用户名/手机号 </mat-label>\n <input matInput formControlName=\"account\" required />\n @if (passrodForm.controls['account'].touched && passrodForm.controls['account'].invalid) {\n <mat-error>\n @if (passrodForm.controls['account'].errors?.['required']) {\n <span>用户名必填</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 密码 </mat-label>\n <input autocomplete matInput formControlName=\"password\" type=\"password\" />\n @if (passrodForm.controls['password'].touched && passrodForm.controls['password'].invalid) {\n <mat-error>\n @if (passrodForm.controls['password'].errors?.['required']) {\n <span>请输入密码</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n }\n @if (tabIndex() === 1) {\n <form [formGroup]=\"codeForm\" class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 手机号 </mat-label>\n <input autocomplete matInput formControlName=\"phone\" required />\n @if (codeForm.controls['phone'].touched && codeForm.controls['phone'].invalid) {\n <mat-error>\n @if (codeForm.controls['phone'].errors?.['required']) {\n <span> 手机号必填</span>\n }\n @if (codeForm.controls['phone'].errors?.['pattern']) {\n <span> 手机号格式错误 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex justify-between items-start\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 验证码 </mat-label>\n <input matInput formControlName=\"code\" type=\"text\" required />\n @if (codeForm.controls['code'].touched && codeForm.controls['code'].invalid) {\n <mat-error>\n @if (codeForm.controls['code'].errors?.['required']) {\n <span> 请输入验证码 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <button\n (click)=\"sendSMSCode()\"\n [disabled]=\"countDown\"\n [ngClass]=\"countDown ? 'bg-orange-300' : 'bg-orange-600 shadow shadow-gray-300 cursor-pointer'\"\n class=\"max-w-[128px] p-3 mt-2 text-white rounded text-center\"\n >\n <span>{{ showButtonText }}</span>\n </button>\n </div>\n </form>\n }\n @if (tabIndex() === 2) {\n <div class=\"w-[190px] h-[190px] mx-auto\">\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\" #iframe></iframe>\n <div></div>\n </div>\n }\n </div>\n <!-- actions -->\n <div class=\"flex justify-between items-center py-2 pl-2\">\n <a class=\"underline underline-offset-4\" href=\"signup\">创建账号</a>\n <div\n (click)=\"login()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>登录</span>\n </div>\n </div>\n </div>\n\n <!-- 3-part -->\n <!-- <div class=\"flex flex-col justify-center items-center mt-6\">\n <div class=\"flex items-center\">\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n <span class=\"px-3\">第三方登录</span>\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n </div>\n <div class=\"mt-3 flex items-center hover:shadow hover:shadow-gray-400 cursor-pointer p-3\">\n <img class=\"w-4 h-4\" src=\"assets/images/icon64_appwx_logo.png\" />\n <span class=\"ml-1\">微信</span>\n </div>\n </div> -->\n </div>\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { AngularCommonModule, APP_CONFIG, WINDOW } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';\nimport { AuthUserService } from '@rolatech/angular-auth';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule],\n selector: 'rolatech-account-signup',\n templateUrl: './signup.component.html',\n styleUrls: ['./signup.component.scss'],\n})\nexport class SignupComponent extends BaseComponent implements OnInit {\n signupForm!: FormGroup;\n continue = '/';\n authUserService = inject(AuthUserService);\n formBuilder = inject(FormBuilder);\n environment = inject(APP_CONFIG);\n window = inject(WINDOW);\n countDown = false;\n countDownTime = 60;\n showButtonText = '发送验证码';\n\n ngOnInit(): void {\n this.titleService.setTitle('账号注册 - 拼小课');\n this.signupForm = this.formBuilder.group({\n name: [null, Validators.required],\n phone: [null, [Validators.required, Validators.pattern('1(3|4|5|6|7|8|9)\\\\d{9}')]],\n code: [null, Validators.required],\n password: [null, Validators.required],\n rePassword: [null, Validators.required],\n });\n this.continue = this.route.snapshot.queryParams['continue'] || '/';\n }\n sendSMSCode() {\n const phoneControl = this.signupForm.get('phone');\n if (!phoneControl?.valid) {\n return;\n }\n const phone = phoneControl.value;\n this.countDown = true;\n const start = setInterval(() => {\n if (this.countDownTime >= 0) {\n this.showButtonText = `${this.countDownTime--}秒重发`;\n } else {\n clearInterval(start);\n this.showButtonText = '重新发送';\n this.countDown = false;\n this.countDownTime = 60;\n }\n }, 1000);\n this.authUserService.sendSMSCode('+86', phone).subscribe({\n next: (res) => {\n this.snackBarService.open('发送成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n submit() {\n if (!this.signupForm.valid) {\n return;\n }\n const data = {};\n this.authUserService.signup(this.signupForm.value).subscribe({\n next: (res) => {\n this.window.location.href = this.continue ? this.continue : this.environment.myaccountUrl;\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n}\n","<div class=\"h-full flex flex-col md:justify-center items-center\">\n <div class=\"md:shadow-md p-8 rounded-md\">\n <div class=\"text-2xl pl-2 pb-6\">注册</div>\n <form [formGroup]=\"signupForm\" (submit)=\"submit()\">\n <!-- name -->\n <mat-form-field appearance=\"fill\">\n <mat-label> 姓名 </mat-label>\n <input matInput formControlName=\"name\" required />\n @if (signupForm.controls['name'].touched && signupForm.controls['name'].invalid) {\n <mat-error>\n @if (signupForm.controls['name'].errors?.['required']) {\n <span>姓名必填</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <!-- phone -->\n <mat-form-field appearance=\"fill\">\n <mat-label> 手机号 </mat-label>\n <input matInput formControlName=\"phone\" required />\n @if (signupForm.controls['phone'].touched && signupForm.controls['phone'].invalid) {\n <mat-error>\n @if (signupForm.controls['phone'].errors?.['required']) {\n <span>手机号必填</span>\n }\n @if (signupForm.controls['phone'].errors?.['pattern']) {\n <span> 手机号格式错误 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <!-- phone code -->\n <div class=\"flex justify-between items-start gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 验证码 </mat-label>\n <input matInput formControlName=\"code\" required />\n @if (signupForm.controls['code'].touched && signupForm.controls['code'].invalid) {\n <mat-error>\n @if (signupForm.controls['code'].errors?.['required']) {\n <span>验证码必填</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div\n (click)=\"sendSMSCode()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 mt-2 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>发送验证码</span>\n </div>\n </div>\n\n <!-- password -->\n <mat-form-field appearance=\"fill\">\n <mat-label> 密码 </mat-label>\n <input matInput formControlName=\"password\" type=\"password\" autocomplete=\"password\" />\n @if (signupForm.controls['password'].touched && signupForm.controls['password'].invalid) {\n <mat-error>\n @if (signupForm.controls['password'].errors?.['required']) {\n <span>请输入密码</span>\n }\n </mat-error>\n }\n </mat-form-field>\n\n <!-- password confirm -->\n <mat-form-field appearance=\"fill\">\n <mat-label> 确认密码 </mat-label>\n <input matInput formControlName=\"rePassword\" type=\"password\" autocomplete=\"rePassword\" />\n @if (signupForm.controls['rePassword'].touched && signupForm.controls['rePassword'].invalid) {\n <mat-error>\n @if (signupForm.controls['rePassword'].errors?.['required']) {\n <span>请确认密码</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n <div class=\"flex justify-between items-center px-3\">\n <a mat-button href=\"/signin\">登录</a>\n <div\n (click)=\"submit()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>注册</span>\n </div>\n </div>\n </div>\n</div>\n","import { Routes } from '@angular/router';\nimport { AuthGuard, ForbiddenComponent, UnauthorizedComponent } from '@rolatech/angular-auth';\nimport { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';\nimport { LogoutComponent } from './components/logout/logout.component';\nimport { PasswordresetComponent } from './components/passwordreset/passwordreset.component';\nimport { SigninComponent } from './pages/accounts/signin/signin.component';\nimport { SignupComponent } from './pages/accounts/signup/signup.component';\n\nexport const accountRoutes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'signin',\n },\n { path: 'signin', canActivate: [AuthGuard], component: SigninComponent, data: { title: 'Signin' } },\n { path: 'signup', component: SignupComponent, data: { title: 'Signup' } },\n { path: 'logout', component: LogoutComponent },\n { path: 'login', loadChildren: () => import('./components/login/login.routes') },\n {\n path: 'passwordreset/:token',\n component: PasswordresetComponent,\n data: { title: 'Password Reset' },\n },\n {\n path: 'forgot',\n component: ForgotPasswordComponent,\n data: { title: 'Forgot Password' },\n },\n {\n path: 'unauthorized',\n component: UnauthorizedComponent,\n },\n {\n path: 'forbidden',\n component: ForbiddenComponent,\n },\n];\n","import { Routes } from '@angular/router';\n\nexport const myaccountRoutes: Routes = [\n {\n path: '',\n loadComponent: () => import('./pages/myaccount/home/home.component').then((c) => c.HomeComponent),\n data: { title: '首页' },\n },\n {\n path: 'personal-info',\n loadComponent: () => import('./pages/myaccount/personal-info/info.component').then((c) => c.InfoComponent),\n },\n {\n path: 'profile',\n loadComponent: () => import('./pages/myaccount/personal-info/profile/profile.component').then((c) => c.ProfileComponent),\n },\n {\n path: 'username',\n loadComponent: () => import('./pages/myaccount/personal-info/username/username.component').then((c) => c.UsernameComponent),\n },\n { path: 'gender', loadComponent: () => import('./pages/myaccount/gender/gender.component').then((c) => c.GenderComponent) },\n { path: 'email', loadComponent: () => import('./pages/myaccount/email/email.component').then((c) => c.EmailComponent) },\n {\n path: 'email-verification/:id',\n loadComponent: () =>\n import('./pages/myaccount/email-verification/email-verification.component').then((c) => c.EmailVerificationComponent),\n },\n { path: 'phone', loadComponent: () => import('./pages/myaccount/phone/phone.component').then((c) => c.PhoneComponent) },\n {\n path: 'security',\n loadChildren: () => import('./pages/myaccount/security/security.routes'),\n data: { title: 'Security' },\n },\n {\n path: 'notifications',\n loadChildren: () => import('@rolatech/angular-notification').then((m) => m.notificationRoutes),\n data: { title: '通知中心' },\n },\n];\n","import { EnvironmentProviders, Provider, makeEnvironmentProviders } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport { accountRoutes } from './lib/account.routes';\n\nexport function provideAngularAuthRoutes(): EnvironmentProviders {\n const provider: Provider[] = [\n {\n provide: ROUTES,\n useValue: accountRoutes,\n multi: true,\n },\n ];\n return makeEnvironmentProviders(provider);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}