@algoux/standard-ranklist-renderer-component-angular 0.5.0

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.
Files changed (34) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +100 -0
  3. package/dist/README.md +100 -0
  4. package/dist/esm2022/algoux-standard-ranklist-renderer-component-angular.mjs +5 -0
  5. package/dist/esm2022/lib/index.mjs +8 -0
  6. package/dist/esm2022/lib/modal/default-solution-modal.component.mjs +146 -0
  7. package/dist/esm2022/lib/modal/default-user-modal.component.mjs +172 -0
  8. package/dist/esm2022/lib/modal/modal-interactions.mjs +2 -0
  9. package/dist/esm2022/lib/modal/modal.component.mjs +263 -0
  10. package/dist/esm2022/lib/progress/progress-bar.component.mjs +247 -0
  11. package/dist/esm2022/lib/progress/progress-utils.mjs +45 -0
  12. package/dist/esm2022/lib/ranklist/ranklist-utils.mjs +110 -0
  13. package/dist/esm2022/lib/ranklist/ranklist.component.mjs +593 -0
  14. package/dist/esm2022/lib/ranklist/status-cell-template.directive.mjs +18 -0
  15. package/dist/esm2022/lib/ranklist/user-cell-template.directive.mjs +18 -0
  16. package/dist/esm2022/lib/types.mjs +2 -0
  17. package/dist/esm2022/public-api.mjs +2 -0
  18. package/dist/fesm2022/algoux-standard-ranklist-renderer-component-angular.mjs +1585 -0
  19. package/dist/fesm2022/algoux-standard-ranklist-renderer-component-angular.mjs.map +1 -0
  20. package/dist/index.d.ts +5 -0
  21. package/dist/lib/index.d.ts +8 -0
  22. package/dist/lib/modal/default-solution-modal.component.d.ts +30 -0
  23. package/dist/lib/modal/default-user-modal.component.d.ts +34 -0
  24. package/dist/lib/modal/modal-interactions.d.ts +1 -0
  25. package/dist/lib/modal/modal.component.d.ts +49 -0
  26. package/dist/lib/progress/progress-bar.component.d.ts +31 -0
  27. package/dist/lib/progress/progress-utils.d.ts +15 -0
  28. package/dist/lib/ranklist/ranklist-utils.d.ts +22 -0
  29. package/dist/lib/ranklist/ranklist.component.d.ts +57 -0
  30. package/dist/lib/ranklist/status-cell-template.directive.d.ts +23 -0
  31. package/dist/lib/ranklist/user-cell-template.directive.d.ts +20 -0
  32. package/dist/lib/types.d.ts +27 -0
  33. package/dist/public-api.d.ts +1 -0
  34. package/package.json +57 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 algoUX
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,100 @@
1
+ # @algoux/standard-ranklist-renderer-component-angular
2
+
3
+ Angular standalone components and template directives for Standard Ranklist data.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm i -D @algoux/standard-ranklist
9
+ npm i -S @algoux/standard-ranklist-renderer-component-angular @algoux/standard-ranklist-renderer-component-core @algoux/standard-ranklist-renderer-component-styles
10
+ ```
11
+
12
+ ## Main Exports
13
+
14
+ - `RanklistComponent`
15
+ - `ProgressBarComponent`
16
+ - `ModalComponent`
17
+ - `DefaultUserModalComponent`
18
+ - `DefaultSolutionModalComponent`
19
+ - `SrkUserCellTemplateDirective`
20
+ - `SrkStatusCellTemplateDirective`
21
+
22
+ ## Usage
23
+
24
+ Import the standalone components you use, and import the shared stylesheet once in your application styles or entry. `RanklistComponent` expects a static ranklist, so convert an SRK ranklist before binding it.
25
+
26
+ ```ts
27
+ import { Component } from '@angular/core';
28
+ import { convertToStaticRanklist } from '@algoux/standard-ranklist-renderer-component-core';
29
+ import {
30
+ DefaultSolutionModalComponent,
31
+ DefaultUserModalComponent,
32
+ ProgressBarComponent,
33
+ RanklistComponent,
34
+ type SolutionClickPayload,
35
+ type UserClickPayload,
36
+ } from '@algoux/standard-ranklist-renderer-component-angular';
37
+ import '@algoux/standard-ranklist-renderer-component-styles';
38
+
39
+ @Component({
40
+ standalone: true,
41
+ imports: [
42
+ DefaultSolutionModalComponent,
43
+ DefaultUserModalComponent,
44
+ ProgressBarComponent,
45
+ RanklistComponent,
46
+ ],
47
+ template: `
48
+ <srk-progress-bar
49
+ [data]="ranklist"
50
+ [enableTimeTravel]="true"
51
+ (timeTravel)="handleTimeTravel($event)"
52
+ ></srk-progress-bar>
53
+ <srk-ranklist
54
+ [data]="staticRanklist"
55
+ [stripedRows]="true"
56
+ (userClick)="handleUserClick($event)"
57
+ (solutionClick)="handleSolutionClick($event)"
58
+ ></srk-ranklist>
59
+ <srk-default-user-modal
60
+ [open]="!!activeUser"
61
+ [user]="activeUser?.user"
62
+ [markers]="staticRanklist.markers"
63
+ (close)="activeUser = null"
64
+ ></srk-default-user-modal>
65
+ <srk-default-solution-modal
66
+ [open]="!!activeSolution"
67
+ [user]="activeSolution?.user"
68
+ [problem]="activeSolution?.problem"
69
+ [problemIndex]="activeSolution?.problemIndex ?? 0"
70
+ [solutions]="activeSolution?.solutions || []"
71
+ (close)="activeSolution = null"
72
+ ></srk-default-solution-modal>
73
+ `,
74
+ })
75
+ export class BoardComponent {
76
+ ranklist!: any;
77
+ activeUser: UserClickPayload | null = null;
78
+ activeSolution: SolutionClickPayload | null = null;
79
+
80
+ get staticRanklist() {
81
+ return convertToStaticRanklist(this.ranklist);
82
+ }
83
+
84
+ handleTimeTravel(time: number | null) {
85
+ console.log(time);
86
+ }
87
+
88
+ handleUserClick(payload: UserClickPayload) {
89
+ this.activeUser = payload;
90
+ this.activeSolution = null;
91
+ }
92
+
93
+ handleSolutionClick(payload: SolutionClickPayload) {
94
+ this.activeSolution = payload;
95
+ this.activeUser = null;
96
+ }
97
+ }
98
+ ```
99
+
100
+ Use `ModalComponent` directly when you want custom modal content. `SrkUserCellTemplateDirective` and `SrkStatusCellTemplateDirective` let you replace selected ranklist table cells with Angular templates.
package/dist/README.md ADDED
@@ -0,0 +1,100 @@
1
+ # @algoux/standard-ranklist-renderer-component-angular
2
+
3
+ Angular standalone components and template directives for Standard Ranklist data.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm i -D @algoux/standard-ranklist
9
+ npm i -S @algoux/standard-ranklist-renderer-component-angular @algoux/standard-ranklist-renderer-component-core @algoux/standard-ranklist-renderer-component-styles
10
+ ```
11
+
12
+ ## Main Exports
13
+
14
+ - `RanklistComponent`
15
+ - `ProgressBarComponent`
16
+ - `ModalComponent`
17
+ - `DefaultUserModalComponent`
18
+ - `DefaultSolutionModalComponent`
19
+ - `SrkUserCellTemplateDirective`
20
+ - `SrkStatusCellTemplateDirective`
21
+
22
+ ## Usage
23
+
24
+ Import the standalone components you use, and import the shared stylesheet once in your application styles or entry. `RanklistComponent` expects a static ranklist, so convert an SRK ranklist before binding it.
25
+
26
+ ```ts
27
+ import { Component } from '@angular/core';
28
+ import { convertToStaticRanklist } from '@algoux/standard-ranklist-renderer-component-core';
29
+ import {
30
+ DefaultSolutionModalComponent,
31
+ DefaultUserModalComponent,
32
+ ProgressBarComponent,
33
+ RanklistComponent,
34
+ type SolutionClickPayload,
35
+ type UserClickPayload,
36
+ } from '@algoux/standard-ranklist-renderer-component-angular';
37
+ import '@algoux/standard-ranklist-renderer-component-styles';
38
+
39
+ @Component({
40
+ standalone: true,
41
+ imports: [
42
+ DefaultSolutionModalComponent,
43
+ DefaultUserModalComponent,
44
+ ProgressBarComponent,
45
+ RanklistComponent,
46
+ ],
47
+ template: `
48
+ <srk-progress-bar
49
+ [data]="ranklist"
50
+ [enableTimeTravel]="true"
51
+ (timeTravel)="handleTimeTravel($event)"
52
+ ></srk-progress-bar>
53
+ <srk-ranklist
54
+ [data]="staticRanklist"
55
+ [stripedRows]="true"
56
+ (userClick)="handleUserClick($event)"
57
+ (solutionClick)="handleSolutionClick($event)"
58
+ ></srk-ranklist>
59
+ <srk-default-user-modal
60
+ [open]="!!activeUser"
61
+ [user]="activeUser?.user"
62
+ [markers]="staticRanklist.markers"
63
+ (close)="activeUser = null"
64
+ ></srk-default-user-modal>
65
+ <srk-default-solution-modal
66
+ [open]="!!activeSolution"
67
+ [user]="activeSolution?.user"
68
+ [problem]="activeSolution?.problem"
69
+ [problemIndex]="activeSolution?.problemIndex ?? 0"
70
+ [solutions]="activeSolution?.solutions || []"
71
+ (close)="activeSolution = null"
72
+ ></srk-default-solution-modal>
73
+ `,
74
+ })
75
+ export class BoardComponent {
76
+ ranklist!: any;
77
+ activeUser: UserClickPayload | null = null;
78
+ activeSolution: SolutionClickPayload | null = null;
79
+
80
+ get staticRanklist() {
81
+ return convertToStaticRanklist(this.ranklist);
82
+ }
83
+
84
+ handleTimeTravel(time: number | null) {
85
+ console.log(time);
86
+ }
87
+
88
+ handleUserClick(payload: UserClickPayload) {
89
+ this.activeUser = payload;
90
+ this.activeSolution = null;
91
+ }
92
+
93
+ handleSolutionClick(payload: SolutionClickPayload) {
94
+ this.activeSolution = payload;
95
+ this.activeUser = null;
96
+ }
97
+ }
98
+ ```
99
+
100
+ Use `ModalComponent` directly when you want custom modal content. `SrkUserCellTemplateDirective` and `SrkStatusCellTemplateDirective` let you replace selected ranklist table cells with Angular templates.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxnb3V4LXN0YW5kYXJkLXJhbmtsaXN0LXJlbmRlcmVyLWNvbXBvbmVudC1hbmd1bGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FsZ291eC1zdGFuZGFyZC1yYW5rbGlzdC1yZW5kZXJlci1jb21wb25lbnQtYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,8 @@
1
+ export { DefaultSolutionModalComponent, } from './modal/default-solution-modal.component';
2
+ export { DefaultUserModalComponent, } from './modal/default-user-modal.component';
3
+ export { ModalComponent, } from './modal/modal.component';
4
+ export { ProgressBarComponent } from './progress/progress-bar.component';
5
+ export { RanklistComponent } from './ranklist/ranklist.component';
6
+ export { SrkStatusCellTemplateDirective, } from './ranklist/status-cell-template.directive';
7
+ export { SrkUserCellTemplateDirective, } from './ranklist/user-cell-template.directive';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCw2QkFBNkIsR0FDOUIsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRCxPQUFPLEVBQ0wseUJBQXlCLEdBQzFCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUNMLGNBQWMsR0FFZixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFDTCw4QkFBOEIsR0FFL0IsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsNEJBQTRCLEdBRTdCLE1BQU0seUNBQXlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBEZWZhdWx0U29sdXRpb25Nb2RhbENvbXBvbmVudCxcbn0gZnJvbSAnLi9tb2RhbC9kZWZhdWx0LXNvbHV0aW9uLW1vZGFsLmNvbXBvbmVudCc7XG5leHBvcnQge1xuICBEZWZhdWx0VXNlck1vZGFsQ29tcG9uZW50LFxufSBmcm9tICcuL21vZGFsL2RlZmF1bHQtdXNlci1tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0IHtcbiAgTW9kYWxDb21wb25lbnQsXG4gIHR5cGUgTW9kYWxDbG9zZVJlYXNvbixcbn0gZnJvbSAnLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0IHsgUHJvZ3Jlc3NCYXJDb21wb25lbnQgfSBmcm9tICcuL3Byb2dyZXNzL3Byb2dyZXNzLWJhci5jb21wb25lbnQnO1xuZXhwb3J0IHsgUmFua2xpc3RDb21wb25lbnQgfSBmcm9tICcuL3JhbmtsaXN0L3JhbmtsaXN0LmNvbXBvbmVudCc7XG5leHBvcnQge1xuICBTcmtTdGF0dXNDZWxsVGVtcGxhdGVEaXJlY3RpdmUsXG4gIHR5cGUgU3RhdHVzQ2VsbFRlbXBsYXRlQ29udGV4dCxcbn0gZnJvbSAnLi9yYW5rbGlzdC9zdGF0dXMtY2VsbC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHtcbiAgU3JrVXNlckNlbGxUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgdHlwZSBVc2VyQ2VsbFRlbXBsYXRlQ29udGV4dCxcbn0gZnJvbSAnLi9yYW5rbGlzdC91c2VyLWNlbGwtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCB0eXBlIHtcbiAgUmFua1ZhbHVlLFxuICBTb2x1dGlvbkNsaWNrUGF5bG9hZCxcbiAgU3RhdGljUmFua2xpc3QsXG4gIFVzZXJDbGlja1BheWxvYWQsXG59IGZyb20gJy4vdHlwZXMnO1xuIl19
@@ -0,0 +1,146 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output, } from '@angular/core';
3
+ import { formatSolutionTimestamp, getSolutionModalTitle, getSolutionResultMeta, } from '../ranklist/ranklist-utils';
4
+ import { ModalComponent, } from './modal.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ export class DefaultSolutionModalComponent {
8
+ open = false;
9
+ user;
10
+ problem;
11
+ problemIndex = 0;
12
+ solutions = [];
13
+ title;
14
+ width = 320;
15
+ rootClassName = 'srk-general-modal-root';
16
+ wrapClassName = 'srk-solutions-modal';
17
+ panelStyle = {};
18
+ openChange = new EventEmitter();
19
+ close = new EventEmitter();
20
+ formatSolutionTimestamp = formatSolutionTimestamp;
21
+ cachedUser = null;
22
+ cachedProblem;
23
+ cachedProblemIndex = 0;
24
+ cachedSolutions = [];
25
+ ngOnChanges(_changes) {
26
+ if (this.user) {
27
+ this.cachedUser = this.user;
28
+ this.cachedProblem = this.problem;
29
+ this.cachedProblemIndex = this.problemIndex;
30
+ this.cachedSolutions = this.solutions;
31
+ }
32
+ }
33
+ resolvedTitle() {
34
+ return this.title || (this.cachedUser ? getSolutionModalTitle(this.cachedProblemIndex, this.cachedUser) : '');
35
+ }
36
+ solutionMeta(solution) {
37
+ return getSolutionResultMeta(solution.result);
38
+ }
39
+ trackBySolution(index, solution) {
40
+ return `${solution.result}_${solution.time?.[0]}_${index}`;
41
+ }
42
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DefaultSolutionModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
43
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DefaultSolutionModalComponent, isStandalone: true, selector: "srk-default-solution-modal", inputs: { open: "open", user: "user", problem: "problem", problemIndex: "problemIndex", solutions: "solutions", title: "title", width: "width", rootClassName: "rootClassName", wrapClassName: "wrapClassName", panelStyle: "panelStyle" }, outputs: { openChange: "openChange", close: "close" }, usesOnChanges: true, ngImport: i0, template: `
44
+ <srk-modal
45
+ *ngIf="cachedUser"
46
+ [open]="open"
47
+ [title]="resolvedTitle()"
48
+ [width]="width"
49
+ [rootClassName]="rootClassName"
50
+ [wrapClassName]="wrapClassName"
51
+ [panelStyle]="panelStyle"
52
+ (close)="close.emit($event)"
53
+ (openChange)="openChange.emit($event)"
54
+ >
55
+ <table class="srk-common-table srk-solutions-table">
56
+ <thead>
57
+ <tr>
58
+ <th class="srk--text-left">Result</th>
59
+ <th class="srk--text-right">Time</th>
60
+ </tr>
61
+ </thead>
62
+ <tbody>
63
+ <tr *ngFor="let solution of cachedSolutions; let index = index; trackBy: trackBySolution">
64
+ <td>
65
+ <span
66
+ class="srk-solution-result-text"
67
+ [ngClass]="solutionMeta(solution).className"
68
+ >
69
+ {{ solutionMeta(solution).label }}
70
+ </span>
71
+ </td>
72
+ <td class="srk--text-right">{{ formatSolutionTimestamp(solution) }}</td>
73
+ </tr>
74
+ </tbody>
75
+ </table>
76
+ </srk-modal>
77
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ModalComponent, selector: "srk-modal", inputs: ["open", "title", "width", "rootClassName", "wrapClassName", "destroyOnClose", "closeOnEsc", "closeOnMaskClick", "panelStyle"], outputs: ["openChange", "close"] }] });
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DefaultSolutionModalComponent, decorators: [{
80
+ type: Component,
81
+ args: [{
82
+ selector: 'srk-default-solution-modal',
83
+ standalone: true,
84
+ imports: [CommonModule, ModalComponent],
85
+ template: `
86
+ <srk-modal
87
+ *ngIf="cachedUser"
88
+ [open]="open"
89
+ [title]="resolvedTitle()"
90
+ [width]="width"
91
+ [rootClassName]="rootClassName"
92
+ [wrapClassName]="wrapClassName"
93
+ [panelStyle]="panelStyle"
94
+ (close)="close.emit($event)"
95
+ (openChange)="openChange.emit($event)"
96
+ >
97
+ <table class="srk-common-table srk-solutions-table">
98
+ <thead>
99
+ <tr>
100
+ <th class="srk--text-left">Result</th>
101
+ <th class="srk--text-right">Time</th>
102
+ </tr>
103
+ </thead>
104
+ <tbody>
105
+ <tr *ngFor="let solution of cachedSolutions; let index = index; trackBy: trackBySolution">
106
+ <td>
107
+ <span
108
+ class="srk-solution-result-text"
109
+ [ngClass]="solutionMeta(solution).className"
110
+ >
111
+ {{ solutionMeta(solution).label }}
112
+ </span>
113
+ </td>
114
+ <td class="srk--text-right">{{ formatSolutionTimestamp(solution) }}</td>
115
+ </tr>
116
+ </tbody>
117
+ </table>
118
+ </srk-modal>
119
+ `,
120
+ }]
121
+ }], propDecorators: { open: [{
122
+ type: Input
123
+ }], user: [{
124
+ type: Input
125
+ }], problem: [{
126
+ type: Input
127
+ }], problemIndex: [{
128
+ type: Input
129
+ }], solutions: [{
130
+ type: Input
131
+ }], title: [{
132
+ type: Input
133
+ }], width: [{
134
+ type: Input
135
+ }], rootClassName: [{
136
+ type: Input
137
+ }], wrapClassName: [{
138
+ type: Input
139
+ }], panelStyle: [{
140
+ type: Input
141
+ }], openChange: [{
142
+ type: Output
143
+ }], close: [{
144
+ type: Output
145
+ }] } });
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1zb2x1dGlvbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21vZGFsL2RlZmF1bHQtc29sdXRpb24tbW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLHFCQUFxQixHQUV0QixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDTCxjQUFjLEdBRWYsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBMEMzQixNQUFNLE9BQU8sNkJBQTZCO0lBQy9CLElBQUksR0FBRyxLQUFLLENBQUM7SUFDYixJQUFJLENBQW1CO0lBQ3ZCLE9BQU8sQ0FBZTtJQUN0QixZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLFNBQVMsR0FBbUIsRUFBRSxDQUFDO0lBQy9CLEtBQUssQ0FBVTtJQUNmLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDWixhQUFhLEdBQUcsd0JBQXdCLENBQUM7SUFDekMsYUFBYSxHQUFHLHFCQUFxQixDQUFDO0lBQ3RDLFVBQVUsR0FBb0MsRUFBRSxDQUFDO0lBRWhELFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQ3pDLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQUU5Qyx1QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztJQUMzRCxVQUFVLEdBQW9CLElBQUksQ0FBQztJQUNuQyxhQUFhLENBQWU7SUFDNUIsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLGVBQWUsR0FBbUIsRUFBRSxDQUFDO0lBRXJDLFdBQVcsQ0FBQyxRQUF1QjtRQUNqQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDNUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFRCxZQUFZLENBQUMsUUFBc0I7UUFDakMsT0FBTyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhLEVBQUUsUUFBc0I7UUFDbkQsT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQzdELENBQUM7d0dBeENVLDZCQUE2Qjs0RkFBN0IsNkJBQTZCLDhZQXBDOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ1QsMkRBbkNTLFlBQVksOFZBQUUsY0FBYzs7NEZBcUMzQiw2QkFBNkI7a0JBeEN6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDO29CQUN2QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ1Q7aUJBQ0Y7OEJBRVUsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIHNyayBmcm9tICdAYWxnb3V4L3N0YW5kYXJkLXJhbmtsaXN0JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGZvcm1hdFNvbHV0aW9uVGltZXN0YW1wLFxuICBnZXRTb2x1dGlvbk1vZGFsVGl0bGUsXG4gIGdldFNvbHV0aW9uUmVzdWx0TWV0YSxcbiAgdHlwZSBTb2x1dGlvblJlc3VsdE1ldGEsXG59IGZyb20gJy4uL3JhbmtsaXN0L3JhbmtsaXN0LXV0aWxzJztcbmltcG9ydCB7XG4gIE1vZGFsQ29tcG9uZW50LFxuICB0eXBlIE1vZGFsQ2xvc2VSZWFzb24sXG59IGZyb20gJy4vbW9kYWwuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3JrLWRlZmF1bHQtc29sdXRpb24tbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNb2RhbENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPHNyay1tb2RhbFxuICAgICAgKm5nSWY9XCJjYWNoZWRVc2VyXCJcbiAgICAgIFtvcGVuXT1cIm9wZW5cIlxuICAgICAgW3RpdGxlXT1cInJlc29sdmVkVGl0bGUoKVwiXG4gICAgICBbd2lkdGhdPVwid2lkdGhcIlxuICAgICAgW3Jvb3RDbGFzc05hbWVdPVwicm9vdENsYXNzTmFtZVwiXG4gICAgICBbd3JhcENsYXNzTmFtZV09XCJ3cmFwQ2xhc3NOYW1lXCJcbiAgICAgIFtwYW5lbFN0eWxlXT1cInBhbmVsU3R5bGVcIlxuICAgICAgKGNsb3NlKT1cImNsb3NlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAob3BlbkNoYW5nZSk9XCJvcGVuQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPHRhYmxlIGNsYXNzPVwic3JrLWNvbW1vbi10YWJsZSBzcmstc29sdXRpb25zLXRhYmxlXCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJzcmstLXRleHQtbGVmdFwiPlJlc3VsdDwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJzcmstLXRleHQtcmlnaHRcIj5UaW1lPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBzb2x1dGlvbiBvZiBjYWNoZWRTb2x1dGlvbnM7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5U29sdXRpb25cIj5cbiAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cInNyay1zb2x1dGlvbi1yZXN1bHQtdGV4dFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29sdXRpb25NZXRhKHNvbHV0aW9uKS5jbGFzc05hbWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgc29sdXRpb25NZXRhKHNvbHV0aW9uKS5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwic3JrLS10ZXh0LXJpZ2h0XCI+e3sgZm9ybWF0U29sdXRpb25UaW1lc3RhbXAoc29sdXRpb24pIH19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L3Nyay1tb2RhbD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgRGVmYXVsdFNvbHV0aW9uTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBvcGVuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHVzZXI/OiBzcmsuVXNlciB8IG51bGw7XG4gIEBJbnB1dCgpIHByb2JsZW0/OiBzcmsuUHJvYmxlbTtcbiAgQElucHV0KCkgcHJvYmxlbUluZGV4ID0gMDtcbiAgQElucHV0KCkgc29sdXRpb25zOiBzcmsuU29sdXRpb25bXSA9IFtdO1xuICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgQElucHV0KCkgd2lkdGggPSAzMjA7XG4gIEBJbnB1dCgpIHJvb3RDbGFzc05hbWUgPSAnc3JrLWdlbmVyYWwtbW9kYWwtcm9vdCc7XG4gIEBJbnB1dCgpIHdyYXBDbGFzc05hbWUgPSAnc3JrLXNvbHV0aW9ucy1tb2RhbCc7XG4gIEBJbnB1dCgpIHBhbmVsU3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4gPSB7fTtcblxuICBAT3V0cHV0KCkgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2RhbENsb3NlUmVhc29uPigpO1xuXG4gIHJlYWRvbmx5IGZvcm1hdFNvbHV0aW9uVGltZXN0YW1wID0gZm9ybWF0U29sdXRpb25UaW1lc3RhbXA7XG4gIGNhY2hlZFVzZXI6IHNyay5Vc2VyIHwgbnVsbCA9IG51bGw7XG4gIGNhY2hlZFByb2JsZW0/OiBzcmsuUHJvYmxlbTtcbiAgY2FjaGVkUHJvYmxlbUluZGV4ID0gMDtcbiAgY2FjaGVkU29sdXRpb25zOiBzcmsuU29sdXRpb25bXSA9IFtdO1xuXG4gIG5nT25DaGFuZ2VzKF9jaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHRoaXMudXNlcikge1xuICAgICAgdGhpcy5jYWNoZWRVc2VyID0gdGhpcy51c2VyO1xuICAgICAgdGhpcy5jYWNoZWRQcm9ibGVtID0gdGhpcy5wcm9ibGVtO1xuICAgICAgdGhpcy5jYWNoZWRQcm9ibGVtSW5kZXggPSB0aGlzLnByb2JsZW1JbmRleDtcbiAgICAgIHRoaXMuY2FjaGVkU29sdXRpb25zID0gdGhpcy5zb2x1dGlvbnM7XG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZWRUaXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy50aXRsZSB8fCAodGhpcy5jYWNoZWRVc2VyID8gZ2V0U29sdXRpb25Nb2RhbFRpdGxlKHRoaXMuY2FjaGVkUHJvYmxlbUluZGV4LCB0aGlzLmNhY2hlZFVzZXIpIDogJycpO1xuICB9XG5cbiAgc29sdXRpb25NZXRhKHNvbHV0aW9uOiBzcmsuU29sdXRpb24pOiBTb2x1dGlvblJlc3VsdE1ldGEge1xuICAgIHJldHVybiBnZXRTb2x1dGlvblJlc3VsdE1ldGEoc29sdXRpb24ucmVzdWx0KTtcbiAgfVxuXG4gIHRyYWNrQnlTb2x1dGlvbihpbmRleDogbnVtYmVyLCBzb2x1dGlvbjogc3JrLlNvbHV0aW9uKSB7XG4gICAgcmV0dXJuIGAke3NvbHV0aW9uLnJlc3VsdH1fJHtzb2x1dGlvbi50aW1lPy5bMF19XyR7aW5kZXh9YDtcbiAgfVxufVxuIl19
@@ -0,0 +1,172 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output, } from '@angular/core';
3
+ import { EnumTheme, resolveText, resolveUserMarkers, } from '@algoux/standard-ranklist-utils';
4
+ import { getMarkerPresentation, resolveSrkAssetUrl, } from '../ranklist/ranklist-utils';
5
+ import { ModalComponent, } from './modal.component';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ export class DefaultUserModalComponent {
9
+ open = false;
10
+ user;
11
+ markers = [];
12
+ theme = EnumTheme.light;
13
+ title = 'User Info';
14
+ width = 420;
15
+ rootClassName = 'srk-general-modal-root';
16
+ wrapClassName = 'srk-user-modal';
17
+ panelStyle = {};
18
+ formatSrkAssetUrl;
19
+ openChange = new EventEmitter();
20
+ close = new EventEmitter();
21
+ resolveText = resolveText;
22
+ cachedUser = null;
23
+ ngOnChanges(_changes) {
24
+ if (this.user) {
25
+ this.cachedUser = this.user;
26
+ }
27
+ }
28
+ resolvedMarkers() {
29
+ if (!this.cachedUser) {
30
+ return [];
31
+ }
32
+ return resolveUserMarkers(this.cachedUser, this.markers).map((marker) => ({
33
+ marker,
34
+ presentation: getMarkerPresentation(marker, this.theme),
35
+ }));
36
+ }
37
+ formatAssetUrl(url, field) {
38
+ return resolveSrkAssetUrl(url, field, this.formatSrkAssetUrl);
39
+ }
40
+ trackByMarkerId(_index, entry) {
41
+ return entry.marker.id;
42
+ }
43
+ trackByMemberName(_index, member) {
44
+ return resolveText(member.name);
45
+ }
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DefaultUserModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
47
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DefaultUserModalComponent, isStandalone: true, selector: "srk-default-user-modal", inputs: { open: "open", user: "user", markers: "markers", theme: "theme", title: "title", width: "width", rootClassName: "rootClassName", wrapClassName: "wrapClassName", panelStyle: "panelStyle", formatSrkAssetUrl: "formatSrkAssetUrl" }, outputs: { openChange: "openChange", close: "close" }, usesOnChanges: true, ngImport: i0, template: `
48
+ <srk-modal
49
+ *ngIf="cachedUser as modalUser"
50
+ [open]="open"
51
+ [title]="title"
52
+ [width]="width"
53
+ [rootClassName]="rootClassName"
54
+ [wrapClassName]="wrapClassName"
55
+ [panelStyle]="panelStyle"
56
+ (close)="close.emit($event)"
57
+ (openChange)="openChange.emit($event)"
58
+ >
59
+ <div class="srk-user-modal-info">
60
+ <h3 class="srk-user-modal-info-user-name">{{ resolveText(modalUser.name) }}</h3>
61
+ <p *ngIf="modalUser.organization" class="srk-user-modal-info-user-second-name">
62
+ {{ resolveText(modalUser.organization) }}
63
+ </p>
64
+ <div class="srk-user-modal-info-labels">
65
+ <span class="srk-user-modal-info-labels-label srk-user-modal-info-labels-label-preset-general">
66
+ {{ modalUser.official === false ? '* 非正式参加者' : '正式参加者' }}
67
+ </span>
68
+ <span
69
+ *ngFor="let entry of resolvedMarkers(); trackBy: trackByMarkerId"
70
+ class="srk-user-modal-info-labels-label"
71
+ [ngClass]="entry.presentation.className"
72
+ [ngStyle]="entry.presentation.style"
73
+ >
74
+ {{ resolveText(entry.marker.label) }}
75
+ </span>
76
+ </div>
77
+ <div *ngIf="modalUser.teamMembers?.length" class="srk-user-modal-info-team-members">
78
+ <ng-container *ngFor="let member of modalUser.teamMembers; let index = index; trackBy: trackByMemberName">
79
+ <span *ngIf="index > 0" class="srk-user-modal-info-team-members-slash"> / </span>
80
+ <span>{{ resolveText(member.name) }}</span>
81
+ </ng-container>
82
+ </div>
83
+ <div *ngIf="modalUser.photo" class="srk-user-modal-info-photo">
84
+ <img
85
+ [src]="formatAssetUrl(modalUser.photo, 'user.photo')"
86
+ alt="User portrait"
87
+ class="srk-user-modal-info-photo-img"
88
+ />
89
+ </div>
90
+ </div>
91
+ </srk-modal>
92
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ModalComponent, selector: "srk-modal", inputs: ["open", "title", "width", "rootClassName", "wrapClassName", "destroyOnClose", "closeOnEsc", "closeOnMaskClick", "panelStyle"], outputs: ["openChange", "close"] }] });
93
+ }
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DefaultUserModalComponent, decorators: [{
95
+ type: Component,
96
+ args: [{
97
+ selector: 'srk-default-user-modal',
98
+ standalone: true,
99
+ imports: [CommonModule, ModalComponent],
100
+ template: `
101
+ <srk-modal
102
+ *ngIf="cachedUser as modalUser"
103
+ [open]="open"
104
+ [title]="title"
105
+ [width]="width"
106
+ [rootClassName]="rootClassName"
107
+ [wrapClassName]="wrapClassName"
108
+ [panelStyle]="panelStyle"
109
+ (close)="close.emit($event)"
110
+ (openChange)="openChange.emit($event)"
111
+ >
112
+ <div class="srk-user-modal-info">
113
+ <h3 class="srk-user-modal-info-user-name">{{ resolveText(modalUser.name) }}</h3>
114
+ <p *ngIf="modalUser.organization" class="srk-user-modal-info-user-second-name">
115
+ {{ resolveText(modalUser.organization) }}
116
+ </p>
117
+ <div class="srk-user-modal-info-labels">
118
+ <span class="srk-user-modal-info-labels-label srk-user-modal-info-labels-label-preset-general">
119
+ {{ modalUser.official === false ? '* 非正式参加者' : '正式参加者' }}
120
+ </span>
121
+ <span
122
+ *ngFor="let entry of resolvedMarkers(); trackBy: trackByMarkerId"
123
+ class="srk-user-modal-info-labels-label"
124
+ [ngClass]="entry.presentation.className"
125
+ [ngStyle]="entry.presentation.style"
126
+ >
127
+ {{ resolveText(entry.marker.label) }}
128
+ </span>
129
+ </div>
130
+ <div *ngIf="modalUser.teamMembers?.length" class="srk-user-modal-info-team-members">
131
+ <ng-container *ngFor="let member of modalUser.teamMembers; let index = index; trackBy: trackByMemberName">
132
+ <span *ngIf="index > 0" class="srk-user-modal-info-team-members-slash"> / </span>
133
+ <span>{{ resolveText(member.name) }}</span>
134
+ </ng-container>
135
+ </div>
136
+ <div *ngIf="modalUser.photo" class="srk-user-modal-info-photo">
137
+ <img
138
+ [src]="formatAssetUrl(modalUser.photo, 'user.photo')"
139
+ alt="User portrait"
140
+ class="srk-user-modal-info-photo-img"
141
+ />
142
+ </div>
143
+ </div>
144
+ </srk-modal>
145
+ `,
146
+ }]
147
+ }], propDecorators: { open: [{
148
+ type: Input
149
+ }], user: [{
150
+ type: Input
151
+ }], markers: [{
152
+ type: Input
153
+ }], theme: [{
154
+ type: Input
155
+ }], title: [{
156
+ type: Input
157
+ }], width: [{
158
+ type: Input
159
+ }], rootClassName: [{
160
+ type: Input
161
+ }], wrapClassName: [{
162
+ type: Input
163
+ }], panelStyle: [{
164
+ type: Input
165
+ }], formatSrkAssetUrl: [{
166
+ type: Input
167
+ }], openChange: [{
168
+ type: Output
169
+ }], close: [{
170
+ type: Output
171
+ }] } });
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC11c2VyLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbW9kYWwvZGVmYXVsdC11c2VyLW1vZGFsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsU0FBUyxFQUNULFdBQVcsRUFDWCxrQkFBa0IsR0FDbkIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQ0wscUJBQXFCLEVBRXJCLGtCQUFrQixHQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDTCxjQUFjLEdBRWYsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBMEQzQixNQUFNLE9BQU8seUJBQXlCO0lBQzNCLElBQUksR0FBRyxLQUFLLENBQUM7SUFDYixJQUFJLENBQW1CO0lBQ3ZCLE9BQU8sR0FBaUIsRUFBRSxDQUFDO0lBQzNCLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO0lBQ3hCLEtBQUssR0FBRyxXQUFXLENBQUM7SUFDcEIsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUNaLGFBQWEsR0FBRyx3QkFBd0IsQ0FBQztJQUN6QyxhQUFhLEdBQUcsZ0JBQWdCLENBQUM7SUFDakMsVUFBVSxHQUFvQyxFQUFFLENBQUM7SUFDakQsaUJBQWlCLENBQTBDO0lBRTFELFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQ3pDLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQUU5QyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ25DLFVBQVUsR0FBb0IsSUFBSSxDQUFDO0lBRW5DLFdBQVcsQ0FBQyxRQUF1QjtRQUNqQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hFLE1BQU07WUFDTixZQUFZLEVBQUUscUJBQXFCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDeEQsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQ3ZDLE9BQU8sa0JBQWtCLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWMsRUFBRSxLQUFxQjtRQUNuRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFjLEVBQUUsTUFBd0I7UUFDeEQsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7d0dBNUNVLHlCQUF5Qjs0RkFBekIseUJBQXlCLDRZQS9DMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDVCwyREE5Q1MsWUFBWSxtYkFBRSxjQUFjOzs0RkFnRDNCLHlCQUF5QjtrQkFuRHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUM7b0JBQ3ZDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNUO2lCQUNGOzhCQUVVLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgc3JrIGZyb20gJ0BhbGdvdXgvc3RhbmRhcmQtcmFua2xpc3QnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRW51bVRoZW1lLFxuICByZXNvbHZlVGV4dCxcbiAgcmVzb2x2ZVVzZXJNYXJrZXJzLFxufSBmcm9tICdAYWxnb3V4L3N0YW5kYXJkLXJhbmtsaXN0LXV0aWxzJztcbmltcG9ydCB7XG4gIGdldE1hcmtlclByZXNlbnRhdGlvbixcbiAgdHlwZSBNYXJrZXJQcmVzZW50YXRpb24sXG4gIHJlc29sdmVTcmtBc3NldFVybCxcbn0gZnJvbSAnLi4vcmFua2xpc3QvcmFua2xpc3QtdXRpbHMnO1xuaW1wb3J0IHtcbiAgTW9kYWxDb21wb25lbnQsXG4gIHR5cGUgTW9kYWxDbG9zZVJlYXNvbixcbn0gZnJvbSAnLi9tb2RhbC5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgUmVzb2x2ZWRNYXJrZXIge1xuICBtYXJrZXI6IHNyay5NYXJrZXI7XG4gIHByZXNlbnRhdGlvbjogTWFya2VyUHJlc2VudGF0aW9uO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcmstZGVmYXVsdC11c2VyLW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTW9kYWxDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzcmstbW9kYWxcbiAgICAgICpuZ0lmPVwiY2FjaGVkVXNlciBhcyBtb2RhbFVzZXJcIlxuICAgICAgW29wZW5dPVwib3BlblwiXG4gICAgICBbdGl0bGVdPVwidGl0bGVcIlxuICAgICAgW3dpZHRoXT1cIndpZHRoXCJcbiAgICAgIFtyb290Q2xhc3NOYW1lXT1cInJvb3RDbGFzc05hbWVcIlxuICAgICAgW3dyYXBDbGFzc05hbWVdPVwid3JhcENsYXNzTmFtZVwiXG4gICAgICBbcGFuZWxTdHlsZV09XCJwYW5lbFN0eWxlXCJcbiAgICAgIChjbG9zZSk9XCJjbG9zZS5lbWl0KCRldmVudClcIlxuICAgICAgKG9wZW5DaGFuZ2UpPVwib3BlbkNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJzcmstdXNlci1tb2RhbC1pbmZvXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInNyay11c2VyLW1vZGFsLWluZm8tdXNlci1uYW1lXCI+e3sgcmVzb2x2ZVRleHQobW9kYWxVc2VyLm5hbWUpIH19PC9oMz5cbiAgICAgICAgPHAgKm5nSWY9XCJtb2RhbFVzZXIub3JnYW5pemF0aW9uXCIgY2xhc3M9XCJzcmstdXNlci1tb2RhbC1pbmZvLXVzZXItc2Vjb25kLW5hbWVcIj5cbiAgICAgICAgICB7eyByZXNvbHZlVGV4dChtb2RhbFVzZXIub3JnYW5pemF0aW9uKSB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcmstdXNlci1tb2RhbC1pbmZvLWxhYmVsc1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3JrLXVzZXItbW9kYWwtaW5mby1sYWJlbHMtbGFiZWwgc3JrLXVzZXItbW9kYWwtaW5mby1sYWJlbHMtbGFiZWwtcHJlc2V0LWdlbmVyYWxcIj5cbiAgICAgICAgICAgIHt7IG1vZGFsVXNlci5vZmZpY2lhbCA9PT0gZmFsc2UgPyAn77yKIOmdnuato+W8j+WPguWKoOiAhScgOiAn5q2j5byP5Y+C5Yqg6ICFJyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGVudHJ5IG9mIHJlc29sdmVkTWFya2VycygpOyB0cmFja0J5OiB0cmFja0J5TWFya2VySWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJzcmstdXNlci1tb2RhbC1pbmZvLWxhYmVscy1sYWJlbFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJlbnRyeS5wcmVzZW50YXRpb24uY2xhc3NOYW1lXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cImVudHJ5LnByZXNlbnRhdGlvbi5zdHlsZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgcmVzb2x2ZVRleHQoZW50cnkubWFya2VyLmxhYmVsKSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RhbFVzZXIudGVhbU1lbWJlcnM/Lmxlbmd0aFwiIGNsYXNzPVwic3JrLXVzZXItbW9kYWwtaW5mby10ZWFtLW1lbWJlcnNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW1iZXIgb2YgbW9kYWxVc2VyLnRlYW1NZW1iZXJzOyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeU1lbWJlck5hbWVcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaW5kZXggPiAwXCIgY2xhc3M9XCJzcmstdXNlci1tb2RhbC1pbmZvLXRlYW0tbWVtYmVycy1zbGFzaFwiPiAvIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHJlc29sdmVUZXh0KG1lbWJlci5uYW1lKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RhbFVzZXIucGhvdG9cIiBjbGFzcz1cInNyay11c2VyLW1vZGFsLWluZm8tcGhvdG9cIj5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBbc3JjXT1cImZvcm1hdEFzc2V0VXJsKG1vZGFsVXNlci5waG90bywgJ3VzZXIucGhvdG8nKVwiXG4gICAgICAgICAgICBhbHQ9XCJVc2VyIHBvcnRyYWl0XCJcbiAgICAgICAgICAgIGNsYXNzPVwic3JrLXVzZXItbW9kYWwtaW5mby1waG90by1pbWdcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9zcmstbW9kYWw+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIERlZmF1bHRVc2VyTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBvcGVuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHVzZXI/OiBzcmsuVXNlciB8IG51bGw7XG4gIEBJbnB1dCgpIG1hcmtlcnM6IHNyay5NYXJrZXJbXSA9IFtdO1xuICBASW5wdXQoKSB0aGVtZSA9IEVudW1UaGVtZS5saWdodDtcbiAgQElucHV0KCkgdGl0bGUgPSAnVXNlciBJbmZvJztcbiAgQElucHV0KCkgd2lkdGggPSA0MjA7XG4gIEBJbnB1dCgpIHJvb3RDbGFzc05hbWUgPSAnc3JrLWdlbmVyYWwtbW9kYWwtcm9vdCc7XG4gIEBJbnB1dCgpIHdyYXBDbGFzc05hbWUgPSAnc3JrLXVzZXItbW9kYWwnO1xuICBASW5wdXQoKSBwYW5lbFN0eWxlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+ID0ge307XG4gIEBJbnB1dCgpIGZvcm1hdFNya0Fzc2V0VXJsPzogKHVybDogc3RyaW5nLCBmaWVsZDogc3RyaW5nKSA9PiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kYWxDbG9zZVJlYXNvbj4oKTtcblxuICByZWFkb25seSByZXNvbHZlVGV4dCA9IHJlc29sdmVUZXh0O1xuICBjYWNoZWRVc2VyOiBzcmsuVXNlciB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25DaGFuZ2VzKF9jaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHRoaXMudXNlcikge1xuICAgICAgdGhpcy5jYWNoZWRVc2VyID0gdGhpcy51c2VyO1xuICAgIH1cbiAgfVxuXG4gIHJlc29sdmVkTWFya2VycygpOiBSZXNvbHZlZE1hcmtlcltdIHtcbiAgICBpZiAoIXRoaXMuY2FjaGVkVXNlcikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZVVzZXJNYXJrZXJzKHRoaXMuY2FjaGVkVXNlciwgdGhpcy5tYXJrZXJzKS5tYXAoKG1hcmtlcikgPT4gKHtcbiAgICAgIG1hcmtlcixcbiAgICAgIHByZXNlbnRhdGlvbjogZ2V0TWFya2VyUHJlc2VudGF0aW9uKG1hcmtlciwgdGhpcy50aGVtZSksXG4gICAgfSkpO1xuICB9XG5cbiAgZm9ybWF0QXNzZXRVcmwodXJsOiBzdHJpbmcsIGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVzb2x2ZVNya0Fzc2V0VXJsKHVybCwgZmllbGQsIHRoaXMuZm9ybWF0U3JrQXNzZXRVcmwpO1xuICB9XG5cbiAgdHJhY2tCeU1hcmtlcklkKF9pbmRleDogbnVtYmVyLCBlbnRyeTogUmVzb2x2ZWRNYXJrZXIpIHtcbiAgICByZXR1cm4gZW50cnkubWFya2VyLmlkO1xuICB9XG5cbiAgdHJhY2tCeU1lbWJlck5hbWUoX2luZGV4OiBudW1iZXIsIG1lbWJlcjogc3JrLkV4dGVybmFsVXNlcikge1xuICAgIHJldHVybiByZXNvbHZlVGV4dChtZW1iZXIubmFtZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export { MODAL_ANIMATION_DURATION_MS, SRK_ANIMATED_MODAL_ROOT_CLASS, SRK_SCROLL_LOCK_BODY_CLASS, captureModalTriggerPointFromMouseEvent, ensureModalInteractionTracker, isTopModalFocusScope, lockModalBodyScroll, registerModalFocusScope, resolveModalTransformOrigin, unlockModalBodyScroll, unregisterModalFocusScope, } from '@algoux/standard-ranklist-renderer-component-core';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaW50ZXJhY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2RhbC9tb2RhbC1pbnRlcmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiw2QkFBNkIsRUFDN0IsMEJBQTBCLEVBQzFCLHNDQUFzQyxFQUN0Qyw2QkFBNkIsRUFDN0Isb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLHFCQUFxQixFQUNyQix5QkFBeUIsR0FDMUIsTUFBTSxtREFBbUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIE1PREFMX0FOSU1BVElPTl9EVVJBVElPTl9NUyxcbiAgU1JLX0FOSU1BVEVEX01PREFMX1JPT1RfQ0xBU1MsXG4gIFNSS19TQ1JPTExfTE9DS19CT0RZX0NMQVNTLFxuICBjYXB0dXJlTW9kYWxUcmlnZ2VyUG9pbnRGcm9tTW91c2VFdmVudCxcbiAgZW5zdXJlTW9kYWxJbnRlcmFjdGlvblRyYWNrZXIsXG4gIGlzVG9wTW9kYWxGb2N1c1Njb3BlLFxuICBsb2NrTW9kYWxCb2R5U2Nyb2xsLFxuICByZWdpc3Rlck1vZGFsRm9jdXNTY29wZSxcbiAgcmVzb2x2ZU1vZGFsVHJhbnNmb3JtT3JpZ2luLFxuICB1bmxvY2tNb2RhbEJvZHlTY3JvbGwsXG4gIHVucmVnaXN0ZXJNb2RhbEZvY3VzU2NvcGUsXG59IGZyb20gJ0BhbGdvdXgvc3RhbmRhcmQtcmFua2xpc3QtcmVuZGVyZXItY29tcG9uZW50LWNvcmUnO1xuIl19