@algoux/standard-ranklist-renderer-component-vue 0.5.1 → 0.6.1

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.
package/README.md CHANGED
@@ -77,3 +77,49 @@ function handleSolutionClick(payload: SolutionClickPayload) {
77
77
  ```
78
78
 
79
79
  Use `Modal` directly when you want custom modal content. `Ranklist` exposes scoped slots such as `userCell` and `statusCell` for targeted table-cell customization.
80
+
81
+ ## Ranklist Render Options
82
+
83
+ `Ranklist` includes optional render props for changing the table structure and status presentation while keeping the default behavior unchanged:
84
+
85
+ - `splitOrganization`: moves user organization into its own column before the user column.
86
+ - `columnTitles`: overrides text labels for series, organization, user, score, time, Dirt, and SE columns.
87
+ - `statusCellPreset`: uses `classic`, `detailed`, `minimal`, or `compact` status cell content.
88
+ - `statusColorAsText`: uses bold status-colored text instead of colored cell backgrounds.
89
+ - `showProblemStatisticsFooter`: appends a DOMjudge-style per-problem statistics footer.
90
+ - `showDirtColumn`: appends a Dirt percentage column after problem columns.
91
+ - `showSEColumn`: appends a contestant SE column after problem columns, placed after Dirt when both are enabled.
92
+ - `rowBordered`: adds row separators controlled by CSS variables.
93
+ - `columnBordered`: adds column separators controlled by CSS variables.
94
+ - `emptyStatusPlaceholder`: renders a custom string in no-submission status cells.
95
+ - `userAvatarPlacement`: chooses whether the default user avatar renders in the user column or, when `splitOrganization` is enabled, in the organization column.
96
+
97
+ ```vue
98
+ <script setup lang="ts">
99
+ const columnTitles = {
100
+ organization: 'Org',
101
+ user: 'Team',
102
+ score: 'Solved',
103
+ time: 'Penalty',
104
+ dirt: 'Dirt',
105
+ se: 'SE',
106
+ };
107
+ </script>
108
+
109
+ <template>
110
+ <Ranklist
111
+ :data="staticRanklist"
112
+ split-organization
113
+ show-problem-statistics-footer
114
+ show-dirt-column
115
+ show-s-e-column
116
+ status-cell-preset="compact"
117
+ status-color-as-text
118
+ row-bordered
119
+ column-bordered
120
+ empty-status-placeholder="·"
121
+ user-avatar-placement="organization"
122
+ :column-titles="columnTitles"
123
+ />
124
+ </template>
125
+ ```
@@ -1,5 +1,6 @@
1
1
  import type * as srk from '@algoux/standard-ranklist';
2
- import type { RankValue, SolutionClickPayload, StaticRanklistRow, UserClickPayload } from '@algoux/standard-ranklist-renderer-component-core';
2
+ import { calculateDirtPercentage, calculateSEValue, getProblemHeaderBackgroundImage } from '@algoux/standard-ranklist-renderer-component-core';
3
+ import type { ProblemStatisticsFooter, RanklistColumnTitles, RankValue, SolutionClickPayload, StaticRanklistRow, UserClickPayload } from '@algoux/standard-ranklist-renderer-component-core';
3
4
  declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
4
5
  data: {
5
6
  type: ObjectConstructor;
@@ -15,6 +16,16 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
15
16
  required: false;
16
17
  default: boolean;
17
18
  };
19
+ rowBordered: {
20
+ type: BooleanConstructor;
21
+ required: false;
22
+ default: boolean;
23
+ };
24
+ columnBordered: {
25
+ type: BooleanConstructor;
26
+ required: false;
27
+ default: boolean;
28
+ };
18
29
  stripedRows: {
19
30
  type: BooleanConstructor;
20
31
  required: false;
@@ -24,6 +35,50 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
24
35
  type: FunctionConstructor;
25
36
  required: false;
26
37
  };
38
+ splitOrganization: {
39
+ type: BooleanConstructor;
40
+ required: false;
41
+ default: boolean;
42
+ };
43
+ columnTitles: {
44
+ type: ObjectConstructor;
45
+ required: false;
46
+ };
47
+ statusCellPreset: {
48
+ type: StringConstructor;
49
+ required: false;
50
+ default: string;
51
+ };
52
+ statusColorAsText: {
53
+ type: BooleanConstructor;
54
+ required: false;
55
+ default: boolean;
56
+ };
57
+ showProblemStatisticsFooter: {
58
+ type: BooleanConstructor;
59
+ required: false;
60
+ default: boolean;
61
+ };
62
+ showDirtColumn: {
63
+ type: BooleanConstructor;
64
+ required: false;
65
+ default: boolean;
66
+ };
67
+ showSEColumn: {
68
+ type: BooleanConstructor;
69
+ required: false;
70
+ default: boolean;
71
+ };
72
+ emptyStatusPlaceholder: {
73
+ type: (StringConstructor | null)[];
74
+ required: false;
75
+ default: null;
76
+ };
77
+ userAvatarPlacement: {
78
+ type: StringConstructor;
79
+ required: false;
80
+ default: string;
81
+ };
27
82
  }>, {
28
83
  props: any;
29
84
  emit: (event: "userClick" | "solutionClick", ...args: any[]) => void;
@@ -31,9 +86,20 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
31
86
  supportedVersions: any;
32
87
  isSupportedVersion: import("vue").ComputedRef<boolean>;
33
88
  showTimeColumn: import("vue").ComputedRef<boolean>;
89
+ showAvatarInOrganization: import("vue").ComputedRef<any>;
90
+ problemStatistics: import("vue").ComputedRef<ProblemStatisticsFooter[]>;
91
+ leftFooterColumnCount: import("vue").ComputedRef<any>;
92
+ problemStatisticsFooterRows: {
93
+ key: string;
94
+ label: string;
95
+ tooltip: string;
96
+ }[];
34
97
  formatAssetUrl: (url: string, field: string) => string;
35
98
  getRankValues: (row: StaticRanklistRow) => RankValue[];
36
99
  getRankText: (rankValue: RankValue, row: StaticRanklistRow) => number | "" | "*";
100
+ isSeriesSegmentedColumn: (series: srk.RankSeries | undefined) => boolean;
101
+ resolveSeriesColumnTitle: (series: srk.RankSeries, index: number) => any;
102
+ resolveColumnTitle: (key: Exclude<keyof RanklistColumnTitles, 'series'>, fallback: string) => any;
37
103
  resolveSeriesSegment: (rankValue: RankValue, series: srk.RankSeries | undefined) => srk.RankSeriesSegment;
38
104
  getSeriesSegmentClass: (rankValue: RankValue, series: srk.RankSeries | undefined) => string;
39
105
  getSeriesSegmentStyle: (rankValue: RankValue, series: srk.RankSeries | undefined) => {
@@ -44,10 +110,16 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
44
110
  backgroundColor: any;
45
111
  };
46
112
  getStatusSolutions: (status: srk.RankProblemStatus) => srk.Solution[];
113
+ getProblemStatisticsFooterCellPrimary: (key: string, stat: ProblemStatisticsFooter) => string | number;
114
+ getProblemStatisticsFooterCellSecondary: (key: string, stat: ProblemStatisticsFooter) => string | undefined;
47
115
  emitUserClick: (payloadOrRow: UserClickPayload | StaticRanklistRow, rowIndex?: number | undefined, event?: MouseEvent | undefined) => void;
48
116
  emitSolutionClick: (payloadOrRow: SolutionClickPayload | StaticRanklistRow, rowIndex?: number | undefined, status?: srk.RankProblemStatus | undefined, problemIndex?: number | undefined, event?: MouseEvent | undefined) => void;
49
117
  readonly formatTimeDuration: any;
118
+ readonly numberToAlphabet: any;
50
119
  readonly resolveText: any;
120
+ readonly calculateDirtPercentage: typeof calculateDirtPercentage;
121
+ readonly calculateSEValue: typeof calculateSEValue;
122
+ readonly getProblemHeaderBackgroundImage: typeof getProblemHeaderBackgroundImage;
51
123
  ProblemHeaderCell: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
52
124
  problem: {
53
125
  type: null;
@@ -118,26 +190,59 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
118
190
  type: FunctionConstructor;
119
191
  required: false;
120
192
  };
193
+ statusCellPreset: {
194
+ type: StringConstructor;
195
+ required: false;
196
+ default: string;
197
+ };
198
+ statusColorAsText: {
199
+ type: BooleanConstructor;
200
+ required: false;
201
+ default: boolean;
202
+ };
203
+ emptyStatusPlaceholder: {
204
+ type: (StringConstructor | null)[];
205
+ required: false;
206
+ default: null;
207
+ };
121
208
  }>, {
122
209
  props: any;
210
+ fbStar: string;
123
211
  solutions: import("vue").ComputedRef<any[]>;
124
212
  isClickable: import("vue").ComputedRef<boolean>;
125
213
  commonClassName: import("vue").ComputedRef<(string | {
126
214
  'srk--cursor-pointer': boolean;
215
+ 'srk-prest-status-block-color-text': any;
127
216
  })[]>;
128
217
  emitSolutionClick: (event: MouseEvent) => void;
129
- AcceptedStatusBody: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
218
+ StatusBody: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
130
219
  status: {
131
220
  type: ObjectConstructor;
132
221
  required: true;
133
222
  };
134
- }>, () => string | import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
223
+ ranklist: {
224
+ type: ObjectConstructor;
225
+ required: true;
226
+ };
227
+ preset: {
228
+ type: StringConstructor;
229
+ required: true;
230
+ };
231
+ }>, () => string | (string | import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
135
232
  [key: string]: any;
136
- }>[], {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
233
+ }>)[], {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
137
234
  status: {
138
235
  type: ObjectConstructor;
139
236
  required: true;
140
237
  };
238
+ ranklist: {
239
+ type: ObjectConstructor;
240
+ required: true;
241
+ };
242
+ preset: {
243
+ type: StringConstructor;
244
+ required: true;
245
+ };
141
246
  }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
142
247
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
143
248
  status: {
@@ -172,7 +277,26 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
172
277
  type: FunctionConstructor;
173
278
  required: false;
174
279
  };
175
- }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
280
+ statusCellPreset: {
281
+ type: StringConstructor;
282
+ required: false;
283
+ default: string;
284
+ };
285
+ statusColorAsText: {
286
+ type: BooleanConstructor;
287
+ required: false;
288
+ default: boolean;
289
+ };
290
+ emptyStatusPlaceholder: {
291
+ type: (StringConstructor | null)[];
292
+ required: false;
293
+ default: null;
294
+ };
295
+ }>> & Readonly<{}>, {
296
+ statusCellPreset: string;
297
+ statusColorAsText: boolean;
298
+ emptyStatusPlaceholder: string | null;
299
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
176
300
  UserCell: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
177
301
  user: {
178
302
  type: null;
@@ -208,6 +332,16 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
208
332
  type: FunctionConstructor;
209
333
  required: false;
210
334
  };
335
+ hideOrganization: {
336
+ type: BooleanConstructor;
337
+ required: false;
338
+ default: boolean;
339
+ };
340
+ hideAvatar: {
341
+ type: BooleanConstructor;
342
+ required: false;
343
+ default: boolean;
344
+ };
211
345
  }>, {
212
346
  props: any;
213
347
  name: import("vue").ComputedRef<any>;
@@ -250,9 +384,21 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
250
384
  type: FunctionConstructor;
251
385
  required: false;
252
386
  };
387
+ hideOrganization: {
388
+ type: BooleanConstructor;
389
+ required: false;
390
+ default: boolean;
391
+ };
392
+ hideAvatar: {
393
+ type: BooleanConstructor;
394
+ required: false;
395
+ default: boolean;
396
+ };
253
397
  }>> & Readonly<{}>, {
254
398
  theme: string;
255
399
  markers: unknown[];
400
+ hideOrganization: boolean;
401
+ hideAvatar: boolean;
256
402
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
257
403
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("userClick" | "solutionClick")[], "userClick" | "solutionClick", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
258
404
  data: {
@@ -269,6 +415,16 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
269
415
  required: false;
270
416
  default: boolean;
271
417
  };
418
+ rowBordered: {
419
+ type: BooleanConstructor;
420
+ required: false;
421
+ default: boolean;
422
+ };
423
+ columnBordered: {
424
+ type: BooleanConstructor;
425
+ required: false;
426
+ default: boolean;
427
+ };
272
428
  stripedRows: {
273
429
  type: BooleanConstructor;
274
430
  required: false;
@@ -278,12 +434,66 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
278
434
  type: FunctionConstructor;
279
435
  required: false;
280
436
  };
437
+ splitOrganization: {
438
+ type: BooleanConstructor;
439
+ required: false;
440
+ default: boolean;
441
+ };
442
+ columnTitles: {
443
+ type: ObjectConstructor;
444
+ required: false;
445
+ };
446
+ statusCellPreset: {
447
+ type: StringConstructor;
448
+ required: false;
449
+ default: string;
450
+ };
451
+ statusColorAsText: {
452
+ type: BooleanConstructor;
453
+ required: false;
454
+ default: boolean;
455
+ };
456
+ showProblemStatisticsFooter: {
457
+ type: BooleanConstructor;
458
+ required: false;
459
+ default: boolean;
460
+ };
461
+ showDirtColumn: {
462
+ type: BooleanConstructor;
463
+ required: false;
464
+ default: boolean;
465
+ };
466
+ showSEColumn: {
467
+ type: BooleanConstructor;
468
+ required: false;
469
+ default: boolean;
470
+ };
471
+ emptyStatusPlaceholder: {
472
+ type: (StringConstructor | null)[];
473
+ required: false;
474
+ default: null;
475
+ };
476
+ userAvatarPlacement: {
477
+ type: StringConstructor;
478
+ required: false;
479
+ default: string;
480
+ };
281
481
  }>> & Readonly<{
282
482
  onUserClick?: ((...args: any[]) => any) | undefined;
283
483
  onSolutionClick?: ((...args: any[]) => any) | undefined;
284
484
  }>, {
285
485
  theme: string;
286
486
  borderedRows: boolean;
487
+ rowBordered: boolean;
488
+ columnBordered: boolean;
287
489
  stripedRows: boolean;
490
+ splitOrganization: boolean;
491
+ statusCellPreset: string;
492
+ statusColorAsText: boolean;
493
+ showProblemStatisticsFooter: boolean;
494
+ showDirtColumn: boolean;
495
+ showSEColumn: boolean;
496
+ emptyStatusPlaceholder: string | null;
497
+ userAvatarPlacement: string;
288
498
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
289
499
  export default _sfc_main;
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("@algoux/standard-ranklist-renderer-component-styles");var e=require("vue"),m=require("@algoux/standard-ranklist-renderer-component-core"),v=require("@algoux/standard-ranklist-utils");const M=["data-srk-modal-state"],$=["aria-labelledby"],D={class:"srk-modal-content"},I={key:0,class:"srk-modal-header"},z={class:"srk-modal-body"},V=e.defineComponent({__name:"Modal",props:{open:{type:Boolean},title:{},width:{},rootClassName:{},wrapClassName:{},style:{},destroyOnClose:{type:Boolean,default:!0},closeOnEsc:{type:Boolean,default:!0},closeOnMaskClick:{type:Boolean,default:!0}},emits:["close","update:open"],setup(t,{emit:r}){let s=0;const o=t,a=r,g=`srk-vue-modal-title-${++s}`,d=e.ref(null),n=e.ref(o.open||!o.destroyOnClose),i=e.ref(o.open?"pre-open":"closing"),c=e.ref({x:0,y:0});let b=null,B=null,S=null;const C=e.computed(()=>n.value||!o.destroyOnClose),N=e.computed(()=>["srk-modal-root",m.SRK_ANIMATED_MODAL_ROOT_CLASS,o.rootClassName].filter(Boolean)),x=e.computed(()=>o.open||o.destroyOnClose&&n.value),T=e.computed(()=>{var f,w;return{...o.style,width:o.width?`${o.width}px`:(f=o.style)==null?void 0:f.width,["--srk-modal-origin-x"]:`${c.value.x}px`,["--srk-modal-origin-y"]:`${c.value.y}px`,["--srk-modal-max-width"]:o.width?`${o.width}px`:typeof((w=o.style)==null?void 0:w.width)=="string"?o.style.width:void 0}});function u(){if(typeof window=="undefined"){b=null,B=null;return}b!==null&&(window.clearTimeout(b),b=null),B!==null&&(window.clearTimeout(B),B=null)}async function k(){if(await e.nextTick(),typeof window=="undefined"||!o.open||!n.value||i.value!=="pre-open")return;l();const f=m.resolveModalTransformOrigin(d.value);c.value=f.origin,B=window.setTimeout(()=>{i.value="opening",B=null},0)}function l(){const f=m.registerModalFocusScope(d.value,{onEscape:E});S===null&&(S=f)}function p(){S!==null&&(m.unregisterModalFocusScope(S),S=null)}function y(f){a("update:open",!1),a("close",f)}function h(f){o.closeOnMaskClick&&f.target===f.currentTarget&&y("mask")}function E(f){o.open&&o.closeOnEsc&&y("escape")}return e.watch(()=>o.open,async f=>{if(u(),f){n.value=!0,c.value={x:0,y:0},i.value="pre-open",await k();return}if(p(),i.value="closing",!o.destroyOnClose){n.value=!0;return}n.value&&typeof window!="undefined"&&(b=window.setTimeout(()=>{n.value=!1,b=null},m.MODAL_ANIMATION_DURATION_MS))},{immediate:!0}),e.watchEffect(f=>{!x.value||(m.lockModalBodyScroll(),f(()=>{m.unlockModalBodyScroll()}))}),e.onMounted(()=>{m.ensureModalInteractionTracker(),o.open&&l()}),e.onBeforeUnmount(()=>{u(),p()}),(f,w)=>C.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(N.value),"data-srk-modal-state":i.value},[w[2]||(w[2]=e.createElementVNode("div",{class:"srk-modal-mask"},null,-1)),e.createElementVNode("div",{class:e.normalizeClass(["srk-modal-wrap",t.wrapClassName]),tabindex:"-1",onMousedown:h},[e.createElementVNode("div",{class:"srk-modal",role:"dialog","aria-modal":"true","aria-labelledby":t.title?g:void 0,"data-srk-modal-panel":"true",tabindex:"-1",ref_key:"dialogRef",ref:d,style:e.normalizeStyle(T.value)},[e.createElementVNode("div",D,[e.createElementVNode("button",{"aria-label":"Close",class:"srk-modal-close",type:"button",onClick:w[0]||(w[0]=Me=>y("close-button"))},[...w[1]||(w[1]=[e.createElementVNode("span",{class:"srk-modal-close-x"},null,-1)])]),t.title!==void 0?(e.openBlock(),e.createElementBlock("div",I,[e.createElementVNode("div",{id:g,class:"srk-modal-title"},e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",z,[e.renderSlot(f.$slots,"default")])])],12,$)],34)],10,M)):e.createCommentVNode("",!0)}}),A={class:"srk-common-table srk-solutions-table"},F={class:"srk--text-right"},U=e.defineComponent({__name:"DefaultSolutionModal",props:{open:{type:Boolean},user:{},problem:{},problemIndex:{},solutions:{default:()=>[]},title:{},width:{default:320},rootClassName:{default:"srk-general-modal-root"},wrapClassName:{default:"srk-solutions-modal"},style:{}},emits:["close","update:open"],setup(t,{emit:r}){const s=t,o=r,a=e.ref(s.user?{user:s.user,problem:s.problem,problemIndex:s.problemIndex,solutions:s.solutions}:null);e.watch([()=>s.user,()=>s.problem,()=>s.problemIndex,()=>s.solutions],([d,n,i,c])=>{d&&(a.value={user:d,problem:n,problemIndex:i,solutions:c})},{immediate:!0});const g=e.computed(()=>s.title||(a.value?m.getSolutionModalTitle(a.value.problemIndex,a.value.user):""));return(d,n)=>a.value?(e.openBlock(),e.createBlock(V,{key:0,open:t.open,title:g.value,width:t.width,"root-class-name":t.rootClassName,"wrap-class-name":t.wrapClassName,style:e.normalizeStyle(t.style),onClose:n[0]||(n[0]=i=>o("close",i)),"onUpdate:open":n[1]||(n[1]=i=>o("update:open",i))},{default:e.withCtx(()=>[e.createElementVNode("table",A,[n[2]||(n[2]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",{class:"srk--text-left"},"Result"),e.createElementVNode("th",{class:"srk--text-right"},"Time")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value.solutions,(i,c)=>{var b;return e.openBlock(),e.createElementBlock("tr",{key:`${i.result}_${(b=i.time)==null?void 0:b[0]}_${c}`},[e.createElementVNode("td",null,[e.createElementVNode("span",{class:e.normalizeClass(["srk-solution-result-text",e.unref(m.getSolutionResultMeta)(i.result).className])},e.toDisplayString(e.unref(m.getSolutionResultMeta)(i.result).label),3)]),e.createElementVNode("td",F,e.toDisplayString(e.unref(m.formatSolutionTimestamp)(i)),1)])}),128))])])]),_:1},8,["open","title","width","root-class-name","wrap-class-name","style"])):e.createCommentVNode("",!0)}}),P={class:"srk-user-modal-info"},_={class:"srk-user-modal-info-user-name"},L={key:0,class:"srk-user-modal-info-user-second-name"},R={class:"srk-user-modal-info-labels"},O={class:"srk-user-modal-info-labels-label srk-user-modal-info-labels-label-preset-general"},q={key:1,class:"srk-user-modal-info-team-members"},K={key:0,class:"srk-user-modal-info-team-members-slash"},j={key:2,class:"srk-user-modal-info-photo"},H=["src"],J=e.defineComponent({__name:"DefaultUserModal",props:{open:{type:Boolean},user:{},markers:{default:()=>[]},theme:{default:v.EnumTheme.light},title:{default:"User Info"},width:{default:420},rootClassName:{default:"srk-general-modal-root"},wrapClassName:{default:"srk-user-modal"},style:{},formatSrkAssetUrl:{}},emits:["close","update:open"],setup(t,{emit:r}){const s=t,o=r,a=e.ref(s.user||null);e.watch(()=>s.user,n=>{n&&(a.value=n)},{immediate:!0});const g=e.computed(()=>a.value?v.resolveUserMarkers(a.value,s.markers).map(n=>({marker:n,presentation:m.getMarkerPresentation(n,s.theme)})):[]);function d(n,i){return m.resolveSrkAssetUrl(n,i,s.formatSrkAssetUrl)}return(n,i)=>a.value?(e.openBlock(),e.createBlock(V,{key:0,open:t.open,title:t.title,width:t.width,"root-class-name":t.rootClassName,"wrap-class-name":t.wrapClassName,style:e.normalizeStyle(t.style),onClose:i[0]||(i[0]=c=>o("close",c)),"onUpdate:open":i[1]||(i[1]=c=>o("update:open",c))},{default:e.withCtx(()=>[e.createElementVNode("div",P,[e.createElementVNode("h3",_,e.toDisplayString(e.unref(v.resolveText)(a.value.name)),1),a.value.organization?(e.openBlock(),e.createElementBlock("p",L,e.toDisplayString(e.unref(v.resolveText)(a.value.organization)),1)):e.createCommentVNode("",!0),e.createElementVNode("div",R,[e.createElementVNode("span",O,e.toDisplayString(a.value.official===!1?"\uFF0A \u975E\u6B63\u5F0F\u53C2\u52A0\u8005":"\u6B63\u5F0F\u53C2\u52A0\u8005"),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,c=>(e.openBlock(),e.createElementBlock("span",{key:c.marker.id,class:e.normalizeClass(["srk-user-modal-info-labels-label",c.presentation.className]),style:e.normalizeStyle(c.presentation.style)},e.toDisplayString(e.unref(v.resolveText)(c.marker.label)),7))),128))]),a.value.teamMembers&&a.value.teamMembers.length?(e.openBlock(),e.createElementBlock("div",q,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value.teamMembers,(c,b)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:e.unref(v.resolveText)(c.name)},[b>0?(e.openBlock(),e.createElementBlock("span",K," / ")):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(e.unref(v.resolveText)(c.name)),1)],64))),128))])):e.createCommentVNode("",!0),a.value.photo?(e.openBlock(),e.createElementBlock("div",j,[e.createElementVNode("img",{src:d(a.value.photo,"user.photo"),alt:"User portrait",class:"srk-user-modal-info-photo-img"},null,8,H)])):e.createCommentVNode("",!0)])]),_:1},8,["open","title","width","root-class-name","wrap-class-name","style"])):e.createCommentVNode("",!0)}}),G={class:"srk-progress-bar-container"},Q={class:"srk-progress-bar"},W={class:"srk-progress-bar-body"},X={key:0,class:"srk-progress-slider-layer"},Y=["max","title"],Z={class:"srk-progress-secondary-area"},ee={class:"srk-progress-secondary-area-center"},te={key:0,class:"srk-progress-time-machine-status"},le={key:1,class:"srk-progress-live-text"},se={key:2,style:{visibility:"hidden"}},oe=e.defineComponent({__name:"ProgressBar",props:{data:{},enableTimeTravel:{type:Boolean,default:!1},live:{type:Boolean,default:!1},td:{default:0}},emits:["timeTravel"],setup(t,{emit:r}){const s=t,o=r,a=e.ref(Date.now()),g=e.ref(!1),d=e.ref(!1),n=e.ref(m.getProgressMaxAvailableMinutes(s.data.contest,a.value,s.td)),i=e.ref(null);let c;const b=e.computed(()=>m.getProgressDurationMinutes(s.data.contest)),B=e.computed(()=>m.getProgressMaxAvailableMinutes(s.data.contest,a.value,s.td)),S=e.computed(()=>m.isProgressEnded(s.data.contest,a.value,s.td)),C=e.computed(()=>m.getProgressMetrics(s.data,a.value,s.td,n.value,g.value));function N(){a.value=Date.now(),S.value&&c!==void 0&&(window.clearInterval(c),c=void 0)}function x(l){typeof window!="undefined"&&(l&&c===void 0&&(c=window.setInterval(N,1e3)),!l&&c!==void 0&&(window.clearInterval(c),c=void 0))}function T(l){const p=l>=b.value||l>=B.value;o("timeTravel",p?null:l*60*1e3),g.value=!p,i.value=p?null:l*60*1e3,d.value=!1}function u(){d.value=!0,g.value=!0}function k(){d.value&&T(n.value)}return e.watch(B,l=>{!d.value&&i.value===null&&(n.value=l)}),e.watch(()=>s.live,l=>x(l),{immediate:!0}),e.watch(()=>s.data.contest.title,()=>{d.value=!1,n.value=B.value,i.value=null,g.value=!1,o("timeTravel",null)}),e.onBeforeUnmount(()=>{c!==void 0&&(window.clearInterval(c),c=void 0)}),(l,p)=>(e.openBlock(),e.createElementBlock("div",G,[e.createElementVNode("div",Q,[e.createElementVNode("div",W,[e.createElementVNode("div",{class:"srk-progress-bar-segment srk-progress-bar-normal",style:e.normalizeStyle({width:`${C.value.frozenBreakpoint*100}%`})},[e.createElementVNode("div",{class:"srk-progress-bar-fill",style:e.normalizeStyle({width:`${C.value.normalInnerPercent}%`})},null,4)],4),e.createElementVNode("div",{class:"srk-progress-bar-segment srk-progress-bar-frozen",style:e.normalizeStyle({width:`${(1-C.value.frozenBreakpoint)*100}%`})},[e.createElementVNode("div",{class:"srk-progress-bar-fill",style:e.normalizeStyle({width:`${C.value.frozenInnerPercent}%`})},null,4)],4)]),t.enableTimeTravel&&C.value.supportRegen?(e.openBlock(),e.createElementBlock("div",X,[d.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"srk-progress-slider-tooltip",style:e.normalizeStyle({left:`${b.value?n.value/b.value*100:0}%`})},e.toDisplayString(e.unref(v.secToTimeStr)(n.value*60)),5)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[0]||(p[0]=y=>n.value=y),"aria-label":"Time Travel",class:"srk-progress-slider",max:b.value,min:"0",step:"1",title:e.unref(v.secToTimeStr)(n.value*60),type:"range",onBlur:k,onKeydown:u,onKeyup:k,onMousedown:u,onMouseup:k,onTouchend:k,onTouchstart:u},null,40,Y),[[e.vModelText,n.value,void 0,{number:!0}]])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Z,[e.createElementVNode("div",{class:"srk-progress-secondary-area-left",style:e.normalizeStyle(t.live||g.value?{}:{display:"none"})}," Elapsed: "+e.toDisplayString(e.unref(v.secToTimeStr)(Math.round(C.value.elapsed/1e3))),5),e.createElementVNode("div",ee,[g.value?(e.openBlock(),e.createElementBlock("div",te,[...p[1]||(p[1]=[e.createElementVNode("div",{class:"srk-progress-time-machine-text"},"Time Travel Mode",-1)])])):t.live&&!S.value?(e.openBlock(),e.createElementBlock("div",le,"Live")):(e.openBlock(),e.createElementBlock("div",se,"SRK"))]),e.createElementVNode("div",{class:"srk-progress-secondary-area-right",style:e.normalizeStyle(t.live||g.value?{}:{display:"none"})}," Remaining: "+e.toDisplayString(e.unref(v.secToTimeStr)(Math.round(C.value.remaining/1e3))),5)])]))}}),re=["href"],ne={class:"srk--display-block"},ae=["title"],ie={class:"srk--display-block"},ue=["title"],ce=e.defineComponent({__name:"ProblemHeaderCell",props:{problem:{},index:{},theme:{default:v.EnumTheme.light}},setup(t){const r=t,s=e.computed(()=>r.problem.alias||v.numberToAlphabet(r.index)),o=e.computed(()=>r.problem.statistics),a=e.computed(()=>{if(!o.value)return"";const d=o.value.submitted?(o.value.accepted/o.value.submitted*100).toFixed(1):0;return`${o.value.accepted} / ${o.value.submitted} (${d}%)`}),g=e.computed(()=>m.getProblemHeaderBackgroundImage(r.problem.style,r.theme));return(d,n)=>(e.openBlock(),e.createElementBlock("th",{class:"srk--nowrap srk-problem-header",style:e.normalizeStyle({backgroundImage:g.value})},[t.problem.link?(e.openBlock(),e.createElementBlock("a",{key:0,href:t.problem.link,target:"_blank",rel:"noopener noreferrer",style:{color:"unset"}},[e.createElementVNode("span",ne,e.toDisplayString(s.value),1),o.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"srk--display-block srk-problem-stats",title:a.value},e.toDisplayString(o.value.accepted),9,ae)):e.createCommentVNode("",!0)],8,re)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("span",ie,e.toDisplayString(s.value),1),o.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"srk--display-block srk-problem-stats",title:a.value},e.toDisplayString(o.value.accepted),9,ue)):e.createCommentVNode("",!0)],64))],4))}}),de={key:4},me=e.defineComponent({__name:"StatusCell",props:{status:{},problem:{},problemIndex:{},user:{},row:{},rowIndex:{},ranklist:{},onSolutionClick:{type:Function}},setup(t){const r=t,s=e.computed(()=>[...r.status.solutions||[]].reverse()),o=e.computed(()=>s.value.length>0&&!!r.onSolutionClick),a=e.computed(()=>["srk-prest-status-block","srk--text-center","srk--nowrap",{"srk--cursor-pointer":o.value}]);function g(n){var i,c;!o.value||(m.captureModalTriggerPointFromMouseEvent(n,{source:"status-cell",context:{rowIndex:r.rowIndex,problemIndex:r.problemIndex,problemAlias:((i=r.problem)==null?void 0:i.alias)||null,problemTitle:r.problem?r.problem.title:null,userId:r.user.id||null}}),(c=r.onSolutionClick)==null||c.call(r,{user:r.user,row:r.row,rowIndex:r.rowIndex,problemIndex:r.problemIndex,problem:r.problem,status:r.status,solutions:s.value,ranklist:r.ranklist}))}const d=e.defineComponent({props:{status:{type:Object,required:!0}},setup(n){return()=>{const i=n.status,c=m.getAcceptedStatusDetails(i);return typeof i.score=="number"?[e.h("span",{class:"srk-prest-status-block-score"},i.score),e.h("span",{class:"srk-prest-status-block-score-details"},c)]:c}}});return(n,i)=>t.status.result==="FB"?(e.openBlock(),e.createElementBlock("td",{key:0,class:e.normalizeClass([a.value,"srk-prest-status-block-fb"]),onClick:e.withModifiers(g,["prevent"])},[e.createVNode(e.unref(d),{status:t.status},null,8,["status"])],2)):t.status.result==="AC"?(e.openBlock(),e.createElementBlock("td",{key:1,class:e.normalizeClass([a.value,"srk-prest-status-block-accepted"]),onClick:e.withModifiers(g,["prevent"])},[e.createVNode(e.unref(d),{status:t.status},null,8,["status"])],2)):t.status.result==="?"?(e.openBlock(),e.createElementBlock("td",{key:2,class:e.normalizeClass([a.value,"srk-prest-status-block-frozen"]),onClick:e.withModifiers(g,["prevent"])},e.toDisplayString(t.status.tries),3)):t.status.result==="RJ"?(e.openBlock(),e.createElementBlock("td",{key:3,class:e.normalizeClass([a.value,"srk-prest-status-block-failed"]),onClick:e.withModifiers(g,["prevent"])},e.toDisplayString(t.status.tries),3)):(e.openBlock(),e.createElementBlock("td",de))}}),ke={class:"srk-user-cell-content"},pe={key:0,class:"srk-user-avatar"},ve=["src"],fe={class:"srk-user-body"},ge={class:"srk-user-name-row"},ye=["title"],he={class:"srk-marker-dot-group"},be=["data-tooltip"],Be={key:0,class:"srk-user-secondary-text srk--text-ellipsis",title:""},Ee=e.defineComponent({__name:"UserCell",props:{user:{},row:{},rowIndex:{},ranklist:{},markers:{default:()=>[]},theme:{default:v.EnumTheme.light},formatSrkAssetUrl:{},onUserClick:{}},setup(t){const r=t,s=e.computed(()=>v.resolveText(r.user.name)),o=e.computed(()=>v.resolveUserMarkers(r.user,r.markers)),a=e.computed(()=>o.value.map(d=>({marker:d,presentation:m.getMarkerPresentation(d,r.theme)})));function g(d){var n;m.captureModalTriggerPointFromMouseEvent(d,{source:"user-cell",context:{rowIndex:r.rowIndex,userId:r.user.id||null,userName:s.value}}),(n=r.onUserClick)==null||n.call(r,{user:r.user,row:r.row,rowIndex:r.rowIndex,ranklist:r.ranklist})}return(d,n)=>(e.openBlock(),e.createElementBlock("td",{class:e.normalizeClass(["srk--text-left srk--nowrap srk-user-cell",{"srk--cursor-pointer":!!t.onUserClick}]),title:"",onClick:e.withModifiers(g,["prevent"])},[e.createElementVNode("div",ke,[t.user.avatar?(e.openBlock(),e.createElementBlock("div",pe,[e.createElementVNode("img",{src:t.formatSrkAssetUrl(t.user.avatar,"user.avatar"),alt:"User Avatar"},null,8,ve)])):e.createCommentVNode("",!0),e.createElementVNode("div",fe,[e.createElementVNode("div",ge,[e.createElementVNode("span",{class:"srk-user-name-text",title:s.value},e.toDisplayString(s.value),9,ye),e.createElementVNode("span",he,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,i=>(e.openBlock(),e.createElementBlock("span",{key:i.marker.id,class:e.normalizeClass(["srk-marker srk-marker-dot srk--c-tooltip",i.presentation.className]),style:e.normalizeStyle(i.presentation.style),"data-tooltip":e.unref(v.resolveText)(i.marker.label)},null,14,be))),128))])]),t.user.organization?(e.openBlock(),e.createElementBlock("p",Be,e.toDisplayString(e.unref(v.resolveText)(t.user.organization)),1)):e.createCommentVNode("",!0)])])],2))}}),Ce={key:0},Se={key:1},we={key:2,class:"srk-common-table srk-main"},Ne={key:0,class:"srk--nowrap"},xe={class:"srk--text-right srk--nowrap"},Te={key:0,class:"srk--text-right srk--nowrap"},Ve=e.defineComponent({__name:"Ranklist",props:{data:{},theme:{default:v.EnumTheme.light},borderedRows:{type:Boolean,default:!1},stripedRows:{type:Boolean,default:!1},formatSrkAssetUrl:{}},emits:["userClick","solutionClick"],setup(t,{emit:r}){const s=t,o=r,a=e.computed(()=>s.theme),g=m.srkSupportedVersions,d=e.computed(()=>m.caniuse(s.data.version)),n=e.computed(()=>m.shouldShowTimeColumn(s.data.rows));function i(u,k){return m.resolveSrkAssetUrl(u,k,s.formatSrkAssetUrl)}function c(u){return u.rankValues||s.data.series.map(()=>({rank:null,segmentIndex:null}))}function b(u,k){return u.rank?u.rank:k.user.official===!1?"\uFF0A":""}function B(u,k){const l=u.segmentIndex||u.segmentIndex===0?u.segmentIndex:-1;return((k==null?void 0:k.segments)||[])[l]||{}}function S(u,k){const l=B(u,k).style;return typeof l=="string"?`srk-preset-series-segment-${l}`:""}function C(u,k){const l={[v.EnumTheme.light]:void 0,[v.EnumTheme.dark]:void 0},p=B(u,k).style;if(!p||typeof p=="string")return{};const y=v.resolveStyle(p),h=y.textColor||l,E=y.backgroundColor||l;return{color:h[s.theme],backgroundColor:E[s.theme]}}function N(u){return[...u.solutions||[]].reverse()}function x(u,k,l){if("ranklist"in u){o("userClick",u);return}l&&m.captureModalTriggerPointFromMouseEvent(l,{source:"user-cell",context:{rowIndex:k||0,userId:u.user.id||null,userName:v.resolveText(u.user.name)}}),o("userClick",{user:u.user,row:u,rowIndex:k||0,ranklist:s.data})}function T(u,k,l,p,y){if("solutions"in u){o("solutionClick",u);return}const h=p||0,E=l||u.statuses[h];if(y){const f=s.data.problems[h];m.captureModalTriggerPointFromMouseEvent(y,{source:"status-cell",context:{rowIndex:k||0,problemIndex:h,problemAlias:(f==null?void 0:f.alias)||null,problemTitle:f?v.resolveText(f.title):null,userId:u.user.id||null}})}o("solutionClick",{user:u.user,row:u,rowIndex:k||0,problemIndex:h,problem:s.data.problems[h],status:E,solutions:N(E),ranklist:s.data})}return(u,k)=>t.data.type!=="general"?(e.openBlock(),e.createElementBlock("div",Ce,'srk type "'+e.toDisplayString(t.data.type)+'" is not supported',1)):d.value?(e.openBlock(),e.createElementBlock("div",we,[e.createElementVNode("table",{class:e.normalizeClass({"srk-table-row-bordered":t.borderedRows,"srk-table-row-striped":t.stripedRows})},[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.data.series,l=>(e.openBlock(),e.createElementBlock("th",{key:l.title,class:"srk-series-header srk--text-right srk--nowrap"},e.toDisplayString(l.title),1))),128)),k[0]||(k[0]=e.createElementVNode("th",{class:"srk--text-left srk--nowrap"},"Name",-1)),k[1]||(k[1]=e.createElementVNode("th",{class:"srk--nowrap"},"Score",-1)),n.value?(e.openBlock(),e.createElementBlock("th",Ne,"Time")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.data.problems,(l,p)=>e.renderSlot(u.$slots,"problem-header-cell",e.mergeProps({key:l.alias||e.unref(v.resolveText)(l.title)||p,ref_for:!0},{problem:l,problemIndex:p,index:p,theme:a.value}),()=>[e.createVNode(ce,{problem:l,index:p,theme:a.value},null,8,["problem","index","theme"])])),128))])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.data.rows,(l,p)=>(e.openBlock(),e.createElementBlock("tr",{key:l.user.id||e.unref(v.resolveText)(l.user.name)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c(l),(y,h)=>{var E;return e.openBlock(),e.createElementBlock("td",{key:((E=t.data.series[h])==null?void 0:E.title)||h,class:e.normalizeClass(["srk--text-right srk--nowrap",S(y,t.data.series[h])]),style:e.normalizeStyle(C(y,t.data.series[h]))},e.toDisplayString(b(y,l)),7)}),128)),e.renderSlot(u.$slots,"user-cell",e.mergeProps({ref_for:!0},{user:l.user,row:l,rowIndex:p,ranklist:t.data,markers:t.data.markers,theme:a.value,onClick:y=>x(l,p,y)}),()=>[e.createVNode(Ee,{user:l.user,row:l,"row-index":p,ranklist:t.data,markers:t.data.markers,theme:a.value,"format-srk-asset-url":i,"on-user-click":x},null,8,["user","row","row-index","ranklist","markers","theme"])]),e.createElementVNode("td",xe,e.toDisplayString(l.score.value),1),n.value?(e.openBlock(),e.createElementBlock("td",Te,e.toDisplayString(l.score.time?e.unref(v.formatTimeDuration)(l.score.time,"min",Math.floor):"-"),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.statuses,(y,h)=>{var E;return e.renderSlot(u.$slots,"status-cell",e.mergeProps({key:((E=t.data.problems[h])==null?void 0:E.alias)||h,ref_for:!0},{status:y,problem:t.data.problems[h],problemIndex:h,user:l.user,row:l,rowIndex:p,ranklist:t.data,solutions:N(y),onClick:f=>T(l,p,y,h,f)}),()=>[e.createVNode(me,{status:y,problem:t.data.problems[h],"problem-index":h,user:l.user,row:l,"row-index":p,ranklist:t.data,"on-solution-click":T},null,8,["status","problem","problem-index","user","row","row-index","ranklist"])])}),128))]))),128))])],2)])):(e.openBlock(),e.createElementBlock("div",Se,' srk version "'+e.toDisplayString(t.data.version)+'" is not supported (current supported: '+e.toDisplayString(e.unref(g))+") ",1))}});exports.DefaultSolutionModal=U;exports.DefaultUserModal=J;exports.Modal=V;exports.ProgressBar=oe;exports.Ranklist=Ve;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("@algoux/standard-ranklist-renderer-component-styles");var e=require("vue"),m=require("@algoux/standard-ranklist-renderer-component-core"),f=require("@algoux/standard-ranklist-utils");const U=["data-srk-modal-state"],O=["aria-labelledby"],L={class:"srk-modal-content"},R={key:0,class:"srk-modal-header"},q={class:"srk-modal-body"},I=e.defineComponent({__name:"Modal",props:{open:{type:Boolean},title:{},width:{},rootClassName:{},wrapClassName:{},style:{},destroyOnClose:{type:Boolean,default:!0},closeOnEsc:{type:Boolean,default:!0},closeOnMaskClick:{type:Boolean,default:!0}},emits:["close","update:open"],setup(t,{emit:i}){let l=0;const r=t,c=i,y=`srk-vue-modal-title-${++l}`,k=e.ref(null),o=e.ref(r.open||!r.destroyOnClose),u=e.ref(r.open?"pre-open":"closing"),d=e.ref({x:0,y:0});let h=null,B=null,w=null;const x=e.computed(()=>o.value||!r.destroyOnClose),z=e.computed(()=>["srk-modal-root",m.SRK_ANIMATED_MODAL_ROOT_CLASS,r.rootClassName].filter(Boolean)),D=e.computed(()=>r.open||r.destroyOnClose&&o.value),A=e.computed(()=>{var b,N;return{...r.style,width:r.width?`${r.width}px`:(b=r.style)==null?void 0:b.width,["--srk-modal-origin-x"]:`${d.value.x}px`,["--srk-modal-origin-y"]:`${d.value.y}px`,["--srk-modal-max-width"]:r.width?`${r.width}px`:typeof((N=r.style)==null?void 0:N.width)=="string"?r.style.width:void 0}});function E(){if(typeof window=="undefined"){h=null,B=null;return}h!==null&&(window.clearTimeout(h),h=null),B!==null&&(window.clearTimeout(B),B=null)}async function V(){if(await e.nextTick(),typeof window=="undefined"||!r.open||!o.value||u.value!=="pre-open")return;C();const b=m.resolveModalTransformOrigin(k.value);d.value=b.origin,B=window.setTimeout(()=>{u.value="opening",B=null},0)}function C(){const b=m.registerModalFocusScope(k.value,{onEscape:P});w===null&&(w=b)}function S(){w!==null&&(m.unregisterModalFocusScope(w),w=null)}function M(b){c("update:open",!1),c("close",b)}function F(b){r.closeOnMaskClick&&b.target===b.currentTarget&&M("mask")}function P(b){r.open&&r.closeOnEsc&&M("escape")}return e.watch(()=>r.open,async b=>{if(E(),b){o.value=!0,d.value={x:0,y:0},u.value="pre-open",await V();return}if(S(),u.value="closing",!r.destroyOnClose){o.value=!0;return}o.value&&typeof window!="undefined"&&(h=window.setTimeout(()=>{o.value=!1,h=null},m.MODAL_ANIMATION_DURATION_MS))},{immediate:!0}),e.watchEffect(b=>{!D.value||(m.lockModalBodyScroll(),b(()=>{m.unlockModalBodyScroll()}))}),e.onMounted(()=>{m.ensureModalInteractionTracker(),r.open&&C()}),e.onBeforeUnmount(()=>{E(),S()}),(b,N)=>x.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(z.value),"data-srk-modal-state":u.value},[N[2]||(N[2]=e.createElementVNode("div",{class:"srk-modal-mask"},null,-1)),e.createElementVNode("div",{class:e.normalizeClass(["srk-modal-wrap",t.wrapClassName]),tabindex:"-1",onMousedown:F},[e.createElementVNode("div",{class:"srk-modal",role:"dialog","aria-modal":"true","aria-labelledby":t.title?y:void 0,"data-srk-modal-panel":"true",tabindex:"-1",ref_key:"dialogRef",ref:k,style:e.normalizeStyle(A.value)},[e.createElementVNode("div",L,[e.createElementVNode("button",{"aria-label":"Close",class:"srk-modal-close",type:"button",onClick:N[0]||(N[0]=a=>M("close-button"))},[...N[1]||(N[1]=[e.createElementVNode("span",{class:"srk-modal-close-x"},null,-1)])]),t.title!==void 0?(e.openBlock(),e.createElementBlock("div",R,[e.createElementVNode("div",{id:y,class:"srk-modal-title"},e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",q,[e.renderSlot(b.$slots,"default")])])],12,O)],34)],10,U)):e.createCommentVNode("",!0)}}),H={class:"srk-common-table srk-solutions-table"},K={class:"srk--text-right"},j=e.defineComponent({__name:"DefaultSolutionModal",props:{open:{type:Boolean},user:{},problem:{},problemIndex:{},solutions:{default:()=>[]},title:{},width:{default:320},rootClassName:{default:"srk-general-modal-root"},wrapClassName:{default:"srk-solutions-modal"},style:{}},emits:["close","update:open"],setup(t,{emit:i}){const l=t,r=i,c=e.ref(l.user?{user:l.user,problem:l.problem,problemIndex:l.problemIndex,solutions:l.solutions}:null);e.watch([()=>l.user,()=>l.problem,()=>l.problemIndex,()=>l.solutions],([k,o,u,d])=>{k&&(c.value={user:k,problem:o,problemIndex:u,solutions:d})},{immediate:!0});const y=e.computed(()=>l.title||(c.value?m.getSolutionModalTitle(c.value.problemIndex,c.value.user):""));return(k,o)=>c.value?(e.openBlock(),e.createBlock(I,{key:0,open:t.open,title:y.value,width:t.width,"root-class-name":t.rootClassName,"wrap-class-name":t.wrapClassName,style:e.normalizeStyle(t.style),onClose:o[0]||(o[0]=u=>r("close",u)),"onUpdate:open":o[1]||(o[1]=u=>r("update:open",u))},{default:e.withCtx(()=>[e.createElementVNode("table",H,[o[2]||(o[2]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",{class:"srk--text-left"},"Result"),e.createElementVNode("th",{class:"srk--text-right"},"Time")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value.solutions,(u,d)=>{var h;return e.openBlock(),e.createElementBlock("tr",{key:`${u.result}_${(h=u.time)==null?void 0:h[0]}_${d}`},[e.createElementVNode("td",null,[e.createElementVNode("span",{class:e.normalizeClass(["srk-solution-result-text",e.unref(m.getSolutionResultMeta)(u.result).className])},e.toDisplayString(e.unref(m.getSolutionResultMeta)(u.result).label),3)]),e.createElementVNode("td",K,e.toDisplayString(e.unref(m.formatSolutionTimestamp)(u)),1)])}),128))])])]),_:1},8,["open","title","width","root-class-name","wrap-class-name","style"])):e.createCommentVNode("",!0)}}),J={class:"srk-user-modal-info"},W={class:"srk-user-modal-info-user-name"},G={key:0,class:"srk-user-modal-info-user-second-name"},Q={class:"srk-user-modal-info-labels"},X={class:"srk-user-modal-info-labels-label srk-user-modal-info-labels-label-preset-general"},Y={key:1,class:"srk-user-modal-info-team-members"},Z={key:0,class:"srk-user-modal-info-team-members-slash"},_={key:2,class:"srk-user-modal-info-photo"},ee=["src"],te=e.defineComponent({__name:"DefaultUserModal",props:{open:{type:Boolean},user:{},markers:{default:()=>[]},theme:{default:f.EnumTheme.light},title:{default:"User Info"},width:{default:420},rootClassName:{default:"srk-general-modal-root"},wrapClassName:{default:"srk-user-modal"},style:{},formatSrkAssetUrl:{}},emits:["close","update:open"],setup(t,{emit:i}){const l=t,r=i,c=e.ref(l.user||null);e.watch(()=>l.user,o=>{o&&(c.value=o)},{immediate:!0});const y=e.computed(()=>c.value?f.resolveUserMarkers(c.value,l.markers).map(o=>({marker:o,presentation:m.getMarkerPresentation(o,l.theme)})):[]);function k(o,u){return m.resolveSrkAssetUrl(o,u,l.formatSrkAssetUrl)}return(o,u)=>c.value?(e.openBlock(),e.createBlock(I,{key:0,open:t.open,title:t.title,width:t.width,"root-class-name":t.rootClassName,"wrap-class-name":t.wrapClassName,style:e.normalizeStyle(t.style),onClose:u[0]||(u[0]=d=>r("close",d)),"onUpdate:open":u[1]||(u[1]=d=>r("update:open",d))},{default:e.withCtx(()=>[e.createElementVNode("div",J,[e.createElementVNode("h3",W,e.toDisplayString(e.unref(f.resolveText)(c.value.name)),1),c.value.organization?(e.openBlock(),e.createElementBlock("p",G,e.toDisplayString(e.unref(f.resolveText)(c.value.organization)),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Q,[e.createElementVNode("span",X,e.toDisplayString(c.value.official===!1?"\uFF0A \u975E\u6B63\u5F0F\u53C2\u52A0\u8005":"\u6B63\u5F0F\u53C2\u52A0\u8005"),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,d=>(e.openBlock(),e.createElementBlock("span",{key:d.marker.id,class:e.normalizeClass(["srk-user-modal-info-labels-label",d.presentation.className]),style:e.normalizeStyle(d.presentation.style)},e.toDisplayString(e.unref(f.resolveText)(d.marker.label)),7))),128))]),c.value.teamMembers&&c.value.teamMembers.length?(e.openBlock(),e.createElementBlock("div",Y,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value.teamMembers,(d,h)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:e.unref(f.resolveText)(d.name)},[h>0?(e.openBlock(),e.createElementBlock("span",Z," / ")):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(e.unref(f.resolveText)(d.name)),1)],64))),128))])):e.createCommentVNode("",!0),c.value.photo?(e.openBlock(),e.createElementBlock("div",_,[e.createElementVNode("img",{src:k(c.value.photo,"user.photo"),alt:"User portrait",class:"srk-user-modal-info-photo-img"},null,8,ee)])):e.createCommentVNode("",!0)])]),_:1},8,["open","title","width","root-class-name","wrap-class-name","style"])):e.createCommentVNode("",!0)}}),se={class:"srk-progress-bar-container"},le={class:"srk-progress-bar"},re={class:"srk-progress-bar-body"},oe={key:0,class:"srk-progress-slider-layer"},ae=["max","title"],ne={class:"srk-progress-secondary-area"},ie={class:"srk-progress-secondary-area-center"},ce={key:0,class:"srk-progress-time-machine-status"},ue={key:1,class:"srk-progress-live-text"},de={key:2,style:{visibility:"hidden"}},me=e.defineComponent({__name:"ProgressBar",props:{data:{},enableTimeTravel:{type:Boolean,default:!1},live:{type:Boolean,default:!1},td:{default:0}},emits:["timeTravel"],setup(t,{emit:i}){const l=t,r=i,c=e.ref(Date.now()),y=e.ref(!1),k=e.ref(!1),o=e.ref(m.getProgressMaxAvailableMinutes(l.data.contest,c.value,l.td)),u=e.ref(null);let d;const h=e.computed(()=>m.getProgressDurationMinutes(l.data.contest)),B=e.computed(()=>m.getProgressMaxAvailableMinutes(l.data.contest,c.value,l.td)),w=e.computed(()=>m.isProgressEnded(l.data.contest,c.value,l.td)),x=e.computed(()=>m.getProgressMetrics(l.data,c.value,l.td,o.value,y.value));function z(){c.value=Date.now(),w.value&&d!==void 0&&(window.clearInterval(d),d=void 0)}function D(C){typeof window!="undefined"&&(C&&d===void 0&&(d=window.setInterval(z,1e3)),!C&&d!==void 0&&(window.clearInterval(d),d=void 0))}function A(C){const S=C>=h.value||C>=B.value;r("timeTravel",S?null:C*60*1e3),y.value=!S,u.value=S?null:C*60*1e3,k.value=!1}function E(){k.value=!0,y.value=!0}function V(){k.value&&A(o.value)}return e.watch(B,C=>{!k.value&&u.value===null&&(o.value=C)}),e.watch(()=>l.live,C=>D(C),{immediate:!0}),e.watch(()=>l.data.contest.title,()=>{k.value=!1,o.value=B.value,u.value=null,y.value=!1,r("timeTravel",null)}),e.onBeforeUnmount(()=>{d!==void 0&&(window.clearInterval(d),d=void 0)}),(C,S)=>(e.openBlock(),e.createElementBlock("div",se,[e.createElementVNode("div",le,[e.createElementVNode("div",re,[e.createElementVNode("div",{class:"srk-progress-bar-segment srk-progress-bar-normal",style:e.normalizeStyle({width:`${x.value.frozenBreakpoint*100}%`})},[e.createElementVNode("div",{class:"srk-progress-bar-fill",style:e.normalizeStyle({width:`${x.value.normalInnerPercent}%`})},null,4)],4),e.createElementVNode("div",{class:"srk-progress-bar-segment srk-progress-bar-frozen",style:e.normalizeStyle({width:`${(1-x.value.frozenBreakpoint)*100}%`})},[e.createElementVNode("div",{class:"srk-progress-bar-fill",style:e.normalizeStyle({width:`${x.value.frozenInnerPercent}%`})},null,4)],4)]),t.enableTimeTravel&&x.value.supportRegen?(e.openBlock(),e.createElementBlock("div",oe,[k.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"srk-progress-slider-tooltip",style:e.normalizeStyle({left:`${h.value?o.value/h.value*100:0}%`})},e.toDisplayString(e.unref(f.secToTimeStr)(o.value*60)),5)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":S[0]||(S[0]=M=>o.value=M),"aria-label":"Time Travel",class:"srk-progress-slider",max:h.value,min:"0",step:"1",title:e.unref(f.secToTimeStr)(o.value*60),type:"range",onBlur:V,onKeydown:E,onKeyup:V,onMousedown:E,onMouseup:V,onTouchend:V,onTouchstart:E},null,40,ae),[[e.vModelText,o.value,void 0,{number:!0}]])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",ne,[e.createElementVNode("div",{class:"srk-progress-secondary-area-left",style:e.normalizeStyle(t.live||y.value?{}:{display:"none"})}," Elapsed: "+e.toDisplayString(e.unref(f.secToTimeStr)(Math.round(x.value.elapsed/1e3))),5),e.createElementVNode("div",ie,[y.value?(e.openBlock(),e.createElementBlock("div",ce,[...S[1]||(S[1]=[e.createElementVNode("div",{class:"srk-progress-time-machine-text"},"Time Travel Mode",-1)])])):t.live&&!w.value?(e.openBlock(),e.createElementBlock("div",ue,"Live")):(e.openBlock(),e.createElementBlock("div",de,"SRK"))]),e.createElementVNode("div",{class:"srk-progress-secondary-area-right",style:e.normalizeStyle(t.live||y.value?{}:{display:"none"})}," Remaining: "+e.toDisplayString(e.unref(f.secToTimeStr)(Math.round(x.value.remaining/1e3))),5)])]))}}),ke=["href"],pe={class:"srk--display-block"},fe=["title"],ve={class:"srk--display-block"},ye=["title"],ge=e.defineComponent({__name:"ProblemHeaderCell",props:{problem:{},index:{},theme:{default:f.EnumTheme.light}},setup(t){const i=t,l=e.computed(()=>i.problem.alias||f.numberToAlphabet(i.index)),r=e.computed(()=>i.problem.statistics),c=e.computed(()=>{if(!r.value)return"";const k=r.value.submitted?(r.value.accepted/r.value.submitted*100).toFixed(1):0;return`${r.value.accepted} / ${r.value.submitted} (${k}%)`}),y=e.computed(()=>m.getProblemHeaderBackgroundImage(i.problem.style,i.theme));return(k,o)=>(e.openBlock(),e.createElementBlock("th",{class:"srk--nowrap srk-problem-header",style:e.normalizeStyle({backgroundImage:y.value})},[t.problem.link?(e.openBlock(),e.createElementBlock("a",{key:0,href:t.problem.link,target:"_blank",rel:"noopener noreferrer",style:{color:"unset"}},[e.createElementVNode("span",pe,e.toDisplayString(l.value),1),r.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"srk--display-block srk-problem-stats",title:c.value},e.toDisplayString(r.value.accepted),9,fe)):e.createCommentVNode("",!0)],8,ke)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("span",ve,e.toDisplayString(l.value),1),r.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"srk--display-block srk-problem-stats",title:c.value},e.toDisplayString(r.value.accepted),9,ye)):e.createCommentVNode("",!0)],64))],4))}}),he={key:0,class:"srk-prest-status-block-fb-star"},be={key:4,class:"srk-status-placeholder-cell srk--text-center srk--nowrap"},Be="\u2605",Ce=e.defineComponent({__name:"StatusCell",props:{status:{},problem:{},problemIndex:{},user:{},row:{},rowIndex:{},ranklist:{},onSolutionClick:{},statusCellPreset:{default:"classic"},statusColorAsText:{type:Boolean,default:!1},emptyStatusPlaceholder:{default:null}},setup(t){const i=t,l=e.computed(()=>[...i.status.solutions||[]].reverse()),r=e.computed(()=>l.value.length>0&&!!i.onSolutionClick),c=e.computed(()=>["srk-prest-status-block","srk--text-center","srk--nowrap",{"srk--cursor-pointer":r.value,"srk-prest-status-block-color-text":i.statusColorAsText}]);function y(o){var u,d;!r.value||(m.captureModalTriggerPointFromMouseEvent(o,{source:"status-cell",context:{rowIndex:i.rowIndex,problemIndex:i.problemIndex,problemAlias:((u=i.problem)==null?void 0:u.alias)||null,problemTitle:i.problem?f.resolveText(i.problem.title):null,userId:i.user.id||null}}),(d=i.onSolutionClick)==null||d.call(i,{user:i.user,row:i.row,rowIndex:i.rowIndex,problemIndex:i.problemIndex,problem:i.problem,status:i.status,solutions:l.value,ranklist:i.ranklist}))}const k=e.defineComponent({props:{status:{type:Object,required:!0},ranklist:{type:Object,required:!0},preset:{type:String,required:!0}},setup(o){return()=>{const u=o.status,d=o.ranklist,h=o.preset,B=m.getRankProblemStatusCellPresentation(u,d,h);return typeof B.score=="number"?[e.h("span",{class:"srk-prest-status-block-score"},B.score),e.h("span",{class:"srk-prest-status-block-score-details"},B.scoreDetails)]:B.secondary!==void 0?[e.h("span",{class:"srk-prest-status-block-primary"},B.primary||"")," ",e.h("span",{class:"srk-prest-status-block-secondary"},B.secondary)]:B.primary||""}}});return(o,u)=>t.status.result==="FB"?(e.openBlock(),e.createElementBlock("td",{key:0,class:e.normalizeClass([c.value,"srk-prest-status-block-fb"]),onClick:e.withModifiers(y,["prevent"])},[t.statusColorAsText?(e.openBlock(),e.createElementBlock("span",he,e.toDisplayString(Be))):e.createCommentVNode("",!0),e.createVNode(e.unref(k),{status:t.status,ranklist:t.ranklist,preset:t.statusCellPreset},null,8,["status","ranklist","preset"])],2)):t.status.result==="AC"?(e.openBlock(),e.createElementBlock("td",{key:1,class:e.normalizeClass([c.value,"srk-prest-status-block-accepted"]),onClick:e.withModifiers(y,["prevent"])},[e.createVNode(e.unref(k),{status:t.status,ranklist:t.ranklist,preset:t.statusCellPreset},null,8,["status","ranklist","preset"])],2)):t.status.result==="?"?(e.openBlock(),e.createElementBlock("td",{key:2,class:e.normalizeClass([c.value,"srk-prest-status-block-frozen"]),onClick:e.withModifiers(y,["prevent"])},[e.createVNode(e.unref(k),{status:t.status,ranklist:t.ranklist,preset:t.statusCellPreset},null,8,["status","ranklist","preset"])],2)):t.status.result==="RJ"?(e.openBlock(),e.createElementBlock("td",{key:3,class:e.normalizeClass([c.value,"srk-prest-status-block-failed"]),onClick:e.withModifiers(y,["prevent"])},[e.createVNode(e.unref(k),{status:t.status,ranklist:t.ranklist,preset:t.statusCellPreset},null,8,["status","ranklist","preset"])],2)):(e.openBlock(),e.createElementBlock("td",be,e.toDisplayString(t.emptyStatusPlaceholder),1))}}),Ee={class:"srk-user-cell-content"},Se={key:0,class:"srk-user-avatar"},Ne=["src"],we={class:"srk-user-body"},xe={class:"srk-user-name-row"},Te=["title"],Ve={class:"srk-marker-dot-group"},Me=["data-tooltip"],$e={key:0,class:"srk-user-secondary-text srk--text-ellipsis",title:""},De=e.defineComponent({__name:"UserCell",props:{user:{},row:{},rowIndex:{},ranklist:{},markers:{default:()=>[]},theme:{default:f.EnumTheme.light},formatSrkAssetUrl:{},onUserClick:{},hideOrganization:{type:Boolean,default:!1},hideAvatar:{type:Boolean,default:!1}},setup(t){const i=t,l=e.computed(()=>f.resolveText(i.user.name)),r=e.computed(()=>f.resolveUserMarkers(i.user,i.markers)),c=e.computed(()=>r.value.map(k=>({marker:k,presentation:m.getMarkerPresentation(k,i.theme)})));function y(k){var o;m.captureModalTriggerPointFromMouseEvent(k,{source:"user-cell",context:{rowIndex:i.rowIndex,userId:i.user.id||null,userName:l.value}}),(o=i.onUserClick)==null||o.call(i,{user:i.user,row:i.row,rowIndex:i.rowIndex,ranklist:i.ranklist})}return(k,o)=>(e.openBlock(),e.createElementBlock("td",{class:e.normalizeClass(["srk--text-left srk--nowrap srk-user-cell",{"srk--cursor-pointer":!!t.onUserClick}]),title:"",onClick:e.withModifiers(y,["prevent"])},[e.createElementVNode("div",Ee,[t.user.avatar&&!t.hideAvatar?(e.openBlock(),e.createElementBlock("div",Se,[e.createElementVNode("img",{src:t.formatSrkAssetUrl(t.user.avatar,"user.avatar"),alt:"User Avatar"},null,8,Ne)])):e.createCommentVNode("",!0),e.createElementVNode("div",we,[e.createElementVNode("div",xe,[e.createElementVNode("span",{class:"srk-user-name-text",title:l.value},e.toDisplayString(l.value),9,Te),e.createElementVNode("span",Ve,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,u=>(e.openBlock(),e.createElementBlock("span",{key:u.marker.id,class:e.normalizeClass(["srk-marker srk-marker-dot srk--c-tooltip",u.presentation.className]),style:e.normalizeStyle(u.presentation.style),"data-tooltip":e.unref(f.resolveText)(u.marker.label)},null,14,Me))),128))])]),t.user.organization&&!t.hideOrganization?(e.openBlock(),e.createElementBlock("p",$e,e.toDisplayString(e.unref(f.resolveText)(t.user.organization)),1)):e.createCommentVNode("",!0)])])],2))}}),ze={key:0},Ae={key:1},Pe={key:2,class:"srk-common-table srk-main"},Fe={key:0,class:"srk-organization-header srk--text-left srk--nowrap"},Ie={class:"srk--text-left srk--nowrap"},Ue={class:"srk--text-right srk--nowrap"},Oe={key:1,class:"srk--text-right srk--nowrap"},Le={key:2,class:"srk-dirt-header srk--text-right srk--nowrap"},Re={key:3,class:"srk-se-header srk--text-right srk--nowrap"},qe={class:"srk-organization-cell-content"},He={key:0,class:"srk-user-avatar"},Ke=["src"],je=["title"],Je={class:"srk--text-right srk--nowrap"},We={key:1,class:"srk--text-right srk--nowrap"},Ge={key:2,class:"srk-dirt-cell srk--text-right srk--nowrap"},Qe={key:3,class:"srk-se-cell srk--text-right srk--nowrap"},Xe={key:0},Ye=["colspan"],Ze=["data-tooltip"],_e={class:"srk-problem-statistics-footer-primary"},et={class:"srk-problem-statistics-footer-secondary"},tt={key:0,class:"srk-problem-statistics-footer-cell srk-extra-statistics-footer-cell srk-dirt-footer-cell srk--nowrap"},st={key:1,class:"srk-problem-statistics-footer-cell srk-extra-statistics-footer-cell srk-se-footer-cell srk--nowrap"},lt={class:"srk-problem-statistics-footer-row srk-problem-statistics-footer-problem-label-row"},rt=["colspan"],ot={class:"srk--display-block"},at={key:0,class:"srk-problem-statistics-footer-cell srk-extra-statistics-footer-cell srk-dirt-footer-cell srk--nowrap"},nt={key:1,class:"srk-problem-statistics-footer-cell srk-extra-statistics-footer-cell srk-se-footer-cell srk--nowrap"},it=e.defineComponent({__name:"Ranklist",props:{data:{},theme:{default:f.EnumTheme.light},borderedRows:{type:Boolean,default:!1},rowBordered:{type:Boolean,default:!1},columnBordered:{type:Boolean,default:!1},stripedRows:{type:Boolean,default:!1},formatSrkAssetUrl:{},splitOrganization:{type:Boolean,default:!1},columnTitles:{},statusCellPreset:{default:"classic"},statusColorAsText:{type:Boolean,default:!1},showProblemStatisticsFooter:{type:Boolean,default:!1},showDirtColumn:{type:Boolean,default:!1},showSEColumn:{type:Boolean,default:!1},emptyStatusPlaceholder:{default:null},userAvatarPlacement:{default:"user"}},emits:["userClick","solutionClick"],setup(t,{emit:i}){const l=t,r=i,c=e.computed(()=>l.theme),y=m.srkSupportedVersions,k=e.computed(()=>m.caniuse(l.data.version)),o=e.computed(()=>m.shouldShowTimeColumn(l.data.rows)),u=e.computed(()=>l.splitOrganization&&l.userAvatarPlacement==="organization"),d=e.computed(()=>l.showProblemStatisticsFooter||l.showSEColumn?m.calculateProblemStatisticsFooter(l.data):[]),h=e.computed(()=>l.data.series.length+1+1+(o.value?1:0)+(l.splitOrganization?1:0)),B=[{key:"accepted",label:"Accepted",tooltip:"Number of participants who solved this problem"},{key:"tried",label:"Tried",tooltip:"Number of participants who attempted this problem"},{key:"submitted",label:"Submitted",tooltip:"Total number of valid submissions for this problem"},{key:"dirt",label:"Dirt",tooltip:"Wrong submissions among participants who solved this problem"},{key:"se",label:"SE",tooltip:"Average hardness, calculated as (participants - accepted) / participants"},{key:"firstAccepted",label:"FB at",tooltip:"First Blood at, also known as first solve time, in minutes"},{key:"lastAccepted",label:"LB at",tooltip:"Last Blood at, also known as last solve time, in minutes"}];function w(a,n){return m.resolveSrkAssetUrl(a,n,l.formatSrkAssetUrl)}function x(a){return a.rankValues||l.data.series.map(()=>({rank:null,segmentIndex:null}))}function z(a,n){return a.rank?a.rank:n.user.official===!1?"\uFF0A":""}function D(a){return((a==null?void 0:a.segments)||[]).some(n=>typeof n.style=="string")}function A(a,n){var p,g,v;const s=(p=l.columnTitles)==null?void 0:p.series;return typeof s=="function"?(g=s(a,n))!=null?g:a.title:Array.isArray(s)&&(v=s[n])!=null?v:a.title}function E(a,n){var s,p;return(p=(s=l.columnTitles)==null?void 0:s[a])!=null?p:n}function V(a,n){const s=a.segmentIndex||a.segmentIndex===0?a.segmentIndex:-1;return((n==null?void 0:n.segments)||[])[s]||{}}function C(a,n){const s=V(a,n).style;return typeof s=="string"?`srk-preset-series-segment-${s}`:""}function S(a,n){const s={[f.EnumTheme.light]:void 0,[f.EnumTheme.dark]:void 0},p=V(a,n).style;if(!p||typeof p=="string")return{};const g=f.resolveStyle(p),v=g.textColor||s,T=g.backgroundColor||s;return{color:v[l.theme],backgroundColor:T[l.theme]}}function M(a){return[...a.solutions||[]].reverse()}function F(a,n){switch(a){case"accepted":return n.accepted;case"tried":return n.tried;case"submitted":return n.submitted;case"dirt":return n.dirt;case"se":return m.formatProblemStatisticsAverageHardness(n);case"firstAccepted":return m.formatProblemStatisticsAcceptedMinute(n.firstAcceptedTime);case"lastAccepted":return m.formatProblemStatisticsAcceptedMinute(n.lastAcceptedTime);default:return""}}function P(a,n){switch(a){case"accepted":return m.formatProblemStatisticsPercent(n.accepted,n.participantCount);case"tried":return m.formatProblemStatisticsPercent(n.tried,n.participantCount);case"dirt":return m.formatProblemStatisticsPercent(n.dirt,n.dirtSubmitted);default:return}}function b(a,n,s){if("ranklist"in a){r("userClick",a);return}s&&m.captureModalTriggerPointFromMouseEvent(s,{source:"user-cell",context:{rowIndex:n||0,userId:a.user.id||null,userName:f.resolveText(a.user.name)}}),r("userClick",{user:a.user,row:a,rowIndex:n||0,ranklist:l.data})}function N(a,n,s,p,g){if("solutions"in a){r("solutionClick",a);return}const v=p||0,T=s||a.statuses[v];if(g){const $=l.data.problems[v];m.captureModalTriggerPointFromMouseEvent(g,{source:"status-cell",context:{rowIndex:n||0,problemIndex:v,problemAlias:($==null?void 0:$.alias)||null,problemTitle:$?f.resolveText($.title):null,userId:a.user.id||null}})}r("solutionClick",{user:a.user,row:a,rowIndex:n||0,problemIndex:v,problem:l.data.problems[v],status:T,solutions:M(T),ranklist:l.data})}return(a,n)=>t.data.type!=="general"?(e.openBlock(),e.createElementBlock("div",ze,'srk type "'+e.toDisplayString(t.data.type)+'" is not supported',1)):k.value?(e.openBlock(),e.createElementBlock("div",Pe,[e.createElementVNode("table",{class:e.normalizeClass({"srk-table-row-bordered":t.borderedRows||t.rowBordered,"srk-table-column-bordered":t.columnBordered,"srk-table-row-striped":t.stripedRows})},[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.data.series,(s,p)=>(e.openBlock(),e.createElementBlock("th",{key:s.title,class:e.normalizeClass(["srk-series-header srk--text-right srk--nowrap",{"srk-series-segmented-column":D(s)}])},e.toDisplayString(A(s,p)),3))),128)),t.splitOrganization?(e.openBlock(),e.createElementBlock("th",Fe,e.toDisplayString(E("organization","Organization")),1)):e.createCommentVNode("",!0),e.createElementVNode("th",Ie,e.toDisplayString(E("user","Name")),1),e.createElementVNode("th",Ue,e.toDisplayString(E("score","Score")),1),o.value?(e.openBlock(),e.createElementBlock("th",Oe,e.toDisplayString(E("time","Time")),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.data.problems,(s,p)=>e.renderSlot(a.$slots,"problem-header-cell",e.mergeProps({key:s.alias||e.unref(f.resolveText)(s.title)||p,ref_for:!0},{problem:s,problemIndex:p,index:p,theme:c.value}),()=>[e.createVNode(ge,{problem:s,index:p,theme:c.value},null,8,["problem","index","theme"])])),128)),t.showDirtColumn?(e.openBlock(),e.createElementBlock("th",Le,e.toDisplayString(E("dirt","Dirt")),1)):e.createCommentVNode("",!0),t.showSEColumn?(e.openBlock(),e.createElementBlock("th",Re,e.toDisplayString(E("se","SE")),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.data.rows,(s,p)=>(e.openBlock(),e.createElementBlock("tr",{key:s.user.id||e.unref(f.resolveText)(s.user.name)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x(s),(g,v)=>{var T;return e.openBlock(),e.createElementBlock("td",{key:((T=t.data.series[v])==null?void 0:T.title)||v,class:e.normalizeClass(["srk--text-right srk--nowrap",[C(g,t.data.series[v]),{"srk-series-segmented-column":D(t.data.series[v])}]]),style:e.normalizeStyle(S(g,t.data.series[v]))},e.toDisplayString(z(g,s)),7)}),128)),t.splitOrganization?(e.openBlock(),e.createElementBlock("td",{key:0,class:e.normalizeClass(["srk-organization-cell srk--text-left srk--nowrap",{"srk-organization-cell-avatar":u.value&&!!s.user.avatar}])},[e.createElementVNode("div",qe,[u.value&&s.user.avatar?(e.openBlock(),e.createElementBlock("div",He,[e.createElementVNode("img",{src:w(s.user.avatar,"user.avatar"),alt:"User Avatar"},null,8,Ke)])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:"srk-organization-name-text",title:s.user.organization?e.unref(f.resolveText)(s.user.organization):""},e.toDisplayString(s.user.organization?e.unref(f.resolveText)(s.user.organization):""),9,je)])],2)):e.createCommentVNode("",!0),e.renderSlot(a.$slots,"user-cell",e.mergeProps({ref_for:!0},{user:s.user,row:s,rowIndex:p,ranklist:t.data,markers:t.data.markers,theme:c.value,hideOrganization:t.splitOrganization,hideAvatar:u.value,onClick:g=>b(s,p,g)}),()=>[e.createVNode(De,{user:s.user,row:s,"row-index":p,ranklist:t.data,markers:t.data.markers,theme:c.value,"format-srk-asset-url":w,"on-user-click":b,"hide-organization":t.splitOrganization,"hide-avatar":u.value},null,8,["user","row","row-index","ranklist","markers","theme","hide-organization","hide-avatar"])]),e.createElementVNode("td",Je,e.toDisplayString(s.score.value),1),o.value?(e.openBlock(),e.createElementBlock("td",We,e.toDisplayString(s.score.time?e.unref(f.formatTimeDuration)(s.score.time,"min",Math.floor):"-"),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.statuses,(g,v)=>{var T;return e.renderSlot(a.$slots,"status-cell",e.mergeProps({key:((T=t.data.problems[v])==null?void 0:T.alias)||v,ref_for:!0},{status:g,problem:t.data.problems[v],problemIndex:v,user:s.user,row:s,rowIndex:p,ranklist:t.data,solutions:M(g),statusCellPreset:t.statusCellPreset,statusColorAsText:t.statusColorAsText,emptyStatusPlaceholder:t.emptyStatusPlaceholder,onClick:$=>N(s,p,g,v,$)}),()=>[e.createVNode(Ce,{status:g,problem:t.data.problems[v],"problem-index":v,user:s.user,row:s,"row-index":p,ranklist:t.data,"on-solution-click":N,"status-cell-preset":t.statusCellPreset,"status-color-as-text":t.statusColorAsText,"empty-status-placeholder":t.emptyStatusPlaceholder},null,8,["status","problem","problem-index","user","row","row-index","ranklist","status-cell-preset","status-color-as-text","empty-status-placeholder"])])}),128)),t.showDirtColumn?(e.openBlock(),e.createElementBlock("td",Ge,e.toDisplayString(e.unref(m.calculateDirtPercentage)(s)),1)):e.createCommentVNode("",!0),t.showSEColumn?(e.openBlock(),e.createElementBlock("td",Qe,e.toDisplayString(e.unref(m.calculateSEValue)(s,d.value)),1)):e.createCommentVNode("",!0)]))),128))]),t.showProblemStatisticsFooter?(e.openBlock(),e.createElementBlock("tfoot",Xe,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(B,s=>e.createElementVNode("tr",{key:s.key,class:"srk-problem-statistics-footer-row"},[e.createElementVNode("td",{class:"srk-problem-statistics-footer-labels srk--text-right srk--nowrap",colspan:h.value},[e.createElementVNode("span",{class:"srk-problem-statistics-footer-label srk--c-tooltip","data-tooltip":s.tooltip},e.toDisplayString(s.label),9,Ze)],8,Ye),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(p,g)=>{var v;return e.openBlock(),e.createElementBlock("td",{key:((v=t.data.problems[g])==null?void 0:v.alias)||g,class:"srk-problem-statistics-footer-cell srk--text-center srk--nowrap"},[e.createElementVNode("span",_e,e.toDisplayString(F(s.key,p)),1),P(s.key,p)!==void 0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[n[0]||(n[0]=e.createTextVNode(e.toDisplayString(" ")+" ",-1)),e.createElementVNode("span",et,e.toDisplayString(P(s.key,p)),1)],64)):e.createCommentVNode("",!0)])}),128)),t.showDirtColumn?(e.openBlock(),e.createElementBlock("td",tt,[...n[1]||(n[1]=[e.createElementVNode("span",{class:"srk-problem-statistics-footer-primary"},null,-1)])])):e.createCommentVNode("",!0),t.showSEColumn?(e.openBlock(),e.createElementBlock("td",st,[...n[2]||(n[2]=[e.createElementVNode("span",{class:"srk-problem-statistics-footer-primary"},null,-1)])])):e.createCommentVNode("",!0)])),64)),e.createElementVNode("tr",lt,[e.createElementVNode("td",{class:"srk-problem-statistics-footer-labels srk--text-right srk--nowrap",colspan:h.value},null,8,rt),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.data.problems,(s,p)=>(e.openBlock(),e.createElementBlock("td",{key:s.alias||e.unref(f.resolveText)(s.title)||p,class:"srk-problem-statistics-footer-cell srk-problem-statistics-footer-problem-header srk-problem-header srk--text-center srk--nowrap",style:e.normalizeStyle({backgroundImage:e.unref(m.getProblemHeaderBackgroundImage)(s.style,c.value,0)})},[e.createElementVNode("span",ot,e.toDisplayString(s.alias||e.unref(f.numberToAlphabet)(p)),1)],4))),128)),t.showDirtColumn?(e.openBlock(),e.createElementBlock("td",at,[...n[3]||(n[3]=[e.createElementVNode("span",{class:"srk-problem-statistics-footer-primary"},null,-1)])])):e.createCommentVNode("",!0),t.showSEColumn?(e.openBlock(),e.createElementBlock("td",nt,[...n[4]||(n[4]=[e.createElementVNode("span",{class:"srk-problem-statistics-footer-primary"},null,-1)])])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)],2)])):(e.openBlock(),e.createElementBlock("div",Ae,' srk version "'+e.toDisplayString(t.data.version)+'" is not supported (current supported: '+e.toDisplayString(e.unref(y))+") ",1))}});exports.DefaultSolutionModal=j;exports.DefaultUserModal=te;exports.Modal=I;exports.ProgressBar=me;exports.Ranklist=it;
package/dist/index.d.ts CHANGED
@@ -3,4 +3,4 @@ export { default as DefaultUserModal } from './modal/DefaultUserModal.vue';
3
3
  export { default as Modal } from './modal/Modal.vue';
4
4
  export { default as ProgressBar } from './progress/ProgressBar.vue';
5
5
  export { default as Ranklist } from './Ranklist.vue';
6
- export type { DefaultSolutionModalProps, DefaultUserModalProps, ModalCloseReason, ModalEvents, ModalProps, ProblemHeaderCellSlotProps, ProgressBarEvents, ProgressBarProps, RanklistEvents, RanklistProps, SolutionClickPayload, StaticRanklist, StaticRanklistRow, StatusCellSlotProps, UserCellSlotProps, UserClickPayload, } from './types';
6
+ export type { DefaultSolutionModalProps, DefaultUserModalProps, ModalCloseReason, ModalEvents, ModalProps, ProblemHeaderCellSlotProps, ProgressBarEvents, ProgressBarProps, RanklistColumnTitles, RanklistEvents, RanklistProps, RanklistStatusCellPreset, RanklistUserAvatarPlacement, SolutionClickPayload, StaticRanklist, StaticRanklistRow, StatusCellSlotProps, UserCellSlotProps, UserClickPayload, } from './types';