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

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
@@ -55,7 +55,7 @@ function handleSolutionClick(payload: SolutionClickPayload) {
55
55
  <ProgressBar :data="props.ranklist" enable-time-travel @time-travel="(time) => console.log(time)" />
56
56
  <Ranklist
57
57
  :data="staticRanklist"
58
- striped-rows
58
+ row-striped
59
59
  @user-click="handleUserClick"
60
60
  @solution-click="handleSolutionClick"
61
61
  />
@@ -90,9 +90,11 @@ Use `Modal` directly when you want custom modal content. `Ranklist` exposes scop
90
90
  - `showDirtColumn`: appends a Dirt percentage column after problem columns.
91
91
  - `showSEColumn`: appends a contestant SE column after problem columns, placed after Dirt when both are enabled.
92
92
  - `rowBordered`: adds row separators controlled by CSS variables.
93
+ - `rowStriped`: adds striped body rows.
93
94
  - `columnBordered`: adds column separators controlled by CSS variables.
94
95
  - `emptyStatusPlaceholder`: renders a custom string in no-submission status cells.
95
96
  - `userAvatarPlacement`: chooses whether the default user avatar renders in the user column or, when `splitOrganization` is enabled, in the organization column.
97
+ - `languages`: passes an explicit language priority list to i18n text resolution. Leave it unset to use the browser language list; pass it to `Ranklist`, `DefaultUserModal`, and `DefaultSolutionModal` when rendering outside the browser or when you need a forced language.
96
98
 
97
99
  ```vue
98
100
  <script setup lang="ts">
@@ -116,9 +118,11 @@ const columnTitles = {
116
118
  status-cell-preset="compact"
117
119
  status-color-as-text
118
120
  row-bordered
121
+ row-striped
119
122
  column-bordered
120
123
  empty-status-placeholder="·"
121
124
  user-avatar-placement="organization"
125
+ :languages="['zh-CN']"
122
126
  :column-titles="columnTitles"
123
127
  />
124
128
  </template>
@@ -1,4 +1,5 @@
1
1
  import type * as srk from '@algoux/standard-ranklist';
2
+ import { resolveText } from '@algoux/standard-ranklist-utils';
2
3
  import { calculateDirtPercentage, calculateSEValue, getProblemHeaderBackgroundImage } from '@algoux/standard-ranklist-renderer-component-core';
3
4
  import type { ProblemStatisticsFooter, RanklistColumnTitles, RankValue, SolutionClickPayload, StaticRanklistRow, UserClickPayload } from '@algoux/standard-ranklist-renderer-component-core';
4
5
  declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
@@ -11,11 +12,6 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
11
12
  required: false;
12
13
  default: any;
13
14
  };
14
- borderedRows: {
15
- type: BooleanConstructor;
16
- required: false;
17
- default: boolean;
18
- };
19
15
  rowBordered: {
20
16
  type: BooleanConstructor;
21
17
  required: false;
@@ -26,7 +22,7 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
26
22
  required: false;
27
23
  default: boolean;
28
24
  };
29
- stripedRows: {
25
+ rowStriped: {
30
26
  type: BooleanConstructor;
31
27
  required: false;
32
28
  default: boolean;
@@ -79,6 +75,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
79
75
  required: false;
80
76
  default: string;
81
77
  };
78
+ languages: {
79
+ type: ArrayConstructor;
80
+ required: false;
81
+ };
82
82
  }>, {
83
83
  props: any;
84
84
  emit: (event: "userClick" | "solutionClick", ...args: any[]) => void;
@@ -95,6 +95,7 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
95
95
  tooltip: string;
96
96
  }[];
97
97
  formatAssetUrl: (url: string, field: string) => string;
98
+ resolveDisplayText: (text: Parameters<typeof resolveText>[0]) => any;
98
99
  getRankValues: (row: StaticRanklistRow) => RankValue[];
99
100
  getRankText: (rankValue: RankValue, row: StaticRanklistRow) => number | "" | "*";
100
101
  isSeriesSegmentedColumn: (series: srk.RankSeries | undefined) => boolean;
@@ -116,7 +117,6 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
116
117
  emitSolutionClick: (payloadOrRow: SolutionClickPayload | StaticRanklistRow, rowIndex?: number | undefined, status?: srk.RankProblemStatus | undefined, problemIndex?: number | undefined, event?: MouseEvent | undefined) => void;
117
118
  readonly formatTimeDuration: any;
118
119
  readonly numberToAlphabet: any;
119
- readonly resolveText: any;
120
120
  readonly calculateDirtPercentage: typeof calculateDirtPercentage;
121
121
  readonly calculateSEValue: typeof calculateSEValue;
122
122
  readonly getProblemHeaderBackgroundImage: typeof getProblemHeaderBackgroundImage;
@@ -134,6 +134,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
134
134
  required: false;
135
135
  default: any;
136
136
  };
137
+ languages: {
138
+ type: ArrayConstructor;
139
+ required: false;
140
+ };
137
141
  }>, {
138
142
  props: any;
139
143
  alias: import("vue").ComputedRef<any>;
@@ -154,6 +158,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
154
158
  required: false;
155
159
  default: any;
156
160
  };
161
+ languages: {
162
+ type: ArrayConstructor;
163
+ required: false;
164
+ };
157
165
  }>> & Readonly<{}>, {
158
166
  theme: string;
159
167
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -205,6 +213,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
205
213
  required: false;
206
214
  default: null;
207
215
  };
216
+ languages: {
217
+ type: ArrayConstructor;
218
+ required: false;
219
+ };
208
220
  }>, {
209
221
  props: any;
210
222
  fbStar: string;
@@ -292,6 +304,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
292
304
  required: false;
293
305
  default: null;
294
306
  };
307
+ languages: {
308
+ type: ArrayConstructor;
309
+ required: false;
310
+ };
295
311
  }>> & Readonly<{}>, {
296
312
  statusCellPreset: string;
297
313
  statusColorAsText: boolean;
@@ -342,13 +358,17 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
342
358
  required: false;
343
359
  default: boolean;
344
360
  };
361
+ languages: {
362
+ type: ArrayConstructor;
363
+ required: false;
364
+ };
345
365
  }>, {
346
366
  props: any;
347
367
  name: import("vue").ComputedRef<any>;
348
368
  userMarkers: import("vue").ComputedRef<any>;
349
369
  resolvedMarkers: import("vue").ComputedRef<any>;
370
+ resolveDisplayText: (text: unknown) => any;
350
371
  emitUserClick: (event: MouseEvent) => void;
351
- readonly resolveText: any;
352
372
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
353
373
  user: {
354
374
  type: null;
@@ -394,6 +414,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
394
414
  required: false;
395
415
  default: boolean;
396
416
  };
417
+ languages: {
418
+ type: ArrayConstructor;
419
+ required: false;
420
+ };
397
421
  }>> & Readonly<{}>, {
398
422
  theme: string;
399
423
  markers: unknown[];
@@ -410,11 +434,6 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
410
434
  required: false;
411
435
  default: any;
412
436
  };
413
- borderedRows: {
414
- type: BooleanConstructor;
415
- required: false;
416
- default: boolean;
417
- };
418
437
  rowBordered: {
419
438
  type: BooleanConstructor;
420
439
  required: false;
@@ -425,7 +444,7 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
425
444
  required: false;
426
445
  default: boolean;
427
446
  };
428
- stripedRows: {
447
+ rowStriped: {
429
448
  type: BooleanConstructor;
430
449
  required: false;
431
450
  default: boolean;
@@ -478,15 +497,18 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
478
497
  required: false;
479
498
  default: string;
480
499
  };
500
+ languages: {
501
+ type: ArrayConstructor;
502
+ required: false;
503
+ };
481
504
  }>> & Readonly<{
482
505
  onUserClick?: ((...args: any[]) => any) | undefined;
483
506
  onSolutionClick?: ((...args: any[]) => any) | undefined;
484
507
  }>, {
485
508
  theme: string;
486
- borderedRows: boolean;
487
509
  rowBordered: boolean;
488
510
  columnBordered: boolean;
489
- stripedRows: boolean;
511
+ rowStriped: boolean;
490
512
  splitOrganization: boolean;
491
513
  statusCellPreset: string;
492
514
  statusColorAsText: boolean;
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"),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;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("@algoux/standard-ranklist-renderer-component-styles");var e=require("vue"),d=require("@algoux/standard-ranklist-renderer-component-core"),B=require("@algoux/standard-ranklist-utils");const O=["data-srk-modal-state"],L=["aria-labelledby"],q={class:"srk-modal-content"},R={key:0,class:"srk-modal-header"},H={class:"srk-modal-body"},U=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:o}){let l=0;const r=t,u=o,g=`srk-vue-modal-title-${++l}`,f=e.ref(null),a=e.ref(r.open||!r.destroyOnClose),m=e.ref(r.open?"pre-open":"closing"),c=e.ref({x:0,y:0});let y=null,k=null,S=null;const E=e.computed(()=>a.value||!r.destroyOnClose),z=e.computed(()=>["srk-modal-root",d.SRK_ANIMATED_MODAL_ROOT_CLASS,r.rootClassName].filter(Boolean)),A=e.computed(()=>r.open||r.destroyOnClose&&a.value),D=e.computed(()=>{var b,x;return{...r.style,width:r.width?`${r.width}px`:(b=r.style)==null?void 0:b.width,["--srk-modal-origin-x"]:`${c.value.x}px`,["--srk-modal-origin-y"]:`${c.value.y}px`,["--srk-modal-max-width"]:r.width?`${r.width}px`:typeof((x=r.style)==null?void 0:x.width)=="string"?r.style.width:void 0}});function T(){if(typeof window=="undefined"){y=null,k=null;return}y!==null&&(window.clearTimeout(y),y=null),k!==null&&(window.clearTimeout(k),k=null)}async function N(){if(await e.nextTick(),typeof window=="undefined"||!r.open||!a.value||m.value!=="pre-open")return;C();const b=d.resolveModalTransformOrigin(f.value);c.value=b.origin,k=window.setTimeout(()=>{m.value="opening",k=null},0)}function C(){const b=d.registerModalFocusScope(f.value,{onEscape:F});S===null&&(S=b)}function w(){S!==null&&(d.unregisterModalFocusScope(S),S=null)}function M(b){u("update:open",!1),u("close",b)}function P(b){r.closeOnMaskClick&&b.target===b.currentTarget&&M("mask")}function F(b){r.open&&r.closeOnEsc&&M("escape")}return e.watch(()=>r.open,async b=>{if(T(),b){a.value=!0,c.value={x:0,y:0},m.value="pre-open",await N();return}if(w(),m.value="closing",!r.destroyOnClose){a.value=!0;return}a.value&&typeof window!="undefined"&&(y=window.setTimeout(()=>{a.value=!1,y=null},d.MODAL_ANIMATION_DURATION_MS))},{immediate:!0}),e.watchEffect(b=>{!A.value||(d.lockModalBodyScroll(),b(()=>{d.unlockModalBodyScroll()}))}),e.onMounted(()=>{d.ensureModalInteractionTracker(),r.open&&C()}),e.onBeforeUnmount(()=>{T(),w()}),(b,x)=>E.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(z.value),"data-srk-modal-state":m.value},[x[2]||(x[2]=e.createElementVNode("div",{class:"srk-modal-mask"},null,-1)),e.createElementVNode("div",{class:e.normalizeClass(["srk-modal-wrap",t.wrapClassName]),tabindex:"-1",onMousedown:P},[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:f,style:e.normalizeStyle(D.value)},[e.createElementVNode("div",q,[e.createElementVNode("button",{"aria-label":"Close",class:"srk-modal-close",type:"button",onClick:x[0]||(x[0]=I=>M("close-button"))},[...x[1]||(x[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:g,class:"srk-modal-title"},e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",H,[e.renderSlot(b.$slots,"default")])])],12,L)],34)],10,O)):e.createCommentVNode("",!0)}}),K={class:"srk-common-table srk-solutions-table"},j={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:{},languages:{}},emits:["close","update:open"],setup(t,{emit:o}){const l=t,r=o,u=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],([f,a,m,c])=>{f&&(u.value={user:f,problem:a,problemIndex:m,solutions:c})},{immediate:!0});const g=e.computed(()=>l.title||(u.value?d.getSolutionModalTitle(u.value.problemIndex,u.value.user,l.languages):""));return(f,a)=>u.value?(e.openBlock(),e.createBlock(U,{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:a[0]||(a[0]=m=>r("close",m)),"onUpdate:open":a[1]||(a[1]=m=>r("update:open",m))},{default:e.withCtx(()=>[e.createElementVNode("table",K,[a[2]||(a[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(u.value.solutions,(m,c)=>{var y;return e.openBlock(),e.createElementBlock("tr",{key:`${m.result}_${(y=m.time)==null?void 0:y[0]}_${c}`},[e.createElementVNode("td",null,[e.createElementVNode("span",{class:e.normalizeClass(["srk-solution-result-text",e.unref(d.getSolutionResultMeta)(m.result).className])},e.toDisplayString(e.unref(d.getSolutionResultMeta)(m.result).label),3)]),e.createElementVNode("td",j,e.toDisplayString(e.unref(d.formatSolutionTimestamp)(m)),1)])}),128))])])]),_:1},8,["open","title","width","root-class-name","wrap-class-name","style"])):e.createCommentVNode("",!0)}}),W={class:"srk-user-modal-info"},G={class:"srk-user-modal-info-user-name"},Q={key:0,class:"srk-user-modal-info-user-second-name"},X={class:"srk-user-modal-info-labels"},Y={class:"srk-user-modal-info-labels-label srk-user-modal-info-labels-label-preset-general"},Z={key:1,class:"srk-user-modal-info-team-members"},_={key:0,class:"srk-user-modal-info-team-members-slash"},ee={key:2,class:"srk-user-modal-info-photo"},te=["src"],se=e.defineComponent({__name:"DefaultUserModal",props:{open:{type:Boolean},user:{},markers:{default:()=>[]},theme:{default:B.EnumTheme.light},title:{default:"User Info"},width:{default:420},rootClassName:{default:"srk-general-modal-root"},wrapClassName:{default:"srk-user-modal"},style:{},formatSrkAssetUrl:{},languages:{}},emits:["close","update:open"],setup(t,{emit:o}){const l=t,r=o,u=e.ref(l.user||null);e.watch(()=>l.user,c=>{c&&(u.value=c)},{immediate:!0});const g=e.computed(()=>u.value?B.resolveUserMarkers(u.value,l.markers).map(c=>({marker:c,presentation:d.getMarkerPresentation(c,l.theme)})):[]);function f(c,y){return d.resolveSrkAssetUrl(c,y,l.formatSrkAssetUrl)}function a(c){return B.resolveText(c,l.languages)}function m(c){return d.formatTeamMemberName(c,l.languages)}return(c,y)=>u.value?(e.openBlock(),e.createBlock(U,{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:y[0]||(y[0]=k=>r("close",k)),"onUpdate:open":y[1]||(y[1]=k=>r("update:open",k))},{default:e.withCtx(()=>[e.createElementVNode("div",W,[e.createElementVNode("h3",G,e.toDisplayString(a(u.value.name)),1),u.value.organization?(e.openBlock(),e.createElementBlock("p",Q,e.toDisplayString(a(u.value.organization)),1)):e.createCommentVNode("",!0),e.createElementVNode("div",X,[e.createElementVNode("span",Y,e.toDisplayString(u.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,k=>(e.openBlock(),e.createElementBlock("span",{key:k.marker.id,class:e.normalizeClass(["srk-user-modal-info-labels-label",k.presentation.className]),style:e.normalizeStyle(k.presentation.style)},e.toDisplayString(a(k.marker.label)),7))),128))]),u.value.teamMembers&&u.value.teamMembers.length?(e.openBlock(),e.createElementBlock("div",Z,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value.teamMembers,(k,S)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:a(k.name)},[S>0?(e.openBlock(),e.createElementBlock("span",_," / ")):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(m(k)),1)],64))),128))])):e.createCommentVNode("",!0),u.value.photo?(e.openBlock(),e.createElementBlock("div",ee,[e.createElementVNode("img",{src:f(u.value.photo,"user.photo"),alt:"User portrait",class:"srk-user-modal-info-photo-img"},null,8,te)])):e.createCommentVNode("",!0)])]),_:1},8,["open","title","width","root-class-name","wrap-class-name","style"])):e.createCommentVNode("",!0)}}),le={class:"srk-progress-bar-container"},re={class:"srk-progress-bar"},oe={class:"srk-progress-bar-body"},ae={key:0,class:"srk-progress-slider-layer"},ne=["max","title"],ie={class:"srk-progress-secondary-area"},ce={class:"srk-progress-secondary-area-center"},ue={key:0,class:"srk-progress-time-machine-status"},de={key:1,class:"srk-progress-live-text"},me={key:2,style:{visibility:"hidden"}},ke=e.defineComponent({__name:"ProgressBar",props:{data:{},enableTimeTravel:{type:Boolean,default:!1},live:{type:Boolean,default:!1},td:{default:0}},emits:["timeTravel"],setup(t,{emit:o}){const l=t,r=o,u=e.ref(Date.now()),g=e.ref(!1),f=e.ref(!1),a=e.ref(d.getProgressMaxAvailableMinutes(l.data.contest,u.value,l.td)),m=e.ref(null);let c;const y=e.computed(()=>d.getProgressDurationMinutes(l.data.contest)),k=e.computed(()=>d.getProgressMaxAvailableMinutes(l.data.contest,u.value,l.td)),S=e.computed(()=>d.isProgressEnded(l.data.contest,u.value,l.td)),E=e.computed(()=>d.getProgressMetrics(l.data,u.value,l.td,a.value,g.value));function z(){u.value=Date.now(),S.value&&c!==void 0&&(window.clearInterval(c),c=void 0)}function A(C){typeof window!="undefined"&&(C&&c===void 0&&(c=window.setInterval(z,1e3)),!C&&c!==void 0&&(window.clearInterval(c),c=void 0))}function D(C){const w=C>=y.value||C>=k.value;r("timeTravel",w?null:C*60*1e3),g.value=!w,m.value=w?null:C*60*1e3,f.value=!1}function T(){f.value=!0,g.value=!0}function N(){f.value&&D(a.value)}return e.watch(k,C=>{!f.value&&m.value===null&&(a.value=C)}),e.watch(()=>l.live,C=>A(C),{immediate:!0}),e.watch(()=>l.data.contest.title,()=>{f.value=!1,a.value=k.value,m.value=null,g.value=!1,r("timeTravel",null)}),e.onBeforeUnmount(()=>{c!==void 0&&(window.clearInterval(c),c=void 0)}),(C,w)=>(e.openBlock(),e.createElementBlock("div",le,[e.createElementVNode("div",re,[e.createElementVNode("div",oe,[e.createElementVNode("div",{class:"srk-progress-bar-segment srk-progress-bar-normal",style:e.normalizeStyle({width:`${E.value.frozenBreakpoint*100}%`})},[e.createElementVNode("div",{class:"srk-progress-bar-fill",style:e.normalizeStyle({width:`${E.value.normalInnerPercent}%`})},null,4)],4),e.createElementVNode("div",{class:"srk-progress-bar-segment srk-progress-bar-frozen",style:e.normalizeStyle({width:`${(1-E.value.frozenBreakpoint)*100}%`})},[e.createElementVNode("div",{class:"srk-progress-bar-fill",style:e.normalizeStyle({width:`${E.value.frozenInnerPercent}%`})},null,4)],4)]),t.enableTimeTravel&&E.value.supportRegen?(e.openBlock(),e.createElementBlock("div",ae,[f.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"srk-progress-slider-tooltip",style:e.normalizeStyle({left:`${y.value?a.value/y.value*100:0}%`})},e.toDisplayString(e.unref(B.secToTimeStr)(a.value*60)),5)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[0]||(w[0]=M=>a.value=M),"aria-label":"Time Travel",class:"srk-progress-slider",max:y.value,min:"0",step:"1",title:e.unref(B.secToTimeStr)(a.value*60),type:"range",onBlur:N,onKeydown:T,onKeyup:N,onMousedown:T,onMouseup:N,onTouchend:N,onTouchstart:T},null,40,ne),[[e.vModelText,a.value,void 0,{number:!0}]])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",ie,[e.createElementVNode("div",{class:"srk-progress-secondary-area-left",style:e.normalizeStyle(t.live||g.value?{}:{display:"none"})}," Elapsed: "+e.toDisplayString(e.unref(B.secToTimeStr)(Math.round(E.value.elapsed/1e3))),5),e.createElementVNode("div",ce,[g.value?(e.openBlock(),e.createElementBlock("div",ue,[...w[1]||(w[1]=[e.createElementVNode("div",{class:"srk-progress-time-machine-text"},"Time Travel Mode",-1)])])):t.live&&!S.value?(e.openBlock(),e.createElementBlock("div",de,"Live")):(e.openBlock(),e.createElementBlock("div",me,"SRK"))]),e.createElementVNode("div",{class:"srk-progress-secondary-area-right",style:e.normalizeStyle(t.live||g.value?{}:{display:"none"})}," Remaining: "+e.toDisplayString(e.unref(B.secToTimeStr)(Math.round(E.value.remaining/1e3))),5)])]))}}),pe=["href"],fe={class:"srk--display-block"},ge=["title"],ve={class:"srk--display-block"},ye=["title"],he=e.defineComponent({__name:"ProblemHeaderCell",props:{problem:{},index:{},theme:{default:B.EnumTheme.light},languages:{}},setup(t){const o=t,l=e.computed(()=>o.problem.alias||B.numberToAlphabet(o.index)),r=e.computed(()=>o.problem.statistics),u=e.computed(()=>{if(!r.value)return"";const f=r.value.submitted?(r.value.accepted/r.value.submitted*100).toFixed(1):0;return`${r.value.accepted} / ${r.value.submitted} (${f}%)`}),g=e.computed(()=>d.getProblemHeaderBackgroundImage(o.problem.style,o.theme));return(f,a)=>(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",fe,e.toDisplayString(l.value),1),r.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"srk--display-block srk-problem-stats",title:u.value},e.toDisplayString(r.value.accepted),9,ge)):e.createCommentVNode("",!0)],8,pe)):(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:u.value},e.toDisplayString(r.value.accepted),9,ye)):e.createCommentVNode("",!0)],64))],4))}}),be={key:0,class:"srk-prest-status-block-fb-star"},Be={key:4,class:"srk-status-placeholder-cell srk--text-center srk--nowrap"},Ce="\u2605",Ee=e.defineComponent({__name:"StatusCell",props:{status:{},problem:{},problemIndex:{},user:{},row:{},rowIndex:{},ranklist:{},onSolutionClick:{},statusCellPreset:{default:"classic"},statusColorAsText:{type:Boolean,default:!1},emptyStatusPlaceholder:{default:null},languages:{}},setup(t){const o=t,l=e.computed(()=>[...o.status.solutions||[]].reverse()),r=e.computed(()=>l.value.length>0&&!!o.onSolutionClick),u=e.computed(()=>["srk-prest-status-block","srk--text-center","srk--nowrap",{"srk--cursor-pointer":r.value,"srk-prest-status-block-color-text":o.statusColorAsText}]);function g(a){var m,c;!r.value||(d.captureModalTriggerPointFromMouseEvent(a,{source:"status-cell",context:{rowIndex:o.rowIndex,problemIndex:o.problemIndex,problemAlias:((m=o.problem)==null?void 0:m.alias)||null,problemTitle:o.problem?B.resolveText(o.problem.title,o.languages):null,userId:o.user.id||null}}),(c=o.onSolutionClick)==null||c.call(o,{user:o.user,row:o.row,rowIndex:o.rowIndex,problemIndex:o.problemIndex,problem:o.problem,status:o.status,solutions:l.value,ranklist:o.ranklist}))}const f=e.defineComponent({props:{status:{type:Object,required:!0},ranklist:{type:Object,required:!0},preset:{type:String,required:!0}},setup(a){return()=>{const m=a.status,c=a.ranklist,y=a.preset,k=d.getRankProblemStatusCellPresentation(m,c,y);return typeof k.score=="number"?[e.h("span",{class:"srk-prest-status-block-score"},k.score),e.h("span",{class:"srk-prest-status-block-score-details"},k.scoreDetails)]:k.secondary!==void 0?[e.h("span",{class:"srk-prest-status-block-primary"},k.primary||"")," ",e.h("span",{class:"srk-prest-status-block-secondary"},k.secondary)]:k.primary||""}}});return(a,m)=>t.status.result==="FB"?(e.openBlock(),e.createElementBlock("td",{key:0,class:e.normalizeClass([u.value,"srk-prest-status-block-fb"]),onClick:e.withModifiers(g,["prevent"])},[t.statusColorAsText?(e.openBlock(),e.createElementBlock("span",be,e.toDisplayString(Ce))):e.createCommentVNode("",!0),e.createVNode(e.unref(f),{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([u.value,"srk-prest-status-block-accepted"]),onClick:e.withModifiers(g,["prevent"])},[e.createVNode(e.unref(f),{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([u.value,"srk-prest-status-block-frozen"]),onClick:e.withModifiers(g,["prevent"])},[e.createVNode(e.unref(f),{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([u.value,"srk-prest-status-block-failed"]),onClick:e.withModifiers(g,["prevent"])},[e.createVNode(e.unref(f),{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))}}),Se={class:"srk-user-cell-content"},Ne={key:0,class:"srk-user-avatar"},we=["src"],xe={class:"srk-user-body"},Ve={class:"srk-user-name-row"},Te=["title"],Me={class:"srk-marker-dot-group"},$e=["data-tooltip"],De={key:0,class:"srk-user-secondary-text srk--text-ellipsis",title:""},ze=e.defineComponent({__name:"UserCell",props:{user:{},row:{},rowIndex:{},ranklist:{},markers:{default:()=>[]},theme:{default:B.EnumTheme.light},formatSrkAssetUrl:{},onUserClick:{},hideOrganization:{type:Boolean,default:!1},hideAvatar:{type:Boolean,default:!1},languages:{}},setup(t){const o=t,l=e.computed(()=>g(o.user.name)),r=e.computed(()=>B.resolveUserMarkers(o.user,o.markers)),u=e.computed(()=>r.value.map(a=>({marker:a,presentation:d.getMarkerPresentation(a,o.theme)})));function g(a){return B.resolveText(a,o.languages)}function f(a){var m;d.captureModalTriggerPointFromMouseEvent(a,{source:"user-cell",context:{rowIndex:o.rowIndex,userId:o.user.id||null,userName:l.value}}),(m=o.onUserClick)==null||m.call(o,{user:o.user,row:o.row,rowIndex:o.rowIndex,ranklist:o.ranklist})}return(a,m)=>(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(f,["prevent"])},[e.createElementVNode("div",Se,[t.user.avatar&&!t.hideAvatar?(e.openBlock(),e.createElementBlock("div",Ne,[e.createElementVNode("img",{src:t.formatSrkAssetUrl(t.user.avatar,"user.avatar"),alt:"User Avatar"},null,8,we)])):e.createCommentVNode("",!0),e.createElementVNode("div",xe,[e.createElementVNode("div",Ve,[e.createElementVNode("span",{class:"srk-user-name-text",title:l.value},e.toDisplayString(l.value),9,Te),e.createElementVNode("span",Me,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,c=>(e.openBlock(),e.createElementBlock("span",{key:c.marker.id,class:e.normalizeClass(["srk-marker srk-marker-dot srk--c-tooltip",c.presentation.className]),style:e.normalizeStyle(c.presentation.style),"data-tooltip":g(c.marker.label)},null,14,$e))),128))])]),t.user.organization&&!t.hideOrganization?(e.openBlock(),e.createElementBlock("p",De,e.toDisplayString(g(t.user.organization)),1)):e.createCommentVNode("",!0)])])],2))}}),Ae={key:0},Pe={key:1},Fe={key:2,class:"srk-common-table srk-main"},Ie={key:0,class:"srk-organization-header srk--text-left srk--nowrap"},Ue={class:"srk--text-left srk--nowrap"},Oe={class:"srk--text-right srk--nowrap"},Le={key:1,class:"srk--text-right srk--nowrap"},qe={key:2,class:"srk-dirt-header srk--text-right srk--nowrap"},Re={key:3,class:"srk-se-header srk--text-right srk--nowrap"},He={class:"srk-organization-cell-content"},Ke={key:0,class:"srk-user-avatar"},je=["src"],Je=["title"],We={class:"srk--text-right srk--nowrap"},Ge={key:1,class:"srk--text-right srk--nowrap"},Qe={key:2,class:"srk-dirt-cell srk--text-right srk--nowrap"},Xe={key:3,class:"srk-se-cell srk--text-right srk--nowrap"},Ye={key:0},Ze=["colspan"],_e=["data-tooltip"],et={class:"srk-problem-statistics-footer-primary"},tt={class:"srk-problem-statistics-footer-secondary"},st={key:0,class:"srk-problem-statistics-footer-cell srk-extra-statistics-footer-cell srk-dirt-footer-cell srk--nowrap"},lt={key:1,class:"srk-problem-statistics-footer-cell srk-extra-statistics-footer-cell srk-se-footer-cell srk--nowrap"},rt={class:"srk-problem-statistics-footer-row srk-problem-statistics-footer-problem-label-row"},ot=["colspan"],at={class:"srk--display-block"},nt={key:0,class:"srk-problem-statistics-footer-cell srk-extra-statistics-footer-cell srk-dirt-footer-cell srk--nowrap"},it={key:1,class:"srk-problem-statistics-footer-cell srk-extra-statistics-footer-cell srk-se-footer-cell srk--nowrap"},ct=e.defineComponent({__name:"Ranklist",props:{data:{},theme:{default:B.EnumTheme.light},rowBordered:{type:Boolean,default:!1},columnBordered:{type:Boolean,default:!1},rowStriped:{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"},languages:{}},emits:["userClick","solutionClick"],setup(t,{emit:o}){const l=t,r=o,u=e.computed(()=>l.theme),g=d.srkSupportedVersions,f=e.computed(()=>d.caniuse(l.data.version)),a=e.computed(()=>d.shouldShowTimeColumn(l.data.rows)),m=e.computed(()=>l.splitOrganization&&l.userAvatarPlacement==="organization"),c=e.computed(()=>l.showProblemStatisticsFooter||l.showSEColumn?d.calculateProblemStatisticsFooter(l.data):[]),y=e.computed(()=>l.data.series.length+1+1+(a.value?1:0)+(l.splitOrganization?1:0)),k=[{key:"accepted",label:"Accepted",tooltip:"Number of participants who solved this problem"},{key:"attempted",label:"Attempted",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 S(n,i){return d.resolveSrkAssetUrl(n,i,l.formatSrkAssetUrl)}function E(n){return B.resolveText(n,l.languages)}function z(n){return n.rankValues||l.data.series.map(()=>({rank:null,segmentIndex:null}))}function A(n,i){return n.rank?n.rank:i.user.official===!1?"\uFF0A":""}function D(n){return((n==null?void 0:n.segments)||[]).some(i=>typeof i.style=="string")}function T(n,i){var p,h,v;const s=(p=l.columnTitles)==null?void 0:p.series;return typeof s=="function"?(h=s(n,i))!=null?h:n.title:Array.isArray(s)&&(v=s[i])!=null?v:n.title}function N(n,i){var s,p;return(p=(s=l.columnTitles)==null?void 0:s[n])!=null?p:i}function C(n,i){const s=n.segmentIndex||n.segmentIndex===0?n.segmentIndex:-1;return((i==null?void 0:i.segments)||[])[s]||{}}function w(n,i){const s=C(n,i).style;return typeof s=="string"?`srk-preset-series-segment-${s}`:""}function M(n,i){const s={[B.EnumTheme.light]:void 0,[B.EnumTheme.dark]:void 0},p=C(n,i).style;if(!p||typeof p=="string")return{};const h=B.resolveStyle(p),v=h.textColor||s,V=h.backgroundColor||s;return{color:v[l.theme],backgroundColor:V[l.theme]}}function P(n){return[...n.solutions||[]].reverse()}function F(n,i){switch(n){case"accepted":return i.accepted;case"attempted":return i.attempted;case"submitted":return i.submitted;case"dirt":return i.dirt;case"se":return d.formatProblemStatisticsAverageHardness(i);case"firstAccepted":return d.formatProblemStatisticsAcceptedMinute(i.firstAcceptedTime);case"lastAccepted":return d.formatProblemStatisticsAcceptedMinute(i.lastAcceptedTime);default:return""}}function b(n,i){switch(n){case"accepted":return d.formatProblemStatisticsPercent(i.accepted,i.participantCount);case"attempted":return d.formatProblemStatisticsPercent(i.attempted,i.participantCount);case"dirt":return d.formatProblemStatisticsPercent(i.dirt,i.dirtSubmitted);default:return}}function x(n,i,s){if("ranklist"in n){r("userClick",n);return}s&&d.captureModalTriggerPointFromMouseEvent(s,{source:"user-cell",context:{rowIndex:i||0,userId:n.user.id||null,userName:E(n.user.name)}}),r("userClick",{user:n.user,row:n,rowIndex:i||0,ranklist:l.data})}function I(n,i,s,p,h){if("solutions"in n){r("solutionClick",n);return}const v=p||0,V=s||n.statuses[v];if(h){const $=l.data.problems[v];d.captureModalTriggerPointFromMouseEvent(h,{source:"status-cell",context:{rowIndex:i||0,problemIndex:v,problemAlias:($==null?void 0:$.alias)||null,problemTitle:$?E($.title):null,userId:n.user.id||null}})}r("solutionClick",{user:n.user,row:n,rowIndex:i||0,problemIndex:v,problem:l.data.problems[v],status:V,solutions:P(V),ranklist:l.data})}return(n,i)=>t.data.type!=="general"?(e.openBlock(),e.createElementBlock("div",Ae,'srk type "'+e.toDisplayString(t.data.type)+'" is not supported',1)):f.value?(e.openBlock(),e.createElementBlock("div",Fe,[e.createElementVNode("table",{class:e.normalizeClass({"srk-table-row-bordered":t.rowBordered,"srk-table-column-bordered":t.columnBordered,"srk-table-row-striped":t.rowStriped})},[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(T(s,p)),3))),128)),t.splitOrganization?(e.openBlock(),e.createElementBlock("th",Ie,e.toDisplayString(N("organization","Organization")),1)):e.createCommentVNode("",!0),e.createElementVNode("th",Ue,e.toDisplayString(N("user","Name")),1),e.createElementVNode("th",Oe,e.toDisplayString(N("score","Score")),1),a.value?(e.openBlock(),e.createElementBlock("th",Le,e.toDisplayString(N("time","Time")),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.data.problems,(s,p)=>e.renderSlot(n.$slots,"problem-header-cell",e.mergeProps({key:s.alias||E(s.title)||p,ref_for:!0},{problem:s,problemIndex:p,index:p,theme:u.value,languages:t.languages}),()=>[e.createVNode(he,{problem:s,index:p,theme:u.value,languages:t.languages},null,8,["problem","index","theme","languages"])])),128)),t.showDirtColumn?(e.openBlock(),e.createElementBlock("th",qe,e.toDisplayString(N("dirt","Dirt")),1)):e.createCommentVNode("",!0),t.showSEColumn?(e.openBlock(),e.createElementBlock("th",Re,e.toDisplayString(N("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(s.user.name)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(z(s),(h,v)=>{var V;return e.openBlock(),e.createElementBlock("td",{key:((V=t.data.series[v])==null?void 0:V.title)||v,class:e.normalizeClass(["srk--text-right srk--nowrap",[w(h,t.data.series[v]),{"srk-series-segmented-column":D(t.data.series[v])}]]),style:e.normalizeStyle(M(h,t.data.series[v]))},e.toDisplayString(A(h,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":m.value&&!!s.user.avatar}])},[e.createElementVNode("div",He,[m.value&&s.user.avatar?(e.openBlock(),e.createElementBlock("div",Ke,[e.createElementVNode("img",{src:S(s.user.avatar,"user.avatar"),alt:"User Avatar"},null,8,je)])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:"srk-organization-name-text",title:s.user.organization?E(s.user.organization):""},e.toDisplayString(s.user.organization?E(s.user.organization):""),9,Je)])],2)):e.createCommentVNode("",!0),e.renderSlot(n.$slots,"user-cell",e.mergeProps({ref_for:!0},{user:s.user,row:s,rowIndex:p,ranklist:t.data,markers:t.data.markers,theme:u.value,hideOrganization:t.splitOrganization,hideAvatar:m.value,languages:t.languages,onClick:h=>x(s,p,h)}),()=>[e.createVNode(ze,{user:s.user,row:s,"row-index":p,ranklist:t.data,markers:t.data.markers,theme:u.value,"format-srk-asset-url":S,"on-user-click":x,"hide-organization":t.splitOrganization,"hide-avatar":m.value,languages:t.languages},null,8,["user","row","row-index","ranklist","markers","theme","hide-organization","hide-avatar","languages"])]),e.createElementVNode("td",We,e.toDisplayString(s.score.value),1),a.value?(e.openBlock(),e.createElementBlock("td",Ge,e.toDisplayString(s.score.time?e.unref(B.formatTimeDuration)(s.score.time,"min",Math.floor):"-"),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.statuses,(h,v)=>{var V;return e.renderSlot(n.$slots,"status-cell",e.mergeProps({key:((V=t.data.problems[v])==null?void 0:V.alias)||v,ref_for:!0},{status:h,problem:t.data.problems[v],problemIndex:v,user:s.user,row:s,rowIndex:p,ranklist:t.data,solutions:P(h),statusCellPreset:t.statusCellPreset,statusColorAsText:t.statusColorAsText,emptyStatusPlaceholder:t.emptyStatusPlaceholder,languages:t.languages,onClick:$=>I(s,p,h,v,$)}),()=>[e.createVNode(Ee,{status:h,problem:t.data.problems[v],"problem-index":v,user:s.user,row:s,"row-index":p,ranklist:t.data,"on-solution-click":I,"status-cell-preset":t.statusCellPreset,"status-color-as-text":t.statusColorAsText,"empty-status-placeholder":t.emptyStatusPlaceholder,languages:t.languages},null,8,["status","problem","problem-index","user","row","row-index","ranklist","status-cell-preset","status-color-as-text","empty-status-placeholder","languages"])])}),128)),t.showDirtColumn?(e.openBlock(),e.createElementBlock("td",Qe,e.toDisplayString(e.unref(d.calculateDirtPercentage)(s)),1)):e.createCommentVNode("",!0),t.showSEColumn?(e.openBlock(),e.createElementBlock("td",Xe,e.toDisplayString(e.unref(d.calculateSEValue)(s,c.value)),1)):e.createCommentVNode("",!0)]))),128))]),t.showProblemStatisticsFooter?(e.openBlock(),e.createElementBlock("tfoot",Ye,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(k,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:y.value},[e.createElementVNode("span",{class:"srk-problem-statistics-footer-label srk--c-tooltip","data-tooltip":s.tooltip},e.toDisplayString(s.label),9,_e)],8,Ze),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(p,h)=>{var v;return e.openBlock(),e.createElementBlock("td",{key:((v=t.data.problems[h])==null?void 0:v.alias)||h,class:"srk-problem-statistics-footer-cell srk--text-center srk--nowrap"},[e.createElementVNode("span",et,e.toDisplayString(F(s.key,p)),1),b(s.key,p)!==void 0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[i[0]||(i[0]=e.createTextVNode(e.toDisplayString(" ")+" ",-1)),e.createElementVNode("span",tt,e.toDisplayString(b(s.key,p)),1)],64)):e.createCommentVNode("",!0)])}),128)),t.showDirtColumn?(e.openBlock(),e.createElementBlock("td",st,[...i[1]||(i[1]=[e.createElementVNode("span",{class:"srk-problem-statistics-footer-primary"},null,-1)])])):e.createCommentVNode("",!0),t.showSEColumn?(e.openBlock(),e.createElementBlock("td",lt,[...i[2]||(i[2]=[e.createElementVNode("span",{class:"srk-problem-statistics-footer-primary"},null,-1)])])):e.createCommentVNode("",!0)])),64)),e.createElementVNode("tr",rt,[e.createElementVNode("td",{class:"srk-problem-statistics-footer-labels srk--text-right srk--nowrap",colspan:y.value},null,8,ot),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.data.problems,(s,p)=>(e.openBlock(),e.createElementBlock("td",{key:s.alias||E(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(d.getProblemHeaderBackgroundImage)(s.style,u.value,0)})},[e.createElementVNode("span",at,e.toDisplayString(s.alias||e.unref(B.numberToAlphabet)(p)),1)],4))),128)),t.showDirtColumn?(e.openBlock(),e.createElementBlock("td",nt,[...i[3]||(i[3]=[e.createElementVNode("span",{class:"srk-problem-statistics-footer-primary"},null,-1)])])):e.createCommentVNode("",!0),t.showSEColumn?(e.openBlock(),e.createElementBlock("td",it,[...i[4]||(i[4]=[e.createElementVNode("span",{class:"srk-problem-statistics-footer-primary"},null,-1)])])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)],2)])):(e.openBlock(),e.createElementBlock("div",Pe,' srk version "'+e.toDisplayString(t.data.version)+'" is not supported (current supported: '+e.toDisplayString(e.unref(g))+") ",1))}});exports.DefaultSolutionModal=J;exports.DefaultUserModal=se;exports.Modal=U;exports.ProgressBar=ke;exports.Ranklist=ct;
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import "@algoux/standard-ranklist-renderer-component-styles";
2
2
  import { defineComponent, ref, computed, watch, watchEffect, onMounted, onBeforeUnmount, openBlock, createElementBlock, normalizeClass, createElementVNode, normalizeStyle, toDisplayString, createCommentVNode, renderSlot, nextTick, createBlock, withCtx, Fragment, renderList, unref, withDirectives, vModelText, h, withModifiers, createVNode, mergeProps, createTextVNode } from "vue";
3
- import { SRK_ANIMATED_MODAL_ROOT_CLASS, MODAL_ANIMATION_DURATION_MS, lockModalBodyScroll, unlockModalBodyScroll, ensureModalInteractionTracker, resolveModalTransformOrigin, registerModalFocusScope, unregisterModalFocusScope, getSolutionModalTitle, getSolutionResultMeta, formatSolutionTimestamp, getMarkerPresentation, resolveSrkAssetUrl, getProgressMaxAvailableMinutes, getProgressDurationMinutes, isProgressEnded, getProgressMetrics, getProblemHeaderBackgroundImage, getRankProblemStatusCellPresentation, captureModalTriggerPointFromMouseEvent, caniuse, shouldShowTimeColumn, calculateProblemStatisticsFooter, calculateDirtPercentage, calculateSEValue, srkSupportedVersions, formatProblemStatisticsAcceptedMinute, formatProblemStatisticsAverageHardness, formatProblemStatisticsPercent } from "@algoux/standard-ranklist-renderer-component-core";
3
+ import { SRK_ANIMATED_MODAL_ROOT_CLASS, MODAL_ANIMATION_DURATION_MS, lockModalBodyScroll, unlockModalBodyScroll, ensureModalInteractionTracker, resolveModalTransformOrigin, registerModalFocusScope, unregisterModalFocusScope, getSolutionModalTitle, getSolutionResultMeta, formatSolutionTimestamp, getMarkerPresentation, resolveSrkAssetUrl, formatTeamMemberName, getProgressMaxAvailableMinutes, getProgressDurationMinutes, isProgressEnded, getProgressMetrics, getProblemHeaderBackgroundImage, getRankProblemStatusCellPresentation, captureModalTriggerPointFromMouseEvent, caniuse, shouldShowTimeColumn, calculateProblemStatisticsFooter, calculateDirtPercentage, calculateSEValue, srkSupportedVersions, formatProblemStatisticsAcceptedMinute, formatProblemStatisticsAverageHardness, formatProblemStatisticsPercent } from "@algoux/standard-ranklist-renderer-component-core";
4
4
  import { EnumTheme, resolveUserMarkers, resolveText, secToTimeStr, numberToAlphabet, formatTimeDuration, resolveStyle } from "@algoux/standard-ranklist-utils";
5
5
  const _hoisted_1$7 = ["data-srk-modal-state"];
6
6
  const _hoisted_2$7 = ["aria-labelledby"];
@@ -208,7 +208,8 @@ const _sfc_main$6 = defineComponent({
208
208
  width: { default: 320 },
209
209
  rootClassName: { default: "srk-general-modal-root" },
210
210
  wrapClassName: { default: "srk-solutions-modal" },
211
- style: {}
211
+ style: {},
212
+ languages: {}
212
213
  },
213
214
  emits: ["close", "update:open"],
214
215
  setup(__props, { emit: __emit }) {
@@ -230,7 +231,7 @@ const _sfc_main$6 = defineComponent({
230
231
  };
231
232
  }
232
233
  }, { immediate: true });
233
- const resolvedTitle = computed(() => props.title || (cachedPayload.value ? getSolutionModalTitle(cachedPayload.value.problemIndex, cachedPayload.value.user) : ""));
234
+ const resolvedTitle = computed(() => props.title || (cachedPayload.value ? getSolutionModalTitle(cachedPayload.value.problemIndex, cachedPayload.value.user, props.languages) : ""));
234
235
  return (_ctx, _cache) => {
235
236
  return cachedPayload.value ? (openBlock(), createBlock(_sfc_main$7, {
236
237
  key: 0,
@@ -306,7 +307,8 @@ const _sfc_main$5 = defineComponent({
306
307
  rootClassName: { default: "srk-general-modal-root" },
307
308
  wrapClassName: { default: "srk-user-modal" },
308
309
  style: {},
309
- formatSrkAssetUrl: {}
310
+ formatSrkAssetUrl: {},
311
+ languages: {}
310
312
  },
311
313
  emits: ["close", "update:open"],
312
314
  setup(__props, { emit: __emit }) {
@@ -325,6 +327,12 @@ const _sfc_main$5 = defineComponent({
325
327
  function formatAssetUrl(url, field) {
326
328
  return resolveSrkAssetUrl(url, field, props.formatSrkAssetUrl);
327
329
  }
330
+ function resolveDisplayText(text) {
331
+ return resolveText(text, props.languages);
332
+ }
333
+ function formatMemberName(member) {
334
+ return formatTeamMemberName(member, props.languages);
335
+ }
328
336
  return (_ctx, _cache) => {
329
337
  return cachedUser.value ? (openBlock(), createBlock(_sfc_main$7, {
330
338
  key: 0,
@@ -339,8 +347,8 @@ const _sfc_main$5 = defineComponent({
339
347
  }, {
340
348
  default: withCtx(() => [
341
349
  createElementVNode("div", _hoisted_1$5, [
342
- createElementVNode("h3", _hoisted_2$5, toDisplayString(unref(resolveText)(cachedUser.value.name)), 1),
343
- cachedUser.value.organization ? (openBlock(), createElementBlock("p", _hoisted_3$4, toDisplayString(unref(resolveText)(cachedUser.value.organization)), 1)) : createCommentVNode("", true),
350
+ createElementVNode("h3", _hoisted_2$5, toDisplayString(resolveDisplayText(cachedUser.value.name)), 1),
351
+ cachedUser.value.organization ? (openBlock(), createElementBlock("p", _hoisted_3$4, toDisplayString(resolveDisplayText(cachedUser.value.organization)), 1)) : createCommentVNode("", true),
344
352
  createElementVNode("div", _hoisted_4$4, [
345
353
  createElementVNode("span", _hoisted_5$4, toDisplayString(cachedUser.value.official === false ? "\uFF0A \u975E\u6B63\u5F0F\u53C2\u52A0\u8005" : "\u6B63\u5F0F\u53C2\u52A0\u8005"), 1),
346
354
  (openBlock(true), createElementBlock(Fragment, null, renderList(resolvedMarkers.value, (marker) => {
@@ -348,16 +356,16 @@ const _sfc_main$5 = defineComponent({
348
356
  key: marker.marker.id,
349
357
  class: normalizeClass(["srk-user-modal-info-labels-label", marker.presentation.className]),
350
358
  style: normalizeStyle(marker.presentation.style)
351
- }, toDisplayString(unref(resolveText)(marker.marker.label)), 7);
359
+ }, toDisplayString(resolveDisplayText(marker.marker.label)), 7);
352
360
  }), 128))
353
361
  ]),
354
362
  cachedUser.value.teamMembers && cachedUser.value.teamMembers.length ? (openBlock(), createElementBlock("div", _hoisted_6$3, [
355
363
  (openBlock(true), createElementBlock(Fragment, null, renderList(cachedUser.value.teamMembers, (member, index) => {
356
364
  return openBlock(), createElementBlock(Fragment, {
357
- key: unref(resolveText)(member.name)
365
+ key: resolveDisplayText(member.name)
358
366
  }, [
359
367
  index > 0 ? (openBlock(), createElementBlock("span", _hoisted_7$3, " / ")) : createCommentVNode("", true),
360
- createElementVNode("span", null, toDisplayString(unref(resolveText)(member.name)), 1)
368
+ createElementVNode("span", null, toDisplayString(formatMemberName(member)), 1)
361
369
  ], 64);
362
370
  }), 128))
363
371
  ])) : createCommentVNode("", true),
@@ -557,7 +565,8 @@ const _sfc_main$3 = defineComponent({
557
565
  props: {
558
566
  problem: {},
559
567
  index: {},
560
- theme: { default: EnumTheme.light }
568
+ theme: { default: EnumTheme.light },
569
+ languages: {}
561
570
  },
562
571
  setup(__props) {
563
572
  const props = __props;
@@ -623,7 +632,8 @@ const _sfc_main$2 = defineComponent({
623
632
  onSolutionClick: {},
624
633
  statusCellPreset: { default: "classic" },
625
634
  statusColorAsText: { type: Boolean, default: false },
626
- emptyStatusPlaceholder: { default: null }
635
+ emptyStatusPlaceholder: { default: null },
636
+ languages: {}
627
637
  },
628
638
  setup(__props) {
629
639
  const props = __props;
@@ -649,7 +659,7 @@ const _sfc_main$2 = defineComponent({
649
659
  rowIndex: props.rowIndex,
650
660
  problemIndex: props.problemIndex,
651
661
  problemAlias: ((_a = props.problem) == null ? void 0 : _a.alias) || null,
652
- problemTitle: props.problem ? resolveText(props.problem.title) : null,
662
+ problemTitle: props.problem ? resolveText(props.problem.title, props.languages) : null,
653
663
  userId: props.user.id || null
654
664
  }
655
665
  });
@@ -776,16 +786,20 @@ const _sfc_main$1 = defineComponent({
776
786
  formatSrkAssetUrl: {},
777
787
  onUserClick: {},
778
788
  hideOrganization: { type: Boolean, default: false },
779
- hideAvatar: { type: Boolean, default: false }
789
+ hideAvatar: { type: Boolean, default: false },
790
+ languages: {}
780
791
  },
781
792
  setup(__props) {
782
793
  const props = __props;
783
- const name = computed(() => resolveText(props.user.name));
794
+ const name = computed(() => resolveDisplayText(props.user.name));
784
795
  const userMarkers = computed(() => resolveUserMarkers(props.user, props.markers));
785
796
  const resolvedMarkers = computed(() => userMarkers.value.map((marker) => ({
786
797
  marker,
787
798
  presentation: getMarkerPresentation(marker, props.theme)
788
799
  })));
800
+ function resolveDisplayText(text) {
801
+ return resolveText(text, props.languages);
802
+ }
789
803
  function emitUserClick(event) {
790
804
  var _a;
791
805
  captureModalTriggerPointFromMouseEvent(event, {
@@ -828,12 +842,12 @@ const _sfc_main$1 = defineComponent({
828
842
  key: marker.marker.id,
829
843
  class: normalizeClass(["srk-marker srk-marker-dot srk--c-tooltip", marker.presentation.className]),
830
844
  style: normalizeStyle(marker.presentation.style),
831
- "data-tooltip": unref(resolveText)(marker.marker.label)
845
+ "data-tooltip": resolveDisplayText(marker.marker.label)
832
846
  }, null, 14, _hoisted_8$1);
833
847
  }), 128))
834
848
  ])
835
849
  ]),
836
- __props.user.organization && !__props.hideOrganization ? (openBlock(), createElementBlock("p", _hoisted_9$1, toDisplayString(unref(resolveText)(__props.user.organization)), 1)) : createCommentVNode("", true)
850
+ __props.user.organization && !__props.hideOrganization ? (openBlock(), createElementBlock("p", _hoisted_9$1, toDisplayString(resolveDisplayText(__props.user.organization)), 1)) : createCommentVNode("", true)
837
851
  ])
838
852
  ])
839
853
  ], 2);
@@ -913,10 +927,9 @@ const _sfc_main = defineComponent({
913
927
  props: {
914
928
  data: {},
915
929
  theme: { default: EnumTheme.light },
916
- borderedRows: { type: Boolean, default: false },
917
930
  rowBordered: { type: Boolean, default: false },
918
931
  columnBordered: { type: Boolean, default: false },
919
- stripedRows: { type: Boolean, default: false },
932
+ rowStriped: { type: Boolean, default: false },
920
933
  formatSrkAssetUrl: {},
921
934
  splitOrganization: { type: Boolean, default: false },
922
935
  columnTitles: {},
@@ -926,7 +939,8 @@ const _sfc_main = defineComponent({
926
939
  showDirtColumn: { type: Boolean, default: false },
927
940
  showSEColumn: { type: Boolean, default: false },
928
941
  emptyStatusPlaceholder: { default: null },
929
- userAvatarPlacement: { default: "user" }
942
+ userAvatarPlacement: { default: "user" },
943
+ languages: {}
930
944
  },
931
945
  emits: ["userClick", "solutionClick"],
932
946
  setup(__props, { emit: __emit }) {
@@ -946,8 +960,8 @@ const _sfc_main = defineComponent({
946
960
  tooltip: "Number of participants who solved this problem"
947
961
  },
948
962
  {
949
- key: "tried",
950
- label: "Tried",
963
+ key: "attempted",
964
+ label: "Attempted",
951
965
  tooltip: "Number of participants who attempted this problem"
952
966
  },
953
967
  {
@@ -979,6 +993,9 @@ const _sfc_main = defineComponent({
979
993
  function formatAssetUrl(url, field) {
980
994
  return resolveSrkAssetUrl(url, field, props.formatSrkAssetUrl);
981
995
  }
996
+ function resolveDisplayText(text) {
997
+ return resolveText(text, props.languages);
998
+ }
982
999
  function getRankValues(row) {
983
1000
  return row.rankValues || props.data.series.map(() => ({ rank: null, segmentIndex: null }));
984
1001
  }
@@ -1035,8 +1052,8 @@ const _sfc_main = defineComponent({
1035
1052
  switch (key) {
1036
1053
  case "accepted":
1037
1054
  return stat.accepted;
1038
- case "tried":
1039
- return stat.tried;
1055
+ case "attempted":
1056
+ return stat.attempted;
1040
1057
  case "submitted":
1041
1058
  return stat.submitted;
1042
1059
  case "dirt":
@@ -1055,8 +1072,8 @@ const _sfc_main = defineComponent({
1055
1072
  switch (key) {
1056
1073
  case "accepted":
1057
1074
  return formatProblemStatisticsPercent(stat.accepted, stat.participantCount);
1058
- case "tried":
1059
- return formatProblemStatisticsPercent(stat.tried, stat.participantCount);
1075
+ case "attempted":
1076
+ return formatProblemStatisticsPercent(stat.attempted, stat.participantCount);
1060
1077
  case "dirt":
1061
1078
  return formatProblemStatisticsPercent(stat.dirt, stat.dirtSubmitted);
1062
1079
  default:
@@ -1074,7 +1091,7 @@ const _sfc_main = defineComponent({
1074
1091
  context: {
1075
1092
  rowIndex: rowIndex || 0,
1076
1093
  userId: payloadOrRow.user.id || null,
1077
- userName: resolveText(payloadOrRow.user.name)
1094
+ userName: resolveDisplayText(payloadOrRow.user.name)
1078
1095
  }
1079
1096
  });
1080
1097
  }
@@ -1100,7 +1117,7 @@ const _sfc_main = defineComponent({
1100
1117
  rowIndex: rowIndex || 0,
1101
1118
  problemIndex: resolvedProblemIndex,
1102
1119
  problemAlias: (problem == null ? void 0 : problem.alias) || null,
1103
- problemTitle: problem ? resolveText(problem.title) : null,
1120
+ problemTitle: problem ? resolveDisplayText(problem.title) : null,
1104
1121
  userId: payloadOrRow.user.id || null
1105
1122
  }
1106
1123
  });
@@ -1120,9 +1137,9 @@ const _sfc_main = defineComponent({
1120
1137
  return __props.data.type !== "general" ? (openBlock(), createElementBlock("div", _hoisted_1, 'srk type "' + toDisplayString(__props.data.type) + '" is not supported', 1)) : !isSupportedVersion.value ? (openBlock(), createElementBlock("div", _hoisted_2, ' srk version "' + toDisplayString(__props.data.version) + '" is not supported (current supported: ' + toDisplayString(unref(supportedVersions)) + ") ", 1)) : (openBlock(), createElementBlock("div", _hoisted_3, [
1121
1138
  createElementVNode("table", {
1122
1139
  class: normalizeClass({
1123
- "srk-table-row-bordered": __props.borderedRows || __props.rowBordered,
1140
+ "srk-table-row-bordered": __props.rowBordered,
1124
1141
  "srk-table-column-bordered": __props.columnBordered,
1125
- "srk-table-row-striped": __props.stripedRows
1142
+ "srk-table-row-striped": __props.rowStriped
1126
1143
  })
1127
1144
  }, [
1128
1145
  createElementVNode("thead", null, [
@@ -1139,14 +1156,15 @@ const _sfc_main = defineComponent({
1139
1156
  showTimeColumn.value ? (openBlock(), createElementBlock("th", _hoisted_7, toDisplayString(resolveColumnTitle("time", "Time")), 1)) : createCommentVNode("", true),
1140
1157
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.data.problems, (problem, problemIndex) => {
1141
1158
  return renderSlot(_ctx.$slots, "problem-header-cell", mergeProps({
1142
- key: problem.alias || unref(resolveText)(problem.title) || problemIndex,
1159
+ key: problem.alias || resolveDisplayText(problem.title) || problemIndex,
1143
1160
  ref_for: true
1144
- }, { problem, problemIndex, index: problemIndex, theme: resolvedTheme.value }), () => [
1161
+ }, { problem, problemIndex, index: problemIndex, theme: resolvedTheme.value, languages: __props.languages }), () => [
1145
1162
  createVNode(_sfc_main$3, {
1146
1163
  problem,
1147
1164
  index: problemIndex,
1148
- theme: resolvedTheme.value
1149
- }, null, 8, ["problem", "index", "theme"])
1165
+ theme: resolvedTheme.value,
1166
+ languages: __props.languages
1167
+ }, null, 8, ["problem", "index", "theme", "languages"])
1150
1168
  ]);
1151
1169
  }), 128)),
1152
1170
  __props.showDirtColumn ? (openBlock(), createElementBlock("th", _hoisted_8, toDisplayString(resolveColumnTitle("dirt", "Dirt")), 1)) : createCommentVNode("", true),
@@ -1156,7 +1174,7 @@ const _sfc_main = defineComponent({
1156
1174
  createElementVNode("tbody", null, [
1157
1175
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.data.rows, (row, rowIndex) => {
1158
1176
  return openBlock(), createElementBlock("tr", {
1159
- key: row.user.id || unref(resolveText)(row.user.name)
1177
+ key: row.user.id || resolveDisplayText(row.user.name)
1160
1178
  }, [
1161
1179
  (openBlock(true), createElementBlock(Fragment, null, renderList(getRankValues(row), (rankValue, seriesIndex) => {
1162
1180
  var _a;
@@ -1182,8 +1200,8 @@ const _sfc_main = defineComponent({
1182
1200
  ])) : createCommentVNode("", true),
1183
1201
  createElementVNode("span", {
1184
1202
  class: "srk-organization-name-text",
1185
- title: row.user.organization ? unref(resolveText)(row.user.organization) : ""
1186
- }, toDisplayString(row.user.organization ? unref(resolveText)(row.user.organization) : ""), 9, _hoisted_13)
1203
+ title: row.user.organization ? resolveDisplayText(row.user.organization) : ""
1204
+ }, toDisplayString(row.user.organization ? resolveDisplayText(row.user.organization) : ""), 9, _hoisted_13)
1187
1205
  ])
1188
1206
  ], 2)) : createCommentVNode("", true),
1189
1207
  renderSlot(_ctx.$slots, "user-cell", mergeProps({ ref_for: true }, {
@@ -1195,6 +1213,7 @@ const _sfc_main = defineComponent({
1195
1213
  theme: resolvedTheme.value,
1196
1214
  hideOrganization: __props.splitOrganization,
1197
1215
  hideAvatar: showAvatarInOrganization.value,
1216
+ languages: __props.languages,
1198
1217
  onClick: (event) => emitUserClick(row, rowIndex, event)
1199
1218
  }), () => [
1200
1219
  createVNode(_sfc_main$1, {
@@ -1207,8 +1226,9 @@ const _sfc_main = defineComponent({
1207
1226
  "format-srk-asset-url": formatAssetUrl,
1208
1227
  "on-user-click": emitUserClick,
1209
1228
  "hide-organization": __props.splitOrganization,
1210
- "hide-avatar": showAvatarInOrganization.value
1211
- }, null, 8, ["user", "row", "row-index", "ranklist", "markers", "theme", "hide-organization", "hide-avatar"])
1229
+ "hide-avatar": showAvatarInOrganization.value,
1230
+ languages: __props.languages
1231
+ }, null, 8, ["user", "row", "row-index", "ranklist", "markers", "theme", "hide-organization", "hide-avatar", "languages"])
1212
1232
  ]),
1213
1233
  createElementVNode("td", _hoisted_14, toDisplayString(row.score.value), 1),
1214
1234
  showTimeColumn.value ? (openBlock(), createElementBlock("td", _hoisted_15, toDisplayString(row.score.time ? unref(formatTimeDuration)(row.score.time, "min", Math.floor) : "-"), 1)) : createCommentVNode("", true),
@@ -1229,6 +1249,7 @@ const _sfc_main = defineComponent({
1229
1249
  statusCellPreset: __props.statusCellPreset,
1230
1250
  statusColorAsText: __props.statusColorAsText,
1231
1251
  emptyStatusPlaceholder: __props.emptyStatusPlaceholder,
1252
+ languages: __props.languages,
1232
1253
  onClick: (event) => emitSolutionClick(row, rowIndex, status, problemIndex, event)
1233
1254
  }), () => [
1234
1255
  createVNode(_sfc_main$2, {
@@ -1242,8 +1263,9 @@ const _sfc_main = defineComponent({
1242
1263
  "on-solution-click": emitSolutionClick,
1243
1264
  "status-cell-preset": __props.statusCellPreset,
1244
1265
  "status-color-as-text": __props.statusColorAsText,
1245
- "empty-status-placeholder": __props.emptyStatusPlaceholder
1246
- }, null, 8, ["status", "problem", "problem-index", "user", "row", "row-index", "ranklist", "status-cell-preset", "status-color-as-text", "empty-status-placeholder"])
1266
+ "empty-status-placeholder": __props.emptyStatusPlaceholder,
1267
+ languages: __props.languages
1268
+ }, null, 8, ["status", "problem", "problem-index", "user", "row", "row-index", "ranklist", "status-cell-preset", "status-color-as-text", "empty-status-placeholder", "languages"])
1247
1269
  ]);
1248
1270
  }), 128)),
1249
1271
  __props.showDirtColumn ? (openBlock(), createElementBlock("td", _hoisted_16, toDisplayString(unref(calculateDirtPercentage)(row)), 1)) : createCommentVNode("", true),
@@ -1294,7 +1316,7 @@ const _sfc_main = defineComponent({
1294
1316
  }, null, 8, _hoisted_26),
1295
1317
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.data.problems, (problem, problemIndex) => {
1296
1318
  return openBlock(), createElementBlock("td", {
1297
- key: problem.alias || unref(resolveText)(problem.title) || problemIndex,
1319
+ key: problem.alias || resolveDisplayText(problem.title) || problemIndex,
1298
1320
  class: "srk-problem-statistics-footer-cell srk-problem-statistics-footer-problem-header srk-problem-header srk--text-center srk--nowrap",
1299
1321
  style: normalizeStyle({ backgroundImage: unref(getProblemHeaderBackgroundImage)(problem.style, resolvedTheme.value, 0) })
1300
1322
  }, [
@@ -45,6 +45,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
45
45
  type: ObjectConstructor;
46
46
  required: false;
47
47
  };
48
+ languages: {
49
+ type: ArrayConstructor;
50
+ required: false;
51
+ };
48
52
  }>, {
49
53
  props: any;
50
54
  emit: (event: "close" | "update:open", ...args: any[]) => void;
@@ -332,6 +336,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
332
336
  type: ObjectConstructor;
333
337
  required: false;
334
338
  };
339
+ languages: {
340
+ type: ArrayConstructor;
341
+ required: false;
342
+ };
335
343
  }>> & Readonly<{
336
344
  onClose?: ((...args: any[]) => any) | undefined;
337
345
  "onUpdate:open"?: ((...args: any[]) => any) | undefined;
@@ -1,4 +1,5 @@
1
1
  import type * as srk from '@algoux/standard-ranklist';
2
+ import { resolveText } from '@algoux/standard-ranklist-utils';
2
3
  declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
3
4
  open: {
4
5
  type: BooleanConstructor;
@@ -46,6 +47,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
46
47
  type: FunctionConstructor;
47
48
  required: false;
48
49
  };
50
+ languages: {
51
+ type: ArrayConstructor;
52
+ required: false;
53
+ };
49
54
  }>, {
50
55
  props: any;
51
56
  emit: (event: "close" | "update:open", ...args: any[]) => void;
@@ -100,7 +105,8 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
100
105
  } | null>;
101
106
  resolvedMarkers: import("vue").ComputedRef<any>;
102
107
  formatAssetUrl: (url: string, field: string) => string;
103
- readonly resolveText: any;
108
+ resolveDisplayText: (text: Parameters<typeof resolveText>[0]) => any;
109
+ formatMemberName: (member: srk.ExternalUser) => string;
104
110
  Modal: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
105
111
  open: {
106
112
  type: BooleanConstructor;
@@ -268,6 +274,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
268
274
  type: FunctionConstructor;
269
275
  required: false;
270
276
  };
277
+ languages: {
278
+ type: ArrayConstructor;
279
+ required: false;
280
+ };
271
281
  }>> & Readonly<{
272
282
  onClose?: ((...args: any[]) => any) | undefined;
273
283
  "onUpdate:open"?: ((...args: any[]) => any) | undefined;
@@ -12,6 +12,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
12
12
  required: false;
13
13
  default: any;
14
14
  };
15
+ languages: {
16
+ type: ArrayConstructor;
17
+ required: false;
18
+ };
15
19
  }>, {
16
20
  props: any;
17
21
  alias: import("vue").ComputedRef<any>;
@@ -32,6 +36,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
32
36
  required: false;
33
37
  default: any;
34
38
  };
39
+ languages: {
40
+ type: ArrayConstructor;
41
+ required: false;
42
+ };
35
43
  }>> & Readonly<{}>, {
36
44
  theme: string;
37
45
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -46,6 +46,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
46
46
  required: false;
47
47
  default: null;
48
48
  };
49
+ languages: {
50
+ type: ArrayConstructor;
51
+ required: false;
52
+ };
49
53
  }>, {
50
54
  props: any;
51
55
  fbStar: string;
@@ -133,6 +137,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
133
137
  required: false;
134
138
  default: null;
135
139
  };
140
+ languages: {
141
+ type: ArrayConstructor;
142
+ required: false;
143
+ };
136
144
  }>> & Readonly<{}>, {
137
145
  statusCellPreset: string;
138
146
  statusColorAsText: boolean;
@@ -1,3 +1,4 @@
1
+ import { resolveText } from '@algoux/standard-ranklist-utils';
1
2
  declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
3
  user: {
3
4
  type: null;
@@ -43,13 +44,17 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
43
44
  required: false;
44
45
  default: boolean;
45
46
  };
47
+ languages: {
48
+ type: ArrayConstructor;
49
+ required: false;
50
+ };
46
51
  }>, {
47
52
  props: any;
48
53
  name: import("vue").ComputedRef<any>;
49
54
  userMarkers: import("vue").ComputedRef<any>;
50
55
  resolvedMarkers: import("vue").ComputedRef<any>;
56
+ resolveDisplayText: (text: Parameters<typeof resolveText>[0]) => any;
51
57
  emitUserClick: (event: MouseEvent) => void;
52
- readonly resolveText: any;
53
58
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
54
59
  user: {
55
60
  type: null;
@@ -95,6 +100,10 @@ declare const _sfc_main: import("vue").DefineComponent<import("vue").ExtractProp
95
100
  required: false;
96
101
  default: boolean;
97
102
  };
103
+ languages: {
104
+ type: ArrayConstructor;
105
+ required: false;
106
+ };
98
107
  }>> & Readonly<{}>, {
99
108
  theme: string;
100
109
  markers: unknown[];
package/dist/types.d.ts CHANGED
@@ -6,10 +6,9 @@ export declare type ModalCloseReason = 'mask' | 'close-button' | 'escape';
6
6
  export interface RanklistProps {
7
7
  data: StaticRanklist;
8
8
  theme?: EnumTheme;
9
- borderedRows?: boolean;
10
9
  rowBordered?: boolean;
11
10
  columnBordered?: boolean;
12
- stripedRows?: boolean;
11
+ rowStriped?: boolean;
13
12
  formatSrkAssetUrl?: (url: string, field: string) => string;
14
13
  splitOrganization?: boolean;
15
14
  columnTitles?: RanklistColumnTitles;
@@ -20,12 +19,14 @@ export interface RanklistProps {
20
19
  showSEColumn?: boolean;
21
20
  emptyStatusPlaceholder?: string | null;
22
21
  userAvatarPlacement?: RanklistUserAvatarPlacement;
22
+ languages?: readonly string[];
23
23
  }
24
24
  export interface ProblemHeaderCellSlotProps {
25
25
  problem: srk.Problem;
26
26
  problemIndex: number;
27
27
  index: number;
28
28
  theme?: EnumTheme;
29
+ languages?: readonly string[];
29
30
  }
30
31
  export interface UserCellSlotProps {
31
32
  user: srk.User;
@@ -36,6 +37,7 @@ export interface UserCellSlotProps {
36
37
  theme?: EnumTheme;
37
38
  hideOrganization?: boolean;
38
39
  hideAvatar?: boolean;
40
+ languages?: readonly string[];
39
41
  onClick: (event?: MouseEvent) => void;
40
42
  }
41
43
  export interface StatusCellSlotProps {
@@ -50,6 +52,7 @@ export interface StatusCellSlotProps {
50
52
  statusCellPreset?: RanklistStatusCellPreset;
51
53
  statusColorAsText?: boolean;
52
54
  emptyStatusPlaceholder?: string | null;
55
+ languages?: readonly string[];
53
56
  onClick: (event?: MouseEvent) => void;
54
57
  }
55
58
  export interface ProgressBarProps {
@@ -75,6 +78,7 @@ export interface DefaultUserModalProps extends Pick<ModalProps, 'open' | 'rootCl
75
78
  title?: string;
76
79
  width?: number;
77
80
  formatSrkAssetUrl?: (url: string, field: string) => string;
81
+ languages?: readonly string[];
78
82
  }
79
83
  export interface DefaultSolutionModalProps extends Pick<ModalProps, 'open' | 'rootClassName' | 'wrapClassName' | 'style'> {
80
84
  user?: srk.User | null;
@@ -83,6 +87,7 @@ export interface DefaultSolutionModalProps extends Pick<ModalProps, 'open' | 'ro
83
87
  solutions: srk.Solution[];
84
88
  title?: string;
85
89
  width?: number;
90
+ languages?: readonly string[];
86
91
  }
87
92
  export declare type RanklistEvents = {
88
93
  userClick: UserClickPayload;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@algoux/standard-ranklist-renderer-component-vue",
3
- "version": "0.6.1",
3
+ "version": "0.6.3",
4
4
  "description": "Vue components for Standard Ranklist Renderer Component",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/algoux/standard-ranklist-renderer-component",
@@ -28,9 +28,9 @@
28
28
  "registry": "https://registry.npmjs.org/"
29
29
  },
30
30
  "dependencies": {
31
- "@algoux/standard-ranklist-utils": "^0.2.11",
32
- "@algoux/standard-ranklist-renderer-component-core": "0.6.1",
33
- "@algoux/standard-ranklist-renderer-component-styles": "0.6.1"
31
+ "@algoux/standard-ranklist-utils": "^0.3.1",
32
+ "@algoux/standard-ranklist-renderer-component-styles": "0.6.1",
33
+ "@algoux/standard-ranklist-renderer-component-core": "0.6.2"
34
34
  },
35
35
  "peerDependencies": {
36
36
  "@algoux/standard-ranklist": "*",