From 988d0c8acfa485e7497a865b8cb9170a94690498 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 29 Feb 2024 00:03:03 +0000 Subject: [PATCH] Rebuild pages at 4fec014a05649f26d0c4bb599ac778179dad28ef --- CATcher-org_WATcher_main/authorship.json | 2 +- CATcher-org_WATcher_main/commits.json | 2 +- archive.zip | Bin 531311 -> 546755 bytes markbind_markbind_master/authorship.json | 2 +- markbind_markbind_master/commits.json | 2 +- reposense-logs/reposense.log.0 | 1676 +++++++++++----------- summary.json | 2 +- 7 files changed, 843 insertions(+), 843 deletions(-) diff --git a/CATcher-org_WATcher_main/authorship.json b/CATcher-org_WATcher_main/authorship.json index b26e17e..4d0a9ac 100644 --- a/CATcher-org_WATcher_main/authorship.json +++ b/CATcher-org_WATcher_main/authorship.json @@ -1 +1 @@ -[{"path":"src/app/activity-dashboard/activity-dashboard.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":".event-tables-wrapper {"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" overflow-x: auto;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":4}},{"path":"src/app/activity-dashboard/activity-dashboard.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cmat-grid-list cols\u003d\"4\" rowHeight\u003d\"80px\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"grid-flush-left\"\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003ch1 class\u003d\"mat-headline\" style\u003d\"margin: 0px\"\u003eActivity\u003c/h1\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"fill\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eStart Date\u003c/mat-label\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cinput matInput [min]\u003d\"startMinDate\" [max]\u003d\"startMaxDate\" [matDatepicker]\u003d\"startPicker\" (dateChange)\u003d\"pickStartDate($event)\" /\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmat-hint\u003eMM/DD/YYYY\u003c/mat-hint\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cmat-datepicker-toggle matSuffix [for]\u003d\"startPicker\"\u003e\u003c/mat-datepicker-toggle\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cmat-datepicker startView\u003d\"year\" #startPicker\u003e\u003c/mat-datepicker\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"fill\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eEnd Date\u003c/mat-label\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cinput matInput [min]\u003d\"endMinDate\" [max]\u003d\"endMaxDate\" [matDatepicker]\u003d\"endPicker\" (dateChange)\u003d\"pickEndDate($event)\" /\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cmat-hint\u003eMM/DD/YYYY\u003c/mat-hint\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cmat-datepicker-toggle matSuffix [for]\u003d\"endPicker\"\u003e\u003c/mat-datepicker-toggle\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cmat-datepicker startView\u003d\"year\" #endPicker\u003e\u003c/mat-datepicker\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/mat-grid-list\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"\u003cdiv class\u003d\"event-tables-wrapper\"\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003capp-event-tables"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let assignee of assignees\""},{"lineNumber":34,"author":{"gitId":"-"},"content":" class\u003d\"issue-table\""},{"lineNumber":35,"author":{"gitId":"-"},"content":" [actor]\u003d\"assignee\""},{"lineNumber":36,"author":{"gitId":"-"},"content":" [columnsToDisplay]\u003d\"this.displayedColumns\""},{"lineNumber":37,"author":{"gitId":"-"},"content":" [expandedColumnsToDisplay]\u003d\"this.expandedColumns\""},{"lineNumber":38,"author":{"gitId":"-"},"content":" [actions]\u003d\"this.actionButtons\""},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003e\u003c/app-event-tables\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"NereusWB922":1,"-":39}},{"path":"src/app/activity-dashboard/activity-dashboard.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, OnInit, QueryList, ViewChildren } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatDatepickerInputEvent } from \u0027@angular/material/datepicker\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import * as moment from \u0027moment\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../core/models/github-user.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../core/services/github.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../core/services/githubevent.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { EXPANDED_TABLE_COLUMNS, TABLE_COLUMNS } from \u0027./event-tables/event-tables-columns\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ACTION_BUTTONS, EventTablesComponent } from \u0027./event-tables/event-tables.component\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-activity-dashboard\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./activity-dashboard.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./activity-dashboard.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class ActivityDashboardComponent implements OnInit {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" readonly displayedColumns \u003d [TABLE_COLUMNS.DATE_START, TABLE_COLUMNS.ISSUE_COUNT, TABLE_COLUMNS.PR_COUNT, TABLE_COLUMNS.COMMENT_COUNT];"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" readonly expandedColumns \u003d [EXPANDED_TABLE_COLUMNS.TITLE, EXPANDED_TABLE_COLUMNS.DATE];"},{"lineNumber":18,"author":{"gitId":"-"},"content":" readonly actionButtons: ACTION_BUTTONS[] \u003d [ACTION_BUTTONS.VIEW_IN_WEB];"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" startMinDate: Date;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" startMaxDate \u003d moment().endOf(\u0027day\u0027).toDate();"},{"lineNumber":22,"author":{"gitId":"-"},"content":" endMinDate: Date;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" endMaxDate \u003d moment().endOf(\u0027day\u0027).toDate();"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" assignees: GithubUser[];"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" @ViewChildren(EventTablesComponent) tables: QueryList\u003cEventTablesComponent\u003e;"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService, private githubEventService: GithubEventService) {}"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.githubEventService.getEvents();"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.githubService.getUsersAssignable().subscribe((x) \u003d\u003e (this.assignees \u003d x));"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" pickStartDate(event: MatDatepickerInputEvent\u003cDate\u003e) {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.endMinDate \u003d event.value;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.tables.forEach((t) \u003d\u003e (t.githubEvents.start \u003d `${event.value}`));"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" pickEndDate(event: MatDatepickerInputEvent\u003cDate\u003e) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.startMaxDate \u003d event.value;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.tables.forEach((t) \u003d\u003e (t.githubEvents.end \u003d `${event.value}`));"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"NereusWB922":1,"-":44}},{"path":"src/app/activity-dashboard/activity-dashboard.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../shared/shared.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { ActivityDashboardRoutingModule } from \u0027./activity-dashboard-routing.module\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ActivityDashboardComponent } from \u0027./activity-dashboard.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { EventTablesModule } from \u0027./event-tables/event-tables.module\u0027;"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import { EventWeekDetailsComponent } from \u0027./event-week-details/event-week-details.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" declarations: [ActivityDashboardComponent, EventWeekDetailsComponent],"},{"lineNumber":11,"author":{"gitId":"-"},"content":" imports: [CommonModule, SharedModule, ActivityDashboardRoutingModule, EventTablesModule]"},{"lineNumber":12,"author":{"gitId":"-"},"content":"})"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export class ActivityDashboardModule {}"}],"authorContributionMap":{"NereusWB922":2,"-":11}},{"path":"src/app/activity-dashboard/event-tables/event-tables.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".table-container {"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" margin: 10px;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" min-width: 400px;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":".actor-card {"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" padding: 10px;"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" margin-bottom: 1px;"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":".actor-username {"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" flex-grow: 1;"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" font-size: 15px;"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" margin: 0;"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" word-break: break-word;"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":".avatar-container {"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" margin-right: 10px;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":".mat-table {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /* flex-wrap: wrap; */"},{"lineNumber":27,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":".mat-cell {"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" justify-content: center;"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" padding: 0;"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":".mat-header-cell {"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" justify-content: center;"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" padding: 0;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":".mat-header-row {"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" white-space: nowrap;"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":".example-element-row:hover {"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" border: 3px solid rgba(0, 0, 0, 0.514);"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" border-radius: 3px;"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" color: #210749;"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":".example-element-row td {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" border-bottom-width: 0;"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":".example-element-detail {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" overflow: hidden;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"/* Colour cells */"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":".white {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" background-color: white;"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":".pale-green {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" background-color: palegreen;"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":".green {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" background-color: green;"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":".scrollable-container {"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" height: 53vh;"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" overflow: auto;"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" margin-bottom: 2px;"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" scrollbar-width: none;"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" position: relative;"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":".scrollable-container::-webkit-scrollbar {"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" display: none;"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":"/* Ref: https://css-scroll-shadows.vercel.app */"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":".scrollable-container::before {"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" pointer-events: none;"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" content: \u0027\u0027;"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" position: absolute;"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" z-index: 2;"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" height: 6px;"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" width: 100%;"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" display: block;"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" background-image: linear-gradient(to bottom, white 66%, transparent);"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":".scrollable-container::after {"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" pointer-events: none;"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" content: \u0027\u0027;"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" position: sticky;"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" z-index: 2;"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" top: 100%;"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" height: 6px;"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" width: 100%;"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" display: block;"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" background-image: linear-gradient(to top, white 66%, transparent);"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":".scrollable-container-wrapper {"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" position: relative;"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":".scrollable-container-wrapper::before {"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" pointer-events: none;"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" content: \u0027\u0027;"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" position: absolute;"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" z-index: 1;"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" top: 0;"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" left: 0;"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" right: 0;"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" height: 5px;"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" background-image: radial-gradient(farthest-side at 50% 0, rgba(0, 0, 0, 0.5), transparent);"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":".scrollable-container-wrapper::after {"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" pointer-events: none;"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" content: \u0027\u0027;"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" position: absolute;"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" z-index: 1;"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" bottom: 0;"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" left: 0;"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" right: 0;"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" height: 5px;"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" background-image: radial-gradient(farthest-side at 50% 100%, rgba(0, 0, 0, 0.5), transparent);"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":105,"-":37}},{"path":"src/app/activity-dashboard/event-tables/event-tables.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"table-container\"\u003e"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-card class\u003d\"actor-card\"\u003e"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" \u003cdiv"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" mat-card-avatar"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" *ngIf\u003d\"this.actor\""},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" class\u003d\"avatar-container\""},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" [ngStyle]\u003d\"{"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" background: \u0027url(\u0027 + this.actor.avatar_url + \u0027)\u0027,"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" \u0027background-size\u0027: \u002740px\u0027"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" }\""},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" \u003e\u003c/div\u003e"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-card-title class\u003d\"actor-username\"\u003e"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" {{ this.actor !\u003d\u003d undefined ? this.actor.login : \u0027Unknown\u0027 }}"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" \u003c/mat-card-title\u003e"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003c/mat-card\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003cdiv class\u003d\"scrollable-container-wrapper\"\u003e"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u003cdiv class\u003d\"scrollable-container\"\u003e"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-table [dataSource]\u003d\"this.githubEvents\" matSort multiTemplateDataRows\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"date_start\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Date \u003c/mat-header-cell\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let element\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" {{ element.date_start }}"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"issue_count\"\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Issue # \u003c/mat-header-cell\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let element\" [ngClass]\u003d\"colorCell(element.issue_count)\"\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" {{ element.issue_count }}"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"pr_count\"\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e PR # \u003c/mat-header-cell\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let element\" [ngClass]\u003d\"colorCell(element.pr_count)\"\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" {{ element.pr_count }}"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"comment_count\"\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Comment # \u003c/mat-header-cell\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let element\" [ngClass]\u003d\"colorCell(element.comment_count)\"\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":" {{ element.comment_count }}"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-header-row *matHeaderRowDef\u003d\"this.columnsToDisplay\"\u003e\u003c/mat-header-row\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cmat-row"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" *matRowDef\u003d\"let eventWeek; columns: this.columnsToDisplay\""},{"lineNumber":59,"author":{"gitId":"-"},"content":" class\u003d\"example-element-row\""},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" (click)\u003d\"openDialog(eventWeek)\""},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003e\u003c/mat-row\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/mat-table\u003e"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" \u003c/div\u003e"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" \u003c/div\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cmat-card *ngIf\u003d\"this.githubEvents.isLoading$ | async\" style\u003d\"display: flex; justify-content: center; align-items: center\"\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003cmat-progress-spinner color\u003d\"primary\" mode\u003d\"indeterminate\" diameter\u003d\"50\" strokeWidth\u003d\"5\"\u003e\u003c/mat-progress-spinner\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/mat-card\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003cmat-paginator [pageSize]\u003d\"20\" [pageSizeOptions]\u003d\"[10, 20, 50]\"\u003e\u003c/mat-paginator\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"NereusWB922":22,"-":48}},{"path":"src/app/activity-dashboard/event-tables/event-tables.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { animate, state, style, transition, trigger } from \u0027@angular/animations\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, Input, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import { EventWeekDetailsComponent } from \u0027../event-week-details/event-week-details.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { EventWeek } from \u0027../event-week.model\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { GithubEventDataTable } from \u0027./GithubEventDataTable\u0027;"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import { NoEventsError } from \u0027./no-events-error.model\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"export enum ACTION_BUTTONS {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" VIEW_IN_WEB,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" COLLAPSE"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":21,"author":{"gitId":"-"},"content":" selector: \u0027app-event-tables\u0027,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" templateUrl: \u0027./event-tables.component.html\u0027,"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" styleUrls: [\u0027./event-tables.component.css\u0027]"},{"lineNumber":24,"author":{"gitId":"-"},"content":"})"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Angular Table Expandable Rows"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * ref: https://material.angular.io/components/table/examples#table-expandable-rows"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */"},{"lineNumber":30,"author":{"gitId":"-"},"content":"export class EventTablesComponent implements OnInit, AfterViewInit {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Input() columnsToDisplay: string[];"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Input() expandedColumnsToDisplay: string[];"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Input() actions: ACTION_BUTTONS[];"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Input() actor?: GithubUser \u003d undefined;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Input() filters?: any \u003d undefined;"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" @ViewChild(MatSort, { static: true }) sort: MatSort;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" githubEvents: GithubEventDataTable;"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" public readonly action_buttons \u003d ACTION_BUTTONS;"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" constructor("},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public githubEventService: GithubEventService,"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public dialog: MatDialog,"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" private logger: LoggingService,"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" private errorHandling: ErrorHandlingService"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" ) {}"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.githubEvents \u003d new GithubEventDataTable(this.githubEventService, this.logger, this.sort, this.paginator, this.actor, this.filters);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.githubEvents.loadEvents();"},{"lineNumber":58,"author":{"gitId":"-"},"content":" });"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" reload() {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.githubEvents.loadEvents();"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Formats the title text to account for those that contain long words."},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param title - Title of Event that is to be displayed in the Table Row."},{"lineNumber":68,"author":{"gitId":"-"},"content":" */"},{"lineNumber":69,"author":{"gitId":"-"},"content":" fitTitleText(title: string): string {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Arbitrary Length of Characters beyond which an overflow occurs."},{"lineNumber":71,"author":{"gitId":"-"},"content":" const MAX_WORD_LENGTH \u003d 43;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" const SPLITTER_TEXT \u003d \u0027 \u0027;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" const ELLIPSES \u003d \u0027...\u0027;"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" return title"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .split(SPLITTER_TEXT)"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .map((word) \u003d\u003e {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (word.length \u003e MAX_WORD_LENGTH) {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return word.substring(0, MAX_WORD_LENGTH - 5).concat(ELLIPSES);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return word;"},{"lineNumber":82,"author":{"gitId":"-"},"content":" })"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .join(SPLITTER_TEXT);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" /** Not implemented yet. */"},{"lineNumber":87,"author":{"gitId":"-"},"content":" viewEventInBrowser(id: number, event: Event) {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.logger.info(`EventTablesComponent: Opening Event ${id} on Github`);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // window.open(\u0027https://github.com/\u0027, \u0027_blank\u0027);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" /** Opens dialog to show the event details of the selected week. */"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" openDialog(eventWeek: EventWeek) {"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" if (eventWeek.events.length \u003c\u003d 0) {"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" this.errorHandling.handleError(new NoEventsError());"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return;"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" this.dialog.open(EventWeekDetailsComponent, {"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" data: {"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" eventWeek,"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" expandedColumnsToDisplay: this.expandedColumnsToDisplay"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" /** Returns color string of cell. Shade darkens with magnitude of number. */"},{"lineNumber":107,"author":{"gitId":"-"},"content":" colorCell(count: number) {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (count \u003d\u003d\u003d 0) {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return \u0027white\u0027;"},{"lineNumber":110,"author":{"gitId":"-"},"content":" } else if (count \u003e 0 \u0026\u0026 count \u003c\u003d 5) {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return \u0027pale-green\u0027;"},{"lineNumber":112,"author":{"gitId":"-"},"content":" } else if (count \u003e 6) {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return \u0027green\u0027;"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"NereusWB922":21,"-":95}},{"path":"src/app/activity-dashboard/event-tables/no-events-error.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"export class NoEventsError extends Error {"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" constructor() {"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" super(\u0027No events found for this week.\u0027);"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" Object.setPrototypeOf(this, NoEventsError.prototype);"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" }"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":6}},{"path":"src/app/activity-dashboard/event-week-details/event-week-details.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":".mat-cell {"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" white-space: nowrap;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" justify-content: center;"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" padding: 0;"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":".mat-header-cell {"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" justify-content: center;"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" padding: 0;"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":".mat-dialog-content {"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" min-width: 500px;"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":20}},{"path":"src/app/activity-dashboard/event-week-details/event-week-details.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"\u003ch2 mat-dialog-title\u003eEvent Week Details\u003c/h2\u003e"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"\u003cmat-dialog-content class\u003d\"mat-typography\"\u003e"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-table [dataSource]\u003d\"data.eventWeek.events\"\u003e"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" \u003cng-container matColumnDef\u003d\"{{ expandableColumn }}\" *ngFor\u003d\"let expandableColumn of data.expandedColumnsToDisplay\"\u003e"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-header-cell *matHeaderCellDef\u003e{{ expandableColumn }}\u003c/mat-header-cell\u003e"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-cell *matCellDef\u003d\"let property\"\u003e"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" {{ property[expandableColumn] }}"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" \u003c/ng-container\u003e"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-header-row *matHeaderRowDef\u003d\"data.expandedColumnsToDisplay\"\u003e\u003c/mat-header-row\u003e"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-row *matRowDef\u003d\"let property; columns: data.expandedColumnsToDisplay\"\u003e\u003c/mat-row\u003e"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" \u003c/mat-table\u003e"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"\u003c/mat-dialog-content\u003e"}],"authorContributionMap":{"NereusWB922":13}},{"path":"src/app/activity-dashboard/event-week-details/event-week-details.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"import { MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { EventWeek } from \u0027../event-week.model\u0027;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"export interface DialogData {"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" eventWeek: EventWeek;"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" expandedColumnsToDisplay: string[];"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" selector: \u0027app-event-week-detail\u0027,"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" templateUrl: \u0027./event-week-details.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" styleUrls: [\u0027./event-week-details.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"})"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"export class EventWeekDetailsComponent {"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" constructor(@Inject(MAT_DIALOG_DATA) public data: DialogData) {}"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":17}},{"path":"src/app/app.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpClientModule } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ErrorHandler, NgModule, NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { BrowserModule, Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Apollo, ApolloModule } from \u0027apollo-angular\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { HttpLink, HttpLinkModule } from \u0027apollo-angular-link-http\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { InMemoryCache, IntrospectionFragmentMatcher } from \u0027apollo-cache-inmemory\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ApolloLink } from \u0027apollo-link\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { setContext } from \u0027apollo-link-context\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import \u0027reflect-metadata\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import graphqlTypes from \u0027../../graphql/graphql-types\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import \u0027../polyfills\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { ActivityDashboardModule } from \u0027./activity-dashboard/activity-dashboard.module\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { AppRoutingModule } from \u0027./app-routing.module\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { AppComponent } from \u0027./app.component\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { AuthModule } from \u0027./auth/auth.module\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027./core/guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027./core/services/auth.service\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027./core/services/error-handling.service\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import { ErrorMessageService } from \u0027./core/services/error-message.service\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import { AuthServiceFactory } from \u0027./core/services/factories/factory.auth.service\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import { GithubServiceFactory } from \u0027./core/services/factories/factory.github.service\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import { IssueServiceFactory } from \u0027./core/services/factories/factory.issue.service\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./core/services/github.service\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027./core/services/githubevent.service\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./core/services/issue.service\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027./core/services/label.service\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./core/services/logging.service\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./core/services/phase.service\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import { RepoSessionStorageService } from \u0027./core/services/repo-session-storage.service\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./core/services/user.service\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import { IssuesViewerModule } from \u0027./issues-viewer/issues-viewer.module\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import { LabelDefinitionPopupComponent } from \u0027./shared/label-definition-popup/label-definition-popup.component\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import { HeaderComponent } from \u0027./shared/layout\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import { RepoChangeFormComponent } from \u0027./shared/repo-change-form/repo-change-form.component\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027./shared/shared.module\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":40,"author":{"gitId":"Arif-Khalid"},"content":" declarations: [AppComponent, HeaderComponent, UserConfirmationComponent, LabelDefinitionPopupComponent, RepoChangeFormComponent],"},{"lineNumber":41,"author":{"gitId":"-"},"content":" imports: ["},{"lineNumber":42,"author":{"gitId":"-"},"content":" BrowserModule,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" BrowserAnimationsModule,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AuthModule,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" IssuesViewerModule,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" ActivityDashboardModule,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" SharedModule,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" HttpClientModule,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AppRoutingModule,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" ApolloModule,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" HttpLinkModule"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":53,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":54,"author":{"gitId":"-"},"content":" {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" provide: GithubService,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" useFactory: GithubServiceFactory,"},{"lineNumber":57,"author":{"gitId":"-"},"content":" deps: [ErrorHandlingService, Apollo, LoggingService]"},{"lineNumber":58,"author":{"gitId":"-"},"content":" },"},{"lineNumber":59,"author":{"gitId":"-"},"content":" {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" provide: AuthService,"},{"lineNumber":61,"author":{"gitId":"-"},"content":" useFactory: AuthServiceFactory,"},{"lineNumber":62,"author":{"gitId":"-"},"content":" deps: ["},{"lineNumber":63,"author":{"gitId":"-"},"content":" Router,"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NgZone,"},{"lineNumber":65,"author":{"gitId":"-"},"content":" GithubService,"},{"lineNumber":66,"author":{"gitId":"-"},"content":" UserService,"},{"lineNumber":67,"author":{"gitId":"-"},"content":" IssueService,"},{"lineNumber":68,"author":{"gitId":"-"},"content":" LabelService,"},{"lineNumber":69,"author":{"gitId":"-"},"content":" PhaseService,"},{"lineNumber":70,"author":{"gitId":"-"},"content":" GithubEventService,"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Title,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" ErrorHandlingService,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" LoggingService"},{"lineNumber":74,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":75,"author":{"gitId":"-"},"content":" },"},{"lineNumber":76,"author":{"gitId":"-"},"content":" {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" provide: IssueService,"},{"lineNumber":78,"author":{"gitId":"-"},"content":" useFactory: IssueServiceFactory,"},{"lineNumber":79,"author":{"gitId":"-"},"content":" deps: [GithubService, UserService, PhaseService]"},{"lineNumber":80,"author":{"gitId":"-"},"content":" },"},{"lineNumber":81,"author":{"gitId":"-"},"content":" {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" provide: ErrorHandler,"},{"lineNumber":83,"author":{"gitId":"-"},"content":" useClass: ErrorHandlingService"},{"lineNumber":84,"author":{"gitId":"-"},"content":" },"},{"lineNumber":85,"author":{"gitId":"-"},"content":" ErrorMessageService,"},{"lineNumber":86,"author":{"gitId":"-"},"content":" RepoSessionStorageService"},{"lineNumber":87,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":88,"author":{"gitId":"-"},"content":" bootstrap: [AppComponent]"},{"lineNumber":89,"author":{"gitId":"-"},"content":"})"},{"lineNumber":90,"author":{"gitId":"-"},"content":"export class AppModule {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" constructor(private apollo: Apollo, private httpLink: HttpLink, private authService: AuthService, private logger: LoggingService) {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" const URI \u003d \u0027https://api.github.com/graphql\u0027;"},{"lineNumber":93,"author":{"gitId":"-"},"content":" const log \u003d new ApolloLink((operation, forward) \u003d\u003e {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" operation.setContext({ start: performance.now() });"},{"lineNumber":95,"author":{"gitId":"-"},"content":" this.logger.info(\u0027AppModule: GraphQL request\u0027, operation.getContext());"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return forward(operation).map((result) \u003d\u003e {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" const time \u003d performance.now() - operation.getContext().start;"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.logger.info(\u0027AppModule: GraphQL response\u0027, operation.getContext(), `in ${Math.round(time)}ms`);"},{"lineNumber":99,"author":{"gitId":"-"},"content":" const repo \u003d operation.getContext().response.body.data.repository;"},{"lineNumber":100,"author":{"gitId":"-"},"content":" const item \u003d Object.keys(repo)[0];"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.logger.debug(\u0027AppModule: GraphQL response body\u0027, item, repo[item].edges.length, repo[item].edges);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" });"},{"lineNumber":104,"author":{"gitId":"-"},"content":" });"},{"lineNumber":105,"author":{"gitId":"-"},"content":" const basic \u003d setContext(() \u003d\u003e {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return { headers: { Accept: \u0027charset\u003dutf-8\u0027 } };"},{"lineNumber":107,"author":{"gitId":"-"},"content":" });"},{"lineNumber":108,"author":{"gitId":"-"},"content":" const auth \u003d setContext(() \u003d\u003e {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return { headers: { Authorization: `Token ${this.authService.accessToken.getValue()}` } };"},{"lineNumber":110,"author":{"gitId":"-"},"content":" });"},{"lineNumber":111,"author":{"gitId":"-"},"content":" const link \u003d ApolloLink.from([log, basic, auth, this.httpLink.create({ uri: URI })]);"},{"lineNumber":112,"author":{"gitId":"-"},"content":" const fragmentMatcher \u003d new IntrospectionFragmentMatcher({"},{"lineNumber":113,"author":{"gitId":"-"},"content":" introspectionQueryResultData: graphqlTypes"},{"lineNumber":114,"author":{"gitId":"-"},"content":" });"},{"lineNumber":115,"author":{"gitId":"-"},"content":" const cache \u003d new InMemoryCache({ fragmentMatcher });"},{"lineNumber":116,"author":{"gitId":"-"},"content":" this.apollo.create({"},{"lineNumber":117,"author":{"gitId":"-"},"content":" link: link,"},{"lineNumber":118,"author":{"gitId":"-"},"content":" cache: cache"},{"lineNumber":119,"author":{"gitId":"-"},"content":" });"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Arif-Khalid":1,"-":120}},{"path":"src/app/auth/auth.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, NgZone, OnDestroy, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ActivatedRoute, Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { filter, flatMap, map } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../environments/environment\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { STORAGE_KEYS } from \u0027../core/constants/storage-keys.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../core/models/github-user.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ApplicationService } from \u0027../core/services/application.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../core/services/auth.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../core/services/error-handling.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { ErrorMessageService } from \u0027../core/services/error-message.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../core/services/logging.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../core/services/phase.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../core/services/user.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":17,"author":{"gitId":"-"},"content":" selector: \u0027app-auth\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" templateUrl: \u0027./auth.component.html\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./auth.component.css\u0027]"},{"lineNumber":20,"author":{"gitId":"-"},"content":"})"},{"lineNumber":21,"author":{"gitId":"-"},"content":"export class AuthComponent implements OnInit, OnDestroy {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" authState: AuthState;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" accessTokenSubscription: Subscription;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" authStateSubscription: Subscription;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" currentUserName: string;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" urlEncodedSessionName: string;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" urlEncodedRepo: string;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" sessionInformation: string;"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":31,"author":{"gitId":"-"},"content":" public appService: ApplicationService,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private activatedRoute: ActivatedRoute,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.logger.startSession();"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" const oauthCode \u003d this.activatedRoute.snapshot.queryParamMap.get(\u0027code\u0027);"},{"lineNumber":46,"author":{"gitId":"-"},"content":" const state \u003d this.activatedRoute.snapshot.queryParamMap.get(\u0027state\u0027);"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (this.authService.isAuthenticated()) {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.router.navigate([this.phaseService.currentPhase]);"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.initAccessTokenSubscription();"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.initAuthStateSubscription();"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.createProfileFromUrlQueryParams();"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.getRepoFromUrlQueryParams();"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (oauthCode) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // runs upon receiving oauthCode from the redirect"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // this.restoreOrgDetailsFromLocalStorage();"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.logger.info(\u0027AuthComponent: Obtained authorisation code from Github\u0027);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.fetchAccessToken(oauthCode, state);"},{"lineNumber":62,"author":{"gitId":"nknguyenhc"},"content":" return;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"nknguyenhc"},"content":" this.authService.startOAuthIfHasNext();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Will fetch the access token from GitHub."},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param oauthCode - The authorisation code obtained from GitHub."},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param state - The state returned from GitHub."},{"lineNumber":71,"author":{"gitId":"-"},"content":" */"},{"lineNumber":72,"author":{"gitId":"-"},"content":" fetchAccessToken(oauthCode: string, state: string) {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!this.authService.isReturnedStateSame(state)) {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.logger.info(`AuthComponent: Received incorrect state ${state}, continue waiting for correct state`);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.logger.info(`AuthComponent: Retrieving access token from Github`);"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" const accessTokenUrl \u003d `${AppConfig.accessTokenUrl}/${oauthCode}/client_id/${AppConfig.clientId}`;"},{"lineNumber":81,"author":{"gitId":"-"},"content":" fetch(accessTokenUrl)"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .then((res) \u003d\u003e res.json())"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .then((data) \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (data.error) {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new Error(data.error);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.authService.storeOAuthAccessToken(data.token);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.logger.info(`AuthComponent: Sucessfully obtained access token`);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" })"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .catch((err) \u003d\u003e {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.logger.info(`AuthComponent: Error in data fetched from access token URL: ${err}`);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(err);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" });"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" ngOnDestroy() {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (this.authStateSubscription) {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.authStateSubscription.unsubscribe();"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (this.accessTokenSubscription) {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.accessTokenSubscription.unsubscribe();"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Checks whether the current version of WATcher is outdated."},{"lineNumber":108,"author":{"gitId":"-"},"content":" */"},{"lineNumber":109,"author":{"gitId":"-"},"content":" checkAppIsOutdated(): Observable\u003cany\u003e {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return this.appService.isApplicationOutdated().pipe("},{"lineNumber":111,"author":{"gitId":"-"},"content":" map((isOutdated: boolean) \u003d\u003e {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (isOutdated) {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new Error(ErrorMessageService.applicationVersionOutdatedMessage());"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }"},{"lineNumber":115,"author":{"gitId":"-"},"content":" })"},{"lineNumber":116,"author":{"gitId":"-"},"content":" );"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":" updateSession(sessionEvent: string) {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.sessionInformation \u003d sessionEvent;"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" goToSessionSelect() {"},{"lineNumber":124,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }"},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":" isUserNotAuthenticated(): boolean {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.NotAuthenticated;"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }"},{"lineNumber":130,"author":{"gitId":"-"},"content":""},{"lineNumber":131,"author":{"gitId":"-"},"content":" isUserAuthenticating(): boolean {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.AwaitingAuthentication;"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" isAwaitingOAuthUserConfirm(): boolean {"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.ConfirmOAuthUser;"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" isUserAuthenticated(): boolean {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.Authenticated;"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }"},{"lineNumber":142,"author":{"gitId":"-"},"content":""},{"lineNumber":143,"author":{"gitId":"-"},"content":" isRepoSet(): boolean {"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return this.phaseService.isRepoSet();"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }"},{"lineNumber":146,"author":{"gitId":"-"},"content":""},{"lineNumber":147,"author":{"gitId":"-"},"content":" get currentSessionOrg(): string {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (!this.sessionInformation) {"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // Retrieve org details of session information from local storage"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return window.localStorage.getItem(STORAGE_KEYS.ORG);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return this.getOrgDetails(this.sessionInformation);"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }"},{"lineNumber":154,"author":{"gitId":"-"},"content":""},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Extracts the Organization Details from the input sessionInformation."},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private getOrgDetails(sessionInformation: string) {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[0];"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" private initAuthStateSubscription() {"},{"lineNumber":164,"author":{"gitId":"-"},"content":" this.authStateSubscription \u003d this.authService.currentAuthState.subscribe((state) \u003d\u003e {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.authState \u003d state;"},{"lineNumber":167,"author":{"gitId":"-"},"content":" });"},{"lineNumber":168,"author":{"gitId":"-"},"content":" });"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }"},{"lineNumber":170,"author":{"gitId":"-"},"content":""},{"lineNumber":171,"author":{"gitId":"-"},"content":" private initAccessTokenSubscription() {"},{"lineNumber":172,"author":{"gitId":"-"},"content":" this.accessTokenSubscription \u003d this.authService.accessToken"},{"lineNumber":173,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":174,"author":{"gitId":"-"},"content":" filter((token: string) \u003d\u003e !!token),"},{"lineNumber":175,"author":{"gitId":"-"},"content":" flatMap(() \u003d\u003e this.userService.getAuthenticatedUser())"},{"lineNumber":176,"author":{"gitId":"-"},"content":" )"},{"lineNumber":177,"author":{"gitId":"-"},"content":" .subscribe((user: GithubUser) \u003d\u003e {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e {"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.currentUserName \u003d user.login;"},{"lineNumber":180,"author":{"gitId":"nknguyenhc"},"content":" if (this.authService.hasNext()) {"},{"lineNumber":181,"author":{"gitId":"nknguyenhc"},"content":" this.authService.completeLoginIfHasNext(this.currentUserName);"},{"lineNumber":182,"author":{"gitId":"nknguyenhc"},"content":" } else {"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.ConfirmOAuthUser);"},{"lineNumber":184,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":185,"author":{"gitId":"-"},"content":" });"},{"lineNumber":186,"author":{"gitId":"-"},"content":" });"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }"},{"lineNumber":188,"author":{"gitId":"-"},"content":""},{"lineNumber":189,"author":{"gitId":"-"},"content":" private createProfileFromUrlQueryParams() {"},{"lineNumber":190,"author":{"gitId":"-"},"content":" const urlParams \u003d this.activatedRoute.snapshot.queryParamMap;"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (urlParams.has(\u0027session\u0027)) {"},{"lineNumber":192,"author":{"gitId":"-"},"content":" this.urlEncodedSessionName \u003d urlParams.get(\u0027session\u0027);"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }"},{"lineNumber":195,"author":{"gitId":"-"},"content":""},{"lineNumber":196,"author":{"gitId":"-"},"content":" private getRepoFromUrlQueryParams() {"},{"lineNumber":197,"author":{"gitId":"-"},"content":" const urlParams \u003d this.activatedRoute.snapshot.queryParamMap;"},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (urlParams.has(\u0027repo\u0027)) {"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.urlEncodedRepo \u003d urlParams.get(\u0027repo\u0027);"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }"},{"lineNumber":202,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":6,"-":196}},{"path":"src/app/core/guards/auth.guard.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ActivatedRouteSnapshot, CanActivate, CanLoad, Route, Router, RouterStateSnapshot, UrlSegment } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027../services/auth.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":7,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":8,"author":{"gitId":"-"},"content":"})"},{"lineNumber":9,"author":{"gitId":"-"},"content":"export class AuthGuard implements CanActivate, CanLoad {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" constructor(private auth: AuthService, private router: Router) {}"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":" canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable\u003cboolean\u003e | Promise\u003cboolean\u003e | boolean {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" if (this.auth.isAuthenticated()) {"},{"lineNumber":14,"author":{"gitId":"nknguyenhc"},"content":" this.auth.clearNext();"},{"lineNumber":15,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":17,"author":{"gitId":"nknguyenhc"},"content":" this.auth.storeNext(state);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" this.router.navigate([\u0027\u0027]);"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" canLoad(route: Route, segments: UrlSegment[]): Observable\u003cboolean\u003e | Promise\u003cboolean\u003e | boolean {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (this.auth.isAuthenticated()) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.router.navigate([\u0027\u0027]);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":2,"-":29}},{"path":"src/app/core/models/label.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":2,"author":{"gitId":"-"},"content":" * Represents a label and its attributes."},{"lineNumber":3,"author":{"gitId":"-"},"content":" */"},{"lineNumber":4,"author":{"gitId":"-"},"content":"export class Label implements SimpleLabel {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" readonly name: string;"},{"lineNumber":6,"author":{"gitId":"-"},"content":" color: string;"},{"lineNumber":7,"author":{"gitId":"-"},"content":" definition?: string;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":" constructor(label: { name: string; color: string; definition?: string }) {"},{"lineNumber":10,"author":{"gitId":"nknguyenhc"},"content":" this.name \u003d label.name;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" this.color \u003d label.color;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" this.definition \u003d label.definition;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents a simplified label with name and color"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */"},{"lineNumber":19,"author":{"gitId":"-"},"content":"export type SimpleLabel \u003d {"},{"lineNumber":20,"author":{"gitId":"nknguyenhc"},"content":" name: string;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" color: string;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"nknguyenhc":2,"-":20}},{"path":"src/app/core/services/auth.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"nknguyenhc"},"content":"import { Router, RouterStateSnapshot } from \u0027@angular/router\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { BehaviorSubject, from, Observable, of } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"nknguyenhc"},"content":"import { catchError, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { generateSessionId } from \u0027../../shared/lib/session\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { uuid } from \u0027../../shared/lib/uuid\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027./error-handling.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027./githubevent.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./issue.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027./label.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./phase.service\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./user.service\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"export enum AuthState {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u0027NotAuthenticated\u0027,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u0027AwaitingAuthentication\u0027,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u0027ConfirmOAuthUser\u0027,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u0027Authenticated\u0027"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":28,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":29,"author":{"gitId":"-"},"content":"})"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Responsible for initiating the authentication process and querying or"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * updating the application state with regards to authentication."},{"lineNumber":34,"author":{"gitId":"-"},"content":" */"},{"lineNumber":35,"author":{"gitId":"-"},"content":"export class AuthService {"},{"lineNumber":36,"author":{"gitId":"nknguyenhc"},"content":" private static readonly DEFAULT_NO_PERMISSION_TO_PRIVATE_REPOS \u003d false;"},{"lineNumber":37,"author":{"gitId":"nknguyenhc"},"content":" private static readonly SESSION_NEXT_KEY \u003d \u0027next\u0027;"},{"lineNumber":38,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" authStateSource \u003d new BehaviorSubject(AuthState.NotAuthenticated);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" currentAuthState \u003d this.authStateSource.asObservable();"},{"lineNumber":41,"author":{"gitId":"-"},"content":" accessToken \u003d new BehaviorSubject(undefined);"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private state: string;"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":" ENABLE_POPUP_MESSAGE \u003d \u0027Please enable pop-ups in your browser\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":47,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private labelService: LabelService,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private titleService: Title,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":58,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":61,"author":{"gitId":"nknguyenhc"},"content":" * Stores the data about the next route in the session storage."},{"lineNumber":62,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":63,"author":{"gitId":"nknguyenhc"},"content":" storeNext(next: RouterStateSnapshot) {"},{"lineNumber":64,"author":{"gitId":"nknguyenhc"},"content":" sessionStorage.setItem(AuthService.SESSION_NEXT_KEY, next.url);"},{"lineNumber":65,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":66,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":67,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":68,"author":{"gitId":"nknguyenhc"},"content":" * Checks if there is a next route to be redirected to after login,"},{"lineNumber":69,"author":{"gitId":"nknguyenhc"},"content":" * by checking the session storage."},{"lineNumber":70,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":71,"author":{"gitId":"nknguyenhc"},"content":" hasNext(): boolean {"},{"lineNumber":72,"author":{"gitId":"nknguyenhc"},"content":" return sessionStorage.getItem(AuthService.SESSION_NEXT_KEY) !\u003d\u003d null;"},{"lineNumber":73,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":74,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":75,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":76,"author":{"gitId":"nknguyenhc"},"content":" * Checks if there is a next route to be redirected to after login,"},{"lineNumber":77,"author":{"gitId":"nknguyenhc"},"content":" * and start OAuth process automatically if there is."},{"lineNumber":78,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":79,"author":{"gitId":"nknguyenhc"},"content":" startOAuthIfHasNext() {"},{"lineNumber":80,"author":{"gitId":"nknguyenhc"},"content":" if (this.hasNext()) {"},{"lineNumber":81,"author":{"gitId":"nknguyenhc"},"content":" this.logger.info(`AuthService: Start OAuth because there is a next route`);"},{"lineNumber":82,"author":{"gitId":"nknguyenhc"},"content":" this.startOAuthProcess(AuthService.DEFAULT_NO_PERMISSION_TO_PRIVATE_REPOS);"},{"lineNumber":83,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":84,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":85,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":86,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":87,"author":{"gitId":"nknguyenhc"},"content":" * Checks if there is a next route to be redirected to after login,"},{"lineNumber":88,"author":{"gitId":"nknguyenhc"},"content":" * and complete the login process if there is."},{"lineNumber":89,"author":{"gitId":"nknguyenhc"},"content":" * Assuming that user has authenticated on Github, and the app is awaiting confirmation."},{"lineNumber":90,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":91,"author":{"gitId":"nknguyenhc"},"content":" completeLoginIfHasNext(username: string) {"},{"lineNumber":92,"author":{"gitId":"nknguyenhc"},"content":" if (!this.hasNext()) {"},{"lineNumber":93,"author":{"gitId":"nknguyenhc"},"content":" return;"},{"lineNumber":94,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":95,"author":{"gitId":"nknguyenhc"},"content":" this.logger.info(`AuthService: Automatically complete login because there is a next route`);"},{"lineNumber":96,"author":{"gitId":"nknguyenhc"},"content":" this.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":97,"author":{"gitId":"nknguyenhc"},"content":" this.userService.createUserModel(username).subscribe("},{"lineNumber":98,"author":{"gitId":"nknguyenhc"},"content":" () \u003d\u003e {"},{"lineNumber":99,"author":{"gitId":"nknguyenhc"},"content":" this.changeAuthState(AuthState.Authenticated);"},{"lineNumber":100,"author":{"gitId":"nknguyenhc"},"content":" },"},{"lineNumber":101,"author":{"gitId":"nknguyenhc"},"content":" (err) \u003d\u003e {"},{"lineNumber":102,"author":{"gitId":"nknguyenhc"},"content":" this.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":103,"author":{"gitId":"nknguyenhc"},"content":" this.errorHandlingService.handleError(err);"},{"lineNumber":104,"author":{"gitId":"nknguyenhc"},"content":" this.logger.info(`AuthService: Automatic completion of login failed with an error: ${err}`);"},{"lineNumber":105,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":106,"author":{"gitId":"nknguyenhc"},"content":" );"},{"lineNumber":107,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":108,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":109,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":110,"author":{"gitId":"nknguyenhc"},"content":" * Clears the next route from the session storage."},{"lineNumber":111,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":112,"author":{"gitId":"nknguyenhc"},"content":" clearNext() {"},{"lineNumber":113,"author":{"gitId":"nknguyenhc"},"content":" sessionStorage.removeItem(AuthService.SESSION_NEXT_KEY);"},{"lineNumber":114,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":115,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":116,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":117,"author":{"gitId":"nknguyenhc"},"content":" * Redirect to the URL indicating the next route."},{"lineNumber":118,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":119,"author":{"gitId":"nknguyenhc"},"content":" redirectToNext() {"},{"lineNumber":120,"author":{"gitId":"nknguyenhc"},"content":" const next \u003d sessionStorage.getItem(AuthService.SESSION_NEXT_KEY);"},{"lineNumber":121,"author":{"gitId":"nknguyenhc"},"content":" this.phaseService"},{"lineNumber":122,"author":{"gitId":"nknguyenhc"},"content":" .setupFromUrl(next)"},{"lineNumber":123,"author":{"gitId":"nknguyenhc"},"content":" .pipe("},{"lineNumber":124,"author":{"gitId":"nknguyenhc"},"content":" mergeMap(() \u003d\u003e this.setRepo()),"},{"lineNumber":125,"author":{"gitId":"nknguyenhc"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":126,"author":{"gitId":"nknguyenhc"},"content":" this.logger.info(`AuthService: Failed to redirect to next URL with error: ${err}`);"},{"lineNumber":127,"author":{"gitId":"nknguyenhc"},"content":" this.errorHandlingService.handleError(err);"},{"lineNumber":128,"author":{"gitId":"nknguyenhc"},"content":" this.clearNext();"},{"lineNumber":129,"author":{"gitId":"nknguyenhc"},"content":" return of(false);"},{"lineNumber":130,"author":{"gitId":"nknguyenhc"},"content":" })"},{"lineNumber":131,"author":{"gitId":"nknguyenhc"},"content":" )"},{"lineNumber":132,"author":{"gitId":"nknguyenhc"},"content":" .subscribe((isSetupSuccesssful) \u003d\u003e {"},{"lineNumber":133,"author":{"gitId":"nknguyenhc"},"content":" if (isSetupSuccesssful) {"},{"lineNumber":134,"author":{"gitId":"nknguyenhc"},"content":" this.router.navigateByUrl(next);"},{"lineNumber":135,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":136,"author":{"gitId":"nknguyenhc"},"content":" });"},{"lineNumber":137,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":138,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Will store the OAuth token."},{"lineNumber":141,"author":{"gitId":"-"},"content":" */"},{"lineNumber":142,"author":{"gitId":"-"},"content":" storeOAuthAccessToken(token: string) {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" this.githubService.storeOAuthAccessToken(token);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" this.accessToken.next(token);"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }"},{"lineNumber":146,"author":{"gitId":"-"},"content":""},{"lineNumber":147,"author":{"gitId":"-"},"content":" reset(): void {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" this.logger.info(\u0027AuthService: Clearing access token and setting AuthState to NotAuthenticated.\u0027);"},{"lineNumber":149,"author":{"gitId":"-"},"content":" this.accessToken.next(undefined);"},{"lineNumber":150,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e this.router.navigate([\u0027\u0027]));"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }"},{"lineNumber":153,"author":{"gitId":"-"},"content":""},{"lineNumber":154,"author":{"gitId":"-"},"content":" logOut(): void {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":156,"author":{"gitId":"-"},"content":" this.userService.reset();"},{"lineNumber":157,"author":{"gitId":"-"},"content":" this.issueService.reset(true);"},{"lineNumber":158,"author":{"gitId":"-"},"content":" this.labelService.reset();"},{"lineNumber":159,"author":{"gitId":"-"},"content":" this.phaseService.reset();"},{"lineNumber":160,"author":{"gitId":"-"},"content":" this.githubEventService.reset();"},{"lineNumber":161,"author":{"gitId":"-"},"content":" this.logger.reset();"},{"lineNumber":162,"author":{"gitId":"-"},"content":" this.setLandingPageTitle();"},{"lineNumber":163,"author":{"gitId":"-"},"content":" this.issueService.setIssueTeamFilter(\u0027All Teams\u0027);"},{"lineNumber":164,"author":{"gitId":"-"},"content":" this.reset();"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }"},{"lineNumber":166,"author":{"gitId":"-"},"content":""},{"lineNumber":167,"author":{"gitId":"-"},"content":" setTitleWithPhaseDetail(): void {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../package.json\u0027);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version} - ${this.phaseService.getCurrentRepositoryURL()}`;"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.logger.info(`AuthService: Setting Title as ${title}`);"},{"lineNumber":171,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":" setLandingPageTitle(): void {"},{"lineNumber":175,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../package.json\u0027);"},{"lineNumber":176,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version}`;"},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.logger.info(`AuthService: Setting Title as ${title}`);"},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }"},{"lineNumber":180,"author":{"gitId":"-"},"content":""},{"lineNumber":181,"author":{"gitId":"-"},"content":" isAuthenticated(): boolean {"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return this.authStateSource.getValue() \u003d\u003d\u003d AuthState.Authenticated;"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }"},{"lineNumber":184,"author":{"gitId":"-"},"content":""},{"lineNumber":185,"author":{"gitId":"-"},"content":" changeAuthState(newAuthState: AuthState) {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (newAuthState \u003d\u003d\u003d AuthState.Authenticated) {"},{"lineNumber":187,"author":{"gitId":"-"},"content":" const sessionId \u003d generateSessionId();"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.issueService.setSessionId(sessionId);"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.logger.info(`AuthService: Successfully authenticated with session: ${sessionId}`);"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.authStateSource.next(newAuthState);"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }"},{"lineNumber":193,"author":{"gitId":"-"},"content":""},{"lineNumber":194,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":195,"author":{"gitId":"-"},"content":" * Generates and assigns an unguessable random \u0027state\u0027 string to pass to Github for protection against cross-site request forgery attacks"},{"lineNumber":196,"author":{"gitId":"-"},"content":" */"},{"lineNumber":197,"author":{"gitId":"-"},"content":" generateStateString() {"},{"lineNumber":198,"author":{"gitId":"-"},"content":" this.state \u003d uuid();"},{"lineNumber":199,"author":{"gitId":"-"},"content":" sessionStorage.setItem(\u0027state\u0027, this.state);"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }"},{"lineNumber":201,"author":{"gitId":"-"},"content":""},{"lineNumber":202,"author":{"gitId":"-"},"content":" isReturnedStateSame(returnedState: string): boolean {"},{"lineNumber":203,"author":{"gitId":"-"},"content":" const state \u003d sessionStorage.getItem(\u0027state\u0027);"},{"lineNumber":204,"author":{"gitId":"-"},"content":" return returnedState \u003d\u003d\u003d state;"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }"},{"lineNumber":206,"author":{"gitId":"-"},"content":""},{"lineNumber":207,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Will start the Github OAuth web flow process."},{"lineNumber":209,"author":{"gitId":"-"},"content":" */"},{"lineNumber":210,"author":{"gitId":"-"},"content":" startOAuthProcess(hasPrivateConsent: boolean) {"},{"lineNumber":211,"author":{"gitId":"-"},"content":" this.logger.info(\u0027AuthService: Starting authentication\u0027);"},{"lineNumber":212,"author":{"gitId":"-"},"content":" // Available OAuth scopes https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes"},{"lineNumber":213,"author":{"gitId":"-"},"content":" let permissionLevel \u003d \u0027public-repo\u0027;"},{"lineNumber":214,"author":{"gitId":"-"},"content":""},{"lineNumber":215,"author":{"gitId":"-"},"content":" if (hasPrivateConsent) {"},{"lineNumber":216,"author":{"gitId":"-"},"content":" // grants WATcher access to private repos if user allows"},{"lineNumber":217,"author":{"gitId":"-"},"content":" permissionLevel \u003d \u0027repo\u0027;"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }"},{"lineNumber":219,"author":{"gitId":"-"},"content":""},{"lineNumber":220,"author":{"gitId":"-"},"content":" const githubRepoPermission \u003d permissionLevel; // don\u0027t allow changes after logging ins"},{"lineNumber":221,"author":{"gitId":"-"},"content":""},{"lineNumber":222,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":223,"author":{"gitId":"-"},"content":""},{"lineNumber":224,"author":{"gitId":"-"},"content":" this.generateStateString();"},{"lineNumber":225,"author":{"gitId":"-"},"content":" this.redirectToOAuthPage("},{"lineNumber":226,"author":{"gitId":"-"},"content":" encodeURI("},{"lineNumber":227,"author":{"gitId":"-"},"content":" `${AppConfig.githubUrl}/login/oauth/authorize?client_id\u003d${AppConfig.clientId}\u0026scope\u003d${githubRepoPermission},read:user\u0026state\u003d${this.state}`"},{"lineNumber":228,"author":{"gitId":"-"},"content":" )"},{"lineNumber":229,"author":{"gitId":"-"},"content":" );"},{"lineNumber":230,"author":{"gitId":"-"},"content":" this.logger.info(`AuthService: Redirecting for Github authentication`);"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }"},{"lineNumber":232,"author":{"gitId":"-"},"content":""},{"lineNumber":233,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Handles the clean up required after authentication and setting up of repository is completed."},{"lineNumber":235,"author":{"gitId":"-"},"content":" */"},{"lineNumber":236,"author":{"gitId":"nknguyenhc"},"content":" handleSetRepoSuccess(repoName: string) {"},{"lineNumber":237,"author":{"gitId":"-"},"content":" this.setTitleWithPhaseDetail();"},{"lineNumber":238,"author":{"gitId":"nknguyenhc"},"content":" this.router.navigate([Phase.issuesViewer], {"},{"lineNumber":239,"author":{"gitId":"nknguyenhc"},"content":" queryParams: {"},{"lineNumber":240,"author":{"gitId":"nknguyenhc"},"content":" [PhaseService.REPO_QUERY_PARAM_KEY]: repoName"},{"lineNumber":241,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":242,"author":{"gitId":"nknguyenhc"},"content":" });"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }"},{"lineNumber":244,"author":{"gitId":"-"},"content":""},{"lineNumber":245,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":246,"author":{"gitId":"-"},"content":" * Setup repository after authentication."},{"lineNumber":247,"author":{"gitId":"-"},"content":" */"},{"lineNumber":248,"author":{"gitId":"-"},"content":" setRepo(): Observable\u003cboolean\u003e {"},{"lineNumber":249,"author":{"gitId":"-"},"content":" return from(this.phaseService.initializeCurrentRepository()).pipe("},{"lineNumber":250,"author":{"gitId":"-"},"content":" map(() \u003d\u003e {"},{"lineNumber":251,"author":{"gitId":"-"},"content":" if (!this.phaseService.currentRepo) {"},{"lineNumber":252,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }"},{"lineNumber":254,"author":{"gitId":"-"},"content":" this.githubEventService.setLatestChangeEvent();"},{"lineNumber":255,"author":{"gitId":"nknguyenhc"},"content":" this.handleSetRepoSuccess(this.phaseService.currentRepo.toString());"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":258,"author":{"gitId":"-"},"content":" catchError((error) \u003d\u003e {"},{"lineNumber":259,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":260,"author":{"gitId":"nknguyenhc"},"content":" this.clearNext();"},{"lineNumber":261,"author":{"gitId":"-"},"content":" return of(false);"},{"lineNumber":262,"author":{"gitId":"-"},"content":" })"},{"lineNumber":263,"author":{"gitId":"-"},"content":" );"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }"},{"lineNumber":265,"author":{"gitId":"-"},"content":""},{"lineNumber":266,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":267,"author":{"gitId":"-"},"content":" * Will redirect to GitHub OAuth page"},{"lineNumber":268,"author":{"gitId":"-"},"content":" */"},{"lineNumber":269,"author":{"gitId":"-"},"content":" private redirectToOAuthPage(url: string): void {"},{"lineNumber":270,"author":{"gitId":"-"},"content":" if (url \u003d\u003d null) {"},{"lineNumber":271,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }"},{"lineNumber":273,"author":{"gitId":"-"},"content":" window.location.href \u003d url;"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":92,"-":183}},{"path":"src/app/core/services/error-message.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":4,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":5,"author":{"gitId":"-"},"content":"})"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Contains all error message prompts to user."},{"lineNumber":9,"author":{"gitId":"-"},"content":" */"},{"lineNumber":10,"author":{"gitId":"-"},"content":"export class ErrorMessageService {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static repositoryNotPresentMessage() {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" return \u0027Invalid repository name. Please provide Github repository URL or the repository name in the format Org/Repository Name.\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"nknguyenhc"},"content":" public static invalidUrlMessage() {"},{"lineNumber":16,"author":{"gitId":"nknguyenhc"},"content":" return \u0027URL is invalid, or repository does not exist, please indicate the repository you wish to view to continue.\u0027;"},{"lineNumber":17,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":18,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static unableToFetchIssuesMessage() {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch issue.\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static unableToFetchMilestoneMessage() {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch milestones.\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static unableToFetchLabelsMessage() {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch labels.\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static usersUnassignableMessage(assignee: string) {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return `Cannot assign ${assignee} to the issue. Please check if ${assignee} is authorized.`;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static unableToFetchUsersMessage() {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch assignable users for repository\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static unableToFetchEventsMessage() {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch issue events for repository\u0027;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static unableToFetchActivityEventsMessage() {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch activity events for repository\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static unableToFetchDataFileMessage() {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch data file.\u0027;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static unableToFetchLatestReleaseMessage() {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch latest release.\u0027;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static unableToFetchSettingsFileMessage() {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch settings file.\u0027;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static unableToFetchAuthenticatedUsersMessage() {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch authenticated user.\u0027;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static unableToOpenInBrowserMessage() {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return \u0027Unable to open this issue in Browser\u0027;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static applicationVersionOutdatedMessage() {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return \u0027Please update to the latest version of WATcher.\u0027;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static multipleDropdownOptionsErrorMessage() {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return \u0027Supply either Dropdown option number or text, not both.\u0027;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static noDropdownOptionsErrorMessage() {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return \u0027No Dropdown identification parameters supplied.\u0027;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":4,"-":74}},{"path":"src/app/core/services/filters.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Arif-Khalid"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Arif-Khalid"},"content":"import { BehaviorSubject, pipe } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"Arif-Khalid"},"content":"import { DEFAULT_DROPDOWN_FILTER, DropdownFilter } from \u0027../../shared/issue-tables/dropdownfilter\u0027;"},{"lineNumber":4,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":5,"author":{"gitId":"Arif-Khalid"},"content":"@Injectable({"},{"lineNumber":6,"author":{"gitId":"Arif-Khalid"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":7,"author":{"gitId":"Arif-Khalid"},"content":"})"},{"lineNumber":8,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":9,"author":{"gitId":"Arif-Khalid"},"content":"/**"},{"lineNumber":10,"author":{"gitId":"Arif-Khalid"},"content":" * Responsible for centralising filters"},{"lineNumber":11,"author":{"gitId":"Arif-Khalid"},"content":" * Filters are subscribed to and emitted from this service"},{"lineNumber":12,"author":{"gitId":"Arif-Khalid"},"content":" */"},{"lineNumber":13,"author":{"gitId":"Arif-Khalid"},"content":"export class FiltersService {"},{"lineNumber":14,"author":{"gitId":"Arif-Khalid"},"content":" public dropdownFilter$ \u003d new BehaviorSubject\u003cDropdownFilter\u003e(DEFAULT_DROPDOWN_FILTER);"},{"lineNumber":15,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":16,"author":{"gitId":"Arif-Khalid"},"content":" private _validateFilter \u003d pipe(this.updateStatusPairing, this.updateTypePairing);"},{"lineNumber":17,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":18,"author":{"gitId":"Arif-Khalid"},"content":" clearFilters(): void {"},{"lineNumber":19,"author":{"gitId":"Arif-Khalid"},"content":" this.dropdownFilter$.next(DEFAULT_DROPDOWN_FILTER);"},{"lineNumber":20,"author":{"gitId":"Arif-Khalid"},"content":" }"},{"lineNumber":21,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":22,"author":{"gitId":"Arif-Khalid"},"content":" updateFilters(newFilters: Partial\u003cDropdownFilter\u003e): void {"},{"lineNumber":23,"author":{"gitId":"Arif-Khalid"},"content":" let nextDropdownFilter: DropdownFilter \u003d {"},{"lineNumber":24,"author":{"gitId":"Arif-Khalid"},"content":" ...this.dropdownFilter$.value,"},{"lineNumber":25,"author":{"gitId":"Arif-Khalid"},"content":" ...newFilters"},{"lineNumber":26,"author":{"gitId":"Arif-Khalid"},"content":" };"},{"lineNumber":27,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":28,"author":{"gitId":"Arif-Khalid"},"content":" nextDropdownFilter \u003d this._validateFilter(nextDropdownFilter);"},{"lineNumber":29,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":30,"author":{"gitId":"Arif-Khalid"},"content":" this.dropdownFilter$.next(nextDropdownFilter);"},{"lineNumber":31,"author":{"gitId":"Arif-Khalid"},"content":" }"},{"lineNumber":32,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":33,"author":{"gitId":"Arif-Khalid"},"content":" /**"},{"lineNumber":34,"author":{"gitId":"Arif-Khalid"},"content":" * Changes type to a valid, default value when an incompatible combination of type and status is encountered."},{"lineNumber":35,"author":{"gitId":"Arif-Khalid"},"content":" */"},{"lineNumber":36,"author":{"gitId":"Arif-Khalid"},"content":" updateTypePairing(dropdownFilter: DropdownFilter): DropdownFilter {"},{"lineNumber":37,"author":{"gitId":"Arif-Khalid"},"content":" if (dropdownFilter.status \u003d\u003d\u003d \u0027merged\u0027) {"},{"lineNumber":38,"author":{"gitId":"Arif-Khalid"},"content":" dropdownFilter.type \u003d \u0027pullrequest\u0027;"},{"lineNumber":39,"author":{"gitId":"Arif-Khalid"},"content":" }"},{"lineNumber":40,"author":{"gitId":"Arif-Khalid"},"content":" return dropdownFilter;"},{"lineNumber":41,"author":{"gitId":"Arif-Khalid"},"content":" }"},{"lineNumber":42,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":43,"author":{"gitId":"Arif-Khalid"},"content":" /**"},{"lineNumber":44,"author":{"gitId":"Arif-Khalid"},"content":" * Changes status to a valid, default value when an incompatible combination of type and status is encountered."},{"lineNumber":45,"author":{"gitId":"Arif-Khalid"},"content":" */"},{"lineNumber":46,"author":{"gitId":"Arif-Khalid"},"content":" updateStatusPairing(dropdownFilter: DropdownFilter): DropdownFilter {"},{"lineNumber":47,"author":{"gitId":"Arif-Khalid"},"content":" if (dropdownFilter.status \u003d\u003d\u003d \u0027merged\u0027 \u0026\u0026 dropdownFilter.type \u003d\u003d\u003d \u0027issue\u0027) {"},{"lineNumber":48,"author":{"gitId":"Arif-Khalid"},"content":" dropdownFilter.status \u003d \u0027all\u0027;"},{"lineNumber":49,"author":{"gitId":"Arif-Khalid"},"content":" }"},{"lineNumber":50,"author":{"gitId":"Arif-Khalid"},"content":" return dropdownFilter;"},{"lineNumber":51,"author":{"gitId":"Arif-Khalid"},"content":" }"},{"lineNumber":52,"author":{"gitId":"Arif-Khalid"},"content":"}"}],"authorContributionMap":{"Arif-Khalid":52}},{"path":"src/app/core/services/phase.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"nknguyenhc"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"nknguyenhc"},"content":"import { BehaviorSubject, Observable, of, Subject } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"nknguyenhc"},"content":"import { map } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { STORAGE_KEYS } from \u0027../constants/storage-keys.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Repo } from \u0027../models/repo.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { SessionData } from \u0027../models/session.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ErrorMessageService } from \u0027./error-message.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { RepoUrlCacheService } from \u0027./repo-url-cache.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"export const SESSION_AVALIABILITY_FIX_FAILED \u003d \u0027Session Availability Fix failed.\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The title of each phase that appears in the header bar."},{"lineNumber":18,"author":{"gitId":"-"},"content":" */"},{"lineNumber":19,"author":{"gitId":"-"},"content":"export const PhaseDescription \u003d {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" [Phase.issuesViewer]: \u0027Issues Dashboard\u0027,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" [Phase.activityDashboard]: \u0027Activity Dashboard\u0027"},{"lineNumber":22,"author":{"gitId":"-"},"content":"};"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * All data of the session."},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Add accessible phases here."},{"lineNumber":27,"author":{"gitId":"-"},"content":" */"},{"lineNumber":28,"author":{"gitId":"-"},"content":"export const STARTING_SESSION_DATA: SessionData \u003d {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sessionRepo: ["},{"lineNumber":30,"author":{"gitId":"-"},"content":" { phase: Phase.issuesViewer, repos: [] }"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // { phase: Phase.activityDashboard, repos: [] }"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":33,"author":{"gitId":"-"},"content":"};"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"export const STARTING_PHASE \u003d Phase.issuesViewer;"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":38,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":39,"author":{"gitId":"-"},"content":"})"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Responsible for managing the current selected feature of WATcher as well as the"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * current session data and repository details related to the session."},{"lineNumber":44,"author":{"gitId":"-"},"content":" *"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * A phase is terminology from CATcher, in WATcher it refers to a feature of WATcher."},{"lineNumber":46,"author":{"gitId":"-"},"content":" */"},{"lineNumber":47,"author":{"gitId":"-"},"content":"export class PhaseService {"},{"lineNumber":48,"author":{"gitId":"nknguyenhc"},"content":" public static readonly REPO_QUERY_PARAM_KEY \u003d \u0027repo\u0027;"},{"lineNumber":49,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" public currentPhase: Phase \u003d STARTING_PHASE;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public currentRepo: Repo; // current or main repository of current phase"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public otherRepos: Repo[]; // more repositories relevant to this phase"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" repoSetSource \u003d new BehaviorSubject(false);"},{"lineNumber":55,"author":{"gitId":"-"},"content":" repoSetState \u003d this.repoSetSource.asObservable();"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Expose an observable to track changes to currentRepo"},{"lineNumber":59,"author":{"gitId":"-"},"content":" *"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * TODO - replace all references to currentRepo to have"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * dependencies subscribe to this observable?"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public repoChanged$: Subject\u003cRepo | null\u003e \u003d new Subject();"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" /** Whether the PhaseService is changing the repository */"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public isChangingRepo \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" public sessionData \u003d STARTING_SESSION_DATA; // stores session data for the session"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"nknguyenhc"},"content":" constructor("},{"lineNumber":71,"author":{"gitId":"nknguyenhc"},"content":" private githubService: GithubService,"},{"lineNumber":72,"author":{"gitId":"nknguyenhc"},"content":" private repoUrlCacheService: RepoUrlCacheService,"},{"lineNumber":73,"author":{"gitId":"nknguyenhc"},"content":" public logger: LoggingService,"},{"lineNumber":74,"author":{"gitId":"nknguyenhc"},"content":" private router: Router"},{"lineNumber":75,"author":{"gitId":"nknguyenhc"},"content":" ) {}"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Sets the current main repository and additional repos if any."},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Updates session data in Phase Service and local storage."},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Updates Github Service with current repository."},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param repo Main current repository"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * @param repos Additional repositories"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */"},{"lineNumber":84,"author":{"gitId":"-"},"content":" setRepository(repo: Repo, repos?: Repo[]): void {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.currentRepo \u003d repo;"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.otherRepos \u003d repos ? repos : [];"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.sessionData.sessionRepo.find((x) \u003d\u003e x.phase \u003d\u003d\u003d this.currentPhase).repos \u003d this.getRepository();"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.githubService.storePhaseDetails(this.currentRepo.owner, this.currentRepo.name);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" localStorage.setItem(\u0027sessionData\u0027, JSON.stringify(this.sessionData));"},{"lineNumber":90,"author":{"gitId":"nknguyenhc"},"content":" this.router.navigate([\u0027issuesViewer\u0027], {"},{"lineNumber":91,"author":{"gitId":"nknguyenhc"},"content":" queryParams: {"},{"lineNumber":92,"author":{"gitId":"nknguyenhc"},"content":" [PhaseService.REPO_QUERY_PARAM_KEY]: repo.toString()"},{"lineNumber":93,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":94,"author":{"gitId":"nknguyenhc"},"content":" });"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Changes current respository to a new repository."},{"lineNumber":99,"author":{"gitId":"-"},"content":" * @param repo New current repository"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private changeCurrentRepository(repo: Repo): void {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.logger.info(`PhaseService: Changing current repository to \u0027${repo}\u0027`);"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (this.currentPhase \u003d\u003d\u003d Phase.issuesViewer) {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /** Adds past repositories to phase */"},{"lineNumber":106,"author":{"gitId":"-"},"content":" (this.otherRepos || []).push(this.currentRepo);"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }"},{"lineNumber":108,"author":{"gitId":"-"},"content":" this.setRepository(repo, this.otherRepos);"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.repoUrlCacheService.cache(repo.toString());"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.repoChanged$.next(repo);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Change repository if a valid repository is provided"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @param repo New repository"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */"},{"lineNumber":119,"author":{"gitId":"-"},"content":" async changeRepositoryIfValid(repo: Repo) {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.isChangingRepo.next(true);"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":" const isValidRepository \u003d await this.githubService.isRepositoryPresent(repo.owner, repo.name).toPromise();"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!isValidRepository) {"},{"lineNumber":124,"author":{"gitId":"-"},"content":" this.isChangingRepo.next(false);"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new Error(ErrorMessageService.repositoryNotPresentMessage());"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":" this.changeCurrentRepository(repo);"},{"lineNumber":129,"author":{"gitId":"-"},"content":" this.isChangingRepo.next(false);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }"},{"lineNumber":131,"author":{"gitId":"-"},"content":""},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Returns the full repository array of the current feature."},{"lineNumber":134,"author":{"gitId":"-"},"content":" */"},{"lineNumber":135,"author":{"gitId":"-"},"content":" getRepository(): Repo[] {"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return [this.currentRepo].concat(this.otherRepos);"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Retrieves the repository url from local storage and sets to current repository."},{"lineNumber":141,"author":{"gitId":"-"},"content":" */"},{"lineNumber":142,"author":{"gitId":"-"},"content":" async initializeCurrentRepository() {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" const org \u003d window.localStorage.getItem(STORAGE_KEYS.ORG);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" const repoName \u003d window.localStorage.getItem(STORAGE_KEYS.DATA_REPO);"},{"lineNumber":145,"author":{"gitId":"-"},"content":" this.logger.info(`PhaseService: received initial org (${org}) and initial name (${repoName})`);"},{"lineNumber":146,"author":{"gitId":"-"},"content":" let repo: Repo;"},{"lineNumber":147,"author":{"gitId":"-"},"content":" if (!org || !repoName) {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" repo \u003d Repo.ofEmptyRepo();"},{"lineNumber":149,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" repo \u003d new Repo(org, repoName);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":" const isValidRepository \u003d await this.githubService.isRepositoryPresent(repo.owner, repo.name).toPromise();"},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!isValidRepository) {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new Error(ErrorMessageService.repositoryNotPresentMessage());"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }"},{"lineNumber":156,"author":{"gitId":"-"},"content":" this.logger.info(`PhaseService: Repo is ${repo}`);"},{"lineNumber":157,"author":{"gitId":"-"},"content":" this.setRepository(repo);"},{"lineNumber":158,"author":{"gitId":"-"},"content":" this.repoSetSource.next(true);"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }"},{"lineNumber":160,"author":{"gitId":"-"},"content":""},{"lineNumber":161,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":162,"author":{"gitId":"nknguyenhc"},"content":" * Set items in the local storage corresponding to the next URL."},{"lineNumber":163,"author":{"gitId":"nknguyenhc"},"content":" * This includes checking if the phase is valid, and if the repo is of the correct format."},{"lineNumber":164,"author":{"gitId":"nknguyenhc"},"content":" * @param url The partial URL without the host, e.g. `/issuesViewer?repo\u003dCATcher%2FWATcher."},{"lineNumber":165,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":166,"author":{"gitId":"nknguyenhc"},"content":" setupFromUrl(url: string): Observable\u003cvoid\u003e {"},{"lineNumber":167,"author":{"gitId":"nknguyenhc"},"content":" return of(this.getPhaseAndRepoFromUrl(url)).pipe("},{"lineNumber":168,"author":{"gitId":"nknguyenhc"},"content":" map(([phaseName, repoName]) \u003d\u003e {"},{"lineNumber":169,"author":{"gitId":"nknguyenhc"},"content":" if (!this.isPhaseAllowed(phaseName)) {"},{"lineNumber":170,"author":{"gitId":"nknguyenhc"},"content":" throw new Error(ErrorMessageService.invalidUrlMessage());"},{"lineNumber":171,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":172,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":173,"author":{"gitId":"nknguyenhc"},"content":" if (repoName \u003d\u003d\u003d null) {"},{"lineNumber":174,"author":{"gitId":"nknguyenhc"},"content":" throw new Error(ErrorMessageService.invalidUrlMessage());"},{"lineNumber":175,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":176,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":177,"author":{"gitId":"nknguyenhc"},"content":" const newRepo \u003d Repo.of(repoName);"},{"lineNumber":178,"author":{"gitId":"nknguyenhc"},"content":" if (newRepo) {"},{"lineNumber":179,"author":{"gitId":"nknguyenhc"},"content":" window.localStorage.setItem(STORAGE_KEYS.ORG, newRepo.owner);"},{"lineNumber":180,"author":{"gitId":"nknguyenhc"},"content":" window.localStorage.setItem(STORAGE_KEYS.DATA_REPO, newRepo.name);"},{"lineNumber":181,"author":{"gitId":"nknguyenhc"},"content":" this.repoUrlCacheService.cache(newRepo.toString());"},{"lineNumber":182,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":183,"author":{"gitId":"nknguyenhc"},"content":" })"},{"lineNumber":184,"author":{"gitId":"nknguyenhc"},"content":" );"},{"lineNumber":185,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":186,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":187,"author":{"gitId":"nknguyenhc"},"content":" getPhaseAndRepoFromUrl(url: string): [string, string] {"},{"lineNumber":188,"author":{"gitId":"nknguyenhc"},"content":" const urlObject \u003d new URL(`${location.protocol}//${location.host}${url}`);"},{"lineNumber":189,"author":{"gitId":"nknguyenhc"},"content":" const pathname \u003d urlObject.pathname;"},{"lineNumber":190,"author":{"gitId":"nknguyenhc"},"content":" const reponame \u003d urlObject.searchParams.get(PhaseService.REPO_QUERY_PARAM_KEY);"},{"lineNumber":191,"author":{"gitId":"nknguyenhc"},"content":" return [pathname, reponame];"},{"lineNumber":192,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":193,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":194,"author":{"gitId":"nknguyenhc"},"content":" isPhaseAllowed(phaseName: string) {"},{"lineNumber":195,"author":{"gitId":"nknguyenhc"},"content":" return phaseName \u003d\u003d\u003d \u0027/\u0027 + Phase.issuesViewer;"},{"lineNumber":196,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":197,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":198,"author":{"gitId":"-"},"content":" isRepoSet(): boolean {"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return this.repoSetSource.getValue();"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }"},{"lineNumber":201,"author":{"gitId":"-"},"content":""},{"lineNumber":202,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":203,"author":{"gitId":"-"},"content":" * Changes phase and updates Phase Service\u0027s properties."},{"lineNumber":204,"author":{"gitId":"-"},"content":" * @param phase New phase"},{"lineNumber":205,"author":{"gitId":"-"},"content":" */"},{"lineNumber":206,"author":{"gitId":"-"},"content":" changePhase(phase: Phase) {"},{"lineNumber":207,"author":{"gitId":"-"},"content":" this.currentPhase \u003d phase;"},{"lineNumber":208,"author":{"gitId":"-"},"content":""},{"lineNumber":209,"author":{"gitId":"-"},"content":" // For now, assumes repository stays the same"},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.githubService.storePhaseDetails(this.currentRepo.owner, this.currentRepo.name);"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }"},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":" public getCurrentRepositoryURL() {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return this.currentRepo.owner.concat(\u0027/\u0027).concat(this.currentRepo.name);"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }"},{"lineNumber":216,"author":{"gitId":"-"},"content":""},{"lineNumber":217,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.currentPhase \u003d STARTING_PHASE;"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":53,"-":167}},{"path":"src/app/issues-viewer/card-view/card-view.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"nknguyenhc"},"content":"import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { FilterableComponent, FilterableSource } from \u0027../../shared/issue-tables/filterableTypes\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { IssuesDataTable } from \u0027../../shared/issue-tables/IssuesDataTable\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" selector: \u0027app-card-view\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" templateUrl: \u0027./card-view.component.html\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./card-view.component.css\u0027]"},{"lineNumber":15,"author":{"gitId":"-"},"content":"})"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Displays issues as Cards."},{"lineNumber":19,"author":{"gitId":"-"},"content":" */"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export class CardViewComponent implements OnInit, AfterViewInit, OnDestroy, FilterableComponent {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Input() headers: string[];"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Input() assignee?: GithubUser \u003d undefined;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Input() filters?: any \u003d undefined;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Input() sort?: MatSort \u003d undefined;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" issues: IssuesDataTable;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" issues$: Observable\u003cIssue[]\u003e;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"Arif-Khalid"},"content":" isLoading \u003d true;"},{"lineNumber":32,"author":{"gitId":"Arif-Khalid"},"content":" issueLength \u003d 0;"},{"lineNumber":33,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":34,"author":{"gitId":"nknguyenhc"},"content":" @Output() issueLengthChange: EventEmitter\u003cNumber\u003e \u003d new EventEmitter\u003cNumber\u003e();"},{"lineNumber":35,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":36,"author":{"gitId":"Arif-Khalid"},"content":" constructor(public element: ElementRef, public issueService: IssueService) {}"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.issues \u003d new IssuesDataTable(this.issueService, this.sort, this.paginator, this.headers, this.assignee, this.filters);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.issues.loadIssues();"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.issues$ \u003d this.issues.connect();"},{"lineNumber":46,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":47,"author":{"gitId":"Arif-Khalid"},"content":" // Emit event when issues change"},{"lineNumber":48,"author":{"gitId":"Arif-Khalid"},"content":" this.issues$.subscribe((issues) \u003d\u003e {"},{"lineNumber":49,"author":{"gitId":"Arif-Khalid"},"content":" this.issueLength \u003d issues.length;"},{"lineNumber":50,"author":{"gitId":"nknguyenhc"},"content":" this.issueLengthChange.emit(this.issueLength);"},{"lineNumber":51,"author":{"gitId":"Arif-Khalid"},"content":" });"},{"lineNumber":52,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":53,"author":{"gitId":"Arif-Khalid"},"content":" // Emit event when loading state changes"},{"lineNumber":54,"author":{"gitId":"Arif-Khalid"},"content":" this.issues.isLoading$.subscribe((isLoadingUpdate) \u003d\u003e {"},{"lineNumber":55,"author":{"gitId":"Arif-Khalid"},"content":" this.isLoading \u003d isLoadingUpdate;"},{"lineNumber":56,"author":{"gitId":"Arif-Khalid"},"content":" });"},{"lineNumber":57,"author":{"gitId":"-"},"content":" });"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.issues.disconnect();"},{"lineNumber":63,"author":{"gitId":"-"},"content":" });"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" retrieveFilterable(): FilterableSource {"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this.issues;"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":4,"Arif-Khalid":14,"-":51}},{"path":"src/app/issues-viewer/hidden-users/hidden-users.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"nknguyenhc"},"content":".hidden-users {"},{"lineNumber":2,"author":{"gitId":"nknguyenhc"},"content":" margin: 8px;"},{"lineNumber":3,"author":{"gitId":"nknguyenhc"},"content":" min-width: 150px;"},{"lineNumber":4,"author":{"gitId":"nknguyenhc"},"content":" max-width: 300px;"},{"lineNumber":5,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":6,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":7,"author":{"gitId":"nknguyenhc"},"content":".row-count {"},{"lineNumber":8,"author":{"gitId":"nknguyenhc"},"content":" background-color: rgb(222, 222, 222);"},{"lineNumber":9,"author":{"gitId":"nknguyenhc"},"content":" border-radius: 3px;"},{"lineNumber":10,"author":{"gitId":"nknguyenhc"},"content":" cursor: default;"},{"lineNumber":11,"author":{"gitId":"nknguyenhc"},"content":" padding: 6px;"},{"lineNumber":12,"author":{"gitId":"nknguyenhc"},"content":" color: rgb(0, 0, 0);"},{"lineNumber":13,"author":{"gitId":"nknguyenhc"},"content":" font-weight: 410;"},{"lineNumber":14,"author":{"gitId":"nknguyenhc"},"content":" display: inline-flex;"},{"lineNumber":15,"author":{"gitId":"nknguyenhc"},"content":" font-size: 14px;"},{"lineNumber":16,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":17,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":18,"author":{"gitId":"nknguyenhc"},"content":".mat-card-header {"},{"lineNumber":19,"author":{"gitId":"nknguyenhc"},"content":" display: flex;"},{"lineNumber":20,"author":{"gitId":"nknguyenhc"},"content":" flex-direction: row;"},{"lineNumber":21,"author":{"gitId":"nknguyenhc"},"content":" align-items: center;"},{"lineNumber":22,"author":{"gitId":"nknguyenhc"},"content":" width: 100%;"},{"lineNumber":23,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":24,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":25,"author":{"gitId":"nknguyenhc"},"content":".mat-card {"},{"lineNumber":26,"author":{"gitId":"nknguyenhc"},"content":" margin: 8px 0px;"},{"lineNumber":27,"author":{"gitId":"nknguyenhc"},"content":" height: 40px;"},{"lineNumber":28,"author":{"gitId":"nknguyenhc"},"content":" padding: 10px;"},{"lineNumber":29,"author":{"gitId":"nknguyenhc"},"content":" display: flex;"},{"lineNumber":30,"author":{"gitId":"nknguyenhc"},"content":" align-items: center;"},{"lineNumber":31,"author":{"gitId":"nknguyenhc"},"content":" justify-content: center;"},{"lineNumber":32,"author":{"gitId":"nknguyenhc"},"content":" flex-direction: row;"},{"lineNumber":33,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":34,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":35,"author":{"gitId":"nknguyenhc"},"content":".mat-card-title {"},{"lineNumber":36,"author":{"gitId":"nknguyenhc"},"content":" font-size: 14px;"},{"lineNumber":37,"author":{"gitId":"nknguyenhc"},"content":" text-align: center;"},{"lineNumber":38,"author":{"gitId":"nknguyenhc"},"content":" margin: 0;"},{"lineNumber":39,"author":{"gitId":"nknguyenhc"},"content":" flex-grow: 1;"},{"lineNumber":40,"author":{"gitId":"nknguyenhc"},"content":" margin: 2px;"},{"lineNumber":41,"author":{"gitId":"nknguyenhc"},"content":" word-break: break-word;"},{"lineNumber":42,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":43,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":44,"author":{"gitId":"nknguyenhc"},"content":".mat-card-avatar {"},{"lineNumber":45,"author":{"gitId":"nknguyenhc"},"content":" height: 30px;"},{"lineNumber":46,"author":{"gitId":"nknguyenhc"},"content":" width: 30px;"},{"lineNumber":47,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":48,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":49,"author":{"gitId":"nknguyenhc"},"content":".mat-card-header .mat-card-title {"},{"lineNumber":50,"author":{"gitId":"nknguyenhc"},"content":" font-size: 12px;"},{"lineNumber":51,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":52,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":53,"author":{"gitId":"nknguyenhc"},"content":".scrollable-container {"},{"lineNumber":54,"author":{"gitId":"nknguyenhc"},"content":" height: 67vh;"},{"lineNumber":55,"author":{"gitId":"nknguyenhc"},"content":" overflow: auto;"},{"lineNumber":56,"author":{"gitId":"nknguyenhc"},"content":" scrollbar-width: none;"},{"lineNumber":57,"author":{"gitId":"nknguyenhc"},"content":" -ms-overflow-style: none;"},{"lineNumber":58,"author":{"gitId":"nknguyenhc"},"content":" position: relative;"},{"lineNumber":59,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":60,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":61,"author":{"gitId":"nknguyenhc"},"content":".scrollable-containers::-webkit-scrollbar {"},{"lineNumber":62,"author":{"gitId":"nknguyenhc"},"content":" display: none;"},{"lineNumber":63,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":64,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":65,"author":{"gitId":"nknguyenhc"},"content":".scrollable-container::before,"},{"lineNumber":66,"author":{"gitId":"nknguyenhc"},"content":".scrollable-container::after {"},{"lineNumber":67,"author":{"gitId":"nknguyenhc"},"content":" pointer-events: none;"},{"lineNumber":68,"author":{"gitId":"nknguyenhc"},"content":" content: \u0027\u0027;"},{"lineNumber":69,"author":{"gitId":"nknguyenhc"},"content":" z-index: 2;"},{"lineNumber":70,"author":{"gitId":"nknguyenhc"},"content":" height: 6px;"},{"lineNumber":71,"author":{"gitId":"nknguyenhc"},"content":" width: 100%;"},{"lineNumber":72,"author":{"gitId":"nknguyenhc"},"content":" display: block;"},{"lineNumber":73,"author":{"gitId":"nknguyenhc"},"content":" background-image: linear-gradient(to bottom, white 66%, transparent);"},{"lineNumber":74,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":75,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":76,"author":{"gitId":"nknguyenhc"},"content":".scrollable-container::before {"},{"lineNumber":77,"author":{"gitId":"nknguyenhc"},"content":" position: absolute;"},{"lineNumber":78,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":79,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":80,"author":{"gitId":"nknguyenhc"},"content":".scrollable-container::after {"},{"lineNumber":81,"author":{"gitId":"nknguyenhc"},"content":" position: sticky;"},{"lineNumber":82,"author":{"gitId":"nknguyenhc"},"content":"}"}],"authorContributionMap":{"nknguyenhc":82}},{"path":"src/app/issues-viewer/hidden-users/hidden-users.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"nknguyenhc"},"content":"\u003cdiv *ngIf\u003d\"users.length \u003e 0\" class\u003d\"hidden-users\"\u003e"},{"lineNumber":2,"author":{"gitId":"nknguyenhc"},"content":" \u003cmat-card\u003e"},{"lineNumber":3,"author":{"gitId":"nknguyenhc"},"content":" \u003cmat-card-title\u003eHidden users\u003c/mat-card-title\u003e"},{"lineNumber":4,"author":{"gitId":"nknguyenhc"},"content":" \u003cdiv class\u003d\"row-count\"\u003e{{ users.length }}\u003c/div\u003e"},{"lineNumber":5,"author":{"gitId":"nknguyenhc"},"content":" \u003c/mat-card\u003e"},{"lineNumber":6,"author":{"gitId":"nknguyenhc"},"content":" \u003cdiv class\u003d\"scrollable-container\"\u003e"},{"lineNumber":7,"author":{"gitId":"nknguyenhc"},"content":" \u003cdiv *ngFor\u003d\"let user of users\"\u003e"},{"lineNumber":8,"author":{"gitId":"nknguyenhc"},"content":" \u003cmat-card\u003e"},{"lineNumber":9,"author":{"gitId":"nknguyenhc"},"content":" \u003cmar-card-header class\u003d\"mat-card-header\"\u003e"},{"lineNumber":10,"author":{"gitId":"nknguyenhc"},"content":" \u003cdiv"},{"lineNumber":11,"author":{"gitId":"nknguyenhc"},"content":" mat-card-avatar"},{"lineNumber":12,"author":{"gitId":"nknguyenhc"},"content":" [ngStyle]\u003d\"{"},{"lineNumber":13,"author":{"gitId":"nknguyenhc"},"content":" background: \u0027url(\u0027 + user.avatar_url + \u0027)\u0027,"},{"lineNumber":14,"author":{"gitId":"nknguyenhc"},"content":" \u0027background-size\u0027: \u002730px\u0027"},{"lineNumber":15,"author":{"gitId":"nknguyenhc"},"content":" }\""},{"lineNumber":16,"author":{"gitId":"nknguyenhc"},"content":" \u003e\u003c/div\u003e"},{"lineNumber":17,"author":{"gitId":"nknguyenhc"},"content":" \u003cmat-card-title\u003e{{ user.login }}\u003c/mat-card-title\u003e"},{"lineNumber":18,"author":{"gitId":"nknguyenhc"},"content":" \u003c/mar-card-header\u003e"},{"lineNumber":19,"author":{"gitId":"nknguyenhc"},"content":" \u003c/mat-card\u003e"},{"lineNumber":20,"author":{"gitId":"nknguyenhc"},"content":" \u003c/div\u003e"},{"lineNumber":21,"author":{"gitId":"nknguyenhc"},"content":" \u003c/div\u003e"},{"lineNumber":22,"author":{"gitId":"nknguyenhc"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"nknguyenhc":22}},{"path":"src/app/issues-viewer/hidden-users/hidden-users.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"nknguyenhc"},"content":"import { Component, Input } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"nknguyenhc"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":3,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":4,"author":{"gitId":"nknguyenhc"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"nknguyenhc"},"content":" selector: \u0027app-hidden-users\u0027,"},{"lineNumber":6,"author":{"gitId":"nknguyenhc"},"content":" templateUrl: \u0027./hidden-users.component.html\u0027,"},{"lineNumber":7,"author":{"gitId":"nknguyenhc"},"content":" styleUrls: [\u0027./hidden-users.component.css\u0027]"},{"lineNumber":8,"author":{"gitId":"nknguyenhc"},"content":"})"},{"lineNumber":9,"author":{"gitId":"nknguyenhc"},"content":"export class HiddenUsersComponent {"},{"lineNumber":10,"author":{"gitId":"nknguyenhc"},"content":" @Input() users: GithubUser[] \u003d [];"},{"lineNumber":11,"author":{"gitId":"nknguyenhc"},"content":"}"}],"authorContributionMap":{"nknguyenhc":11}},{"path":"src/app/issues-viewer/issues-viewer.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"loading-spinner\" *ngIf\u003d\"this.phaseService.isChangingRepo | async; else elseBlock\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-progress-spinner color\u003d\"primary\" mode\u003d\"indeterminate\" diameter\u003d\"50\" strokeWidth\u003d\"5\"\u003e \u003c/mat-progress-spinner\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cng-template #elseBlock\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003capp-filter-bar [views$]\u003d\"views\" #filterbar\u003e\u003c/app-filter-bar\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"wrapper\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003capp-card-view"},{"lineNumber":11,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let assignee of assignees\""},{"lineNumber":12,"author":{"gitId":"-"},"content":" class\u003d\"issue-table\""},{"lineNumber":13,"author":{"gitId":"Arif-Khalid"},"content":" #card"},{"lineNumber":14,"author":{"gitId":"Arif-Khalid"},"content":" [ngStyle]\u003d\"{ display: card.isLoading || card.issueLength \u003e 0 ? \u0027initial\u0027 : \u0027none\u0027 }\""},{"lineNumber":15,"author":{"gitId":"-"},"content":" [assignee]\u003d\"assignee\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" [headers]\u003d\"this.displayedColumns\""},{"lineNumber":17,"author":{"gitId":"-"},"content":" [sort]\u003d\"filterbar.matSort\""},{"lineNumber":18,"author":{"gitId":"nknguyenhc"},"content":" (issueLengthChange)\u003d\"updateHiddenUsers($event, assignee)\""},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003e\u003c/app-card-view\u003e"},{"lineNumber":20,"author":{"gitId":"Arif-Khalid"},"content":" \u003capp-card-view"},{"lineNumber":21,"author":{"gitId":"Arif-Khalid"},"content":" class\u003d\"issue-table\""},{"lineNumber":22,"author":{"gitId":"Arif-Khalid"},"content":" #card"},{"lineNumber":23,"author":{"gitId":"Arif-Khalid"},"content":" [ngStyle]\u003d\"{ display: card.isLoading || card.issueLength \u003e 0 ? \u0027initial\u0027 : \u0027none\u0027 }\""},{"lineNumber":24,"author":{"gitId":"Arif-Khalid"},"content":" [headers]\u003d\"this.displayedColumns\""},{"lineNumber":25,"author":{"gitId":"Arif-Khalid"},"content":" [sort]\u003d\"filterbar.matSort\""},{"lineNumber":26,"author":{"gitId":"Arif-Khalid"},"content":" \u003e"},{"lineNumber":27,"author":{"gitId":"Arif-Khalid"},"content":" \u003c/app-card-view\u003e"},{"lineNumber":28,"author":{"gitId":"nknguyenhc"},"content":" \u003capp-hidden-users [users]\u003d\"hiddenAssignees\"\u003e\u003c/app-hidden-users\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"nknguyenhc":2,"Arif-Khalid":10,"-":19}},{"path":"src/app/issues-viewer/issues-viewer.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { BehaviorSubject, of, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../core/models/github-user.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Repo } from \u0027../core/models/repo.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ErrorMessageService } from \u0027../core/services/error-message.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../core/services/github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../core/services/label.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { MilestoneService } from \u0027../core/services/milestone.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../core/services/phase.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../shared/issue-tables/issue-tables-columns\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { CardViewComponent } from \u0027./card-view/card-view.component\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":15,"author":{"gitId":"-"},"content":" selector: \u0027app-issues-viewer\u0027,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" templateUrl: \u0027./issues-viewer.component.html\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./issues-viewer.component.css\u0027]"},{"lineNumber":18,"author":{"gitId":"-"},"content":"})"},{"lineNumber":19,"author":{"gitId":"-"},"content":"export class IssuesViewerComponent implements OnInit, AfterViewInit, OnDestroy {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" readonly displayedColumns \u003d [TABLE_COLUMNS.ID, TABLE_COLUMNS.TITLE, TABLE_COLUMNS.ASSIGNEE, TABLE_COLUMNS.LABEL];"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Observes for any change in repo*/"},{"lineNumber":23,"author":{"gitId":"-"},"content":" repoChangeSubscription: Subscription;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" /** Observes for any change in the cardviews */"},{"lineNumber":26,"author":{"gitId":"-"},"content":" viewChange: Subscription;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" /** Users to show as columns */"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assignees: GithubUser[];"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"nknguyenhc"},"content":" /** The list of users with 0 issues (hidden) */"},{"lineNumber":32,"author":{"gitId":"nknguyenhc"},"content":" hiddenAssignees: GithubUser[] \u003d [];"},{"lineNumber":33,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" @ViewChildren(CardViewComponent) cardViews: QueryList\u003cCardViewComponent\u003e;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" views \u003d new BehaviorSubject\u003cQueryList\u003cCardViewComponent\u003e\u003e(undefined);"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":39,"author":{"gitId":"-"},"content":" public phaseService: PhaseService,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public githubService: GithubService,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public issueService: IssueService,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public milestoneService: MilestoneService"},{"lineNumber":44,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.repoChangeSubscription \u003d this.phaseService.repoChanged$.subscribe((newRepo) \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.issueService.reset(false);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.labelService.reset();"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.initialize();"},{"lineNumber":49,"author":{"gitId":"-"},"content":" });"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.initialize();"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.viewChange \u003d this.cardViews.changes.subscribe((x) \u003d\u003e this.views.next(x));"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.repoChangeSubscription.unsubscribe();"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.viewChange.unsubscribe();"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Fetch and initialize all information from repository to populate Issue Dashboard."},{"lineNumber":67,"author":{"gitId":"-"},"content":" */"},{"lineNumber":68,"author":{"gitId":"-"},"content":" private initialize() {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.checkIfValidRepository().subscribe((isValidRepository) \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!isValidRepository) {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new Error(ErrorMessageService.repositoryNotPresentMessage());"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":" });"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Fetch assignees"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.assignees \u003d [];"},{"lineNumber":77,"author":{"gitId":"nknguyenhc"},"content":" this.hiddenAssignees \u003d [];"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.githubService.getUsersAssignable().subscribe((x) \u003d\u003e (this.assignees \u003d x));"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Fetch issues"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.issueService.reloadAllIssues();"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Checks if our current repository available on phase service is indeed a valid repository"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private checkIfValidRepository() {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" const currentRepo \u003d this.phaseService.currentRepo;"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (Repo.isInvalidRepoName(currentRepo)) {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return of(false);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" return this.githubService.isRepositoryPresent(currentRepo.owner, currentRepo.name);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":98,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":99,"author":{"gitId":"nknguyenhc"},"content":" * Update the list of hidden user based on the new info."},{"lineNumber":100,"author":{"gitId":"nknguyenhc"},"content":" * @param issueLength The number of issues assigned to this user."},{"lineNumber":101,"author":{"gitId":"nknguyenhc"},"content":" * @param assignee The assignee."},{"lineNumber":102,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":103,"author":{"gitId":"nknguyenhc"},"content":" updateHiddenUsers(issueLength: number, assignee: GithubUser) {"},{"lineNumber":104,"author":{"gitId":"nknguyenhc"},"content":" if (issueLength \u003d\u003d\u003d 0) {"},{"lineNumber":105,"author":{"gitId":"nknguyenhc"},"content":" this.updateHiddenUser(assignee);"},{"lineNumber":106,"author":{"gitId":"nknguyenhc"},"content":" } else {"},{"lineNumber":107,"author":{"gitId":"nknguyenhc"},"content":" this.removeHiddenUser(assignee);"},{"lineNumber":108,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":109,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":110,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":111,"author":{"gitId":"nknguyenhc"},"content":" private updateHiddenUser(assignee: GithubUser) {"},{"lineNumber":112,"author":{"gitId":"nknguyenhc"},"content":" if (!this.hiddenAssignees.includes(assignee)) {"},{"lineNumber":113,"author":{"gitId":"nknguyenhc"},"content":" this.hiddenAssignees.push(assignee);"},{"lineNumber":114,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":115,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":116,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":117,"author":{"gitId":"nknguyenhc"},"content":" private removeHiddenUser(assignee: GithubUser) {"},{"lineNumber":118,"author":{"gitId":"nknguyenhc"},"content":" this.hiddenAssignees \u003d this.hiddenAssignees.filter((user) \u003d\u003e user !\u003d\u003d assignee);"},{"lineNumber":119,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":27,"-":93}},{"path":"src/app/issues-viewer/issues-viewer.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FilterBarModule } from \u0027../shared/filter-bar/filter-bar.module\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { IssuesPrCardModule } from \u0027../shared/issue-pr-card/issue-pr-card.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../shared/shared.module\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { CardViewComponent } from \u0027./card-view/card-view.component\u0027;"},{"lineNumber":6,"author":{"gitId":"nknguyenhc"},"content":"import { HiddenUsersComponent } from \u0027./hidden-users/hidden-users.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssuesViewerRoutingModule } from \u0027./issues-viewer-routing.module\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { IssuesViewerComponent } from \u0027./issues-viewer.component\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" imports: [FilterBarModule, IssuesViewerRoutingModule, IssuesPrCardModule, SharedModule],"},{"lineNumber":12,"author":{"gitId":"nknguyenhc"},"content":" declarations: [IssuesViewerComponent, CardViewComponent, HiddenUsersComponent],"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exports: [IssuesViewerComponent, CardViewComponent]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class IssuesViewerModule {}"}],"authorContributionMap":{"nknguyenhc":2,"-":13}},{"path":"src/app/shared/filter-bar/filter-bar.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cmat-grid-list cols\u003d\"7\" rowHeight\u003d\"80px\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile colspan\u003d\"3\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-form-field class\u003d\"search-bar\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cinput matInput (keyup)\u003d\"applyFilter($event.target.value)\" placeholder\u003d\"Search\" /\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile colspan\u003d\"3\"\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"dropdown-filters\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"standard\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eStatus\u003c/mat-label\u003e"},{"lineNumber":12,"author":{"gitId":"Arif-Khalid"},"content":" \u003cmat-select [value]\u003d\"this.dropdownFilter.status\" (selectionChange)\u003d\"this.filtersService.updateFilters({ status: $event.value })\"\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"all\"\u003eAll\u003c/mat-option\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"open\"\u003eOpen\u003c/mat-option\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"closed\"\u003eClosed\u003c/mat-option\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"merged\" *ngIf\u003d\"isNotFilterIssue()\"\u003eMerged\u003c/mat-option\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"standard\"\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eType\u003c/mat-label\u003e"},{"lineNumber":21,"author":{"gitId":"Arif-Khalid"},"content":" \u003cmat-select [value]\u003d\"this.dropdownFilter.type\" (selectionChange)\u003d\"this.filtersService.updateFilters({ type: $event.value })\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"all\"\u003eAll\u003c/mat-option\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"issue\"\u003eIssue\u003c/mat-option\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"pullrequest\"\u003ePull Request\u003c/mat-option\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"standard\" matSort [matSortDisableClear]\u003d\"true\"\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eSort\u003c/mat-label\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cmat-select [(value)]\u003d\"this.dropdownFilter.sort\" (selectionChange)\u003d\"applyDropdownFilter()\"\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"id\"\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cspan mat-sort-header\u003d\"id\"\u003eID\u003c/span\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"title\"\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cspan mat-sort-header\u003d\"title\"\u003eTitle\u003c/span\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"date\"\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cspan mat-sort-header\u003d\"date\"\u003eDate Updated\u003c/span\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"standard\"\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eMilestone\u003c/mat-label\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cmat-select"},{"lineNumber":44,"author":{"gitId":"-"},"content":" #milestoneSelectorRef"},{"lineNumber":45,"author":{"gitId":"-"},"content":" [(value)]\u003d\"this.dropdownFilter.milestones\""},{"lineNumber":46,"author":{"gitId":"-"},"content":" (selectionChange)\u003d\"applyDropdownFilter()\""},{"lineNumber":47,"author":{"gitId":"-"},"content":" [disabled]\u003d\"this.milestoneService.hasNoMilestones\""},{"lineNumber":48,"author":{"gitId":"-"},"content":" multiple"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cmat-select-trigger *ngIf\u003d\"this.milestoneService.hasNoMilestones\"\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cspan\u003eNo Milestones\u003c/span\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/mat-select-trigger\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cmat-option *ngFor\u003d\"let milestone of this.milestoneService.milestones\" [value]\u003d\"milestone.number\"\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" {{ milestone.title }}"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile class\u003d\"label-filter-grid-tile\" colspan\u003d\"1\"\u003e"},{"lineNumber":62,"author":{"gitId":"Arif-Khalid"},"content":" \u003capp-label-filter-bar\u003e\u003c/app-label-filter-bar\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/mat-grid-list\u003e"}],"authorContributionMap":{"Arif-Khalid":3,"-":61}},{"path":"src/app/shared/filter-bar/filter-bar.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, Input, OnDestroy, OnInit, QueryList, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatSelect } from \u0027@angular/material/select\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BehaviorSubject, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"Arif-Khalid"},"content":"import { FiltersService } from \u0027../../core/services/filters.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { MilestoneService } from \u0027../../core/services/milestone.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { DEFAULT_DROPDOWN_FILTER, DropdownFilter } from \u0027../issue-tables/dropdownfilter\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { FilterableComponent } from \u0027../issue-tables/filterableTypes\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { LabelFilterBarComponent } from \u0027./label-filter-bar/label-filter-bar.component\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This component is abstracted out filterbar used by both detailed-viewer page"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * and Issues-viewer"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */"},{"lineNumber":17,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" selector: \u0027app-filter-bar\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" templateUrl: \u0027./filter-bar.component.html\u0027,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./filter-bar.component.css\u0027]"},{"lineNumber":21,"author":{"gitId":"-"},"content":"})"},{"lineNumber":22,"author":{"gitId":"-"},"content":"export class FilterBarComponent implements OnInit, AfterViewInit, OnDestroy {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Input() views$: BehaviorSubject\u003cQueryList\u003cFilterableComponent\u003e\u003e;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" repoChangeSubscription: Subscription;"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" /** Selected dropdown filter value */"},{"lineNumber":28,"author":{"gitId":"-"},"content":" dropdownFilter: DropdownFilter \u003d DEFAULT_DROPDOWN_FILTER;"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" /** Selected label filters, instance passed into LabelChipBar to populate */"},{"lineNumber":31,"author":{"gitId":"-"},"content":" labelFilter$ \u003d new BehaviorSubject\u003cstring[]\u003e([]);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" labelFilterSubscription: Subscription;"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Selected label to hide */"},{"lineNumber":35,"author":{"gitId":"-"},"content":" hiddenLabels$ \u003d new BehaviorSubject\u003cSet\u003cstring\u003e\u003e(new Set());"},{"lineNumber":36,"author":{"gitId":"-"},"content":" hiddenLabelSubscription: Subscription;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" /** Milestone subscription */"},{"lineNumber":39,"author":{"gitId":"-"},"content":" milestoneSubscription: Subscription;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" /** One MatSort controls all IssueDataTables */"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @ViewChild(MatSort, { static: true }) matSort: MatSort;"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":" @ViewChild(LabelFilterBarComponent, { static: true }) labelFilterBar: LabelFilterBarComponent;"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" @ViewChild(\u0027milestoneSelectorRef\u0027, { static: false }) milestoneSelectorRef: MatSelect;"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"Arif-Khalid"},"content":" constructor("},{"lineNumber":49,"author":{"gitId":"Arif-Khalid"},"content":" public milestoneService: MilestoneService,"},{"lineNumber":50,"author":{"gitId":"Arif-Khalid"},"content":" public filtersService: FiltersService,"},{"lineNumber":51,"author":{"gitId":"Arif-Khalid"},"content":" private phaseService: PhaseService,"},{"lineNumber":52,"author":{"gitId":"Arif-Khalid"},"content":" private logger: LoggingService"},{"lineNumber":53,"author":{"gitId":"Arif-Khalid"},"content":" ) {"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.repoChangeSubscription \u003d this.phaseService.repoChanged$.subscribe((newRepo) \u003d\u003e this.initialize());"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.initialize();"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":62,"author":{"gitId":"Arif-Khalid"},"content":" this.filtersService.dropdownFilter$.subscribe((dropdownFilter) \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"Arif-Khalid"},"content":" this.dropdownFilter \u003d dropdownFilter;"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.applyDropdownFilter();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" });"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.labelFilterSubscription?.unsubscribe();"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.hiddenLabelSubscription?.unsubscribe();"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.milestoneSubscription.unsubscribe();"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.repoChangeSubscription.unsubscribe();"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Signals to IssuesDataTable that a change has occurred in filter."},{"lineNumber":77,"author":{"gitId":"-"},"content":" * @param filterValue"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */"},{"lineNumber":79,"author":{"gitId":"-"},"content":" applyFilter(filterValue: string) {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.views$?.value?.forEach((v) \u003d\u003e (v.retrieveFilterable().filter \u003d filterValue));"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Signals to IssuesDataTable that a change has occurred in dropdown filter."},{"lineNumber":85,"author":{"gitId":"-"},"content":" */"},{"lineNumber":86,"author":{"gitId":"-"},"content":" applyDropdownFilter() {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.views$?.value?.forEach((v) \u003d\u003e (v.retrieveFilterable().dropdownFilter \u003d this.dropdownFilter));"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Checks if program is filtering by type issue."},{"lineNumber":92,"author":{"gitId":"-"},"content":" */"},{"lineNumber":93,"author":{"gitId":"-"},"content":" isNotFilterIssue() {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this.dropdownFilter.type !\u003d\u003d \u0027issue\u0027;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Fetch and initialize all information from repository to populate Issue Dashboard."},{"lineNumber":99,"author":{"gitId":"-"},"content":" */"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private initialize() {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // Fetch milestones and update dropdown filter"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.milestoneSubscription \u003d this.milestoneService.fetchMilestones().subscribe("},{"lineNumber":103,"author":{"gitId":"-"},"content":" (response) \u003d\u003e {"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.logger.debug(\u0027IssuesViewerComponent: Fetched milestones from Github\u0027);"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.milestoneService.milestones.forEach((milestone) \u003d\u003e this.dropdownFilter.milestones.push(milestone.number));"},{"lineNumber":106,"author":{"gitId":"-"},"content":" },"},{"lineNumber":107,"author":{"gitId":"-"},"content":" (err) \u003d\u003e {},"},{"lineNumber":108,"author":{"gitId":"-"},"content":" () \u003d\u003e {}"},{"lineNumber":109,"author":{"gitId":"-"},"content":" );"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Arif-Khalid":9,"-":102}},{"path":"src/app/shared/filter-bar/label-filter-bar/label-filter-bar.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cbutton mat-stroked-button *ngIf\u003d\"loaded\" [matMenuTriggerFor]\u003d\"menu\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" {{ selectedLabelNames.length \u003d\u003d 0 ? \u0027All\u0027 : selectedLabelNames.length }} Selected | {{ hiddenLabelNames?.size || 0 }} Hidden ▾"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cbutton mat-stroked-button disabled *ngIf\u003d\"!loaded\" color\u003d\"accent\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cmat-progress-bar mode\u003d\"query\"\u003e\u003c/mat-progress-bar\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003cmat-menu #menu\u003d\"matMenu\" class\u003d\"popupmenu\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cdiv (click)\u003d\"$event.stopPropagation()\" class\u003d\"popup-container\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"standard\" class\u003d\"input-field\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eLabels\u003c/mat-label\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cinput #input matInput placeholder\u003d\"Find labels\" /\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cbutton mat-button (click)\u003d\"removeAllSelection()\"\u003eRemove all\u003c/button\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"!hasLabels(input.value)\" class\u003d\"no-labels\"\u003eNo Labels Found!\u003c/div\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"scroll-container-wrapper\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"scroll-container\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmat-selection-list [(ngModel)]\u003d\"selectedLabelNames\" (selectionChange)\u003d\"updateSelection()\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cmat-list-option"},{"lineNumber":24,"author":{"gitId":"-"},"content":" #option"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let label of this.labels$ | async\""},{"lineNumber":26,"author":{"gitId":"-"},"content":" [value]\u003d\"label.name\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" [selected]\u003d\"selectedLabelNames.includes(label.name)\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" class\u003d\"list-option\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" [class.hidden]\u003d\"filter(input.value, label.name)\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"flexbox-container\"\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cbutton mat-icon-button *ngIf\u003d\"!hiddenLabelNames.has(label.name)\" (click)\u003d\"hide(label.name); $event.stopPropagation()\"\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003evisibility\u003c/mat-icon\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cbutton mat-icon-button *ngIf\u003d\"hiddenLabelNames.has(label.name)\" (click)\u003d\"show(label.name); $event.stopPropagation()\"\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003evisibility_off\u003c/mat-icon\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cmat-chip"},{"lineNumber":39,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"labelService.setLabelStyle(label.color)\""},{"lineNumber":40,"author":{"gitId":"-"},"content":" [disabled]\u003d\"hiddenLabelNames.has(label.name)\""},{"lineNumber":41,"author":{"gitId":"-"},"content":" (click)\u003d\"simulateClick(option); $event.stopPropagation()\""},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":43,"author":{"gitId":"nknguyenhc"},"content":" {{ label.name }}"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/mat-chip\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/mat-list-option\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/mat-selection-list\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":"\u003c/mat-menu\u003e"}],"authorContributionMap":{"nknguyenhc":1,"-":50}},{"path":"src/app/shared/filter-bar/label-filter-bar/label-filter-bar.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, Input, OnDestroy, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatListOption, MatSelectionList } from \u0027@angular/material/list\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { BehaviorSubject, Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { SimpleLabel } from \u0027../../../core/models/label.model\u0027;"},{"lineNumber":5,"author":{"gitId":"Arif-Khalid"},"content":"import { FiltersService } from \u0027../../../core/services/filters.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../../core/services/logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" selector: \u0027app-label-filter-bar\u0027,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" templateUrl: \u0027./label-filter-bar.component.html\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./label-filter-bar.component.css\u0027]"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export class LabelFilterBarComponent implements OnInit, AfterViewInit, OnDestroy {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @ViewChild(MatSelectionList) matSelectionList;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" labels$: Observable\u003cSimpleLabel[]\u003e;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" allLabels: SimpleLabel[];"},{"lineNumber":19,"author":{"gitId":"-"},"content":" selectedLabelNames: string[] \u003d [];"},{"lineNumber":20,"author":{"gitId":"-"},"content":" hiddenLabelNames: Set\u003cstring\u003e \u003d new Set();"},{"lineNumber":21,"author":{"gitId":"-"},"content":" loaded \u003d false;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" labelSubscription: Subscription;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"Arif-Khalid"},"content":" constructor(private labelService: LabelService, private logger: LoggingService, private filtersService: FiltersService) {}"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.loaded \u003d false;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.load();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.labels$ \u003d this.labelService.connect();"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.labels$.subscribe((labels) \u003d\u003e {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.allLabels \u003d labels;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":" });"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.labelSubscription?.unsubscribe();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" hide(label: string): void {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (this.hiddenLabelNames.has(label)) {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.hiddenLabelNames.add(label);"},{"lineNumber":51,"author":{"gitId":"Arif-Khalid"},"content":" this.filtersService.updateFilters({ hiddenLabels: this.hiddenLabelNames });"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" /** Show labels that were hidden */"},{"lineNumber":55,"author":{"gitId":"-"},"content":" show(label: string): void {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!this.hiddenLabelNames.has(label)) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.hiddenLabelNames.delete(label);"},{"lineNumber":60,"author":{"gitId":"Arif-Khalid"},"content":" this.filtersService.updateFilters({ hiddenLabels: this.hiddenLabelNames });"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * chip as of the current project version consumes click events"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * this method is used as an workaround the issue."},{"lineNumber":66,"author":{"gitId":"-"},"content":" * https://github.com/angular/components/issues/19759"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */"},{"lineNumber":68,"author":{"gitId":"-"},"content":" simulateClick(el: MatListOption): void {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (el.disabled) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }"},{"lineNumber":72,"author":{"gitId":"-"},"content":" el.toggle();"},{"lineNumber":73,"author":{"gitId":"Arif-Khalid"},"content":" this.updateSelection();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" /** loads in the labels in the repository */"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public load() {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.labelService.startPollLabels();"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.labelSubscription \u003d this.labelService.fetchLabels().subscribe("},{"lineNumber":80,"author":{"gitId":"-"},"content":" (response) \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" this.logger.debug(\u0027LabelFilterBarComponent: Fetched labels from Github\u0027);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" },"},{"lineNumber":83,"author":{"gitId":"-"},"content":" (err) \u003d\u003e {},"},{"lineNumber":84,"author":{"gitId":"-"},"content":" () \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.loaded \u003d true;"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":" );"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" filter(filter: string, target: string): boolean {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return !target.toLowerCase().includes(filter.toLowerCase());"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" hasLabels(filter: string): boolean {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (this.allLabels \u003d\u003d\u003d undefined || this.allLabels.length \u003d\u003d\u003d 0) {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"nknguyenhc"},"content":" return this.allLabels.some((label) \u003d\u003e !this.filter(filter, label.name));"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":""},{"lineNumber":101,"author":{"gitId":"-"},"content":" updateSelection(): void {"},{"lineNumber":102,"author":{"gitId":"Arif-Khalid"},"content":" this.filtersService.updateFilters({ labels: this.selectedLabelNames });"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" removeAllSelection(): void {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.matSelectionList.deselectAll();"},{"lineNumber":107,"author":{"gitId":"-"},"content":" this.updateSelection();"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":1,"Arif-Khalid":6,"-":102}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-labels/issue-pr-card-labels.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Input } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"nknguyenhc"},"content":"import { GithubLabel } from \u0027../../../core/models/github/github-label.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":6,"author":{"gitId":"-"},"content":" selector: \u0027app-issue-pr-card-labels\u0027,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" templateUrl: \u0027./issue-pr-card-labels.component.html\u0027,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./issue-pr-card-labels.component.css\u0027]"},{"lineNumber":9,"author":{"gitId":"-"},"content":"})"},{"lineNumber":10,"author":{"gitId":"-"},"content":"export class IssuePrCardLabelsComponent {"},{"lineNumber":11,"author":{"gitId":"nknguyenhc"},"content":" @Input() labels: GithubLabel[];"},{"lineNumber":12,"author":{"gitId":"nknguyenhc"},"content":" @Input() labelSet: Set\u003cstring\u003e;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" constructor(public labelService: LabelService) {}"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":3,"-":11}},{"path":"src/app/shared/layout/header.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cmat-toolbar color\u003d\"primary\" style\u003d\"position: sticky; position: -webkit-sticky; top: 0; z-index: 1000\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":3,"author":{"gitId":"-"},"content":" *ngIf\u003d\"isBackButtonShown()\""},{"lineNumber":4,"author":{"gitId":"-"},"content":" mat-icon-button"},{"lineNumber":5,"author":{"gitId":"-"},"content":" class\u003d\"mat-toolbar mat-primary back-button\""},{"lineNumber":6,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.9)\""},{"lineNumber":7,"author":{"gitId":"-"},"content":" (click)\u003d\"goBack()\""},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003earrow_back_ios\u003c/mat-icon\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":11,"author":{"gitId":"MadLamprey"},"content":" \u003ca"},{"lineNumber":12,"author":{"gitId":"MadLamprey"},"content":" class\u003d\"mat-toolbar mat-primary\""},{"lineNumber":13,"author":{"gitId":"MadLamprey"},"content":" style\u003d\"text-decoration: none\""},{"lineNumber":14,"author":{"gitId":"MadLamprey"},"content":" [routerLink]\u003d\"phaseService.isRepoSet() ? phaseService.currentPhase : null\""},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003eWATcher v{{ this.getVersion() }}\u003c/a"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"phase-descriptor\" *ngIf\u003d\"auth.isAuthenticated()\" style\u003d\"margin-left: 10px\"\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" ({{ this.getPhaseDescription(phaseService.currentPhase) }})"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 this.phaseService.sessionData.sessionRepo.length \u003e 1\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cbutton mat-button [matMenuTriggerFor]\u003d\"menu\"\u003e\u003cmat-icon style\u003d\"color: white\"\u003eexpand_more\u003c/mat-icon\u003e\u003c/button\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cmat-menu #menu\u003d\"matMenu\"\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":25,"author":{"gitId":"-"},"content":" mat-menu-item"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let sessionRepo of this.phaseService.sessionData.sessionRepo\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" (click)\u003d\"this.routeToSelectedPhase(sessionRepo.phase)\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cspan\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cmat-icon [ngStyle]\u003d\"{ color: \u0027green\u0027, visibility: this.phaseService.currentPhase \u003d\u003d\u003d sessionRepo.phase ? \u0027visible\u0027 : \u0027hidden\u0027 }\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003edone\u003c/mat-icon"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" {{ this.getPhaseDescription(sessionRepo.phase) }}"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/mat-menu\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c!-- everything else --\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"flex: 1 1 auto\"\u003e\u003c/span\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 phaseService.isRepoSet()\"\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"phase-descriptor\" style\u003d\"margin-left: 10px\"\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" {{ this.currentRepo || \u0027No Repository Set\u0027 }}"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":48,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":49,"author":{"gitId":"-"},"content":" matTooltip\u003d\"{{ phaseService.isRepoSet() ? \u0027Change Repository\u0027 : \u0027Select Repository\u0027 }}\""},{"lineNumber":50,"author":{"gitId":"-"},"content":" (click)\u003d\"this.openChangeRepoDialog()\""},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eedit\u003c/mat-icon\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"flex: 1 1 auto\"\u003e\u003c/span\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cbutton mat-button matTooltip\u003d\"Download WATcher Log\" (click)\u003d\"this.exportLogFile()\"\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003ereceipt\u003c/mat-icon\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cbutton mat-button matTooltip\u003d\"Give feedback about WATcher\" (click)\u003d\"openIssueTracker()\"\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003email\u003c/mat-icon\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":66,"author":{"gitId":"-"},"content":" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 phaseService.isRepoSet() \u0026\u0026 isOpenUrlButtonShown()\""},{"lineNumber":67,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":68,"author":{"gitId":"-"},"content":" matTooltip\u003d\"View current page on GitHub\""},{"lineNumber":69,"author":{"gitId":"-"},"content":" (click)\u003d\"viewBrowser()\""},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eopen_in_new\u003c/mat-icon\u003e"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"sync-spinner\" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 (this.isLoading$ | async); else notLoading\"\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003cmat-spinner class\u003d\"white-spinner\" [diameter]\u003d\"20\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cng-template #notLoading\u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":80,"author":{"gitId":"-"},"content":" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 phaseService.isRepoSet() \u0026\u0026 isReloadButtonShown() \u0026\u0026 !this.isReloadButtonDisabled\""},{"lineNumber":81,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":82,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Synchronize with Github data\""},{"lineNumber":83,"author":{"gitId":"-"},"content":" (click)\u003d\"reload()\""},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Sync"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003erefresh\u003c/mat-icon\u003e"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"sync-spinner\" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 isReloadButtonShown() \u0026\u0026 this.isReloadButtonDisabled\"\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"font-size: 14px; margin-right: 7px\"\u003eSync\u003c/span\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003cmat-spinner class\u003d\"white-spinner\" [diameter]\u003d\"20\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cbutton *ngIf\u003d\"auth.isAuthenticated()\" mat-button matTooltip\u003d\"Log out\" (click)\u003d\"openLogOutDialog(); $event.stopPropagation()\"\u003e"},{"lineNumber":95,"author":{"gitId":"-"},"content":" ({{ userService.currentUser.loginId }})"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003cmat-icon style\u003d\"margin-left: 2px\"\u003eexit_to_app\u003c/mat-icon\u003e"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003c/mat-toolbar\u003e"}],"authorContributionMap":{"MadLamprey":4,"-":94}},{"path":"src/app/shared/layout/header.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Location } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Component, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Router, RoutesRecognized } from \u0027@angular/router\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { filter, pairwise, switchMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { STORAGE_KEYS } from \u0027../../core/constants/storage-keys.constants\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../core/models/phase.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { Repo } from \u0027../../core/models/repo.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../core/services/dialog.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":13,"author":{"gitId":"Arif-Khalid"},"content":"import { FiltersService } from \u0027../../core/services/filters.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../core/services/label.service\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { PhaseDescription, PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import { RepoSessionStorageService } from \u0027../../core/services/repo-session-storage.service\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import { RepoUrlCacheService } from \u0027../../core/services/repo-url-cache.service\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../core/services/user.service\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"const ISSUE_TRACKER_URL \u003d \u0027https://github.com/CATcher-org/WATcher/issues\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":27,"author":{"gitId":"-"},"content":" selector: \u0027app-layout-header\u0027,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" templateUrl: \u0027./header.component.html\u0027"},{"lineNumber":29,"author":{"gitId":"-"},"content":"})"},{"lineNumber":30,"author":{"gitId":"-"},"content":"export class HeaderComponent implements OnInit {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private prevUrl;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" isReloadButtonDisabled \u003d false;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ISSUE_FILTER \u003d \u0027/issues?q\u003dis:issue+is:all\u0027; // the filtered list must be an issue and must be open"},{"lineNumber":34,"author":{"gitId":"-"},"content":" TUTORIAL_LABEL \u003d \u0027+label:tutorial.\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" TEAM_LABEL \u003d \u0027+label:team.\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" EXCLUDE_DUPLICATE \u003d \u0027+-label:duplicate\u0027; // exclude duplicate issues"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" public isLoading$: Observable\u003cboolean\u003e;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon logging out"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private readonly logOutDialogMessages \u003d [\u0027Do you wish to log out?\u0027];"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private readonly yesButtonDialogMessage \u003d \u0027Yes, I wish to log out\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private readonly noButtonDialogMessage \u003d \"No, I don\u0027t wish to log out\";"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" /** Model for the displayed repository name */"},{"lineNumber":46,"author":{"gitId":"-"},"content":" currentRepo \u003d \u0027\u0027;"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":49,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public auth: AuthService,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public phaseService: PhaseService,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public userService: UserService,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public logger: LoggingService,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private location: Location,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private repoUrlCacheService: RepoUrlCacheService,"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private labelService: LabelService,"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private dialogService: DialogService,"},{"lineNumber":62,"author":{"gitId":"Arif-Khalid"},"content":" private repoSessionStorageService: RepoSessionStorageService,"},{"lineNumber":63,"author":{"gitId":"Arif-Khalid"},"content":" private filtersService: FiltersService"},{"lineNumber":64,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" router.events"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":67,"author":{"gitId":"-"},"content":" filter((e: any) \u003d\u003e e instanceof RoutesRecognized),"},{"lineNumber":68,"author":{"gitId":"-"},"content":" pairwise()"},{"lineNumber":69,"author":{"gitId":"-"},"content":" )"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .subscribe((e) \u003d\u003e {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.prevUrl \u003d e[0].urlAfterRedirects;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" });"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.auth.currentAuthState.subscribe(() \u003d\u003e {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (auth.isAuthenticated() \u0026\u0026 !repoSessionStorageService.hasRepoLocation()) {"},{"lineNumber":76,"author":{"gitId":"nknguyenhc"},"content":" if (!this.auth.hasNext()) {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.openChangeRepoDialog();"},{"lineNumber":78,"author":{"gitId":"nknguyenhc"},"content":" } else {"},{"lineNumber":79,"author":{"gitId":"nknguyenhc"},"content":" this.auth.redirectToNext();"},{"lineNumber":80,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":" });"},{"lineNumber":83,"author":{"gitId":"-"},"content":""},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.phaseService.repoSetState.subscribe((state) \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (auth.isAuthenticated() \u0026\u0026 phaseService.isRepoSet()) {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.initializeRepoNameInTitle();"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":" });"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.isLoading$ \u003d this.issueService.isLoading.asObservable();"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Replaces and resets the current phase data and routes the app to the"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * newly selected phase."},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @param openPhase - Open Phase that is selected by the user."},{"lineNumber":99,"author":{"gitId":"-"},"content":" */"},{"lineNumber":100,"author":{"gitId":"-"},"content":" routeToSelectedPhase(openPhase: string): void {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // Do nothing if the selected phase is the current phase."},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase \u003d\u003d\u003d Phase[openPhase]) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" // Replace Current Phase Data."},{"lineNumber":107,"author":{"gitId":"-"},"content":" this.phaseService.changePhase(Phase[openPhase]);"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":" // Remove current phase issues and load selected phase issues."},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.issueService.reset(false);"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.labelService.reset();"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.reload();"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":" // Route app to new phase."},{"lineNumber":116,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(this.phaseService.currentPhase);"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":" isBackButtonShown(): boolean {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return `/${this.phaseService.currentPhase}` !\u003d\u003d this.router.url \u0026\u0026 this.router.url !\u003d\u003d \u0027/\u0027 \u0026\u0026 !this.router.url.startsWith(\u0027/?code\u0027);"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" isReloadButtonShown(): boolean {"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return this.router.url !\u003d\u003d \u0027/phaseBugReporting/issues/new\u0027;"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }"},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":" isOpenUrlButtonShown(): boolean {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return this.phaseService.currentPhase \u003d\u003d\u003d Phase.issuesViewer || this.phaseService.currentPhase \u003d\u003d\u003d Phase.activityDashboard;"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }"},{"lineNumber":130,"author":{"gitId":"-"},"content":""},{"lineNumber":131,"author":{"gitId":"-"},"content":" getVersion(): string {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return AppConfig.version;"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" getPhaseDescription(openPhase: string): string {"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return PhaseDescription[openPhase];"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" goBack() {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (this.prevUrl \u003d\u003d\u003d `/${this.phaseService.currentPhase}/issues/new`) {"},{"lineNumber":141,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(this.phaseService.currentPhase);"},{"lineNumber":142,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" this.location.back();"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }"},{"lineNumber":146,"author":{"gitId":"-"},"content":""},{"lineNumber":147,"author":{"gitId":"-"},"content":" viewBrowser() {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase \u003d\u003d\u003d Phase.activityDashboard) {"},{"lineNumber":149,"author":{"gitId":"-"},"content":" window.open(`https://github.com/${this.phaseService.currentRepo.owner}/${this.phaseService.currentRepo.name}/pulse`);"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" const routerUrl \u003d this.router.url.substring(1); // remove the first \u0027/\u0027 from string"},{"lineNumber":154,"author":{"gitId":"-"},"content":" const issueUrlIndex \u003d routerUrl.indexOf(\u0027/\u0027); // find the index of second \u0027/\u0027"},{"lineNumber":155,"author":{"gitId":"-"},"content":" let issueUrl: string;"},{"lineNumber":156,"author":{"gitId":"-"},"content":""},{"lineNumber":157,"author":{"gitId":"-"},"content":" // If can\u0027t find the index of second \u0027/\u0027, then router is at the /issues (table list) page"},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (issueUrlIndex \u003c 0) {"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // Apply filters to the issueUrl"},{"lineNumber":160,"author":{"gitId":"-"},"content":" issueUrl \u003d this.ISSUE_FILTER;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // issueUrl will be from the second \u0027/\u0027"},{"lineNumber":163,"author":{"gitId":"-"},"content":" issueUrl \u003d routerUrl.substring(issueUrlIndex);"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // Open the url in user\u0027s preferred browser"},{"lineNumber":166,"author":{"gitId":"-"},"content":" window.open(\u0027https://github.com/\u0027.concat(this.githubService.getRepoURL()).concat(issueUrl));"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }"},{"lineNumber":168,"author":{"gitId":"-"},"content":""},{"lineNumber":169,"author":{"gitId":"-"},"content":" openIssueTracker() {"},{"lineNumber":170,"author":{"gitId":"-"},"content":" window.open(ISSUE_TRACKER_URL);"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }"},{"lineNumber":172,"author":{"gitId":"-"},"content":""},{"lineNumber":173,"author":{"gitId":"-"},"content":" reload() {"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.isReloadButtonDisabled \u003d true;"},{"lineNumber":175,"author":{"gitId":"-"},"content":""},{"lineNumber":176,"author":{"gitId":"-"},"content":" this.githubEventService.reloadPage().subscribe("},{"lineNumber":177,"author":{"gitId":"-"},"content":" (success) \u003d\u003e success,"},{"lineNumber":178,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error, () \u003d\u003e this.githubEventService.reloadPage());"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }"},{"lineNumber":181,"author":{"gitId":"-"},"content":" );"},{"lineNumber":182,"author":{"gitId":"-"},"content":""},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.labelService.fetchLabels().subscribe("},{"lineNumber":184,"author":{"gitId":"-"},"content":" (success) \u003d\u003e success,"},{"lineNumber":185,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error, () \u003d\u003e this.labelService.fetchLabels());"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }"},{"lineNumber":188,"author":{"gitId":"-"},"content":" );"},{"lineNumber":189,"author":{"gitId":"-"},"content":""},{"lineNumber":190,"author":{"gitId":"-"},"content":" // Prevent user from spamming the reload button"},{"lineNumber":191,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":192,"author":{"gitId":"-"},"content":" this.isReloadButtonDisabled \u003d false;"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }, 3000);"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }"},{"lineNumber":195,"author":{"gitId":"-"},"content":""},{"lineNumber":196,"author":{"gitId":"-"},"content":" logOut() {"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.auth.logOut();"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":" openLogOutDialog() {"},{"lineNumber":201,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.logOutDialogMessages,"},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.yesButtonDialogMessage,"},{"lineNumber":204,"author":{"gitId":"-"},"content":" this.noButtonDialogMessage"},{"lineNumber":205,"author":{"gitId":"-"},"content":" );"},{"lineNumber":206,"author":{"gitId":"-"},"content":""},{"lineNumber":207,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":208,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":209,"author":{"gitId":"-"},"content":" this.logger.info(`HeaderComponent: Logging out from ${this.userService.currentUser.loginId}`);"},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.logOut();"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }"},{"lineNumber":212,"author":{"gitId":"-"},"content":" });"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }"},{"lineNumber":214,"author":{"gitId":"-"},"content":""},{"lineNumber":215,"author":{"gitId":"-"},"content":" exportLogFile() {"},{"lineNumber":216,"author":{"gitId":"-"},"content":" this.logger.exportLogFile();"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }"},{"lineNumber":218,"author":{"gitId":"-"},"content":""},{"lineNumber":219,"author":{"gitId":"-"},"content":" initializeRepoNameInTitle() {"},{"lineNumber":220,"author":{"gitId":"-"},"content":" if (Repo.isInvalidRepoName(this.phaseService.currentRepo)) {"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }"},{"lineNumber":223,"author":{"gitId":"-"},"content":" const currentRepoString \u003d this.phaseService.currentRepo.toString();"},{"lineNumber":224,"author":{"gitId":"-"},"content":" this.logger.info(`HeaderComponent: initializing current repository name as ${currentRepoString}`);"},{"lineNumber":225,"author":{"gitId":"-"},"content":" this.currentRepo \u003d currentRepoString;"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }"},{"lineNumber":227,"author":{"gitId":"-"},"content":""},{"lineNumber":228,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Change repository viewed on Issue Dashboard, if a valid repository is provided."},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Re-open dialog to prompt for another repository if an invalid one is provided."},{"lineNumber":231,"author":{"gitId":"-"},"content":" */"},{"lineNumber":232,"author":{"gitId":"-"},"content":" changeRepositoryIfValid(repo: Repo, newRepoString: string) {"},{"lineNumber":233,"author":{"gitId":"-"},"content":" if (newRepoString \u003d\u003d\u003d this.currentRepo) {"},{"lineNumber":234,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }"},{"lineNumber":236,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":237,"author":{"gitId":"Arif-Khalid"},"content":" this.filtersService.clearFilters();"},{"lineNumber":238,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":239,"author":{"gitId":"-"},"content":" this.phaseService"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .changeRepositoryIfValid(repo)"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e {"},{"lineNumber":242,"author":{"gitId":"-"},"content":" this.auth.setTitleWithPhaseDetail();"},{"lineNumber":243,"author":{"gitId":"-"},"content":" this.currentRepo \u003d newRepoString;"},{"lineNumber":244,"author":{"gitId":"-"},"content":" })"},{"lineNumber":245,"author":{"gitId":"-"},"content":" .catch((error) \u003d\u003e {"},{"lineNumber":246,"author":{"gitId":"-"},"content":" this.openChangeRepoDialog();"},{"lineNumber":247,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":248,"author":{"gitId":"-"},"content":" });"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }"},{"lineNumber":250,"author":{"gitId":"-"},"content":""},{"lineNumber":251,"author":{"gitId":"-"},"content":" openChangeRepoDialog() {"},{"lineNumber":252,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openChangeRepoDialog(this.currentRepo);"},{"lineNumber":253,"author":{"gitId":"-"},"content":""},{"lineNumber":254,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":255,"author":{"gitId":"-"},"content":" if (!res) {"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }"},{"lineNumber":258,"author":{"gitId":"-"},"content":" const newRepo \u003d Repo.of(res);"},{"lineNumber":259,"author":{"gitId":"-"},"content":""},{"lineNumber":260,"author":{"gitId":"-"},"content":" if (this.phaseService.isRepoSet()) {"},{"lineNumber":261,"author":{"gitId":"-"},"content":" this.changeRepositoryIfValid(newRepo, newRepo.toString());"},{"lineNumber":262,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":263,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":264,"author":{"gitId":"-"},"content":" * From session-selection.component.ts"},{"lineNumber":265,"author":{"gitId":"-"},"content":" *"},{"lineNumber":266,"author":{"gitId":"-"},"content":" * Persist repo information in local browser storage"},{"lineNumber":267,"author":{"gitId":"-"},"content":" * To retrieve after authentication redirects back to WATcher"},{"lineNumber":268,"author":{"gitId":"-"},"content":" *"},{"lineNumber":269,"author":{"gitId":"-"},"content":" * Since localStorage::setItem with an undefined value can result in"},{"lineNumber":270,"author":{"gitId":"-"},"content":" * the subsequent value being stored as a string being \u0027undefined\u0027, check"},{"lineNumber":271,"author":{"gitId":"-"},"content":" * if undefined before storing it. Let\u0027s reset the items before setting them."},{"lineNumber":272,"author":{"gitId":"-"},"content":" */"},{"lineNumber":273,"author":{"gitId":"-"},"content":" window.localStorage.removeItem(STORAGE_KEYS.ORG);"},{"lineNumber":274,"author":{"gitId":"-"},"content":" window.localStorage.removeItem(STORAGE_KEYS.DATA_REPO);"},{"lineNumber":275,"author":{"gitId":"-"},"content":""},{"lineNumber":276,"author":{"gitId":"-"},"content":" if (newRepo) {"},{"lineNumber":277,"author":{"gitId":"-"},"content":" window.localStorage.setItem(STORAGE_KEYS.ORG, newRepo.owner);"},{"lineNumber":278,"author":{"gitId":"-"},"content":" window.localStorage.setItem(STORAGE_KEYS.DATA_REPO, newRepo.name);"},{"lineNumber":279,"author":{"gitId":"-"},"content":""},{"lineNumber":280,"author":{"gitId":"-"},"content":" this.repoUrlCacheService.cache(newRepo.toString());"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }"},{"lineNumber":282,"author":{"gitId":"-"},"content":" this.auth.setRepo().subscribe();"},{"lineNumber":283,"author":{"gitId":"-"},"content":" }"},{"lineNumber":284,"author":{"gitId":"-"},"content":" });"},{"lineNumber":285,"author":{"gitId":"-"},"content":" }"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":4,"Arif-Khalid":6,"-":276}},{"path":"tests/app/auth/login/login.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { ComponentFixture, TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { LoginComponent } from \u0027../../../../src/app/auth/login/login.component\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { AuthService, AuthState } from \u0027../../../../src/app/core/services/auth.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../../../src/app/core/services/logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"describe(\u0027LoginComponent\u0027, () \u003d\u003e {"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" let authServiceSpy: jasmine.SpyObj\u003cAuthService\u003e;"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" let errorHandlingServiceSpy: jasmine.SpyObj\u003cErrorHandlingService\u003e;"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" let loggingServiceSpy: jasmine.SpyObj\u003cLoggingService\u003e;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" let component: LoginComponent;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" let fixture: ComponentFixture\u003cLoginComponent\u003e;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":" beforeEach("},{"lineNumber":15,"author":{"gitId":"-"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" authServiceSpy \u003d jasmine.createSpyObj\u003cAuthService\u003e(\u0027AuthService\u0027, [\u0027startOAuthProcess\u0027, \u0027changeAuthState\u0027]);"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" loggingServiceSpy \u003d jasmine.createSpyObj\u003cLoggingService\u003e(\u0027LoggingService\u0027, [\u0027info\u0027]);"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" errorHandlingServiceSpy \u003d jasmine.createSpyObj\u003cErrorHandlingService\u003e(\u0027ErrorHandlingService\u0027, [\u0027handleError\u0027]);"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" TestBed.configureTestingModule({"},{"lineNumber":21,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" { provide: AuthService, useValue: authServiceSpy },"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" { provide: LoggingService, useValue: loggingServiceSpy },"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" { provide: ErrorHandlingService, useValue: errorHandlingServiceSpy }"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":26,"author":{"gitId":"-"},"content":" declarations: [LoginComponent]"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }).compileComponents();"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" fixture \u003d TestBed.createComponent(LoginComponent);"},{"lineNumber":30,"author":{"gitId":"-"},"content":" component \u003d fixture.componentInstance;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" })"},{"lineNumber":33,"author":{"gitId":"-"},"content":" );"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" it(\u0027should create\u0027, () \u003d\u003e {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" expect(component).toBeTruthy();"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" it(\u0027startPublicOnlyLoginProcess should call startLoginProcess with false\u0027, () \u003d\u003e {"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" spyOn(component, \u0027startLoginProcess\u0027);"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" component.startPublicOnlyLoginProcess();"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" expect(component.startLoginProcess).toHaveBeenCalledWith(false);"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" it(\u0027startIncludePrivateLoginProcess should call startLoginProcess with true\u0027, () \u003d\u003e {"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" spyOn(component, \u0027startLoginProcess\u0027);"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" component.startIncludePrivateLoginProcess();"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" expect(component.startLoginProcess).toHaveBeenCalledWith(true);"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should call authService.startOAuthProcess on startLoginProcess\u0027, () \u003d\u003e {"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" const hasPrivateConsent \u003d false;"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" component.startLoginProcess(hasPrivateConsent);"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" expect(authServiceSpy.startOAuthProcess).toHaveBeenCalledWith(hasPrivateConsent);"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" expect(loggingServiceSpy.info).toHaveBeenCalledWith(\u0027LoginComponent: Beginning login process\u0027);"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should call error handling methods when error is thrown\u0027, () \u003d\u003e {"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" const hasPrivateConsent \u003d false;"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" const errorMessage \u003d \u0027Error!\u0027;"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" const error: Error \u003d new Error(errorMessage);"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" authServiceSpy.startOAuthProcess.and.throwError(error);"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" component.startLoginProcess(hasPrivateConsent);"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" expect(authServiceSpy.changeAuthState).toHaveBeenCalledWith(AuthState.NotAuthenticated);"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" expect(errorHandlingServiceSpy.handleError).toHaveBeenCalledWith(error);"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" expect(loggingServiceSpy.info.calls.allArgs()).toEqual(["},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" [\u0027LoginComponent: Beginning login process\u0027],"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" [`LoginComponent: Login process failed with an error: ${error}`]"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" ]);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" });"},{"lineNumber":80,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":49,"-":31}},{"path":"tests/app/core/models/session-model.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"import { Phase } from \u0027../../../../src/app/core/models/phase.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" assertSessionDataIntegrity,"},{"lineNumber":5,"author":{"gitId":"-"},"content":" NO_VALID_OPEN_PHASES,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" OPENED_PHASE_REPO_UNDEFINED,"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" SESSION_DATA_MISSING_FIELDS,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" SESSION_DATA_UNAVAILABLE"},{"lineNumber":9,"author":{"gitId":"-"},"content":"} from \u0027../../../../src/app/core/models/session.model\u0027;"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import { VALID_SESSION_DATA, WATCHER_REPO } from \u0027../../../constants/session.constants\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"describe(\u0027Session Model\u0027, () \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" describe(\u0027assertSessionDataIntegrity()\u0027, () \u003d\u003e {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" it(\u0027should throw error on unavailable session\u0027, () \u003d\u003e {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" of(undefined)"},{"lineNumber":16,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":17,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":19,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_UNAVAILABLE))"},{"lineNumber":20,"author":{"gitId":"-"},"content":" });"},{"lineNumber":21,"author":{"gitId":"-"},"content":" });"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should throw error on session data with invalid session\u0027, () \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: null })"},{"lineNumber":25,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":27,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_MISSING_FIELDS))"},{"lineNumber":29,"author":{"gitId":"-"},"content":" });"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [] })"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" .subscribe({"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_MISSING_FIELDS))"},{"lineNumber":35,"author":{"gitId":"-"},"content":" });"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: \u0027repo\u0027 })"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":39,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_MISSING_FIELDS))"},{"lineNumber":41,"author":{"gitId":"-"},"content":" });"},{"lineNumber":42,"author":{"gitId":"-"},"content":" });"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should throw error on session with invalid phases\u0027, () \u003d\u003e {"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: \u0027invalidPhase\u0027 as Phase, repos: [WATCHER_REPO] }] })"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":48,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":49,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(NO_VALID_OPEN_PHASES))"},{"lineNumber":50,"author":{"gitId":"-"},"content":" });"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should throw error on session data with invalid repo\u0027, () \u003d\u003e {"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: Phase.issuesViewer, repo: undefined }] })"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":57,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":58,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":59,"author":{"gitId":"-"},"content":" });"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: Phase.issuesViewer, repo: null }] })"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":63,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":64,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":65,"author":{"gitId":"-"},"content":" });"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: Phase.issuesViewer, repo: \u0027\u0027 }] })"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":69,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":70,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":71,"author":{"gitId":"-"},"content":" });"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: Phase.issuesViewer, repo: [] }] })"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":77,"author":{"gitId":"-"},"content":" });"},{"lineNumber":78,"author":{"gitId":"-"},"content":" });"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should pass for valid session data\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" of(VALID_SESSION_DATA)"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" .subscribe((el) \u003d\u003e expect(el).toEqual(VALID_SESSION_DATA));"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"-"},"content":" });"},{"lineNumber":86,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":25,"-":61}},{"path":"tests/app/shared/issue-tables/issue-paginator.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { paginateData } from \u0027../../../../src/app/shared/issue-tables/issue-paginator\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY"},{"lineNumber":9,"author":{"gitId":"-"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"describe(\u0027issue-paginator\u0027, () \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" describe(\u0027paginateData()\u0027, () \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" let dataSet_7: Issue[];"},{"lineNumber":14,"author":{"gitId":"-"},"content":" let paginator: MatPaginator;"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" const mediumSeverityIssueWithResponse: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" const mediumSeverityIssueWithAssigneee: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_ASSIGNEES);"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" const lowSeverityFeatureFlawIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY);"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" const highSeverityDocumentationBugIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY);"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" dataSet_7 \u003d ["},{"lineNumber":22,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" highSeverityDocumentationBugIssue"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":30,"author":{"gitId":"-"},"content":" paginator \u003d { pageSize: 3 } as MatPaginator;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" });"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" it(\u0027should set the length of paginator to the length of data\u0027, () \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" paginateData(paginator, dataSet_7);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expect(paginator.length).toEqual(7);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" });"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" it(\u0027should return list of issues according to page index\u0027, () \u003d\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" paginator.pageIndex \u003d 0;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" // Returns issues index 0 to 2"},{"lineNumber":42,"author":{"gitId":"-"},"content":" const returnedList \u003d paginateData(paginator, dataSet_7);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" expect(returnedList).toEqual([mediumSeverityIssueWithResponse, mediumSeverityIssueWithAssigneee, lowSeverityFeatureFlawIssue]);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" });"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" it(\u0027should return list of issues in the previous page if there are no issues on the current page\u0027, () \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" paginator.pageIndex \u003d 3;"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Returns issues index 6 on page 2"},{"lineNumber":50,"author":{"gitId":"-"},"content":" const returnedList \u003d paginateData(paginator, dataSet_7);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" expect(returnedList).toEqual([highSeverityDocumentationBugIssue]);"},{"lineNumber":52,"author":{"gitId":"-"},"content":" });"},{"lineNumber":53,"author":{"gitId":"-"},"content":" });"},{"lineNumber":54,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":4,"-":50}},{"path":"tests/app/shared/issue-tables/issue-sorter.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { getSortedData } from \u0027../../../../src/app/shared/issue-tables/issue-sorter\u0027;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import {"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" ISSUE_UPDATED_EARLIER,"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" ISSUE_UPDATED_LATER,"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"describe(\u0027issuer-sorter\u0027, () \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" describe(\u0027getSortedData()\u0027, () \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" const dummyIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" const otherDummyIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_ASSIGNEES);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" const issuesList: Issue[] \u003d [dummyIssue, otherDummyIssue];"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" const issueUpdatedEarlier: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_UPDATED_EARLIER);"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" const issueUpdatedLater: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_UPDATED_LATER);"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" const issuesWithDifferentUpdatedDate: Issue[] \u003d [issueUpdatedEarlier, issueUpdatedLater];"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" const matSort: MatSort \u003d new MatSort();"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should return the same data if sort.active is not set\u0027, () \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" const sortedData \u003d getSortedData(matSort, issuesList);"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" expect(sortedData).toEqual(issuesList);"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their assignees correctly\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027assignees\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" const sortedIssuesByAssigneesAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByAssigneesAsc, dummyIssue, otherDummyIssue);"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" const sortedIssuesByAssigneesDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByAssigneesDesc, otherDummyIssue, dummyIssue);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their string fields correctly\u0027, () \u003d\u003e {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027title\u0027;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":" const sortedIssuesByTitleAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTitleAsc, dummyIssue, otherDummyIssue);"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" const sortedIssuesByTitleDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTitleDesc, otherDummyIssue, dummyIssue);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" });"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" it(\u0027sorts issues based on their id fields correctly\u0027, () \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027id\u0027;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" const sortedIssuedByIdAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuedByIdAsc, otherDummyIssue, dummyIssue);"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" const sortedIssuedByIdDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuedByIdDesc, dummyIssue, otherDummyIssue);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" });"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" it(\u0027sorts issues based on their updated date fields correctly\u0027, () \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" matSort.active \u003d \u0027date\u0027;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" const sortedIssuedByDateAsc \u003d getSortedData(matSort, issuesWithDifferentUpdatedDate);"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" assertOrder(sortedIssuedByDateAsc, issueUpdatedEarlier, issueUpdatedLater);"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" const sortedIssuedByDateDesc \u003d getSortedData(matSort, issuesWithDifferentUpdatedDate);"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" assertOrder(sortedIssuedByDateDesc, issueUpdatedLater, issueUpdatedEarlier);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" });"},{"lineNumber":72,"author":{"gitId":"-"},"content":" });"},{"lineNumber":73,"author":{"gitId":"-"},"content":"});"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * This helper method helps to check if the sorted issues are in their"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * correct order based on the variable arguments provided."},{"lineNumber":78,"author":{"gitId":"-"},"content":" */"},{"lineNumber":79,"author":{"gitId":"-"},"content":"function assertOrder(sortedIssues: Issue[], ...expectedSortedIssues: Issue[]) {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c sortedIssues.length; i++) {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expect(sortedIssues[i].id).toBe(expectedSortedIssues[i].id);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"NereusWB922":25,"-":58}},{"path":"tests/app/shared/issue-tables/search-filter.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../../../../src/app/shared/issue-tables/issue-tables-columns\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027../../../../src/app/shared/issue-tables/search-filter\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { USER_ANUBHAV } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY"},{"lineNumber":11,"author":{"gitId":"-"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import { GITHUB_LABEL_FEATURE_FLAW } from \u0027../../../constants/githublabel.constants\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"describe(\u0027search-filter\u0027, () \u003d\u003e {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" describe(\u0027applySearchFilter()\u0027, () \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" let searchKey: string;"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" const mediumSeverityIssueWithResponse: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" const mediumSeverityIssueWithAssigneee: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_ASSIGNEES);"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" const lowSeverityFeatureFlawIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY);"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" const highSeverityDocumentationBugIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY);"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" const issuesList: Issue[] \u003d ["},{"lineNumber":23,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" highSeverityDocumentationBugIssue"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" const displayedColumns: string[] \u003d [TABLE_COLUMNS.ID, TABLE_COLUMNS.TITLE, TABLE_COLUMNS.ASSIGNEE, TABLE_COLUMNS.LABEL];"},{"lineNumber":29,"author":{"gitId":"-"},"content":" const issueService: IssueService \u003d new IssueService(null, null, null);"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues which are assigned to a specific user\u0027, () \u003d\u003e {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" searchKey \u003d USER_ANUBHAV.loginId;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" });"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" it(\u0027can filter for issues using label\u0027, () \u003d\u003e {"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" searchKey \u003d GITHUB_LABEL_FEATURE_FLAW.name;"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([lowSeverityFeatureFlawIssue]);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues that contain the search key in any other column\u0027, () \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Search by id of issue"},{"lineNumber":43,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithResponse.id.toString();"},{"lineNumber":44,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithResponse]);"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Search by title of issue"},{"lineNumber":47,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithAssigneee.title;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" });"},{"lineNumber":50,"author":{"gitId":"-"},"content":" });"},{"lineNumber":51,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":9,"-":42}},{"path":"tests/constants/data.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { UserRole } from \u0027../../src/app/core/models/user.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export const csvString \u003d"},{"lineNumber":4,"author":{"gitId":"-"},"content":" `"},{"lineNumber":5,"author":{"gitId":"-"},"content":"role,name,team"},{"lineNumber":6,"author":{"gitId":"-"},"content":"student,JunWei96,CS2103T-W12-3"},{"lineNumber":7,"author":{"gitId":"-"},"content":"admin,damithc,"},{"lineNumber":8,"author":{"gitId":"-"},"content":"tutor,anubh-v,CS2103T-W12-3"},{"lineNumber":9,"author":{"gitId":"-"},"content":"admin,geshuming,"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"tutor,jj-lim,CS2103T-W12-3"},{"lineNumber":12,"author":{"gitId":"-"},"content":"tutor,jj-lim,CS2103T-W12-3"},{"lineNumber":13,"author":{"gitId":"-"},"content":"tutor,jj-lim,CS2103T-W12-4"},{"lineNumber":14,"author":{"gitId":"-"},"content":"tutor,q ,CS2103T-W12-4"},{"lineNumber":15,"author":{"gitId":"-"},"content":"student,003-samuel,CS2103T-W12-3"},{"lineNumber":16,"author":{"gitId":"-"},"content":"student,damithc,CS2103T-W12-3"},{"lineNumber":17,"author":{"gitId":"-"},"content":"student,RonakLakhotia,CS2103T-W12-4"},{"lineNumber":18,"author":{"gitId":"-"},"content":"student,ptvrajsk,CS2103T-W12-3` + ` `;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"// jsonData is a json representation of csvString"},{"lineNumber":21,"author":{"gitId":"-"},"content":"export const jsonData \u003d {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" roles: {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" students: {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" junwei96: \u0027true\u0027,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u0027003-samuel\u0027: \u0027true\u0027,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" damithc: \u0027true\u0027,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ronaklakhotia: \u0027true\u0027,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ptvrajsk: \u0027true\u0027"},{"lineNumber":29,"author":{"gitId":"-"},"content":" },"},{"lineNumber":30,"author":{"gitId":"-"},"content":" tutors: { \u0027anubh-v\u0027: \u0027true\u0027, \u0027jj-lim\u0027: \u0027true\u0027, q: \u0027true\u0027 },"},{"lineNumber":31,"author":{"gitId":"-"},"content":" admins: { damithc: \u0027true\u0027, geshuming: \u0027true\u0027 }"},{"lineNumber":32,"author":{"gitId":"-"},"content":" },"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u0027team-structure\u0027: {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u0027CS2103T-W12-3\u0027: {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" junwei96: \u0027JunWei96\u0027,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u0027003-samuel\u0027: \u0027003-samuel\u0027,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" damithc: \u0027damithc\u0027,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ptvrajsk: \u0027ptvrajsk\u0027"},{"lineNumber":39,"author":{"gitId":"-"},"content":" },"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u0027CS2103T-W12-4\u0027: { ronaklakhotia: \u0027RonakLakhotia\u0027 }"},{"lineNumber":41,"author":{"gitId":"-"},"content":" },"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u0027students-allocation\u0027: {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" junwei96: { teamId: \u0027CS2103T-W12-3\u0027 },"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u0027003-samuel\u0027: { teamId: \u0027CS2103T-W12-3\u0027 },"},{"lineNumber":45,"author":{"gitId":"-"},"content":" damithc: { teamId: \u0027CS2103T-W12-3\u0027 },"},{"lineNumber":46,"author":{"gitId":"-"},"content":" ronaklakhotia: { teamId: \u0027CS2103T-W12-4\u0027 },"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ptvrajsk: { teamId: \u0027CS2103T-W12-3\u0027 }"},{"lineNumber":48,"author":{"gitId":"-"},"content":" },"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u0027tutors-allocation\u0027: {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0027anubh-v\u0027: { \u0027CS2103T-W12-3\u0027: \u0027true\u0027 },"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u0027jj-lim\u0027: { \u0027CS2103T-W12-3\u0027: \u0027true\u0027, \u0027CS2103T-W12-4\u0027: \u0027true\u0027 },"},{"lineNumber":52,"author":{"gitId":"-"},"content":" q: { \u0027CS2103T-W12-4\u0027: \u0027true\u0027 }"},{"lineNumber":53,"author":{"gitId":"-"},"content":" },"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u0027admins-allocation\u0027: { damithc: {}, geshuming: {} }"},{"lineNumber":55,"author":{"gitId":"-"},"content":"};"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":"export const USER_JUNWEI \u003d {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" loginId: \u0027JunWei96\u0027,"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" role: UserRole.Student"},{"lineNumber":60,"author":{"gitId":"-"},"content":"};"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":"export const USER_ANUBHAV \u003d {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" loginId: \u0027anubh-v\u0027,"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" role: UserRole.Student"},{"lineNumber":65,"author":{"gitId":"-"},"content":"};"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":"export const USER_Q \u003d {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" loginId: \u0027q\u0027,"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" role: UserRole.Tutor"},{"lineNumber":70,"author":{"gitId":"-"},"content":"};"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":"export const USER_SHUMING \u003d {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" loginId: \u0027geshuming\u0027,"},{"lineNumber":74,"author":{"gitId":"-"},"content":" role: UserRole.Admin,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" allocatedTeams: []"},{"lineNumber":76,"author":{"gitId":"-"},"content":"};"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":"export const USER_WITH_TWO_ROLES \u003d {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" loginId: \u0027damithc\u0027,"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" role: UserRole.Admin"},{"lineNumber":81,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"NereusWB922":4,"-":77}},{"path":"tests/constants/githubissue.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { IssueState, IssueStateReason } from \u0027../../graphql/graphql-types\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../../src/app/core/models/github/github-issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../../src/app/core/models/github/github-label.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { USER_ANUBHAV, USER_SHUMING } from \u0027./data.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { EMPTY_TEAM_RESPONSE, PENDING_TUTOR_MODERATION } from \u0027./githubcomment.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" GITHUB_LABEL_DOCUMENTATION_BUG,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" GITHUB_LABEL_FEATURE_FLAW,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" GITHUB_LABEL_FUNCTIONALITY_BUG,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GITHUB_LABEL_HIGH_SEVERITY,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" GITHUB_LABEL_LOW_SEVERITY,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GITHUB_LABEL_MEDIUM_SEVERITY,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" GITHUB_LABEL_TEAM_LABEL,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" GITHUB_LABEL_TUTORIAL_LABEL"},{"lineNumber":15,"author":{"gitId":"-"},"content":"} from \u0027./githublabel.constants\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"const randomId: () \u003d\u003e string \u003d () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return Math.floor(Math.random() * 1000000000).toString();"},{"lineNumber":19,"author":{"gitId":"-"},"content":"};"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"const randomIssueNumber: () \u003d\u003e number \u003d () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return Math.round(Math.random() * 1000);"},{"lineNumber":23,"author":{"gitId":"-"},"content":"};"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"const randomISODate: (startDate?: Date, endDate?: Date) \u003d\u003e string \u003d ("},{"lineNumber":26,"author":{"gitId":"-"},"content":" startDate: Date \u003d new Date(2020, 1, 1),"},{"lineNumber":27,"author":{"gitId":"-"},"content":" endDate: Date \u003d new Date()"},{"lineNumber":28,"author":{"gitId":"-"},"content":") \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return new Date(startDate.getTime() + Math.random() * (startDate.getTime() - endDate.getTime())).toISOString();"},{"lineNumber":30,"author":{"gitId":"-"},"content":"};"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"const USER_ANUBHAV_DETAILS \u003d {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" login: USER_ANUBHAV.loginId,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars1.githubusercontent.com/u/35621759?v\u003d4\u0027,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/anubh-v\u0027"},{"lineNumber":36,"author":{"gitId":"-"},"content":"};"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"const USER_ANUBHAV_ASSIGNEE_DETAILS \u003d {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" login: USER_ANUBHAV.loginId,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" id: 35621759,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/anubh-v\u0027"},{"lineNumber":42,"author":{"gitId":"-"},"content":"};"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":"const USER_SHUMING_DETAILS \u003d {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" login: USER_SHUMING.loginId,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars0.githubusercontent.com/u/43642522?v\u003d4\u0027,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/geshuming\u0027"},{"lineNumber":48,"author":{"gitId":"-"},"content":"};"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":"const USER_SHUMING_ASSIGNEE_DETAILS \u003d {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" login: \u0027geshuming\u0027,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" id: 43642522,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/geshuming\u0027"},{"lineNumber":54,"author":{"gitId":"-"},"content":"};"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"const ISSUE_BODY \u003d"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u0027# Issue Description\\n{original issue description}\\n\u0027 +"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \"# Team\u0027s Response\\n{team\u0027s response}\\n # Disputes\\n\\n\" +"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \"## :question: Issue Type\\n\\n### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n-------------------\\n## :question: Issue Severity\\n\\n\" +"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \"### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n-------------------\\n## :question: Not Related Question\\n\\n\" +"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \"### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n-------------------\\n\\n\";"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION \u003d new GithubIssue({"},{"lineNumber":67,"author":{"gitId":"-"},"content":" id: \u0027574085971\u0027,"},{"lineNumber":68,"author":{"gitId":"-"},"content":" number: 92,"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":70,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":71,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-02T16:19:02Z\u0027,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":74,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" title: \u0027App starts to lag when given large amount of input\u0027,"},{"lineNumber":77,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-13T13:37:32Z\u0027,"},{"lineNumber":78,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/92\u0027,"},{"lineNumber":79,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":80,"author":{"gitId":"-"},"content":"});"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":"export const ISSUE_UPDATED_EARLIER \u003d new GithubIssue({"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" id: \u0027000000001\u0027,"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" number: 1,"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" assignees: [],"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" comments: [],"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" body: \u0027\u0027,"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" created_at: \u00272020-09-02T16:19:02Z\u0027,"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" state: IssueState.Open,"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" title: \u0027App starts to lag when given large amount of input\u0027,"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" updated_at: \u00272020-09-03T13:37:32Z\u0027,"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/93\u0027,"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":"});"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"export const ISSUE_UPDATED_LATER \u003d new GithubIssue({"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" id: \u0027000000002\u0027,"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" number: 2,"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" assignees: [],"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" comments: [],"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" body: \u0027\u0027,"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" created_at: \u00272020-10-02T16:19:02Z\u0027,"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" state: IssueState.Open,"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" title: \u0027App starts to lag when given large amount of input\u0027,"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" updated_at: \u00272020-10-22T13:37:32Z\u0027,"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/94\u0027,"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":"});"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY \u003d new GithubIssue({"},{"lineNumber":115,"author":{"gitId":"-"},"content":" id: \u0027384830567\u0027,"},{"lineNumber":116,"author":{"gitId":"-"},"content":" number: 130,"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":118,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":119,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":120,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-02T16:19:02Z\u0027,"},{"lineNumber":121,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_LOW_SEVERITY],"},{"lineNumber":122,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":123,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":124,"author":{"gitId":"-"},"content":" title: \u0027App is sometimes slow\u0027,"},{"lineNumber":125,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-13T13:37:32Z\u0027,"},{"lineNumber":126,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":127,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":128,"author":{"gitId":"-"},"content":"});"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY \u003d new GithubIssue({"},{"lineNumber":131,"author":{"gitId":"-"},"content":" id: \u0027573957398\u0027,"},{"lineNumber":132,"author":{"gitId":"-"},"content":" number: 32,"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":134,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":135,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":136,"author":{"gitId":"-"},"content":" created_at: \u00272010-03-12T19:12:02Z\u0027,"},{"lineNumber":137,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":138,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":139,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":140,"author":{"gitId":"-"},"content":" title: \u0027Too many typos\u0027,"},{"lineNumber":141,"author":{"gitId":"-"},"content":" updated_at: \u00272012-03-12T19:12:02Z\u0027,"},{"lineNumber":142,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":143,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":144,"author":{"gitId":"-"},"content":"});"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":"export const DUPLICATED_ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY \u003d new GithubIssue({"},{"lineNumber":147,"author":{"gitId":"-"},"content":" id: \u0027573957399\u0027,"},{"lineNumber":148,"author":{"gitId":"-"},"content":" number: 33,"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":150,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":151,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":152,"author":{"gitId":"-"},"content":" created_at: \u00272010-04-12T19:12:02Z\u0027,"},{"lineNumber":153,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":154,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":155,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":156,"author":{"gitId":"-"},"content":" title: \u0027Too many typos 2\u0027,"},{"lineNumber":157,"author":{"gitId":"-"},"content":" updated_at: \u00272012-04-12T19:12:02Z\u0027,"},{"lineNumber":158,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":159,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":160,"author":{"gitId":"-"},"content":"});"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_ASSIGNEES \u003d new GithubIssue({"},{"lineNumber":163,"author":{"gitId":"-"},"content":" id: \u0027551732011\u0027,"},{"lineNumber":164,"author":{"gitId":"-"},"content":" number: 91,"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assignees: [USER_ANUBHAV_ASSIGNEE_DETAILS],"},{"lineNumber":166,"author":{"gitId":"-"},"content":" body: \u0027Screen freezes every few minutes\u0027,"},{"lineNumber":167,"author":{"gitId":"-"},"content":" created_at: \u00272020-01-18T07:01:45Z\u0027,"},{"lineNumber":168,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":169,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":170,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":171,"author":{"gitId":"-"},"content":" title: \u0027Screen freezes\u0027,"},{"lineNumber":172,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-02T12:50:02Z\u0027,"},{"lineNumber":173,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/91\u0027,"},{"lineNumber":174,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS,"},{"lineNumber":175,"author":{"gitId":"-"},"content":" comments: [EMPTY_TEAM_RESPONSE]"},{"lineNumber":176,"author":{"gitId":"-"},"content":"});"},{"lineNumber":177,"author":{"gitId":"-"},"content":""},{"lineNumber":178,"author":{"gitId":"-"},"content":"export const generateIssueWithRandomData: () \u003d\u003e GithubIssue \u003d () \u003d\u003e {"},{"lineNumber":179,"author":{"gitId":"-"},"content":" const created_and_updated_date: string \u003d randomISODate();"},{"lineNumber":180,"author":{"gitId":"-"},"content":" const issueNumber: number \u003d randomIssueNumber();"},{"lineNumber":181,"author":{"gitId":"-"},"content":" const severityLabels: GithubLabel[] \u003d [GITHUB_LABEL_LOW_SEVERITY, GITHUB_LABEL_MEDIUM_SEVERITY, GITHUB_LABEL_HIGH_SEVERITY];"},{"lineNumber":182,"author":{"gitId":"-"},"content":" const typeLabels: GithubLabel[] \u003d [GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_DOCUMENTATION_BUG];"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return new GithubIssue({"},{"lineNumber":184,"author":{"gitId":"-"},"content":" id: randomId(),"},{"lineNumber":185,"author":{"gitId":"-"},"content":" number: issueNumber,"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":187,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":188,"author":{"gitId":"-"},"content":" body: `Issue No.: ${issueNumber}\\nSample Content.`,"},{"lineNumber":189,"author":{"gitId":"-"},"content":" created_at: created_and_updated_date,"},{"lineNumber":190,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, typeLabels[issueNumber % 3], severityLabels[issueNumber % 3]],"},{"lineNumber":191,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":192,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":193,"author":{"gitId":"-"},"content":" title: `Random Issue: ${issueNumber}`,"},{"lineNumber":194,"author":{"gitId":"-"},"content":" updated_at: created_and_updated_date,"},{"lineNumber":195,"author":{"gitId":"-"},"content":" url: `https://api.github.com/repos/CATcher-org/pe-results/issues/${issueNumber}`,"},{"lineNumber":196,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":197,"author":{"gitId":"-"},"content":" });"},{"lineNumber":198,"author":{"gitId":"-"},"content":"};"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION \u003d new GithubIssue({"},{"lineNumber":201,"author":{"gitId":"-"},"content":" id: \u0027574674360\u0027,"},{"lineNumber":202,"author":{"gitId":"-"},"content":" number: 26,"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":204,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":205,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-03T13:38:32Z\u0027,"},{"lineNumber":206,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":207,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":208,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":209,"author":{"gitId":"-"},"content":" title: \u0027Basic Issue, Three Disputes, Unsure\u0027,"},{"lineNumber":210,"author":{"gitId":"-"},"content":" updated_at: \u00272020-08-15T06:39:40Z\u0027,"},{"lineNumber":211,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":212,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":213,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":214,"author":{"gitId":"-"},"content":"});"},{"lineNumber":215,"author":{"gitId":"-"},"content":""},{"lineNumber":216,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION_HIGH_SEVERITY_FEATURE_FLAW \u003d new GithubIssue({"},{"lineNumber":217,"author":{"gitId":"-"},"content":" id: \u0027239538360\u0027,"},{"lineNumber":218,"author":{"gitId":"-"},"content":" number: 93,"},{"lineNumber":219,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":220,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":221,"author":{"gitId":"-"},"content":" created_at: \u00272020-10-14T10:28:32Z\u0027,"},{"lineNumber":222,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":223,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":224,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":225,"author":{"gitId":"-"},"content":" title: \u0027Redundant buggy feature\u0027,"},{"lineNumber":226,"author":{"gitId":"-"},"content":" updated_at: \u00272020-11-25T13:19:40Z\u0027,"},{"lineNumber":227,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":228,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":229,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":230,"author":{"gitId":"-"},"content":"});"},{"lineNumber":231,"author":{"gitId":"-"},"content":""},{"lineNumber":232,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION_LOW_SEVERITY_DOCUMENTATION_BUG \u003d new GithubIssue({"},{"lineNumber":233,"author":{"gitId":"-"},"content":" id: \u0027384756360\u0027,"},{"lineNumber":234,"author":{"gitId":"-"},"content":" number: 6,"},{"lineNumber":235,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":236,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":237,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-26T09:08:12Z\u0027,"},{"lineNumber":238,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_LOW_SEVERITY],"},{"lineNumber":239,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":240,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":241,"author":{"gitId":"-"},"content":" title: \u0027Documentation bug, too many typos\u0027,"},{"lineNumber":242,"author":{"gitId":"-"},"content":" updated_at: \u00272020-11-10T16:59:40Z\u0027,"},{"lineNumber":243,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":244,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":245,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":246,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":32,"-":214}},{"path":"tests/constants/githublabel.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../../src/app/core/models/github/github-label.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_FUNCTIONALITY_BUG \u003d {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" color: \u00279900cc\u0027,"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" name: \u0027type.FunctionalityBug\u0027"},{"lineNumber":6,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_FEATURE_FLAW \u003d {"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" color: \u0027d966ff\u0027,"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" name: \u0027type.FeatureFlaw\u0027"},{"lineNumber":11,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_DOCUMENTATION_BUG \u003d {"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" color: \u0027d966ff\u0027,"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" name: \u0027type.DocumentationBug\u0027"},{"lineNumber":16,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_LOW_SEVERITY \u003d {"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" color: \u0027ffcccc\u0027,"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" name: \u0027severity.Low\u0027"},{"lineNumber":21,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_HIGH_SEVERITY \u003d {"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" color: \u0027ff6666\u0027,"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" name: \u0027severity.High\u0027"},{"lineNumber":26,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_MEDIUM_SEVERITY \u003d {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" color: \u0027ff9999\u0027,"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" name: \u0027severity.Medium\u0027"},{"lineNumber":31,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_TUTORIAL_LABEL \u003d {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" color: \u0027c2e0c6\u0027,"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" name: \u0027tutorial.CS2103T-W12\u0027"},{"lineNumber":36,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_TEAM_LABEL \u003d {"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" color: \u0027d4c5f9\u0027,"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" name: \u0027team.3\u0027"},{"lineNumber":41,"author":{"gitId":"-"},"content":"} as GithubLabel;"}],"authorContributionMap":{"NereusWB922":13,"-":28}},{"path":"tests/constants/label.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"// Label name constants"},{"lineNumber":2,"author":{"gitId":"-"},"content":"export const SEVERITY_VERY_LOW \u003d \u0027Very Low\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"export const SEVERITY_LOW \u003d \u0027Low\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"export const SEVERITY_MEDIUM \u003d \u0027Medium\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"export const SEVERITY_HIGH \u003d \u0027High\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"// Label category constants"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"export const CATEGORY_SEVERITY \u003d \u0027severity\u0027;"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"// Label name constants"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"export const LABEL_NAME_SEVERITY_VERY_LOW \u003d CATEGORY_SEVERITY + \u0027.\u0027 + SEVERITY_VERY_LOW;"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"export const LABEL_NAME_SEVERITY_LOW \u003d CATEGORY_SEVERITY + \u0027.\u0027 + SEVERITY_LOW;"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"export const LABEL_NAME_SEVERITY_MEDIUM \u003d CATEGORY_SEVERITY + \u0027.\u0027 + SEVERITY_MEDIUM;"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"export const LABEL_NAME_SEVERITY_HIGH \u003d CATEGORY_SEVERITY + \u0027.\u0027 + SEVERITY_HIGH;"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"// Label definition constants"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"export const DEFINITION_SEVERITY_VERY_LOW \u003d"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cp\u003eA flaw that is \u003cmark\u003epurely cosmetic\u003c/mark\u003e and \u003cmark\u003edoes not affect usage\u003c/mark\u003e. For example, \u0027 +"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cul\u003e\u0027 +"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cli\u003etypo issues\u003c/li\u003e\u0027 +"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cli\u003espacing issues\u003c/li\u003e\u0027 +"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cli\u003elayout issues\u003c/li\u003e\u0027 +"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cli\u003ecolor issues\u003c/li\u003e\u0027 +"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cli\u003efont issues\u003c/li\u003e\u0027 +"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003c/ul\u003e\u0027 +"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" \"in the docs or the UI that doesn\u0027t affect usage.\u003c/p\u003e\";"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"export const DEFINITION_SEVERITY_LOW \u003d"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cp\u003eA flaw that is unlikely to affect normal operations of the product. \u0027 +"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" \u0027Appears only in very rare situations and causes a minor inconvenience only.\u003c/p\u003e\u0027;"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"export const DEFINITION_SEVERITY_MEDIUM \u003d"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cp\u003eA flaw that causes occasional inconvenience to some users but they can \u0027 + \u0027continue to use the product.\u003c/p\u003e\u0027;"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"export const DEFINITION_SEVERITY_HIGH \u003d"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cp\u003eA flaw that affects most users and causes major problems for users.\u0027 + \u0027i.e., makes the product almost unusable for most users.\u003c/p\u003e\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"// Label color constants"},{"lineNumber":36,"author":{"gitId":"-"},"content":"export const COLOR_BLACK \u003d \u0027000000\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"export const COLOR_WHITE \u003d \u0027ffffff\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_VERY_LOW \u003d \u0027ffe0e0\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_LOW \u003d \u0027ffcccc\u0027;"},{"lineNumber":40,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_MEDIUM \u003d \u0027ff9999\u0027;"},{"lineNumber":41,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_HIGH \u003d \u0027ff6666\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":"// CSS style constants"},{"lineNumber":44,"author":{"gitId":"-"},"content":"export const DARK_BG_LIGHT_TEXT \u003d {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_BLACK}`,"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" color: `#${COLOR_WHITE}`"},{"lineNumber":47,"author":{"gitId":"-"},"content":"};"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":"export const LIGHT_BG_DARK_TEXT \u003d {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_WHITE}`,"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" color: `#${COLOR_BLACK}`"},{"lineNumber":52,"author":{"gitId":"-"},"content":"};"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":"// Constant array of labels for team response phase and moderation phase to simulate Github response"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"export const SEVERITY_LABELS \u003d ["},{"lineNumber":56,"author":{"gitId":"-"},"content":" {"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" name: LABEL_NAME_SEVERITY_VERY_LOW,"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" color: COLOR_SEVERITY_VERY_LOW,"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" definition: DEFINITION_SEVERITY_VERY_LOW"},{"lineNumber":60,"author":{"gitId":"-"},"content":" },"},{"lineNumber":61,"author":{"gitId":"-"},"content":" {"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" name: LABEL_NAME_SEVERITY_LOW,"},{"lineNumber":63,"author":{"gitId":"-"},"content":" color: COLOR_SEVERITY_LOW,"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" definition: DEFINITION_SEVERITY_LOW"},{"lineNumber":65,"author":{"gitId":"-"},"content":" },"},{"lineNumber":66,"author":{"gitId":"-"},"content":" {"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" name: LABEL_NAME_SEVERITY_MEDIUM,"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" color: COLOR_SEVERITY_MEDIUM,"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" definition: DEFINITION_SEVERITY_MEDIUM"},{"lineNumber":70,"author":{"gitId":"-"},"content":" },"},{"lineNumber":71,"author":{"gitId":"-"},"content":" {"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" name: LABEL_NAME_SEVERITY_HIGH,"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" color: COLOR_SEVERITY_HIGH,"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" definition: DEFINITION_SEVERITY_HIGH"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":"];"}],"authorContributionMap":{"NereusWB922":40,"-":36}},{"path":"tests/constants/session.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../src/app/core/models/phase.model\u0027;"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"import { Repo } from \u0027../../src/app/core/models/repo.model\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { SessionData, SessionRepo } from \u0027../../src/app/core/models/session.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"export const WATCHER_REPO: Repo \u003d Repo.of(\u0027CATcher-org/WATcher\u0027);"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"const ISSUES_VIEWER_SESSION_REPO: SessionRepo \u003d {"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" phase: Phase.issuesViewer,"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" repos: [WATCHER_REPO]"},{"lineNumber":10,"author":{"gitId":"-"},"content":"};"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"const ACTIVITY_DASHBOARD_SESSION_REPO: SessionRepo \u003d {"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" phase: Phase.activityDashboard,"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" repos: [WATCHER_REPO]"},{"lineNumber":15,"author":{"gitId":"-"},"content":"};"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"export const VALID_SESSION_DATA: SessionData \u003d {"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" sessionRepo: [ISSUES_VIEWER_SESSION_REPO, ACTIVITY_DASHBOARD_SESSION_REPO]"},{"lineNumber":19,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"NereusWB922":11,"-":8}},{"path":"tests/services/label.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Label } from \u0027../../src/app/core/models/label.model\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { GithubService } from \u0027../../src/app/core/services/github.service\u0027;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import { LabelService } from \u0027../../src/app/core/services/label.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import * as LabelConstant from \u0027../constants/label.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"let labelService: LabelService;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"let labelList: Label[];"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"let githubServiceSpy: jasmine.SpyObj\u003cGithubService\u003e;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"describe(\u0027LabelService: fetchLabels()\u0027, () \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" githubServiceSpy \u003d jasmine.createSpyObj(\u0027GithubService\u0027, [\u0027fetchAllLabels\u0027]);"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" labelService \u003d new LabelService(githubServiceSpy);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" });"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should fetch labels successfully\u0027, () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" const mockLabels \u003d LabelConstant.SEVERITY_LABELS;"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" const parsedLabels \u003d labelService.parseLabelData(mockLabels);"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" githubServiceSpy.fetchAllLabels.and.returnValue(of(mockLabels));"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" labelService.fetchLabels().subscribe((response) \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" expect(response).toEqual(mockLabels);"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" expect(labelService.labels).toEqual(parsedLabels);"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" expect(labelService.simpleLabels).toEqual(parsedLabels);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" });"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" expect(githubServiceSpy.fetchAllLabels).toHaveBeenCalled();"},{"lineNumber":30,"author":{"gitId":"-"},"content":" });"},{"lineNumber":31,"author":{"gitId":"-"},"content":"});"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: parseLabelData()\u0027, () \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" beforeAll(() \u003d\u003e {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" labelList \u003d labelService.parseLabelData(LabelConstant.SEVERITY_LABELS);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" afterAll(() \u003d\u003e {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" });"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should be severity very low label\u0027, () \u003d\u003e {"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[0].name).toBe(LabelConstant.LABEL_NAME_SEVERITY_VERY_LOW);"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[0].color).toBe(LabelConstant.COLOR_SEVERITY_VERY_LOW);"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[0].definition).toBe(LabelConstant.DEFINITION_SEVERITY_VERY_LOW);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" });"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should be severity low label\u0027, () \u003d\u003e {"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[1].name).toBe(LabelConstant.LABEL_NAME_SEVERITY_LOW);"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[1].color).toBe(LabelConstant.COLOR_SEVERITY_LOW);"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[1].definition).toBe(LabelConstant.DEFINITION_SEVERITY_LOW);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" });"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should be severity medium label\u0027, () \u003d\u003e {"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[2].name).toBe(LabelConstant.LABEL_NAME_SEVERITY_MEDIUM);"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[2].color).toBe(LabelConstant.COLOR_SEVERITY_MEDIUM);"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[2].definition).toBe(LabelConstant.DEFINITION_SEVERITY_MEDIUM);"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should be severity high label\u0027, () \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[3].name).toBe(LabelConstant.LABEL_NAME_SEVERITY_HIGH);"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[3].color).toBe(LabelConstant.COLOR_SEVERITY_HIGH);"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[3].definition).toBe(LabelConstant.DEFINITION_SEVERITY_HIGH);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" });"},{"lineNumber":66,"author":{"gitId":"-"},"content":"});"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: isDarkColor()\u0027, () \u003d\u003e {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" });"},{"lineNumber":72,"author":{"gitId":"-"},"content":""},{"lineNumber":73,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" });"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" it(\u0027should be true for dark color\u0027, () \u003d\u003e {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" expect(labelService.isDarkColor(LabelConstant.COLOR_BLACK)).toBeTruthy();"},{"lineNumber":79,"author":{"gitId":"-"},"content":" });"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" it(\u0027should be false for light color\u0027, () \u003d\u003e {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" expect(labelService.isDarkColor(LabelConstant.COLOR_WHITE)).toBeFalsy();"},{"lineNumber":83,"author":{"gitId":"-"},"content":" });"},{"lineNumber":84,"author":{"gitId":"-"},"content":"});"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: setLabelStyle()\u0027, () \u003d\u003e {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" });"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":93,"author":{"gitId":"-"},"content":" });"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" it(\u0027should be dark color background with light color text\u0027, () \u003d\u003e {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_BLACK)).toEqual(LabelConstant.DARK_BG_LIGHT_TEXT);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" });"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" it(\u0027should be light color background with dark color text\u0027, () \u003d\u003e {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_WHITE)).toEqual(LabelConstant.LIGHT_BG_DARK_TEXT);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" });"},{"lineNumber":102,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":34,"-":68}}] +[{"path":"src/app/activity-dashboard/activity-dashboard.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":".event-tables-wrapper {"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" overflow-x: auto;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":4}},{"path":"src/app/activity-dashboard/activity-dashboard.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cmat-grid-list cols\u003d\"4\" rowHeight\u003d\"80px\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"grid-flush-left\"\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003ch1 class\u003d\"mat-headline\" style\u003d\"margin: 0px\"\u003eActivity\u003c/h1\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"fill\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eStart Date\u003c/mat-label\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cinput matInput [min]\u003d\"startMinDate\" [max]\u003d\"startMaxDate\" [matDatepicker]\u003d\"startPicker\" (dateChange)\u003d\"pickStartDate($event)\" /\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmat-hint\u003eMM/DD/YYYY\u003c/mat-hint\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cmat-datepicker-toggle matSuffix [for]\u003d\"startPicker\"\u003e\u003c/mat-datepicker-toggle\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cmat-datepicker startView\u003d\"year\" #startPicker\u003e\u003c/mat-datepicker\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"fill\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eEnd Date\u003c/mat-label\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cinput matInput [min]\u003d\"endMinDate\" [max]\u003d\"endMaxDate\" [matDatepicker]\u003d\"endPicker\" (dateChange)\u003d\"pickEndDate($event)\" /\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cmat-hint\u003eMM/DD/YYYY\u003c/mat-hint\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cmat-datepicker-toggle matSuffix [for]\u003d\"endPicker\"\u003e\u003c/mat-datepicker-toggle\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cmat-datepicker startView\u003d\"year\" #endPicker\u003e\u003c/mat-datepicker\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/mat-grid-list\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"\u003cdiv class\u003d\"event-tables-wrapper\"\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003capp-event-tables"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let assignee of assignees\""},{"lineNumber":34,"author":{"gitId":"-"},"content":" class\u003d\"issue-table\""},{"lineNumber":35,"author":{"gitId":"-"},"content":" [actor]\u003d\"assignee\""},{"lineNumber":36,"author":{"gitId":"-"},"content":" [columnsToDisplay]\u003d\"this.displayedColumns\""},{"lineNumber":37,"author":{"gitId":"-"},"content":" [expandedColumnsToDisplay]\u003d\"this.expandedColumns\""},{"lineNumber":38,"author":{"gitId":"-"},"content":" [actions]\u003d\"this.actionButtons\""},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003e\u003c/app-event-tables\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"NereusWB922":1,"-":39}},{"path":"src/app/activity-dashboard/activity-dashboard.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, OnInit, QueryList, ViewChildren } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatDatepickerInputEvent } from \u0027@angular/material/datepicker\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import * as moment from \u0027moment\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../core/models/github-user.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../core/services/github.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../core/services/githubevent.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { EXPANDED_TABLE_COLUMNS, TABLE_COLUMNS } from \u0027./event-tables/event-tables-columns\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ACTION_BUTTONS, EventTablesComponent } from \u0027./event-tables/event-tables.component\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-activity-dashboard\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./activity-dashboard.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./activity-dashboard.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class ActivityDashboardComponent implements OnInit {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" readonly displayedColumns \u003d [TABLE_COLUMNS.DATE_START, TABLE_COLUMNS.ISSUE_COUNT, TABLE_COLUMNS.PR_COUNT, TABLE_COLUMNS.COMMENT_COUNT];"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" readonly expandedColumns \u003d [EXPANDED_TABLE_COLUMNS.TITLE, EXPANDED_TABLE_COLUMNS.DATE];"},{"lineNumber":18,"author":{"gitId":"-"},"content":" readonly actionButtons: ACTION_BUTTONS[] \u003d [ACTION_BUTTONS.VIEW_IN_WEB];"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" startMinDate: Date;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" startMaxDate \u003d moment().endOf(\u0027day\u0027).toDate();"},{"lineNumber":22,"author":{"gitId":"-"},"content":" endMinDate: Date;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" endMaxDate \u003d moment().endOf(\u0027day\u0027).toDate();"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" assignees: GithubUser[];"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" @ViewChildren(EventTablesComponent) tables: QueryList\u003cEventTablesComponent\u003e;"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService, private githubEventService: GithubEventService) {}"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.githubEventService.getEvents();"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.githubService.getUsersAssignable().subscribe((x) \u003d\u003e (this.assignees \u003d x));"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" pickStartDate(event: MatDatepickerInputEvent\u003cDate\u003e) {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.endMinDate \u003d event.value;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.tables.forEach((t) \u003d\u003e (t.githubEvents.start \u003d `${event.value}`));"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" pickEndDate(event: MatDatepickerInputEvent\u003cDate\u003e) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.startMaxDate \u003d event.value;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.tables.forEach((t) \u003d\u003e (t.githubEvents.end \u003d `${event.value}`));"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"NereusWB922":1,"-":44}},{"path":"src/app/activity-dashboard/activity-dashboard.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../shared/shared.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { ActivityDashboardRoutingModule } from \u0027./activity-dashboard-routing.module\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ActivityDashboardComponent } from \u0027./activity-dashboard.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { EventTablesModule } from \u0027./event-tables/event-tables.module\u0027;"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import { EventWeekDetailsComponent } from \u0027./event-week-details/event-week-details.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" declarations: [ActivityDashboardComponent, EventWeekDetailsComponent],"},{"lineNumber":11,"author":{"gitId":"-"},"content":" imports: [CommonModule, SharedModule, ActivityDashboardRoutingModule, EventTablesModule]"},{"lineNumber":12,"author":{"gitId":"-"},"content":"})"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export class ActivityDashboardModule {}"}],"authorContributionMap":{"NereusWB922":2,"-":11}},{"path":"src/app/activity-dashboard/event-tables/event-tables.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".table-container {"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" margin: 10px;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" min-width: 400px;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":".actor-card {"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" padding: 10px;"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" margin-bottom: 1px;"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":".actor-username {"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" flex-grow: 1;"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" font-size: 15px;"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" margin: 0;"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" word-break: break-word;"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":".avatar-container {"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" margin-right: 10px;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":".mat-table {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /* flex-wrap: wrap; */"},{"lineNumber":27,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":".mat-cell {"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" justify-content: center;"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" padding: 0;"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":".mat-header-cell {"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" justify-content: center;"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" padding: 0;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":".mat-header-row {"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" white-space: nowrap;"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":".example-element-row:hover {"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" border: 3px solid rgba(0, 0, 0, 0.514);"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" border-radius: 3px;"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" color: #210749;"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":".example-element-row td {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" border-bottom-width: 0;"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":".example-element-detail {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" overflow: hidden;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"/* Colour cells */"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":".white {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" background-color: white;"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":".pale-green {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" background-color: palegreen;"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":".green {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" background-color: green;"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":".scrollable-container {"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" height: 53vh;"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" overflow: auto;"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" margin-bottom: 2px;"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" scrollbar-width: none;"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" position: relative;"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":".scrollable-container::-webkit-scrollbar {"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" display: none;"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":"/* Ref: https://css-scroll-shadows.vercel.app */"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":".scrollable-container::before {"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" pointer-events: none;"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" content: \u0027\u0027;"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" position: absolute;"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" z-index: 2;"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" height: 6px;"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" width: 100%;"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" display: block;"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" background-image: linear-gradient(to bottom, white 66%, transparent);"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":".scrollable-container::after {"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" pointer-events: none;"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" content: \u0027\u0027;"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" position: sticky;"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" z-index: 2;"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" top: 100%;"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" height: 6px;"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" width: 100%;"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" display: block;"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" background-image: linear-gradient(to top, white 66%, transparent);"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":".scrollable-container-wrapper {"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" position: relative;"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":".scrollable-container-wrapper::before {"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" pointer-events: none;"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" content: \u0027\u0027;"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" position: absolute;"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" z-index: 1;"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" top: 0;"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" left: 0;"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" right: 0;"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" height: 5px;"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" background-image: radial-gradient(farthest-side at 50% 0, rgba(0, 0, 0, 0.5), transparent);"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":".scrollable-container-wrapper::after {"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" pointer-events: none;"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" content: \u0027\u0027;"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" position: absolute;"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" z-index: 1;"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" bottom: 0;"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" left: 0;"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" right: 0;"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" height: 5px;"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" background-image: radial-gradient(farthest-side at 50% 100%, rgba(0, 0, 0, 0.5), transparent);"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":105,"-":37}},{"path":"src/app/activity-dashboard/event-tables/event-tables.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"table-container\"\u003e"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-card class\u003d\"actor-card\"\u003e"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" \u003cdiv"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" mat-card-avatar"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" *ngIf\u003d\"this.actor\""},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" class\u003d\"avatar-container\""},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" [ngStyle]\u003d\"{"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" background: \u0027url(\u0027 + this.actor.avatar_url + \u0027)\u0027,"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" \u0027background-size\u0027: \u002740px\u0027"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" }\""},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" \u003e\u003c/div\u003e"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-card-title class\u003d\"actor-username\"\u003e"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" {{ this.actor !\u003d\u003d undefined ? this.actor.login : \u0027Unknown\u0027 }}"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" \u003c/mat-card-title\u003e"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003c/mat-card\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003cdiv class\u003d\"scrollable-container-wrapper\"\u003e"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u003cdiv class\u003d\"scrollable-container\"\u003e"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-table [dataSource]\u003d\"this.githubEvents\" matSort multiTemplateDataRows\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"date_start\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Date \u003c/mat-header-cell\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let element\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" {{ element.date_start }}"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"issue_count\"\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Issue # \u003c/mat-header-cell\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let element\" [ngClass]\u003d\"colorCell(element.issue_count)\"\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" {{ element.issue_count }}"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"pr_count\"\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e PR # \u003c/mat-header-cell\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let element\" [ngClass]\u003d\"colorCell(element.pr_count)\"\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" {{ element.pr_count }}"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"comment_count\"\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Comment # \u003c/mat-header-cell\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let element\" [ngClass]\u003d\"colorCell(element.comment_count)\"\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":" {{ element.comment_count }}"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-header-row *matHeaderRowDef\u003d\"this.columnsToDisplay\"\u003e\u003c/mat-header-row\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cmat-row"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" *matRowDef\u003d\"let eventWeek; columns: this.columnsToDisplay\""},{"lineNumber":59,"author":{"gitId":"-"},"content":" class\u003d\"example-element-row\""},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" (click)\u003d\"openDialog(eventWeek)\""},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003e\u003c/mat-row\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/mat-table\u003e"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" \u003c/div\u003e"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" \u003c/div\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cmat-card *ngIf\u003d\"this.githubEvents.isLoading$ | async\" style\u003d\"display: flex; justify-content: center; align-items: center\"\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003cmat-progress-spinner color\u003d\"primary\" mode\u003d\"indeterminate\" diameter\u003d\"50\" strokeWidth\u003d\"5\"\u003e\u003c/mat-progress-spinner\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/mat-card\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003cmat-paginator [pageSize]\u003d\"20\" [pageSizeOptions]\u003d\"[10, 20, 50]\"\u003e\u003c/mat-paginator\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"NereusWB922":22,"-":48}},{"path":"src/app/activity-dashboard/event-tables/event-tables.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { animate, state, style, transition, trigger } from \u0027@angular/animations\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, Input, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import { EventWeekDetailsComponent } from \u0027../event-week-details/event-week-details.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { EventWeek } from \u0027../event-week.model\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { GithubEventDataTable } from \u0027./GithubEventDataTable\u0027;"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import { NoEventsError } from \u0027./no-events-error.model\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"export enum ACTION_BUTTONS {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" VIEW_IN_WEB,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" COLLAPSE"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":21,"author":{"gitId":"-"},"content":" selector: \u0027app-event-tables\u0027,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" templateUrl: \u0027./event-tables.component.html\u0027,"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" styleUrls: [\u0027./event-tables.component.css\u0027]"},{"lineNumber":24,"author":{"gitId":"-"},"content":"})"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Angular Table Expandable Rows"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * ref: https://material.angular.io/components/table/examples#table-expandable-rows"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */"},{"lineNumber":30,"author":{"gitId":"-"},"content":"export class EventTablesComponent implements OnInit, AfterViewInit {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Input() columnsToDisplay: string[];"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Input() expandedColumnsToDisplay: string[];"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Input() actions: ACTION_BUTTONS[];"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Input() actor?: GithubUser \u003d undefined;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Input() filters?: any \u003d undefined;"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" @ViewChild(MatSort, { static: true }) sort: MatSort;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" githubEvents: GithubEventDataTable;"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" public readonly action_buttons \u003d ACTION_BUTTONS;"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" constructor("},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public githubEventService: GithubEventService,"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public dialog: MatDialog,"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" private logger: LoggingService,"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" private errorHandling: ErrorHandlingService"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" ) {}"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.githubEvents \u003d new GithubEventDataTable(this.githubEventService, this.logger, this.sort, this.paginator, this.actor, this.filters);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.githubEvents.loadEvents();"},{"lineNumber":58,"author":{"gitId":"-"},"content":" });"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" reload() {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.githubEvents.loadEvents();"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Formats the title text to account for those that contain long words."},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param title - Title of Event that is to be displayed in the Table Row."},{"lineNumber":68,"author":{"gitId":"-"},"content":" */"},{"lineNumber":69,"author":{"gitId":"-"},"content":" fitTitleText(title: string): string {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Arbitrary Length of Characters beyond which an overflow occurs."},{"lineNumber":71,"author":{"gitId":"-"},"content":" const MAX_WORD_LENGTH \u003d 43;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" const SPLITTER_TEXT \u003d \u0027 \u0027;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" const ELLIPSES \u003d \u0027...\u0027;"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" return title"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .split(SPLITTER_TEXT)"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .map((word) \u003d\u003e {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (word.length \u003e MAX_WORD_LENGTH) {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return word.substring(0, MAX_WORD_LENGTH - 5).concat(ELLIPSES);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return word;"},{"lineNumber":82,"author":{"gitId":"-"},"content":" })"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .join(SPLITTER_TEXT);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" /** Not implemented yet. */"},{"lineNumber":87,"author":{"gitId":"-"},"content":" viewEventInBrowser(id: number, event: Event) {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.logger.info(`EventTablesComponent: Opening Event ${id} on Github`);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // window.open(\u0027https://github.com/\u0027, \u0027_blank\u0027);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" /** Opens dialog to show the event details of the selected week. */"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" openDialog(eventWeek: EventWeek) {"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" if (eventWeek.events.length \u003c\u003d 0) {"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" this.errorHandling.handleError(new NoEventsError());"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return;"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" this.dialog.open(EventWeekDetailsComponent, {"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" data: {"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" eventWeek,"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" expandedColumnsToDisplay: this.expandedColumnsToDisplay"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" /** Returns color string of cell. Shade darkens with magnitude of number. */"},{"lineNumber":107,"author":{"gitId":"-"},"content":" colorCell(count: number) {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (count \u003d\u003d\u003d 0) {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return \u0027white\u0027;"},{"lineNumber":110,"author":{"gitId":"-"},"content":" } else if (count \u003e 0 \u0026\u0026 count \u003c\u003d 5) {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return \u0027pale-green\u0027;"},{"lineNumber":112,"author":{"gitId":"-"},"content":" } else if (count \u003e 6) {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return \u0027green\u0027;"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"NereusWB922":21,"-":95}},{"path":"src/app/activity-dashboard/event-tables/no-events-error.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"export class NoEventsError extends Error {"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" constructor() {"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" super(\u0027No events found for this week.\u0027);"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" Object.setPrototypeOf(this, NoEventsError.prototype);"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" }"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":6}},{"path":"src/app/activity-dashboard/event-week-details/event-week-details.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":".mat-cell {"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" white-space: nowrap;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" justify-content: center;"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" padding: 0;"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":".mat-header-cell {"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" justify-content: center;"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" padding: 0;"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":".mat-dialog-content {"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" min-width: 500px;"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":20}},{"path":"src/app/activity-dashboard/event-week-details/event-week-details.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"\u003ch2 mat-dialog-title\u003eEvent Week Details\u003c/h2\u003e"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"\u003cmat-dialog-content class\u003d\"mat-typography\"\u003e"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-table [dataSource]\u003d\"data.eventWeek.events\"\u003e"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" \u003cng-container matColumnDef\u003d\"{{ expandableColumn }}\" *ngFor\u003d\"let expandableColumn of data.expandedColumnsToDisplay\"\u003e"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-header-cell *matHeaderCellDef\u003e{{ expandableColumn }}\u003c/mat-header-cell\u003e"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-cell *matCellDef\u003d\"let property\"\u003e"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" {{ property[expandableColumn] }}"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" \u003c/ng-container\u003e"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-header-row *matHeaderRowDef\u003d\"data.expandedColumnsToDisplay\"\u003e\u003c/mat-header-row\u003e"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-row *matRowDef\u003d\"let property; columns: data.expandedColumnsToDisplay\"\u003e\u003c/mat-row\u003e"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" \u003c/mat-table\u003e"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"\u003c/mat-dialog-content\u003e"}],"authorContributionMap":{"NereusWB922":13}},{"path":"src/app/activity-dashboard/event-week-details/event-week-details.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"import { MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { EventWeek } from \u0027../event-week.model\u0027;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"export interface DialogData {"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" eventWeek: EventWeek;"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" expandedColumnsToDisplay: string[];"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" selector: \u0027app-event-week-detail\u0027,"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" templateUrl: \u0027./event-week-details.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" styleUrls: [\u0027./event-week-details.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"})"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"export class EventWeekDetailsComponent {"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" constructor(@Inject(MAT_DIALOG_DATA) public data: DialogData) {}"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":17}},{"path":"src/app/app.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpClientModule } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ErrorHandler, NgModule, NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { BrowserModule, Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { BrowserAnimationsModule } from \u0027@angular/platform-browser/animations\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Apollo, ApolloModule } from \u0027apollo-angular\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { HttpLink, HttpLinkModule } from \u0027apollo-angular-link-http\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { InMemoryCache, IntrospectionFragmentMatcher } from \u0027apollo-cache-inmemory\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ApolloLink } from \u0027apollo-link\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { setContext } from \u0027apollo-link-context\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import \u0027reflect-metadata\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import graphqlTypes from \u0027../../graphql/graphql-types\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import \u0027../polyfills\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { ActivityDashboardModule } from \u0027./activity-dashboard/activity-dashboard.module\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { AppRoutingModule } from \u0027./app-routing.module\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { AppComponent } from \u0027./app.component\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { AuthModule } from \u0027./auth/auth.module\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { UserConfirmationComponent } from \u0027./core/guards/user-confirmation/user-confirmation.component\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027./core/services/auth.service\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027./core/services/error-handling.service\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import { ErrorMessageService } from \u0027./core/services/error-message.service\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import { AuthServiceFactory } from \u0027./core/services/factories/factory.auth.service\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import { GithubServiceFactory } from \u0027./core/services/factories/factory.github.service\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import { IssueServiceFactory } from \u0027./core/services/factories/factory.issue.service\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./core/services/github.service\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027./core/services/githubevent.service\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./core/services/issue.service\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027./core/services/label.service\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./core/services/logging.service\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./core/services/phase.service\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import { RepoSessionStorageService } from \u0027./core/services/repo-session-storage.service\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./core/services/user.service\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import { IssuesViewerModule } from \u0027./issues-viewer/issues-viewer.module\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import { LabelDefinitionPopupComponent } from \u0027./shared/label-definition-popup/label-definition-popup.component\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import { HeaderComponent } from \u0027./shared/layout\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import { RepoChangeFormComponent } from \u0027./shared/repo-change-form/repo-change-form.component\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027./shared/shared.module\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":40,"author":{"gitId":"Arif-Khalid"},"content":" declarations: [AppComponent, HeaderComponent, UserConfirmationComponent, LabelDefinitionPopupComponent, RepoChangeFormComponent],"},{"lineNumber":41,"author":{"gitId":"-"},"content":" imports: ["},{"lineNumber":42,"author":{"gitId":"-"},"content":" BrowserModule,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" BrowserAnimationsModule,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AuthModule,"},{"lineNumber":45,"author":{"gitId":"-"},"content":" IssuesViewerModule,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" ActivityDashboardModule,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" SharedModule,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" HttpClientModule,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AppRoutingModule,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" ApolloModule,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" HttpLinkModule"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":53,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":54,"author":{"gitId":"-"},"content":" {"},{"lineNumber":55,"author":{"gitId":"-"},"content":" provide: GithubService,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" useFactory: GithubServiceFactory,"},{"lineNumber":57,"author":{"gitId":"-"},"content":" deps: [ErrorHandlingService, Apollo, LoggingService]"},{"lineNumber":58,"author":{"gitId":"-"},"content":" },"},{"lineNumber":59,"author":{"gitId":"-"},"content":" {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" provide: AuthService,"},{"lineNumber":61,"author":{"gitId":"-"},"content":" useFactory: AuthServiceFactory,"},{"lineNumber":62,"author":{"gitId":"-"},"content":" deps: ["},{"lineNumber":63,"author":{"gitId":"-"},"content":" Router,"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NgZone,"},{"lineNumber":65,"author":{"gitId":"-"},"content":" GithubService,"},{"lineNumber":66,"author":{"gitId":"-"},"content":" UserService,"},{"lineNumber":67,"author":{"gitId":"-"},"content":" IssueService,"},{"lineNumber":68,"author":{"gitId":"-"},"content":" LabelService,"},{"lineNumber":69,"author":{"gitId":"-"},"content":" PhaseService,"},{"lineNumber":70,"author":{"gitId":"-"},"content":" GithubEventService,"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Title,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" ErrorHandlingService,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" LoggingService"},{"lineNumber":74,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":75,"author":{"gitId":"-"},"content":" },"},{"lineNumber":76,"author":{"gitId":"-"},"content":" {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" provide: IssueService,"},{"lineNumber":78,"author":{"gitId":"-"},"content":" useFactory: IssueServiceFactory,"},{"lineNumber":79,"author":{"gitId":"-"},"content":" deps: [GithubService, UserService, PhaseService]"},{"lineNumber":80,"author":{"gitId":"-"},"content":" },"},{"lineNumber":81,"author":{"gitId":"-"},"content":" {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" provide: ErrorHandler,"},{"lineNumber":83,"author":{"gitId":"-"},"content":" useClass: ErrorHandlingService"},{"lineNumber":84,"author":{"gitId":"-"},"content":" },"},{"lineNumber":85,"author":{"gitId":"-"},"content":" ErrorMessageService,"},{"lineNumber":86,"author":{"gitId":"-"},"content":" RepoSessionStorageService"},{"lineNumber":87,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":88,"author":{"gitId":"-"},"content":" bootstrap: [AppComponent]"},{"lineNumber":89,"author":{"gitId":"-"},"content":"})"},{"lineNumber":90,"author":{"gitId":"-"},"content":"export class AppModule {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" constructor(private apollo: Apollo, private httpLink: HttpLink, private authService: AuthService, private logger: LoggingService) {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" const URI \u003d \u0027https://api.github.com/graphql\u0027;"},{"lineNumber":93,"author":{"gitId":"-"},"content":" const log \u003d new ApolloLink((operation, forward) \u003d\u003e {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" operation.setContext({ start: performance.now() });"},{"lineNumber":95,"author":{"gitId":"-"},"content":" this.logger.info(\u0027AppModule: GraphQL request\u0027, operation.getContext());"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return forward(operation).map((result) \u003d\u003e {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" const time \u003d performance.now() - operation.getContext().start;"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.logger.info(\u0027AppModule: GraphQL response\u0027, operation.getContext(), `in ${Math.round(time)}ms`);"},{"lineNumber":99,"author":{"gitId":"-"},"content":" const repo \u003d operation.getContext().response.body.data.repository;"},{"lineNumber":100,"author":{"gitId":"-"},"content":" const item \u003d Object.keys(repo)[0];"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.logger.debug(\u0027AppModule: GraphQL response body\u0027, item, repo[item].edges.length, repo[item].edges);"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return result;"},{"lineNumber":103,"author":{"gitId":"-"},"content":" });"},{"lineNumber":104,"author":{"gitId":"-"},"content":" });"},{"lineNumber":105,"author":{"gitId":"-"},"content":" const basic \u003d setContext(() \u003d\u003e {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return { headers: { Accept: \u0027charset\u003dutf-8\u0027 } };"},{"lineNumber":107,"author":{"gitId":"-"},"content":" });"},{"lineNumber":108,"author":{"gitId":"-"},"content":" const auth \u003d setContext(() \u003d\u003e {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return { headers: { Authorization: `Token ${this.authService.accessToken.getValue()}` } };"},{"lineNumber":110,"author":{"gitId":"-"},"content":" });"},{"lineNumber":111,"author":{"gitId":"-"},"content":" const link \u003d ApolloLink.from([log, basic, auth, this.httpLink.create({ uri: URI })]);"},{"lineNumber":112,"author":{"gitId":"-"},"content":" const fragmentMatcher \u003d new IntrospectionFragmentMatcher({"},{"lineNumber":113,"author":{"gitId":"-"},"content":" introspectionQueryResultData: graphqlTypes"},{"lineNumber":114,"author":{"gitId":"-"},"content":" });"},{"lineNumber":115,"author":{"gitId":"-"},"content":" const cache \u003d new InMemoryCache({ fragmentMatcher });"},{"lineNumber":116,"author":{"gitId":"-"},"content":" this.apollo.create({"},{"lineNumber":117,"author":{"gitId":"-"},"content":" link: link,"},{"lineNumber":118,"author":{"gitId":"-"},"content":" cache: cache"},{"lineNumber":119,"author":{"gitId":"-"},"content":" });"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Arif-Khalid":1,"-":120}},{"path":"src/app/auth/auth.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, NgZone, OnDestroy, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ActivatedRoute, Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { filter, flatMap, map } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../environments/environment\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { STORAGE_KEYS } from \u0027../core/constants/storage-keys.constants\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../core/models/github-user.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ApplicationService } from \u0027../core/services/application.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { AuthService, AuthState } from \u0027../core/services/auth.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../core/services/error-handling.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { ErrorMessageService } from \u0027../core/services/error-message.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../core/services/logging.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../core/services/phase.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../core/services/user.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":17,"author":{"gitId":"-"},"content":" selector: \u0027app-auth\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" templateUrl: \u0027./auth.component.html\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./auth.component.css\u0027]"},{"lineNumber":20,"author":{"gitId":"-"},"content":"})"},{"lineNumber":21,"author":{"gitId":"-"},"content":"export class AuthComponent implements OnInit, OnDestroy {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" authState: AuthState;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" accessTokenSubscription: Subscription;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" authStateSubscription: Subscription;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" currentUserName: string;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" urlEncodedSessionName: string;"},{"lineNumber":27,"author":{"gitId":"-"},"content":" urlEncodedRepo: string;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" sessionInformation: string;"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":31,"author":{"gitId":"-"},"content":" public appService: ApplicationService,"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private authService: AuthService,"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private activatedRoute: ActivatedRoute,"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.logger.startSession();"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" const oauthCode \u003d this.activatedRoute.snapshot.queryParamMap.get(\u0027code\u0027);"},{"lineNumber":46,"author":{"gitId":"-"},"content":" const state \u003d this.activatedRoute.snapshot.queryParamMap.get(\u0027state\u0027);"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (this.authService.isAuthenticated()) {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.router.navigate([this.phaseService.currentPhase]);"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.initAccessTokenSubscription();"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.initAuthStateSubscription();"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.createProfileFromUrlQueryParams();"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.getRepoFromUrlQueryParams();"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (oauthCode) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // runs upon receiving oauthCode from the redirect"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // this.restoreOrgDetailsFromLocalStorage();"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.logger.info(\u0027AuthComponent: Obtained authorisation code from Github\u0027);"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.fetchAccessToken(oauthCode, state);"},{"lineNumber":62,"author":{"gitId":"nknguyenhc"},"content":" return;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"nknguyenhc"},"content":" this.authService.startOAuthIfHasNext();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Will fetch the access token from GitHub."},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param oauthCode - The authorisation code obtained from GitHub."},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param state - The state returned from GitHub."},{"lineNumber":71,"author":{"gitId":"-"},"content":" */"},{"lineNumber":72,"author":{"gitId":"-"},"content":" fetchAccessToken(oauthCode: string, state: string) {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!this.authService.isReturnedStateSame(state)) {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.logger.info(`AuthComponent: Received incorrect state ${state}, continue waiting for correct state`);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.logger.info(`AuthComponent: Retrieving access token from Github`);"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":" const accessTokenUrl \u003d `${AppConfig.accessTokenUrl}/${oauthCode}/client_id/${AppConfig.clientId}`;"},{"lineNumber":81,"author":{"gitId":"-"},"content":" fetch(accessTokenUrl)"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .then((res) \u003d\u003e res.json())"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .then((data) \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (data.error) {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new Error(data.error);"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.authService.storeOAuthAccessToken(data.token);"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.logger.info(`AuthComponent: Sucessfully obtained access token`);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" })"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .catch((err) \u003d\u003e {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.logger.info(`AuthComponent: Error in data fetched from access token URL: ${err}`);"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(err);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":94,"author":{"gitId":"-"},"content":" });"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" ngOnDestroy() {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (this.authStateSubscription) {"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.authStateSubscription.unsubscribe();"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (this.accessTokenSubscription) {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.accessTokenSubscription.unsubscribe();"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Checks whether the current version of WATcher is outdated."},{"lineNumber":108,"author":{"gitId":"-"},"content":" */"},{"lineNumber":109,"author":{"gitId":"-"},"content":" checkAppIsOutdated(): Observable\u003cany\u003e {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return this.appService.isApplicationOutdated().pipe("},{"lineNumber":111,"author":{"gitId":"-"},"content":" map((isOutdated: boolean) \u003d\u003e {"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (isOutdated) {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new Error(ErrorMessageService.applicationVersionOutdatedMessage());"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }"},{"lineNumber":115,"author":{"gitId":"-"},"content":" })"},{"lineNumber":116,"author":{"gitId":"-"},"content":" );"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":" updateSession(sessionEvent: string) {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.sessionInformation \u003d sessionEvent;"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" goToSessionSelect() {"},{"lineNumber":124,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }"},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":" isUserNotAuthenticated(): boolean {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.NotAuthenticated;"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }"},{"lineNumber":130,"author":{"gitId":"-"},"content":""},{"lineNumber":131,"author":{"gitId":"-"},"content":" isUserAuthenticating(): boolean {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.AwaitingAuthentication;"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" isAwaitingOAuthUserConfirm(): boolean {"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.ConfirmOAuthUser;"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" isUserAuthenticated(): boolean {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return this.authState \u003d\u003d\u003d AuthState.Authenticated;"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }"},{"lineNumber":142,"author":{"gitId":"-"},"content":""},{"lineNumber":143,"author":{"gitId":"-"},"content":" isRepoSet(): boolean {"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return this.phaseService.isRepoSet();"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }"},{"lineNumber":146,"author":{"gitId":"-"},"content":""},{"lineNumber":147,"author":{"gitId":"-"},"content":" get currentSessionOrg(): string {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (!this.sessionInformation) {"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // Retrieve org details of session information from local storage"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return window.localStorage.getItem(STORAGE_KEYS.ORG);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return this.getOrgDetails(this.sessionInformation);"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }"},{"lineNumber":154,"author":{"gitId":"-"},"content":""},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Extracts the Organization Details from the input sessionInformation."},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param sessionInformation - string in the format of \u0027orgName/dataRepo\u0027"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private getOrgDetails(sessionInformation: string) {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return sessionInformation.split(\u0027/\u0027)[0];"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":" private initAuthStateSubscription() {"},{"lineNumber":164,"author":{"gitId":"-"},"content":" this.authStateSubscription \u003d this.authService.currentAuthState.subscribe((state) \u003d\u003e {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.authState \u003d state;"},{"lineNumber":167,"author":{"gitId":"-"},"content":" });"},{"lineNumber":168,"author":{"gitId":"-"},"content":" });"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }"},{"lineNumber":170,"author":{"gitId":"-"},"content":""},{"lineNumber":171,"author":{"gitId":"-"},"content":" private initAccessTokenSubscription() {"},{"lineNumber":172,"author":{"gitId":"-"},"content":" this.accessTokenSubscription \u003d this.authService.accessToken"},{"lineNumber":173,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":174,"author":{"gitId":"-"},"content":" filter((token: string) \u003d\u003e !!token),"},{"lineNumber":175,"author":{"gitId":"-"},"content":" flatMap(() \u003d\u003e this.userService.getAuthenticatedUser())"},{"lineNumber":176,"author":{"gitId":"-"},"content":" )"},{"lineNumber":177,"author":{"gitId":"-"},"content":" .subscribe((user: GithubUser) \u003d\u003e {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e {"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.currentUserName \u003d user.login;"},{"lineNumber":180,"author":{"gitId":"nknguyenhc"},"content":" if (this.authService.hasNext()) {"},{"lineNumber":181,"author":{"gitId":"nknguyenhc"},"content":" this.authService.completeLoginIfHasNext(this.currentUserName);"},{"lineNumber":182,"author":{"gitId":"nknguyenhc"},"content":" } else {"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.authService.changeAuthState(AuthState.ConfirmOAuthUser);"},{"lineNumber":184,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":185,"author":{"gitId":"-"},"content":" });"},{"lineNumber":186,"author":{"gitId":"-"},"content":" });"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }"},{"lineNumber":188,"author":{"gitId":"-"},"content":""},{"lineNumber":189,"author":{"gitId":"-"},"content":" private createProfileFromUrlQueryParams() {"},{"lineNumber":190,"author":{"gitId":"-"},"content":" const urlParams \u003d this.activatedRoute.snapshot.queryParamMap;"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (urlParams.has(\u0027session\u0027)) {"},{"lineNumber":192,"author":{"gitId":"-"},"content":" this.urlEncodedSessionName \u003d urlParams.get(\u0027session\u0027);"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }"},{"lineNumber":195,"author":{"gitId":"-"},"content":""},{"lineNumber":196,"author":{"gitId":"-"},"content":" private getRepoFromUrlQueryParams() {"},{"lineNumber":197,"author":{"gitId":"-"},"content":" const urlParams \u003d this.activatedRoute.snapshot.queryParamMap;"},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (urlParams.has(\u0027repo\u0027)) {"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.urlEncodedRepo \u003d urlParams.get(\u0027repo\u0027);"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }"},{"lineNumber":202,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":6,"-":196}},{"path":"src/app/core/guards/auth.guard.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { ActivatedRouteSnapshot, CanActivate, CanLoad, Route, Router, RouterStateSnapshot, UrlSegment } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027../services/auth.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":7,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":8,"author":{"gitId":"-"},"content":"})"},{"lineNumber":9,"author":{"gitId":"-"},"content":"export class AuthGuard implements CanActivate, CanLoad {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" constructor(private auth: AuthService, private router: Router) {}"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":" canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable\u003cboolean\u003e | Promise\u003cboolean\u003e | boolean {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" if (this.auth.isAuthenticated()) {"},{"lineNumber":14,"author":{"gitId":"nknguyenhc"},"content":" this.auth.clearNext();"},{"lineNumber":15,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":17,"author":{"gitId":"nknguyenhc"},"content":" this.auth.storeNext(state);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" this.router.navigate([\u0027\u0027]);"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" canLoad(route: Route, segments: UrlSegment[]): Observable\u003cboolean\u003e | Promise\u003cboolean\u003e | boolean {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (this.auth.isAuthenticated()) {"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":26,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.router.navigate([\u0027\u0027]);"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":2,"-":29}},{"path":"src/app/core/models/label.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":2,"author":{"gitId":"-"},"content":" * Represents a label and its attributes."},{"lineNumber":3,"author":{"gitId":"-"},"content":" */"},{"lineNumber":4,"author":{"gitId":"-"},"content":"export class Label implements SimpleLabel {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" readonly name: string;"},{"lineNumber":6,"author":{"gitId":"-"},"content":" color: string;"},{"lineNumber":7,"author":{"gitId":"-"},"content":" definition?: string;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":" constructor(label: { name: string; color: string; definition?: string }) {"},{"lineNumber":10,"author":{"gitId":"nknguyenhc"},"content":" this.name \u003d label.name;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" this.color \u003d label.color;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" this.definition \u003d label.definition;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents a simplified label with name and color"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */"},{"lineNumber":19,"author":{"gitId":"-"},"content":"export type SimpleLabel \u003d {"},{"lineNumber":20,"author":{"gitId":"nknguyenhc"},"content":" name: string;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" color: string;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"nknguyenhc":2,"-":20}},{"path":"src/app/core/services/auth.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgZone } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Title } from \u0027@angular/platform-browser\u0027;"},{"lineNumber":4,"author":{"gitId":"nknguyenhc"},"content":"import { Router, RouterStateSnapshot } from \u0027@angular/router\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { BehaviorSubject, from, Observable, of } from \u0027rxjs\u0027;"},{"lineNumber":6,"author":{"gitId":"nknguyenhc"},"content":"import { catchError, map, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { generateSessionId } from \u0027../../shared/lib/session\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { uuid } from \u0027../../shared/lib/uuid\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027./error-handling.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027./githubevent.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027./issue.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027./label.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027./phase.service\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { UserService } from \u0027./user.service\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"export enum AuthState {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u0027NotAuthenticated\u0027,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u0027AwaitingAuthentication\u0027,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u0027ConfirmOAuthUser\u0027,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u0027Authenticated\u0027"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":28,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":29,"author":{"gitId":"-"},"content":"})"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Responsible for initiating the authentication process and querying or"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * updating the application state with regards to authentication."},{"lineNumber":34,"author":{"gitId":"-"},"content":" */"},{"lineNumber":35,"author":{"gitId":"-"},"content":"export class AuthService {"},{"lineNumber":36,"author":{"gitId":"nknguyenhc"},"content":" private static readonly DEFAULT_NO_PERMISSION_TO_PRIVATE_REPOS \u003d false;"},{"lineNumber":37,"author":{"gitId":"nknguyenhc"},"content":" private static readonly SESSION_NEXT_KEY \u003d \u0027next\u0027;"},{"lineNumber":38,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" authStateSource \u003d new BehaviorSubject(AuthState.NotAuthenticated);"},{"lineNumber":40,"author":{"gitId":"-"},"content":" currentAuthState \u003d this.authStateSource.asObservable();"},{"lineNumber":41,"author":{"gitId":"-"},"content":" accessToken \u003d new BehaviorSubject(undefined);"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private state: string;"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":" ENABLE_POPUP_MESSAGE \u003d \u0027Please enable pop-ups in your browser\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":47,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private ngZone: NgZone,"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private userService: UserService,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private labelService: LabelService,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private phaseService: PhaseService,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private titleService: Title,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private logger: LoggingService"},{"lineNumber":58,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":61,"author":{"gitId":"nknguyenhc"},"content":" * Stores the data about the next route in the session storage."},{"lineNumber":62,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":63,"author":{"gitId":"nknguyenhc"},"content":" storeNext(next: RouterStateSnapshot) {"},{"lineNumber":64,"author":{"gitId":"nknguyenhc"},"content":" sessionStorage.setItem(AuthService.SESSION_NEXT_KEY, next.url);"},{"lineNumber":65,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":66,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":67,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":68,"author":{"gitId":"nknguyenhc"},"content":" * Checks if there is a next route to be redirected to after login,"},{"lineNumber":69,"author":{"gitId":"nknguyenhc"},"content":" * by checking the session storage."},{"lineNumber":70,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":71,"author":{"gitId":"nknguyenhc"},"content":" hasNext(): boolean {"},{"lineNumber":72,"author":{"gitId":"nknguyenhc"},"content":" return sessionStorage.getItem(AuthService.SESSION_NEXT_KEY) !\u003d\u003d null;"},{"lineNumber":73,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":74,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":75,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":76,"author":{"gitId":"nknguyenhc"},"content":" * Checks if there is a next route to be redirected to after login,"},{"lineNumber":77,"author":{"gitId":"nknguyenhc"},"content":" * and start OAuth process automatically if there is."},{"lineNumber":78,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":79,"author":{"gitId":"nknguyenhc"},"content":" startOAuthIfHasNext() {"},{"lineNumber":80,"author":{"gitId":"nknguyenhc"},"content":" if (this.hasNext()) {"},{"lineNumber":81,"author":{"gitId":"nknguyenhc"},"content":" this.logger.info(`AuthService: Start OAuth because there is a next route`);"},{"lineNumber":82,"author":{"gitId":"nknguyenhc"},"content":" this.startOAuthProcess(AuthService.DEFAULT_NO_PERMISSION_TO_PRIVATE_REPOS);"},{"lineNumber":83,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":84,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":85,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":86,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":87,"author":{"gitId":"nknguyenhc"},"content":" * Checks if there is a next route to be redirected to after login,"},{"lineNumber":88,"author":{"gitId":"nknguyenhc"},"content":" * and complete the login process if there is."},{"lineNumber":89,"author":{"gitId":"nknguyenhc"},"content":" * Assuming that user has authenticated on Github, and the app is awaiting confirmation."},{"lineNumber":90,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":91,"author":{"gitId":"nknguyenhc"},"content":" completeLoginIfHasNext(username: string) {"},{"lineNumber":92,"author":{"gitId":"nknguyenhc"},"content":" if (!this.hasNext()) {"},{"lineNumber":93,"author":{"gitId":"nknguyenhc"},"content":" return;"},{"lineNumber":94,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":95,"author":{"gitId":"nknguyenhc"},"content":" this.logger.info(`AuthService: Automatically complete login because there is a next route`);"},{"lineNumber":96,"author":{"gitId":"nknguyenhc"},"content":" this.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":97,"author":{"gitId":"nknguyenhc"},"content":" this.userService.createUserModel(username).subscribe("},{"lineNumber":98,"author":{"gitId":"nknguyenhc"},"content":" () \u003d\u003e {"},{"lineNumber":99,"author":{"gitId":"nknguyenhc"},"content":" this.changeAuthState(AuthState.Authenticated);"},{"lineNumber":100,"author":{"gitId":"nknguyenhc"},"content":" },"},{"lineNumber":101,"author":{"gitId":"nknguyenhc"},"content":" (err) \u003d\u003e {"},{"lineNumber":102,"author":{"gitId":"nknguyenhc"},"content":" this.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":103,"author":{"gitId":"nknguyenhc"},"content":" this.errorHandlingService.handleError(err);"},{"lineNumber":104,"author":{"gitId":"nknguyenhc"},"content":" this.logger.info(`AuthService: Automatic completion of login failed with an error: ${err}`);"},{"lineNumber":105,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":106,"author":{"gitId":"nknguyenhc"},"content":" );"},{"lineNumber":107,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":108,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":109,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":110,"author":{"gitId":"nknguyenhc"},"content":" * Clears the next route from the session storage."},{"lineNumber":111,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":112,"author":{"gitId":"nknguyenhc"},"content":" clearNext() {"},{"lineNumber":113,"author":{"gitId":"nknguyenhc"},"content":" sessionStorage.removeItem(AuthService.SESSION_NEXT_KEY);"},{"lineNumber":114,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":115,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":116,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":117,"author":{"gitId":"nknguyenhc"},"content":" * Redirect to the URL indicating the next route."},{"lineNumber":118,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":119,"author":{"gitId":"nknguyenhc"},"content":" redirectToNext() {"},{"lineNumber":120,"author":{"gitId":"nknguyenhc"},"content":" const next \u003d sessionStorage.getItem(AuthService.SESSION_NEXT_KEY);"},{"lineNumber":121,"author":{"gitId":"nknguyenhc"},"content":" this.phaseService"},{"lineNumber":122,"author":{"gitId":"nknguyenhc"},"content":" .setupFromUrl(next)"},{"lineNumber":123,"author":{"gitId":"nknguyenhc"},"content":" .pipe("},{"lineNumber":124,"author":{"gitId":"nknguyenhc"},"content":" mergeMap(() \u003d\u003e this.setRepo()),"},{"lineNumber":125,"author":{"gitId":"nknguyenhc"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":126,"author":{"gitId":"nknguyenhc"},"content":" this.logger.info(`AuthService: Failed to redirect to next URL with error: ${err}`);"},{"lineNumber":127,"author":{"gitId":"nknguyenhc"},"content":" this.errorHandlingService.handleError(err);"},{"lineNumber":128,"author":{"gitId":"nknguyenhc"},"content":" this.clearNext();"},{"lineNumber":129,"author":{"gitId":"nknguyenhc"},"content":" return of(false);"},{"lineNumber":130,"author":{"gitId":"nknguyenhc"},"content":" })"},{"lineNumber":131,"author":{"gitId":"nknguyenhc"},"content":" )"},{"lineNumber":132,"author":{"gitId":"nknguyenhc"},"content":" .subscribe((isSetupSuccesssful) \u003d\u003e {"},{"lineNumber":133,"author":{"gitId":"nknguyenhc"},"content":" if (isSetupSuccesssful) {"},{"lineNumber":134,"author":{"gitId":"nknguyenhc"},"content":" this.router.navigateByUrl(next);"},{"lineNumber":135,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":136,"author":{"gitId":"nknguyenhc"},"content":" });"},{"lineNumber":137,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":138,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Will store the OAuth token."},{"lineNumber":141,"author":{"gitId":"-"},"content":" */"},{"lineNumber":142,"author":{"gitId":"-"},"content":" storeOAuthAccessToken(token: string) {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" this.githubService.storeOAuthAccessToken(token);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" this.accessToken.next(token);"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }"},{"lineNumber":146,"author":{"gitId":"-"},"content":""},{"lineNumber":147,"author":{"gitId":"-"},"content":" reset(): void {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" this.logger.info(\u0027AuthService: Clearing access token and setting AuthState to NotAuthenticated.\u0027);"},{"lineNumber":149,"author":{"gitId":"-"},"content":" this.accessToken.next(undefined);"},{"lineNumber":150,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.NotAuthenticated);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" this.ngZone.run(() \u003d\u003e this.router.navigate([\u0027\u0027]));"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }"},{"lineNumber":153,"author":{"gitId":"-"},"content":""},{"lineNumber":154,"author":{"gitId":"-"},"content":" logOut(): void {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":156,"author":{"gitId":"-"},"content":" this.userService.reset();"},{"lineNumber":157,"author":{"gitId":"-"},"content":" this.issueService.reset(true);"},{"lineNumber":158,"author":{"gitId":"-"},"content":" this.labelService.reset();"},{"lineNumber":159,"author":{"gitId":"-"},"content":" this.phaseService.reset();"},{"lineNumber":160,"author":{"gitId":"-"},"content":" this.githubEventService.reset();"},{"lineNumber":161,"author":{"gitId":"-"},"content":" this.logger.reset();"},{"lineNumber":162,"author":{"gitId":"-"},"content":" this.setLandingPageTitle();"},{"lineNumber":163,"author":{"gitId":"-"},"content":" this.issueService.setIssueTeamFilter(\u0027All Teams\u0027);"},{"lineNumber":164,"author":{"gitId":"-"},"content":" this.reset();"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }"},{"lineNumber":166,"author":{"gitId":"-"},"content":""},{"lineNumber":167,"author":{"gitId":"-"},"content":" setTitleWithPhaseDetail(): void {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../package.json\u0027);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version} - ${this.phaseService.getCurrentRepositoryURL()}`;"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.logger.info(`AuthService: Setting Title as ${title}`);"},{"lineNumber":171,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":" setLandingPageTitle(): void {"},{"lineNumber":175,"author":{"gitId":"-"},"content":" const appSetting \u003d require(\u0027../../../../package.json\u0027);"},{"lineNumber":176,"author":{"gitId":"-"},"content":" const title \u003d `${appSetting.name} ${appSetting.version}`;"},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.logger.info(`AuthService: Setting Title as ${title}`);"},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.titleService.setTitle(title);"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }"},{"lineNumber":180,"author":{"gitId":"-"},"content":""},{"lineNumber":181,"author":{"gitId":"-"},"content":" isAuthenticated(): boolean {"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return this.authStateSource.getValue() \u003d\u003d\u003d AuthState.Authenticated;"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }"},{"lineNumber":184,"author":{"gitId":"-"},"content":""},{"lineNumber":185,"author":{"gitId":"-"},"content":" changeAuthState(newAuthState: AuthState) {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (newAuthState \u003d\u003d\u003d AuthState.Authenticated) {"},{"lineNumber":187,"author":{"gitId":"-"},"content":" const sessionId \u003d generateSessionId();"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.issueService.setSessionId(sessionId);"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.logger.info(`AuthService: Successfully authenticated with session: ${sessionId}`);"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.authStateSource.next(newAuthState);"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }"},{"lineNumber":193,"author":{"gitId":"-"},"content":""},{"lineNumber":194,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":195,"author":{"gitId":"-"},"content":" * Generates and assigns an unguessable random \u0027state\u0027 string to pass to Github for protection against cross-site request forgery attacks"},{"lineNumber":196,"author":{"gitId":"-"},"content":" */"},{"lineNumber":197,"author":{"gitId":"-"},"content":" generateStateString() {"},{"lineNumber":198,"author":{"gitId":"-"},"content":" this.state \u003d uuid();"},{"lineNumber":199,"author":{"gitId":"-"},"content":" sessionStorage.setItem(\u0027state\u0027, this.state);"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }"},{"lineNumber":201,"author":{"gitId":"-"},"content":""},{"lineNumber":202,"author":{"gitId":"-"},"content":" isReturnedStateSame(returnedState: string): boolean {"},{"lineNumber":203,"author":{"gitId":"-"},"content":" const state \u003d sessionStorage.getItem(\u0027state\u0027);"},{"lineNumber":204,"author":{"gitId":"-"},"content":" return returnedState \u003d\u003d\u003d state;"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }"},{"lineNumber":206,"author":{"gitId":"-"},"content":""},{"lineNumber":207,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Will start the Github OAuth web flow process."},{"lineNumber":209,"author":{"gitId":"-"},"content":" */"},{"lineNumber":210,"author":{"gitId":"-"},"content":" startOAuthProcess(hasPrivateConsent: boolean) {"},{"lineNumber":211,"author":{"gitId":"-"},"content":" this.logger.info(\u0027AuthService: Starting authentication\u0027);"},{"lineNumber":212,"author":{"gitId":"-"},"content":" // Available OAuth scopes https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes"},{"lineNumber":213,"author":{"gitId":"-"},"content":" let permissionLevel \u003d \u0027public-repo\u0027;"},{"lineNumber":214,"author":{"gitId":"-"},"content":""},{"lineNumber":215,"author":{"gitId":"-"},"content":" if (hasPrivateConsent) {"},{"lineNumber":216,"author":{"gitId":"-"},"content":" // grants WATcher access to private repos if user allows"},{"lineNumber":217,"author":{"gitId":"-"},"content":" permissionLevel \u003d \u0027repo\u0027;"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }"},{"lineNumber":219,"author":{"gitId":"-"},"content":""},{"lineNumber":220,"author":{"gitId":"-"},"content":" const githubRepoPermission \u003d permissionLevel; // don\u0027t allow changes after logging ins"},{"lineNumber":221,"author":{"gitId":"-"},"content":""},{"lineNumber":222,"author":{"gitId":"-"},"content":" this.changeAuthState(AuthState.AwaitingAuthentication);"},{"lineNumber":223,"author":{"gitId":"-"},"content":""},{"lineNumber":224,"author":{"gitId":"-"},"content":" this.generateStateString();"},{"lineNumber":225,"author":{"gitId":"-"},"content":" this.redirectToOAuthPage("},{"lineNumber":226,"author":{"gitId":"-"},"content":" encodeURI("},{"lineNumber":227,"author":{"gitId":"-"},"content":" `${AppConfig.githubUrl}/login/oauth/authorize?client_id\u003d${AppConfig.clientId}\u0026scope\u003d${githubRepoPermission},read:user\u0026state\u003d${this.state}`"},{"lineNumber":228,"author":{"gitId":"-"},"content":" )"},{"lineNumber":229,"author":{"gitId":"-"},"content":" );"},{"lineNumber":230,"author":{"gitId":"-"},"content":" this.logger.info(`AuthService: Redirecting for Github authentication`);"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }"},{"lineNumber":232,"author":{"gitId":"-"},"content":""},{"lineNumber":233,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Handles the clean up required after authentication and setting up of repository is completed."},{"lineNumber":235,"author":{"gitId":"-"},"content":" */"},{"lineNumber":236,"author":{"gitId":"nknguyenhc"},"content":" handleSetRepoSuccess(repoName: string) {"},{"lineNumber":237,"author":{"gitId":"-"},"content":" this.setTitleWithPhaseDetail();"},{"lineNumber":238,"author":{"gitId":"nknguyenhc"},"content":" this.router.navigate([Phase.issuesViewer], {"},{"lineNumber":239,"author":{"gitId":"nknguyenhc"},"content":" queryParams: {"},{"lineNumber":240,"author":{"gitId":"nknguyenhc"},"content":" [PhaseService.REPO_QUERY_PARAM_KEY]: repoName"},{"lineNumber":241,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":242,"author":{"gitId":"nknguyenhc"},"content":" });"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }"},{"lineNumber":244,"author":{"gitId":"-"},"content":""},{"lineNumber":245,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":246,"author":{"gitId":"-"},"content":" * Setup repository after authentication."},{"lineNumber":247,"author":{"gitId":"-"},"content":" */"},{"lineNumber":248,"author":{"gitId":"-"},"content":" setRepo(): Observable\u003cboolean\u003e {"},{"lineNumber":249,"author":{"gitId":"-"},"content":" return from(this.phaseService.initializeCurrentRepository()).pipe("},{"lineNumber":250,"author":{"gitId":"-"},"content":" map(() \u003d\u003e {"},{"lineNumber":251,"author":{"gitId":"-"},"content":" if (!this.phaseService.currentRepo) {"},{"lineNumber":252,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }"},{"lineNumber":254,"author":{"gitId":"-"},"content":" this.githubEventService.setLatestChangeEvent();"},{"lineNumber":255,"author":{"gitId":"nknguyenhc"},"content":" this.handleSetRepoSuccess(this.phaseService.currentRepo.toString());"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":258,"author":{"gitId":"-"},"content":" catchError((error) \u003d\u003e {"},{"lineNumber":259,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":260,"author":{"gitId":"nknguyenhc"},"content":" this.clearNext();"},{"lineNumber":261,"author":{"gitId":"-"},"content":" return of(false);"},{"lineNumber":262,"author":{"gitId":"-"},"content":" })"},{"lineNumber":263,"author":{"gitId":"-"},"content":" );"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }"},{"lineNumber":265,"author":{"gitId":"-"},"content":""},{"lineNumber":266,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":267,"author":{"gitId":"-"},"content":" * Will redirect to GitHub OAuth page"},{"lineNumber":268,"author":{"gitId":"-"},"content":" */"},{"lineNumber":269,"author":{"gitId":"-"},"content":" private redirectToOAuthPage(url: string): void {"},{"lineNumber":270,"author":{"gitId":"-"},"content":" if (url \u003d\u003d null) {"},{"lineNumber":271,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }"},{"lineNumber":273,"author":{"gitId":"-"},"content":" window.location.href \u003d url;"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":92,"-":183}},{"path":"src/app/core/services/error-message.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":4,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":5,"author":{"gitId":"-"},"content":"})"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Contains all error message prompts to user."},{"lineNumber":9,"author":{"gitId":"-"},"content":" */"},{"lineNumber":10,"author":{"gitId":"-"},"content":"export class ErrorMessageService {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static repositoryNotPresentMessage() {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" return \u0027Invalid repository name. Please provide Github repository URL or the repository name in the format Org/Repository Name.\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"nknguyenhc"},"content":" public static invalidUrlMessage() {"},{"lineNumber":16,"author":{"gitId":"nknguyenhc"},"content":" return \u0027URL is invalid, or repository does not exist, please indicate the repository you wish to view to continue.\u0027;"},{"lineNumber":17,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":18,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static unableToFetchIssuesMessage() {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch issue.\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static unableToFetchMilestoneMessage() {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch milestones.\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static unableToFetchLabelsMessage() {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch labels.\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static usersUnassignableMessage(assignee: string) {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return `Cannot assign ${assignee} to the issue. Please check if ${assignee} is authorized.`;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static unableToFetchUsersMessage() {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch assignable users for repository\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static unableToFetchEventsMessage() {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch issue events for repository\u0027;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static unableToFetchActivityEventsMessage() {"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch activity events for repository\u0027;"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static unableToFetchDataFileMessage() {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch data file.\u0027;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static unableToFetchLatestReleaseMessage() {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch latest release.\u0027;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static unableToFetchSettingsFileMessage() {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch settings file.\u0027;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static unableToFetchAuthenticatedUsersMessage() {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return \u0027Failed to fetch authenticated user.\u0027;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static unableToOpenInBrowserMessage() {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return \u0027Unable to open this issue in Browser\u0027;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static applicationVersionOutdatedMessage() {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return \u0027Please update to the latest version of WATcher.\u0027;"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static multipleDropdownOptionsErrorMessage() {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return \u0027Supply either Dropdown option number or text, not both.\u0027;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static noDropdownOptionsErrorMessage() {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return \u0027No Dropdown identification parameters supplied.\u0027;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":4,"-":74}},{"path":"src/app/core/services/filters.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Arif-Khalid"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"Arif-Khalid"},"content":"import { BehaviorSubject, pipe } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"Arif-Khalid"},"content":"import { DEFAULT_DROPDOWN_FILTER, DropdownFilter } from \u0027../../shared/issue-tables/dropdownfilter\u0027;"},{"lineNumber":4,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":5,"author":{"gitId":"Arif-Khalid"},"content":"@Injectable({"},{"lineNumber":6,"author":{"gitId":"Arif-Khalid"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":7,"author":{"gitId":"Arif-Khalid"},"content":"})"},{"lineNumber":8,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":9,"author":{"gitId":"Arif-Khalid"},"content":"/**"},{"lineNumber":10,"author":{"gitId":"Arif-Khalid"},"content":" * Responsible for centralising filters"},{"lineNumber":11,"author":{"gitId":"Arif-Khalid"},"content":" * Filters are subscribed to and emitted from this service"},{"lineNumber":12,"author":{"gitId":"Arif-Khalid"},"content":" */"},{"lineNumber":13,"author":{"gitId":"Arif-Khalid"},"content":"export class FiltersService {"},{"lineNumber":14,"author":{"gitId":"Arif-Khalid"},"content":" public dropdownFilter$ \u003d new BehaviorSubject\u003cDropdownFilter\u003e(DEFAULT_DROPDOWN_FILTER);"},{"lineNumber":15,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":16,"author":{"gitId":"Arif-Khalid"},"content":" private _validateFilter \u003d pipe(this.updateStatusPairing, this.updateTypePairing);"},{"lineNumber":17,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":18,"author":{"gitId":"Arif-Khalid"},"content":" clearFilters(): void {"},{"lineNumber":19,"author":{"gitId":"Arif-Khalid"},"content":" this.dropdownFilter$.next(DEFAULT_DROPDOWN_FILTER);"},{"lineNumber":20,"author":{"gitId":"Arif-Khalid"},"content":" }"},{"lineNumber":21,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":22,"author":{"gitId":"Arif-Khalid"},"content":" updateFilters(newFilters: Partial\u003cDropdownFilter\u003e): void {"},{"lineNumber":23,"author":{"gitId":"Arif-Khalid"},"content":" let nextDropdownFilter: DropdownFilter \u003d {"},{"lineNumber":24,"author":{"gitId":"Arif-Khalid"},"content":" ...this.dropdownFilter$.value,"},{"lineNumber":25,"author":{"gitId":"Arif-Khalid"},"content":" ...newFilters"},{"lineNumber":26,"author":{"gitId":"Arif-Khalid"},"content":" };"},{"lineNumber":27,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":28,"author":{"gitId":"Arif-Khalid"},"content":" nextDropdownFilter \u003d this._validateFilter(nextDropdownFilter);"},{"lineNumber":29,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":30,"author":{"gitId":"Arif-Khalid"},"content":" this.dropdownFilter$.next(nextDropdownFilter);"},{"lineNumber":31,"author":{"gitId":"Arif-Khalid"},"content":" }"},{"lineNumber":32,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":33,"author":{"gitId":"Arif-Khalid"},"content":" /**"},{"lineNumber":34,"author":{"gitId":"Arif-Khalid"},"content":" * Changes type to a valid, default value when an incompatible combination of type and status is encountered."},{"lineNumber":35,"author":{"gitId":"Arif-Khalid"},"content":" */"},{"lineNumber":36,"author":{"gitId":"Arif-Khalid"},"content":" updateTypePairing(dropdownFilter: DropdownFilter): DropdownFilter {"},{"lineNumber":37,"author":{"gitId":"Arif-Khalid"},"content":" if (dropdownFilter.status \u003d\u003d\u003d \u0027merged\u0027) {"},{"lineNumber":38,"author":{"gitId":"Arif-Khalid"},"content":" dropdownFilter.type \u003d \u0027pullrequest\u0027;"},{"lineNumber":39,"author":{"gitId":"Arif-Khalid"},"content":" }"},{"lineNumber":40,"author":{"gitId":"Arif-Khalid"},"content":" return dropdownFilter;"},{"lineNumber":41,"author":{"gitId":"Arif-Khalid"},"content":" }"},{"lineNumber":42,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":43,"author":{"gitId":"Arif-Khalid"},"content":" /**"},{"lineNumber":44,"author":{"gitId":"Arif-Khalid"},"content":" * Changes status to a valid, default value when an incompatible combination of type and status is encountered."},{"lineNumber":45,"author":{"gitId":"Arif-Khalid"},"content":" */"},{"lineNumber":46,"author":{"gitId":"Arif-Khalid"},"content":" updateStatusPairing(dropdownFilter: DropdownFilter): DropdownFilter {"},{"lineNumber":47,"author":{"gitId":"Arif-Khalid"},"content":" if (dropdownFilter.status \u003d\u003d\u003d \u0027merged\u0027 \u0026\u0026 dropdownFilter.type \u003d\u003d\u003d \u0027issue\u0027) {"},{"lineNumber":48,"author":{"gitId":"Arif-Khalid"},"content":" dropdownFilter.status \u003d \u0027all\u0027;"},{"lineNumber":49,"author":{"gitId":"Arif-Khalid"},"content":" }"},{"lineNumber":50,"author":{"gitId":"Arif-Khalid"},"content":" return dropdownFilter;"},{"lineNumber":51,"author":{"gitId":"Arif-Khalid"},"content":" }"},{"lineNumber":52,"author":{"gitId":"Arif-Khalid"},"content":"}"}],"authorContributionMap":{"Arif-Khalid":52}},{"path":"src/app/core/services/phase.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"nknguyenhc"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"nknguyenhc"},"content":"import { BehaviorSubject, Observable, of, Subject } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"nknguyenhc"},"content":"import { map } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { STORAGE_KEYS } from \u0027../constants/storage-keys.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../models/phase.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { Repo } from \u0027../models/repo.model\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { SessionData } from \u0027../models/session.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ErrorMessageService } from \u0027./error-message.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { RepoUrlCacheService } from \u0027./repo-url-cache.service\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"export const SESSION_AVALIABILITY_FIX_FAILED \u003d \u0027Session Availability Fix failed.\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The title of each phase that appears in the header bar."},{"lineNumber":18,"author":{"gitId":"-"},"content":" */"},{"lineNumber":19,"author":{"gitId":"-"},"content":"export const PhaseDescription \u003d {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" [Phase.issuesViewer]: \u0027Issues Dashboard\u0027,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" [Phase.activityDashboard]: \u0027Activity Dashboard\u0027"},{"lineNumber":22,"author":{"gitId":"-"},"content":"};"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * All data of the session."},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Add accessible phases here."},{"lineNumber":27,"author":{"gitId":"-"},"content":" */"},{"lineNumber":28,"author":{"gitId":"-"},"content":"export const STARTING_SESSION_DATA: SessionData \u003d {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sessionRepo: ["},{"lineNumber":30,"author":{"gitId":"-"},"content":" { phase: Phase.issuesViewer, repos: [] }"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // { phase: Phase.activityDashboard, repos: [] }"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":33,"author":{"gitId":"-"},"content":"};"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"export const STARTING_PHASE \u003d Phase.issuesViewer;"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":38,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":39,"author":{"gitId":"-"},"content":"})"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Responsible for managing the current selected feature of WATcher as well as the"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * current session data and repository details related to the session."},{"lineNumber":44,"author":{"gitId":"-"},"content":" *"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * A phase is terminology from CATcher, in WATcher it refers to a feature of WATcher."},{"lineNumber":46,"author":{"gitId":"-"},"content":" */"},{"lineNumber":47,"author":{"gitId":"-"},"content":"export class PhaseService {"},{"lineNumber":48,"author":{"gitId":"nknguyenhc"},"content":" public static readonly REPO_QUERY_PARAM_KEY \u003d \u0027repo\u0027;"},{"lineNumber":49,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" public currentPhase: Phase \u003d STARTING_PHASE;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public currentRepo: Repo; // current or main repository of current phase"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public otherRepos: Repo[]; // more repositories relevant to this phase"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" repoSetSource \u003d new BehaviorSubject(false);"},{"lineNumber":55,"author":{"gitId":"-"},"content":" repoSetState \u003d this.repoSetSource.asObservable();"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Expose an observable to track changes to currentRepo"},{"lineNumber":59,"author":{"gitId":"-"},"content":" *"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * TODO - replace all references to currentRepo to have"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * dependencies subscribe to this observable?"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public repoChanged$: Subject\u003cRepo | null\u003e \u003d new Subject();"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" /** Whether the PhaseService is changing the repository */"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public isChangingRepo \u003d new BehaviorSubject\u003cboolean\u003e(false);"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" public sessionData \u003d STARTING_SESSION_DATA; // stores session data for the session"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"nknguyenhc"},"content":" constructor("},{"lineNumber":71,"author":{"gitId":"nknguyenhc"},"content":" private githubService: GithubService,"},{"lineNumber":72,"author":{"gitId":"nknguyenhc"},"content":" private repoUrlCacheService: RepoUrlCacheService,"},{"lineNumber":73,"author":{"gitId":"nknguyenhc"},"content":" public logger: LoggingService,"},{"lineNumber":74,"author":{"gitId":"nknguyenhc"},"content":" private router: Router"},{"lineNumber":75,"author":{"gitId":"nknguyenhc"},"content":" ) {}"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Sets the current main repository and additional repos if any."},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Updates session data in Phase Service and local storage."},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Updates Github Service with current repository."},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param repo Main current repository"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * @param repos Additional repositories"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */"},{"lineNumber":84,"author":{"gitId":"-"},"content":" setRepository(repo: Repo, repos?: Repo[]): void {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.currentRepo \u003d repo;"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.otherRepos \u003d repos ? repos : [];"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.sessionData.sessionRepo.find((x) \u003d\u003e x.phase \u003d\u003d\u003d this.currentPhase).repos \u003d this.getRepository();"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.githubService.storePhaseDetails(this.currentRepo.owner, this.currentRepo.name);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" localStorage.setItem(\u0027sessionData\u0027, JSON.stringify(this.sessionData));"},{"lineNumber":90,"author":{"gitId":"nknguyenhc"},"content":" this.router.navigate([\u0027issuesViewer\u0027], {"},{"lineNumber":91,"author":{"gitId":"nknguyenhc"},"content":" queryParams: {"},{"lineNumber":92,"author":{"gitId":"nknguyenhc"},"content":" [PhaseService.REPO_QUERY_PARAM_KEY]: repo.toString()"},{"lineNumber":93,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":94,"author":{"gitId":"nknguyenhc"},"content":" });"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }"},{"lineNumber":96,"author":{"gitId":"-"},"content":""},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Changes current respository to a new repository."},{"lineNumber":99,"author":{"gitId":"-"},"content":" * @param repo New current repository"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private changeCurrentRepository(repo: Repo): void {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.logger.info(`PhaseService: Changing current repository to \u0027${repo}\u0027`);"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (this.currentPhase \u003d\u003d\u003d Phase.issuesViewer) {"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /** Adds past repositories to phase */"},{"lineNumber":106,"author":{"gitId":"-"},"content":" (this.otherRepos || []).push(this.currentRepo);"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }"},{"lineNumber":108,"author":{"gitId":"-"},"content":" this.setRepository(repo, this.otherRepos);"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.repoUrlCacheService.cache(repo.toString());"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.repoChanged$.next(repo);"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Change repository if a valid repository is provided"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @param repo New repository"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */"},{"lineNumber":119,"author":{"gitId":"-"},"content":" async changeRepositoryIfValid(repo: Repo) {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.isChangingRepo.next(true);"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":" const isValidRepository \u003d await this.githubService.isRepositoryPresent(repo.owner, repo.name).toPromise();"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!isValidRepository) {"},{"lineNumber":124,"author":{"gitId":"-"},"content":" this.isChangingRepo.next(false);"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new Error(ErrorMessageService.repositoryNotPresentMessage());"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":" this.changeCurrentRepository(repo);"},{"lineNumber":129,"author":{"gitId":"-"},"content":" this.isChangingRepo.next(false);"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }"},{"lineNumber":131,"author":{"gitId":"-"},"content":""},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Returns the full repository array of the current feature."},{"lineNumber":134,"author":{"gitId":"-"},"content":" */"},{"lineNumber":135,"author":{"gitId":"-"},"content":" getRepository(): Repo[] {"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return [this.currentRepo].concat(this.otherRepos);"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Retrieves the repository url from local storage and sets to current repository."},{"lineNumber":141,"author":{"gitId":"-"},"content":" */"},{"lineNumber":142,"author":{"gitId":"-"},"content":" async initializeCurrentRepository() {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" const org \u003d window.localStorage.getItem(STORAGE_KEYS.ORG);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" const repoName \u003d window.localStorage.getItem(STORAGE_KEYS.DATA_REPO);"},{"lineNumber":145,"author":{"gitId":"-"},"content":" this.logger.info(`PhaseService: received initial org (${org}) and initial name (${repoName})`);"},{"lineNumber":146,"author":{"gitId":"-"},"content":" let repo: Repo;"},{"lineNumber":147,"author":{"gitId":"-"},"content":" if (!org || !repoName) {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" repo \u003d Repo.ofEmptyRepo();"},{"lineNumber":149,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" repo \u003d new Repo(org, repoName);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":" const isValidRepository \u003d await this.githubService.isRepositoryPresent(repo.owner, repo.name).toPromise();"},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!isValidRepository) {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new Error(ErrorMessageService.repositoryNotPresentMessage());"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }"},{"lineNumber":156,"author":{"gitId":"-"},"content":" this.logger.info(`PhaseService: Repo is ${repo}`);"},{"lineNumber":157,"author":{"gitId":"-"},"content":" this.setRepository(repo);"},{"lineNumber":158,"author":{"gitId":"-"},"content":" this.repoSetSource.next(true);"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }"},{"lineNumber":160,"author":{"gitId":"-"},"content":""},{"lineNumber":161,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":162,"author":{"gitId":"nknguyenhc"},"content":" * Set items in the local storage corresponding to the next URL."},{"lineNumber":163,"author":{"gitId":"nknguyenhc"},"content":" * This includes checking if the phase is valid, and if the repo is of the correct format."},{"lineNumber":164,"author":{"gitId":"nknguyenhc"},"content":" * @param url The partial URL without the host, e.g. `/issuesViewer?repo\u003dCATcher%2FWATcher."},{"lineNumber":165,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":166,"author":{"gitId":"nknguyenhc"},"content":" setupFromUrl(url: string): Observable\u003cvoid\u003e {"},{"lineNumber":167,"author":{"gitId":"nknguyenhc"},"content":" return of(this.getPhaseAndRepoFromUrl(url)).pipe("},{"lineNumber":168,"author":{"gitId":"nknguyenhc"},"content":" map(([phaseName, repoName]) \u003d\u003e {"},{"lineNumber":169,"author":{"gitId":"nknguyenhc"},"content":" if (!this.isPhaseAllowed(phaseName)) {"},{"lineNumber":170,"author":{"gitId":"nknguyenhc"},"content":" throw new Error(ErrorMessageService.invalidUrlMessage());"},{"lineNumber":171,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":172,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":173,"author":{"gitId":"nknguyenhc"},"content":" if (repoName \u003d\u003d\u003d null) {"},{"lineNumber":174,"author":{"gitId":"nknguyenhc"},"content":" throw new Error(ErrorMessageService.invalidUrlMessage());"},{"lineNumber":175,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":176,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":177,"author":{"gitId":"nknguyenhc"},"content":" const newRepo \u003d Repo.of(repoName);"},{"lineNumber":178,"author":{"gitId":"nknguyenhc"},"content":" if (newRepo) {"},{"lineNumber":179,"author":{"gitId":"nknguyenhc"},"content":" window.localStorage.setItem(STORAGE_KEYS.ORG, newRepo.owner);"},{"lineNumber":180,"author":{"gitId":"nknguyenhc"},"content":" window.localStorage.setItem(STORAGE_KEYS.DATA_REPO, newRepo.name);"},{"lineNumber":181,"author":{"gitId":"nknguyenhc"},"content":" this.repoUrlCacheService.cache(newRepo.toString());"},{"lineNumber":182,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":183,"author":{"gitId":"nknguyenhc"},"content":" })"},{"lineNumber":184,"author":{"gitId":"nknguyenhc"},"content":" );"},{"lineNumber":185,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":186,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":187,"author":{"gitId":"nknguyenhc"},"content":" getPhaseAndRepoFromUrl(url: string): [string, string] {"},{"lineNumber":188,"author":{"gitId":"nknguyenhc"},"content":" const urlObject \u003d new URL(`${location.protocol}//${location.host}${url}`);"},{"lineNumber":189,"author":{"gitId":"nknguyenhc"},"content":" const pathname \u003d urlObject.pathname;"},{"lineNumber":190,"author":{"gitId":"nknguyenhc"},"content":" const reponame \u003d urlObject.searchParams.get(PhaseService.REPO_QUERY_PARAM_KEY);"},{"lineNumber":191,"author":{"gitId":"nknguyenhc"},"content":" return [pathname, reponame];"},{"lineNumber":192,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":193,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":194,"author":{"gitId":"nknguyenhc"},"content":" isPhaseAllowed(phaseName: string) {"},{"lineNumber":195,"author":{"gitId":"nknguyenhc"},"content":" return phaseName \u003d\u003d\u003d \u0027/\u0027 + Phase.issuesViewer;"},{"lineNumber":196,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":197,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":198,"author":{"gitId":"-"},"content":" isRepoSet(): boolean {"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return this.repoSetSource.getValue();"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }"},{"lineNumber":201,"author":{"gitId":"-"},"content":""},{"lineNumber":202,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":203,"author":{"gitId":"-"},"content":" * Changes phase and updates Phase Service\u0027s properties."},{"lineNumber":204,"author":{"gitId":"-"},"content":" * @param phase New phase"},{"lineNumber":205,"author":{"gitId":"-"},"content":" */"},{"lineNumber":206,"author":{"gitId":"-"},"content":" changePhase(phase: Phase) {"},{"lineNumber":207,"author":{"gitId":"-"},"content":" this.currentPhase \u003d phase;"},{"lineNumber":208,"author":{"gitId":"-"},"content":""},{"lineNumber":209,"author":{"gitId":"-"},"content":" // For now, assumes repository stays the same"},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.githubService.storePhaseDetails(this.currentRepo.owner, this.currentRepo.name);"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }"},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":" public getCurrentRepositoryURL() {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return this.currentRepo.owner.concat(\u0027/\u0027).concat(this.currentRepo.name);"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }"},{"lineNumber":216,"author":{"gitId":"-"},"content":""},{"lineNumber":217,"author":{"gitId":"-"},"content":" reset() {"},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.currentPhase \u003d STARTING_PHASE;"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":53,"-":167}},{"path":"src/app/issues-viewer/card-view/card-view.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"nknguyenhc"},"content":"import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { FilterableComponent, FilterableSource } from \u0027../../shared/issue-tables/filterableTypes\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { IssuesDataTable } from \u0027../../shared/issue-tables/IssuesDataTable\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" selector: \u0027app-card-view\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" templateUrl: \u0027./card-view.component.html\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./card-view.component.css\u0027]"},{"lineNumber":15,"author":{"gitId":"-"},"content":"})"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Displays issues as Cards."},{"lineNumber":19,"author":{"gitId":"-"},"content":" */"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export class CardViewComponent implements OnInit, AfterViewInit, OnDestroy, FilterableComponent {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Input() headers: string[];"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Input() assignee?: GithubUser \u003d undefined;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Input() filters?: any \u003d undefined;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" issues: IssuesDataTable;"},{"lineNumber":28,"author":{"gitId":"-"},"content":" issues$: Observable\u003cIssue[]\u003e;"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"Arif-Khalid"},"content":" isLoading \u003d true;"},{"lineNumber":31,"author":{"gitId":"Arif-Khalid"},"content":" issueLength \u003d 0;"},{"lineNumber":32,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":33,"author":{"gitId":"nknguyenhc"},"content":" @Output() issueLengthChange: EventEmitter\u003cNumber\u003e \u003d new EventEmitter\u003cNumber\u003e();"},{"lineNumber":34,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":35,"author":{"gitId":"Arif-Khalid"},"content":" constructor(public element: ElementRef, public issueService: IssueService) {}"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":38,"author":{"gitId":"Arif-Khalid"},"content":" this.issues \u003d new IssuesDataTable(this.issueService, this.paginator, this.headers, this.assignee, this.filters);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.issues.loadIssues();"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.issues$ \u003d this.issues.connect();"},{"lineNumber":45,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":46,"author":{"gitId":"Arif-Khalid"},"content":" // Emit event when issues change"},{"lineNumber":47,"author":{"gitId":"Arif-Khalid"},"content":" this.issues$.subscribe((issues) \u003d\u003e {"},{"lineNumber":48,"author":{"gitId":"Arif-Khalid"},"content":" this.issueLength \u003d issues.length;"},{"lineNumber":49,"author":{"gitId":"nknguyenhc"},"content":" this.issueLengthChange.emit(this.issueLength);"},{"lineNumber":50,"author":{"gitId":"Arif-Khalid"},"content":" });"},{"lineNumber":51,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":52,"author":{"gitId":"Arif-Khalid"},"content":" // Emit event when loading state changes"},{"lineNumber":53,"author":{"gitId":"Arif-Khalid"},"content":" this.issues.isLoading$.subscribe((isLoadingUpdate) \u003d\u003e {"},{"lineNumber":54,"author":{"gitId":"Arif-Khalid"},"content":" this.isLoading \u003d isLoadingUpdate;"},{"lineNumber":55,"author":{"gitId":"Arif-Khalid"},"content":" });"},{"lineNumber":56,"author":{"gitId":"-"},"content":" });"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":60,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.issues.disconnect();"},{"lineNumber":62,"author":{"gitId":"-"},"content":" });"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" retrieveFilterable(): FilterableSource {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this.issues;"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":4,"Arif-Khalid":15,"-":49}},{"path":"src/app/issues-viewer/hidden-users/hidden-users.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"nknguyenhc"},"content":".hidden-users {"},{"lineNumber":2,"author":{"gitId":"nknguyenhc"},"content":" margin: 8px;"},{"lineNumber":3,"author":{"gitId":"nknguyenhc"},"content":" min-width: 150px;"},{"lineNumber":4,"author":{"gitId":"nknguyenhc"},"content":" max-width: 300px;"},{"lineNumber":5,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":6,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":7,"author":{"gitId":"nknguyenhc"},"content":".row-count {"},{"lineNumber":8,"author":{"gitId":"nknguyenhc"},"content":" background-color: rgb(222, 222, 222);"},{"lineNumber":9,"author":{"gitId":"nknguyenhc"},"content":" border-radius: 3px;"},{"lineNumber":10,"author":{"gitId":"nknguyenhc"},"content":" cursor: default;"},{"lineNumber":11,"author":{"gitId":"nknguyenhc"},"content":" padding: 6px;"},{"lineNumber":12,"author":{"gitId":"nknguyenhc"},"content":" color: rgb(0, 0, 0);"},{"lineNumber":13,"author":{"gitId":"nknguyenhc"},"content":" font-weight: 410;"},{"lineNumber":14,"author":{"gitId":"nknguyenhc"},"content":" display: inline-flex;"},{"lineNumber":15,"author":{"gitId":"nknguyenhc"},"content":" font-size: 14px;"},{"lineNumber":16,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":17,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":18,"author":{"gitId":"nknguyenhc"},"content":".mat-card-header {"},{"lineNumber":19,"author":{"gitId":"nknguyenhc"},"content":" display: flex;"},{"lineNumber":20,"author":{"gitId":"nknguyenhc"},"content":" flex-direction: row;"},{"lineNumber":21,"author":{"gitId":"nknguyenhc"},"content":" align-items: center;"},{"lineNumber":22,"author":{"gitId":"nknguyenhc"},"content":" width: 100%;"},{"lineNumber":23,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":24,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":25,"author":{"gitId":"nknguyenhc"},"content":".mat-card {"},{"lineNumber":26,"author":{"gitId":"nknguyenhc"},"content":" margin: 8px 0px;"},{"lineNumber":27,"author":{"gitId":"nknguyenhc"},"content":" height: 40px;"},{"lineNumber":28,"author":{"gitId":"nknguyenhc"},"content":" padding: 10px;"},{"lineNumber":29,"author":{"gitId":"nknguyenhc"},"content":" display: flex;"},{"lineNumber":30,"author":{"gitId":"nknguyenhc"},"content":" align-items: center;"},{"lineNumber":31,"author":{"gitId":"nknguyenhc"},"content":" justify-content: center;"},{"lineNumber":32,"author":{"gitId":"nknguyenhc"},"content":" flex-direction: row;"},{"lineNumber":33,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":34,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":35,"author":{"gitId":"nknguyenhc"},"content":".mat-card-title {"},{"lineNumber":36,"author":{"gitId":"nknguyenhc"},"content":" font-size: 14px;"},{"lineNumber":37,"author":{"gitId":"nknguyenhc"},"content":" text-align: center;"},{"lineNumber":38,"author":{"gitId":"nknguyenhc"},"content":" margin: 0;"},{"lineNumber":39,"author":{"gitId":"nknguyenhc"},"content":" flex-grow: 1;"},{"lineNumber":40,"author":{"gitId":"nknguyenhc"},"content":" margin: 2px;"},{"lineNumber":41,"author":{"gitId":"nknguyenhc"},"content":" word-break: break-word;"},{"lineNumber":42,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":43,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":44,"author":{"gitId":"nknguyenhc"},"content":".mat-card-avatar {"},{"lineNumber":45,"author":{"gitId":"nknguyenhc"},"content":" height: 30px;"},{"lineNumber":46,"author":{"gitId":"nknguyenhc"},"content":" width: 30px;"},{"lineNumber":47,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":48,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":49,"author":{"gitId":"nknguyenhc"},"content":".mat-card-header .mat-card-title {"},{"lineNumber":50,"author":{"gitId":"nknguyenhc"},"content":" font-size: 12px;"},{"lineNumber":51,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":52,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":53,"author":{"gitId":"nknguyenhc"},"content":".scrollable-container {"},{"lineNumber":54,"author":{"gitId":"nknguyenhc"},"content":" height: 67vh;"},{"lineNumber":55,"author":{"gitId":"nknguyenhc"},"content":" overflow: auto;"},{"lineNumber":56,"author":{"gitId":"nknguyenhc"},"content":" scrollbar-width: none;"},{"lineNumber":57,"author":{"gitId":"nknguyenhc"},"content":" -ms-overflow-style: none;"},{"lineNumber":58,"author":{"gitId":"nknguyenhc"},"content":" position: relative;"},{"lineNumber":59,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":60,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":61,"author":{"gitId":"nknguyenhc"},"content":".scrollable-containers::-webkit-scrollbar {"},{"lineNumber":62,"author":{"gitId":"nknguyenhc"},"content":" display: none;"},{"lineNumber":63,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":64,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":65,"author":{"gitId":"nknguyenhc"},"content":".scrollable-container::before,"},{"lineNumber":66,"author":{"gitId":"nknguyenhc"},"content":".scrollable-container::after {"},{"lineNumber":67,"author":{"gitId":"nknguyenhc"},"content":" pointer-events: none;"},{"lineNumber":68,"author":{"gitId":"nknguyenhc"},"content":" content: \u0027\u0027;"},{"lineNumber":69,"author":{"gitId":"nknguyenhc"},"content":" z-index: 2;"},{"lineNumber":70,"author":{"gitId":"nknguyenhc"},"content":" height: 6px;"},{"lineNumber":71,"author":{"gitId":"nknguyenhc"},"content":" width: 100%;"},{"lineNumber":72,"author":{"gitId":"nknguyenhc"},"content":" display: block;"},{"lineNumber":73,"author":{"gitId":"nknguyenhc"},"content":" background-image: linear-gradient(to bottom, white 66%, transparent);"},{"lineNumber":74,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":75,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":76,"author":{"gitId":"nknguyenhc"},"content":".scrollable-container::before {"},{"lineNumber":77,"author":{"gitId":"nknguyenhc"},"content":" position: absolute;"},{"lineNumber":78,"author":{"gitId":"nknguyenhc"},"content":"}"},{"lineNumber":79,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":80,"author":{"gitId":"nknguyenhc"},"content":".scrollable-container::after {"},{"lineNumber":81,"author":{"gitId":"nknguyenhc"},"content":" position: sticky;"},{"lineNumber":82,"author":{"gitId":"nknguyenhc"},"content":"}"}],"authorContributionMap":{"nknguyenhc":82}},{"path":"src/app/issues-viewer/hidden-users/hidden-users.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"nknguyenhc"},"content":"\u003cdiv *ngIf\u003d\"users.length \u003e 0\" class\u003d\"hidden-users\"\u003e"},{"lineNumber":2,"author":{"gitId":"nknguyenhc"},"content":" \u003cmat-card\u003e"},{"lineNumber":3,"author":{"gitId":"nknguyenhc"},"content":" \u003cmat-card-title\u003eHidden users\u003c/mat-card-title\u003e"},{"lineNumber":4,"author":{"gitId":"nknguyenhc"},"content":" \u003cdiv class\u003d\"row-count\"\u003e{{ users.length }}\u003c/div\u003e"},{"lineNumber":5,"author":{"gitId":"nknguyenhc"},"content":" \u003c/mat-card\u003e"},{"lineNumber":6,"author":{"gitId":"nknguyenhc"},"content":" \u003cdiv class\u003d\"scrollable-container\"\u003e"},{"lineNumber":7,"author":{"gitId":"nknguyenhc"},"content":" \u003cdiv *ngFor\u003d\"let user of users\"\u003e"},{"lineNumber":8,"author":{"gitId":"nknguyenhc"},"content":" \u003cmat-card\u003e"},{"lineNumber":9,"author":{"gitId":"nknguyenhc"},"content":" \u003cmar-card-header class\u003d\"mat-card-header\"\u003e"},{"lineNumber":10,"author":{"gitId":"nknguyenhc"},"content":" \u003cdiv"},{"lineNumber":11,"author":{"gitId":"nknguyenhc"},"content":" mat-card-avatar"},{"lineNumber":12,"author":{"gitId":"nknguyenhc"},"content":" [ngStyle]\u003d\"{"},{"lineNumber":13,"author":{"gitId":"nknguyenhc"},"content":" background: \u0027url(\u0027 + user.avatar_url + \u0027)\u0027,"},{"lineNumber":14,"author":{"gitId":"nknguyenhc"},"content":" \u0027background-size\u0027: \u002730px\u0027"},{"lineNumber":15,"author":{"gitId":"nknguyenhc"},"content":" }\""},{"lineNumber":16,"author":{"gitId":"nknguyenhc"},"content":" \u003e\u003c/div\u003e"},{"lineNumber":17,"author":{"gitId":"nknguyenhc"},"content":" \u003cmat-card-title\u003e{{ user.login }}\u003c/mat-card-title\u003e"},{"lineNumber":18,"author":{"gitId":"nknguyenhc"},"content":" \u003c/mar-card-header\u003e"},{"lineNumber":19,"author":{"gitId":"nknguyenhc"},"content":" \u003c/mat-card\u003e"},{"lineNumber":20,"author":{"gitId":"nknguyenhc"},"content":" \u003c/div\u003e"},{"lineNumber":21,"author":{"gitId":"nknguyenhc"},"content":" \u003c/div\u003e"},{"lineNumber":22,"author":{"gitId":"nknguyenhc"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"nknguyenhc":22}},{"path":"src/app/issues-viewer/hidden-users/hidden-users.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"nknguyenhc"},"content":"import { Component, Input } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"nknguyenhc"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":3,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":4,"author":{"gitId":"nknguyenhc"},"content":"@Component({"},{"lineNumber":5,"author":{"gitId":"nknguyenhc"},"content":" selector: \u0027app-hidden-users\u0027,"},{"lineNumber":6,"author":{"gitId":"nknguyenhc"},"content":" templateUrl: \u0027./hidden-users.component.html\u0027,"},{"lineNumber":7,"author":{"gitId":"nknguyenhc"},"content":" styleUrls: [\u0027./hidden-users.component.css\u0027]"},{"lineNumber":8,"author":{"gitId":"nknguyenhc"},"content":"})"},{"lineNumber":9,"author":{"gitId":"nknguyenhc"},"content":"export class HiddenUsersComponent {"},{"lineNumber":10,"author":{"gitId":"nknguyenhc"},"content":" @Input() users: GithubUser[] \u003d [];"},{"lineNumber":11,"author":{"gitId":"nknguyenhc"},"content":"}"}],"authorContributionMap":{"nknguyenhc":11}},{"path":"src/app/issues-viewer/issues-viewer.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"loading-spinner\" *ngIf\u003d\"this.phaseService.isChangingRepo | async; else elseBlock\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-progress-spinner color\u003d\"primary\" mode\u003d\"indeterminate\" diameter\u003d\"50\" strokeWidth\u003d\"5\"\u003e \u003c/mat-progress-spinner\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cng-template #elseBlock\u003e"},{"lineNumber":7,"author":{"gitId":"Arif-Khalid"},"content":" \u003capp-filter-bar [views$]\u003d\"views\"\u003e\u003c/app-filter-bar\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"wrapper\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003capp-card-view"},{"lineNumber":11,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let assignee of assignees\""},{"lineNumber":12,"author":{"gitId":"-"},"content":" class\u003d\"issue-table\""},{"lineNumber":13,"author":{"gitId":"Arif-Khalid"},"content":" #card"},{"lineNumber":14,"author":{"gitId":"Arif-Khalid"},"content":" [ngStyle]\u003d\"{ display: card.isLoading || card.issueLength \u003e 0 ? \u0027initial\u0027 : \u0027none\u0027 }\""},{"lineNumber":15,"author":{"gitId":"-"},"content":" [assignee]\u003d\"assignee\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" [headers]\u003d\"this.displayedColumns\""},{"lineNumber":17,"author":{"gitId":"nknguyenhc"},"content":" (issueLengthChange)\u003d\"updateHiddenUsers($event, assignee)\""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003e\u003c/app-card-view\u003e"},{"lineNumber":19,"author":{"gitId":"Arif-Khalid"},"content":" \u003capp-card-view"},{"lineNumber":20,"author":{"gitId":"Arif-Khalid"},"content":" class\u003d\"issue-table\""},{"lineNumber":21,"author":{"gitId":"Arif-Khalid"},"content":" #card"},{"lineNumber":22,"author":{"gitId":"Arif-Khalid"},"content":" [ngStyle]\u003d\"{ display: card.isLoading || card.issueLength \u003e 0 ? \u0027initial\u0027 : \u0027none\u0027 }\""},{"lineNumber":23,"author":{"gitId":"Arif-Khalid"},"content":" [headers]\u003d\"this.displayedColumns\""},{"lineNumber":24,"author":{"gitId":"Arif-Khalid"},"content":" \u003e"},{"lineNumber":25,"author":{"gitId":"Arif-Khalid"},"content":" \u003c/app-card-view\u003e"},{"lineNumber":26,"author":{"gitId":"nknguyenhc"},"content":" \u003capp-hidden-users [users]\u003d\"hiddenAssignees\"\u003e\u003c/app-hidden-users\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"nknguyenhc":2,"Arif-Khalid":10,"-":17}},{"path":"src/app/issues-viewer/issues-viewer.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { BehaviorSubject, of, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../core/models/github-user.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Repo } from \u0027../core/models/repo.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ErrorMessageService } from \u0027../core/services/error-message.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../core/services/github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../core/services/label.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { MilestoneService } from \u0027../core/services/milestone.service\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../core/services/phase.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../shared/issue-tables/issue-tables-columns\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { CardViewComponent } from \u0027./card-view/card-view.component\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":15,"author":{"gitId":"-"},"content":" selector: \u0027app-issues-viewer\u0027,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" templateUrl: \u0027./issues-viewer.component.html\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./issues-viewer.component.css\u0027]"},{"lineNumber":18,"author":{"gitId":"-"},"content":"})"},{"lineNumber":19,"author":{"gitId":"-"},"content":"export class IssuesViewerComponent implements OnInit, AfterViewInit, OnDestroy {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" readonly displayedColumns \u003d [TABLE_COLUMNS.ID, TABLE_COLUMNS.TITLE, TABLE_COLUMNS.ASSIGNEE, TABLE_COLUMNS.LABEL];"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Observes for any change in repo*/"},{"lineNumber":23,"author":{"gitId":"-"},"content":" repoChangeSubscription: Subscription;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" /** Observes for any change in the cardviews */"},{"lineNumber":26,"author":{"gitId":"-"},"content":" viewChange: Subscription;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" /** Users to show as columns */"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assignees: GithubUser[];"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"nknguyenhc"},"content":" /** The list of users with 0 issues (hidden) */"},{"lineNumber":32,"author":{"gitId":"nknguyenhc"},"content":" hiddenAssignees: GithubUser[] \u003d [];"},{"lineNumber":33,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" @ViewChildren(CardViewComponent) cardViews: QueryList\u003cCardViewComponent\u003e;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" views \u003d new BehaviorSubject\u003cQueryList\u003cCardViewComponent\u003e\u003e(undefined);"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":39,"author":{"gitId":"-"},"content":" public phaseService: PhaseService,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public githubService: GithubService,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public issueService: IssueService,"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public milestoneService: MilestoneService"},{"lineNumber":44,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.repoChangeSubscription \u003d this.phaseService.repoChanged$.subscribe((newRepo) \u003d\u003e {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.issueService.reset(false);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.labelService.reset();"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.initialize();"},{"lineNumber":49,"author":{"gitId":"-"},"content":" });"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.initialize();"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.viewChange \u003d this.cardViews.changes.subscribe((x) \u003d\u003e this.views.next(x));"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.repoChangeSubscription.unsubscribe();"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.viewChange.unsubscribe();"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Fetch and initialize all information from repository to populate Issue Dashboard."},{"lineNumber":67,"author":{"gitId":"-"},"content":" */"},{"lineNumber":68,"author":{"gitId":"-"},"content":" private initialize() {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.checkIfValidRepository().subscribe((isValidRepository) \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!isValidRepository) {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new Error(ErrorMessageService.repositoryNotPresentMessage());"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":" });"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Fetch assignees"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.assignees \u003d [];"},{"lineNumber":77,"author":{"gitId":"nknguyenhc"},"content":" this.hiddenAssignees \u003d [];"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.githubService.getUsersAssignable().subscribe((x) \u003d\u003e (this.assignees \u003d x));"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Fetch issues"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.issueService.reloadAllIssues();"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Checks if our current repository available on phase service is indeed a valid repository"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private checkIfValidRepository() {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" const currentRepo \u003d this.phaseService.currentRepo;"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (Repo.isInvalidRepoName(currentRepo)) {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return of(false);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" return this.githubService.isRepositoryPresent(currentRepo.owner, currentRepo.name);"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":98,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":99,"author":{"gitId":"nknguyenhc"},"content":" * Update the list of hidden user based on the new info."},{"lineNumber":100,"author":{"gitId":"nknguyenhc"},"content":" * @param issueLength The number of issues assigned to this user."},{"lineNumber":101,"author":{"gitId":"nknguyenhc"},"content":" * @param assignee The assignee."},{"lineNumber":102,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":103,"author":{"gitId":"nknguyenhc"},"content":" updateHiddenUsers(issueLength: number, assignee: GithubUser) {"},{"lineNumber":104,"author":{"gitId":"nknguyenhc"},"content":" if (issueLength \u003d\u003d\u003d 0) {"},{"lineNumber":105,"author":{"gitId":"nknguyenhc"},"content":" this.updateHiddenUser(assignee);"},{"lineNumber":106,"author":{"gitId":"nknguyenhc"},"content":" } else {"},{"lineNumber":107,"author":{"gitId":"nknguyenhc"},"content":" this.removeHiddenUser(assignee);"},{"lineNumber":108,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":109,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":110,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":111,"author":{"gitId":"nknguyenhc"},"content":" private updateHiddenUser(assignee: GithubUser) {"},{"lineNumber":112,"author":{"gitId":"nknguyenhc"},"content":" if (!this.hiddenAssignees.includes(assignee)) {"},{"lineNumber":113,"author":{"gitId":"nknguyenhc"},"content":" this.hiddenAssignees.push(assignee);"},{"lineNumber":114,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":115,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":116,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":117,"author":{"gitId":"nknguyenhc"},"content":" private removeHiddenUser(assignee: GithubUser) {"},{"lineNumber":118,"author":{"gitId":"nknguyenhc"},"content":" this.hiddenAssignees \u003d this.hiddenAssignees.filter((user) \u003d\u003e user !\u003d\u003d assignee);"},{"lineNumber":119,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":27,"-":93}},{"path":"src/app/issues-viewer/issues-viewer.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { FilterBarModule } from \u0027../shared/filter-bar/filter-bar.module\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { IssuesPrCardModule } from \u0027../shared/issue-pr-card/issue-pr-card.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../shared/shared.module\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { CardViewComponent } from \u0027./card-view/card-view.component\u0027;"},{"lineNumber":6,"author":{"gitId":"nknguyenhc"},"content":"import { HiddenUsersComponent } from \u0027./hidden-users/hidden-users.component\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssuesViewerRoutingModule } from \u0027./issues-viewer-routing.module\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { IssuesViewerComponent } from \u0027./issues-viewer.component\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" imports: [FilterBarModule, IssuesViewerRoutingModule, IssuesPrCardModule, SharedModule],"},{"lineNumber":12,"author":{"gitId":"nknguyenhc"},"content":" declarations: [IssuesViewerComponent, CardViewComponent, HiddenUsersComponent],"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exports: [IssuesViewerComponent, CardViewComponent]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class IssuesViewerModule {}"}],"authorContributionMap":{"nknguyenhc":2,"-":13}},{"path":"src/app/shared/filter-bar/filter-bar.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cmat-grid-list cols\u003d\"7\" rowHeight\u003d\"80px\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile colspan\u003d\"3\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-form-field class\u003d\"search-bar\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cinput matInput (keyup)\u003d\"applyFilter($event.target.value)\" placeholder\u003d\"Search\" /\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile colspan\u003d\"3\"\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"dropdown-filters\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"standard\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eStatus\u003c/mat-label\u003e"},{"lineNumber":12,"author":{"gitId":"Arif-Khalid"},"content":" \u003cmat-select [value]\u003d\"this.dropdownFilter.status\" (selectionChange)\u003d\"this.filtersService.updateFilters({ status: $event.value })\"\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"all\"\u003eAll\u003c/mat-option\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"open\"\u003eOpen\u003c/mat-option\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"closed\"\u003eClosed\u003c/mat-option\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"merged\" *ngIf\u003d\"isNotFilterIssue()\"\u003eMerged\u003c/mat-option\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"standard\"\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eType\u003c/mat-label\u003e"},{"lineNumber":21,"author":{"gitId":"Arif-Khalid"},"content":" \u003cmat-select [value]\u003d\"this.dropdownFilter.type\" (selectionChange)\u003d\"this.filtersService.updateFilters({ type: $event.value })\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"all\"\u003eAll\u003c/mat-option\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"issue\"\u003eIssue\u003c/mat-option\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"pullrequest\"\u003ePull Request\u003c/mat-option\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":27,"author":{"gitId":"Arif-Khalid"},"content":" \u003cmat-form-field"},{"lineNumber":28,"author":{"gitId":"Arif-Khalid"},"content":" appearance\u003d\"standard\""},{"lineNumber":29,"author":{"gitId":"Arif-Khalid"},"content":" matSort"},{"lineNumber":30,"author":{"gitId":"Arif-Khalid"},"content":" [matSortDisableClear]\u003d\"true\""},{"lineNumber":31,"author":{"gitId":"Arif-Khalid"},"content":" (matSortChange)\u003d\"this.filtersService.updateFilters({ sort: $event })\""},{"lineNumber":32,"author":{"gitId":"Arif-Khalid"},"content":" \u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eSort\u003c/mat-label\u003e"},{"lineNumber":34,"author":{"gitId":"Arif-Khalid"},"content":" \u003cmat-select [value]\u003d\"this.dropdownFilter.sort.active\"\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"id\"\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cspan mat-sort-header\u003d\"id\"\u003eID\u003c/span\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"title\"\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cspan mat-sort-header\u003d\"title\"\u003eTitle\u003c/span\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cmat-option value\u003d\"date\"\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cspan mat-sort-header\u003d\"date\"\u003eDate Updated\u003c/span\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"standard\"\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eMilestone\u003c/mat-label\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cmat-select"},{"lineNumber":49,"author":{"gitId":"-"},"content":" #milestoneSelectorRef"},{"lineNumber":50,"author":{"gitId":"Arif-Khalid"},"content":" [value]\u003d\"this.dropdownFilter.milestones\""},{"lineNumber":51,"author":{"gitId":"Arif-Khalid"},"content":" (selectionChange)\u003d\"this.filtersService.updateFilters({ milestones: $event.value })\""},{"lineNumber":52,"author":{"gitId":"-"},"content":" [disabled]\u003d\"this.milestoneService.hasNoMilestones\""},{"lineNumber":53,"author":{"gitId":"-"},"content":" multiple"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cmat-select-trigger *ngIf\u003d\"this.milestoneService.hasNoMilestones\"\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cspan\u003eNo Milestones\u003c/span\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/mat-select-trigger\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cmat-option *ngFor\u003d\"let milestone of this.milestoneService.milestones\" [value]\u003d\"milestone.number\"\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":" {{ milestone.title }}"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/mat-option\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003c/mat-select\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile class\u003d\"label-filter-grid-tile\" colspan\u003d\"1\"\u003e"},{"lineNumber":67,"author":{"gitId":"Arif-Khalid"},"content":" \u003capp-label-filter-bar\u003e\u003c/app-label-filter-bar\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/mat-grid-list\u003e"}],"authorContributionMap":{"Arif-Khalid":12,"-":57}},{"path":"src/app/shared/filter-bar/filter-bar.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, Input, OnDestroy, OnInit, QueryList, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatSelect } from \u0027@angular/material/select\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { BehaviorSubject, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"Arif-Khalid"},"content":"import { FiltersService } from \u0027../../core/services/filters.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { MilestoneService } from \u0027../../core/services/milestone.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { DEFAULT_DROPDOWN_FILTER, DropdownFilter } from \u0027../issue-tables/dropdownfilter\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { FilterableComponent } from \u0027../issue-tables/filterableTypes\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { LabelFilterBarComponent } from \u0027./label-filter-bar/label-filter-bar.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This component is abstracted out filterbar used by both detailed-viewer page"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * and Issues-viewer"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */"},{"lineNumber":16,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":17,"author":{"gitId":"-"},"content":" selector: \u0027app-filter-bar\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" templateUrl: \u0027./filter-bar.component.html\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./filter-bar.component.css\u0027]"},{"lineNumber":20,"author":{"gitId":"-"},"content":"})"},{"lineNumber":21,"author":{"gitId":"-"},"content":"export class FilterBarComponent implements OnInit, AfterViewInit, OnDestroy {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Input() views$: BehaviorSubject\u003cQueryList\u003cFilterableComponent\u003e\u003e;"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" repoChangeSubscription: Subscription;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" /** Selected dropdown filter value */"},{"lineNumber":27,"author":{"gitId":"-"},"content":" dropdownFilter: DropdownFilter \u003d DEFAULT_DROPDOWN_FILTER;"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" /** Milestone subscription */"},{"lineNumber":30,"author":{"gitId":"-"},"content":" milestoneSubscription: Subscription;"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":" @ViewChild(LabelFilterBarComponent, { static: true }) labelFilterBar: LabelFilterBarComponent;"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" @ViewChild(\u0027milestoneSelectorRef\u0027, { static: false }) milestoneSelectorRef: MatSelect;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"Arif-Khalid"},"content":" constructor("},{"lineNumber":37,"author":{"gitId":"Arif-Khalid"},"content":" public milestoneService: MilestoneService,"},{"lineNumber":38,"author":{"gitId":"Arif-Khalid"},"content":" public filtersService: FiltersService,"},{"lineNumber":39,"author":{"gitId":"Arif-Khalid"},"content":" private phaseService: PhaseService,"},{"lineNumber":40,"author":{"gitId":"Arif-Khalid"},"content":" private logger: LoggingService"},{"lineNumber":41,"author":{"gitId":"Arif-Khalid"},"content":" ) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.repoChangeSubscription \u003d this.phaseService.repoChanged$.subscribe((newRepo) \u003d\u003e this.initialize());"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.initialize();"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":50,"author":{"gitId":"Arif-Khalid"},"content":" this.filtersService.dropdownFilter$.subscribe((dropdownFilter) \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"Arif-Khalid"},"content":" this.dropdownFilter \u003d dropdownFilter;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.applyDropdownFilter();"},{"lineNumber":53,"author":{"gitId":"-"},"content":" });"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.milestoneSubscription.unsubscribe();"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.repoChangeSubscription.unsubscribe();"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Signals to IssuesDataTable that a change has occurred in filter."},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param filterValue"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */"},{"lineNumber":65,"author":{"gitId":"-"},"content":" applyFilter(filterValue: string) {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.views$?.value?.forEach((v) \u003d\u003e (v.retrieveFilterable().filter \u003d filterValue));"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Signals to IssuesDataTable that a change has occurred in dropdown filter."},{"lineNumber":71,"author":{"gitId":"-"},"content":" */"},{"lineNumber":72,"author":{"gitId":"-"},"content":" applyDropdownFilter() {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.views$?.value?.forEach((v) \u003d\u003e (v.retrieveFilterable().dropdownFilter \u003d this.dropdownFilter));"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Checks if program is filtering by type issue."},{"lineNumber":78,"author":{"gitId":"-"},"content":" */"},{"lineNumber":79,"author":{"gitId":"-"},"content":" isNotFilterIssue() {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this.dropdownFilter.type !\u003d\u003d \u0027issue\u0027;"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Fetch and initialize all information from repository to populate Issue Dashboard."},{"lineNumber":85,"author":{"gitId":"-"},"content":" */"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private initialize() {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Fetch milestones and update dropdown filter"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.milestoneSubscription \u003d this.milestoneService.fetchMilestones().subscribe("},{"lineNumber":89,"author":{"gitId":"-"},"content":" (response) \u003d\u003e {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.logger.debug(\u0027IssuesViewerComponent: Fetched milestones from Github\u0027);"},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.milestoneService.milestones.forEach((milestone) \u003d\u003e this.dropdownFilter.milestones.push(milestone.number));"},{"lineNumber":92,"author":{"gitId":"-"},"content":" },"},{"lineNumber":93,"author":{"gitId":"-"},"content":" (err) \u003d\u003e {},"},{"lineNumber":94,"author":{"gitId":"-"},"content":" () \u003d\u003e {}"},{"lineNumber":95,"author":{"gitId":"-"},"content":" );"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Arif-Khalid":9,"-":88}},{"path":"src/app/shared/filter-bar/label-filter-bar/label-filter-bar.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cbutton mat-stroked-button *ngIf\u003d\"loaded\" [matMenuTriggerFor]\u003d\"menu\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" {{ selectedLabelNames.length \u003d\u003d 0 ? \u0027All\u0027 : selectedLabelNames.length }} Selected | {{ hiddenLabelNames?.size || 0 }} Hidden ▾"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cbutton mat-stroked-button disabled *ngIf\u003d\"!loaded\" color\u003d\"accent\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cmat-progress-bar mode\u003d\"query\"\u003e\u003c/mat-progress-bar\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003cmat-menu #menu\u003d\"matMenu\" class\u003d\"popupmenu\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cdiv (click)\u003d\"$event.stopPropagation()\" class\u003d\"popup-container\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"standard\" class\u003d\"input-field\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eLabels\u003c/mat-label\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cinput #input matInput placeholder\u003d\"Find labels\" /\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cbutton mat-button (click)\u003d\"removeAllSelection()\"\u003eRemove all\u003c/button\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"!hasLabels(input.value)\" class\u003d\"no-labels\"\u003eNo Labels Found!\u003c/div\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"scroll-container-wrapper\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"scroll-container\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmat-selection-list [(ngModel)]\u003d\"selectedLabelNames\" (selectionChange)\u003d\"updateSelection()\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cmat-list-option"},{"lineNumber":24,"author":{"gitId":"-"},"content":" #option"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let label of this.labels$ | async\""},{"lineNumber":26,"author":{"gitId":"-"},"content":" [value]\u003d\"label.name\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" [selected]\u003d\"selectedLabelNames.includes(label.name)\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" class\u003d\"list-option\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" [class.hidden]\u003d\"filter(input.value, label.name)\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"flexbox-container\"\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cbutton mat-icon-button *ngIf\u003d\"!hiddenLabelNames.has(label.name)\" (click)\u003d\"hide(label.name); $event.stopPropagation()\"\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003evisibility\u003c/mat-icon\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cbutton mat-icon-button *ngIf\u003d\"hiddenLabelNames.has(label.name)\" (click)\u003d\"show(label.name); $event.stopPropagation()\"\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003evisibility_off\u003c/mat-icon\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cmat-chip"},{"lineNumber":39,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"labelService.setLabelStyle(label.color)\""},{"lineNumber":40,"author":{"gitId":"-"},"content":" [disabled]\u003d\"hiddenLabelNames.has(label.name)\""},{"lineNumber":41,"author":{"gitId":"-"},"content":" (click)\u003d\"simulateClick(option); $event.stopPropagation()\""},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":43,"author":{"gitId":"nknguyenhc"},"content":" {{ label.name }}"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/mat-chip\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/mat-list-option\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/mat-selection-list\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":"\u003c/mat-menu\u003e"}],"authorContributionMap":{"nknguyenhc":1,"-":50}},{"path":"src/app/shared/filter-bar/label-filter-bar/label-filter-bar.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Arif-Khalid"},"content":"import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatListOption, MatSelectionList } from \u0027@angular/material/list\u0027;"},{"lineNumber":3,"author":{"gitId":"Arif-Khalid"},"content":"import { Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { SimpleLabel } from \u0027../../../core/models/label.model\u0027;"},{"lineNumber":5,"author":{"gitId":"Arif-Khalid"},"content":"import { FiltersService } from \u0027../../../core/services/filters.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../../core/services/logging.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":10,"author":{"gitId":"-"},"content":" selector: \u0027app-label-filter-bar\u0027,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" templateUrl: \u0027./label-filter-bar.component.html\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./label-filter-bar.component.css\u0027]"},{"lineNumber":13,"author":{"gitId":"-"},"content":"})"},{"lineNumber":14,"author":{"gitId":"-"},"content":"export class LabelFilterBarComponent implements OnInit, AfterViewInit, OnDestroy {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @ViewChild(MatSelectionList) matSelectionList;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":" labels$: Observable\u003cSimpleLabel[]\u003e;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" allLabels: SimpleLabel[];"},{"lineNumber":19,"author":{"gitId":"-"},"content":" selectedLabelNames: string[] \u003d [];"},{"lineNumber":20,"author":{"gitId":"-"},"content":" hiddenLabelNames: Set\u003cstring\u003e \u003d new Set();"},{"lineNumber":21,"author":{"gitId":"-"},"content":" loaded \u003d false;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":" labelSubscription: Subscription;"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"Arif-Khalid"},"content":" constructor(private labelService: LabelService, private logger: LoggingService, private filtersService: FiltersService) {}"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.loaded \u003d false;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.load();"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.labels$ \u003d this.labelService.connect();"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.labels$.subscribe((labels) \u003d\u003e {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.allLabels \u003d labels;"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":" });"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.labelSubscription?.unsubscribe();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" hide(label: string): void {"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (this.hiddenLabelNames.has(label)) {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.hiddenLabelNames.add(label);"},{"lineNumber":51,"author":{"gitId":"Arif-Khalid"},"content":" this.filtersService.updateFilters({ hiddenLabels: this.hiddenLabelNames });"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":" /** Show labels that were hidden */"},{"lineNumber":55,"author":{"gitId":"-"},"content":" show(label: string): void {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!this.hiddenLabelNames.has(label)) {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.hiddenLabelNames.delete(label);"},{"lineNumber":60,"author":{"gitId":"Arif-Khalid"},"content":" this.filtersService.updateFilters({ hiddenLabels: this.hiddenLabelNames });"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * chip as of the current project version consumes click events"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * this method is used as an workaround the issue."},{"lineNumber":66,"author":{"gitId":"-"},"content":" * https://github.com/angular/components/issues/19759"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */"},{"lineNumber":68,"author":{"gitId":"-"},"content":" simulateClick(el: MatListOption): void {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (el.disabled) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }"},{"lineNumber":72,"author":{"gitId":"-"},"content":" el.toggle();"},{"lineNumber":73,"author":{"gitId":"Arif-Khalid"},"content":" this.updateSelection();"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":" /** loads in the labels in the repository */"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public load() {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.labelService.startPollLabels();"},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.labelSubscription \u003d this.labelService.fetchLabels().subscribe("},{"lineNumber":80,"author":{"gitId":"-"},"content":" (response) \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" this.logger.debug(\u0027LabelFilterBarComponent: Fetched labels from Github\u0027);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" },"},{"lineNumber":83,"author":{"gitId":"-"},"content":" (err) \u003d\u003e {},"},{"lineNumber":84,"author":{"gitId":"-"},"content":" () \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.loaded \u003d true;"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":" );"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" filter(filter: string, target: string): boolean {"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return !target.toLowerCase().includes(filter.toLowerCase());"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" hasLabels(filter: string): boolean {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (this.allLabels \u003d\u003d\u003d undefined || this.allLabels.length \u003d\u003d\u003d 0) {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"nknguyenhc"},"content":" return this.allLabels.some((label) \u003d\u003e !this.filter(filter, label.name));"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":""},{"lineNumber":101,"author":{"gitId":"-"},"content":" updateSelection(): void {"},{"lineNumber":102,"author":{"gitId":"Arif-Khalid"},"content":" this.filtersService.updateFilters({ labels: this.selectedLabelNames });"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }"},{"lineNumber":104,"author":{"gitId":"-"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" removeAllSelection(): void {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.matSelectionList.deselectAll();"},{"lineNumber":107,"author":{"gitId":"-"},"content":" this.updateSelection();"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":1,"Arif-Khalid":8,"-":100}},{"path":"src/app/shared/issue-pr-card/issue-pr-card-labels/issue-pr-card-labels.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, Input } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"nknguyenhc"},"content":"import { GithubLabel } from \u0027../../../core/models/github/github-label.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../../core/services/label.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":6,"author":{"gitId":"-"},"content":" selector: \u0027app-issue-pr-card-labels\u0027,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" templateUrl: \u0027./issue-pr-card-labels.component.html\u0027,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./issue-pr-card-labels.component.css\u0027]"},{"lineNumber":9,"author":{"gitId":"-"},"content":"})"},{"lineNumber":10,"author":{"gitId":"-"},"content":"export class IssuePrCardLabelsComponent {"},{"lineNumber":11,"author":{"gitId":"nknguyenhc"},"content":" @Input() labels: GithubLabel[];"},{"lineNumber":12,"author":{"gitId":"nknguyenhc"},"content":" @Input() labelSet: Set\u003cstring\u003e;"},{"lineNumber":13,"author":{"gitId":"-"},"content":" constructor(public labelService: LabelService) {}"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":3,"-":11}},{"path":"src/app/shared/issue-tables/IssuesDataTable.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { DataSource } from \u0027@angular/cdk/table\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { BehaviorSubject, merge, Observable, Subscription } from \u0027rxjs\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { map } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { applyDropdownFilter, DEFAULT_DROPDOWN_FILTER, DropdownFilter } from \u0027./dropdownfilter\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { FilterableSource } from \u0027./filterableTypes\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { paginateData } from \u0027./issue-paginator\u0027;"},{"lineNumber":11,"author":{"gitId":"Arif-Khalid"},"content":"import { applySort } from \u0027./issue-sorter\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027./search-filter\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"export class IssuesDataTable extends DataSource\u003cIssue\u003e implements FilterableSource {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public count \u003d 0;"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private filterChange \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private dropdownFilterChange \u003d new BehaviorSubject(DEFAULT_DROPDOWN_FILTER);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private teamFilterChange \u003d new BehaviorSubject(\u0027\u0027);"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private issuesSubject \u003d new BehaviorSubject\u003cIssue[]\u003e([]);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private issueSubscription: Subscription;"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" public isLoading$ \u003d this.issueService.isLoading.asObservable();"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":25,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private paginator: MatPaginator,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private displayedColumn: string[],"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private assignee?: GithubUser,"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private defaultFilter?: (issue: Issue) \u003d\u003e boolean"},{"lineNumber":30,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" super();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" connect(): Observable\u003cIssue[]\u003e {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return this.issuesSubject.asObservable();"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" disconnect() {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.dropdownFilterChange.complete();"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.filterChange.complete();"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.teamFilterChange.complete();"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.issuesSubject.complete();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.issueSubscription.unsubscribe();"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.issueService.stopPollIssues();"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" loadIssues() {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" let page;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (this.paginator !\u003d\u003d undefined) {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" page \u003d this.paginator.page;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"Arif-Khalid"},"content":" const displayDataChanges \u003d [this.issueService.issues$, page, this.filterChange, this.dropdownFilterChange].filter("},{"lineNumber":54,"author":{"gitId":"-"},"content":" (x) \u003d\u003e x !\u003d\u003d undefined"},{"lineNumber":55,"author":{"gitId":"-"},"content":" );"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.issueService.startPollIssues();"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.issueSubscription \u003d merge(...displayDataChanges)"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":60,"author":{"gitId":"-"},"content":" // maps each change in display value to new issue ordering or filtering"},{"lineNumber":61,"author":{"gitId":"-"},"content":" map(() \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" let data \u003d \u003cIssue[]\u003eObject.values(this.issueService.issues$.getValue()).reverse();"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (this.defaultFilter) {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" data \u003d data.filter(this.defaultFilter);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Filter by assignee of issue"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (this.assignee) {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" data \u003d data.filter((issue) \u003d\u003e {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (issue.issueOrPr \u003d\u003d\u003d \u0027PullRequest\u0027) {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return issue.author \u003d\u003d\u003d this.assignee.login;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" } else if (!issue.assignees) {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return issue.assignees.includes(this.assignee.login);"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":" });"},{"lineNumber":77,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" data \u003d data.filter((issue) \u003d\u003e {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return issue.issueOrPr !\u003d\u003d \u0027PullRequest\u0027 \u0026\u0026 issue.assignees.length \u003d\u003d\u003d 0;"},{"lineNumber":80,"author":{"gitId":"-"},"content":" });"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" // Dropdown Filters"},{"lineNumber":84,"author":{"gitId":"Arif-Khalid"},"content":" data \u003d applyDropdownFilter(this.dropdownFilter, data);"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" data \u003d applySearchFilter(this.filter, this.displayedColumn, this.issueService, data);"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.count \u003d data.length;"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"Arif-Khalid"},"content":" data \u003d applySort(this.dropdownFilter.sort, data);"},{"lineNumber":90,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (this.paginator !\u003d\u003d undefined) {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" data \u003d paginateData(this.paginator, data);"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" })"},{"lineNumber":96,"author":{"gitId":"-"},"content":" )"},{"lineNumber":97,"author":{"gitId":"-"},"content":" .subscribe((issues) \u003d\u003e {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.issuesSubject.next(issues);"},{"lineNumber":99,"author":{"gitId":"-"},"content":" });"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" get filter(): string {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return this.filterChange.value;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" set filter(filter: string) {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" this.filterChange.next(filter);"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":" get dropdownFilter(): DropdownFilter {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return this.dropdownFilterChange.value;"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":" set dropdownFilter(filter: DropdownFilter) {"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.dropdownFilterChange.next(filter);"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Arif-Khalid":6,"-":111}},{"path":"src/app/shared/issue-tables/dropdownfilter.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Arif-Khalid"},"content":"import { Sort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"export type DropdownFilter \u003d {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" status: string;"},{"lineNumber":6,"author":{"gitId":"-"},"content":" type: string;"},{"lineNumber":7,"author":{"gitId":"Arif-Khalid"},"content":" sort: Sort;"},{"lineNumber":8,"author":{"gitId":"-"},"content":" labels: string[];"},{"lineNumber":9,"author":{"gitId":"-"},"content":" milestones: string[];"},{"lineNumber":10,"author":{"gitId":"-"},"content":" hiddenLabels?: Set\u003cstring\u003e;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"};"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const DEFAULT_DROPDOWN_FILTER \u003d \u003cDropdownFilter\u003e{"},{"lineNumber":14,"author":{"gitId":"-"},"content":" status: \u0027all\u0027,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" type: \u0027all\u0027,"},{"lineNumber":16,"author":{"gitId":"Arif-Khalid"},"content":" sort: { active: \u0027id\u0027, direction: \u0027asc\u0027 },"},{"lineNumber":17,"author":{"gitId":"-"},"content":" labels: [],"},{"lineNumber":18,"author":{"gitId":"-"},"content":" milestones: []"},{"lineNumber":19,"author":{"gitId":"-"},"content":"};"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * This module serves to improve separation of concerns in IssuesDataTable.ts and IssueList.ts module by containing the logic for"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * applying dropdownFilter to the issues data table in this module."},{"lineNumber":24,"author":{"gitId":"-"},"content":" * This module exports a single function applyDropDownFilter which is called by IssueList."},{"lineNumber":25,"author":{"gitId":"Arif-Khalid"},"content":" * This functions returns the data passed in after all the filters of dropdownFilters are applied"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */"},{"lineNumber":27,"author":{"gitId":"Arif-Khalid"},"content":"export function applyDropdownFilter(dropdownFilter: DropdownFilter, data: Issue[]): Issue[] {"},{"lineNumber":28,"author":{"gitId":"Arif-Khalid"},"content":" const filteredData: Issue[] \u003d data.filter((issue) \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" let ret \u003d true;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" if (dropdownFilter.status \u003d\u003d\u003d \u0027open\u0027) {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ret \u003d ret \u0026\u0026 issue.state \u003d\u003d\u003d \u0027OPEN\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" } else if (dropdownFilter.status \u003d\u003d\u003d \u0027closed\u0027) {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // there is apparently also a status called \u0027all\u0027 based on github api"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ret \u003d ret \u0026\u0026 issue.state \u003d\u003d\u003d \u0027CLOSED\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" } else if (dropdownFilter.status \u003d\u003d\u003d \u0027merged\u0027) {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ret \u003d ret \u0026\u0026 issue.state \u003d\u003d\u003d \u0027MERGED\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (dropdownFilter.type \u003d\u003d\u003d \u0027issue\u0027) {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ret \u003d ret \u0026\u0026 issue.issueOrPr \u003d\u003d\u003d \u0027Issue\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":" } else if (dropdownFilter.type \u003d\u003d\u003d \u0027pullrequest\u0027) {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" ret \u003d ret \u0026\u0026 issue.issueOrPr \u003d\u003d\u003d \u0027PullRequest\u0027;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" ret \u003d ret \u0026\u0026 dropdownFilter.milestones.some((milestone) \u003d\u003e issue.milestone.number \u003d\u003d\u003d milestone);"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" return ret \u0026\u0026 dropdownFilter.labels.every((label) \u003d\u003e issue.labels.includes(label));"},{"lineNumber":49,"author":{"gitId":"Arif-Khalid"},"content":" });"},{"lineNumber":50,"author":{"gitId":"Arif-Khalid"},"content":" return filteredData;"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Arif-Khalid":8,"-":43}},{"path":"src/app/shared/issue-tables/issue-sorter.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Arif-Khalid"},"content":"import { Sort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import * as moment from \u0027moment\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"Arif-Khalid"},"content":"export function applySort(sort: Sort, data: Issue[]): Issue[] {"},{"lineNumber":6,"author":{"gitId":"-"},"content":" if (!sort.active) {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":8,"author":{"gitId":"-"},"content":" }"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":" const direction: number \u003d sort.direction \u003d\u003d\u003d \u0027asc\u0027 ? 1 : -1;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":" return data.sort((a, b) \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" switch (sort.active) {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" case \u0027assignees\u0027:"},{"lineNumber":15,"author":{"gitId":"-"},"content":" return direction * compareByStringValue(a.assignees.join(\u0027, \u0027), b.assignees.join(\u0027, \u0027));"},{"lineNumber":16,"author":{"gitId":"-"},"content":" case \u0027id\u0027:"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return direction * compareByIntegerValue(a.id, b.id);"},{"lineNumber":18,"author":{"gitId":"-"},"content":" case \u0027date\u0027:"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return direction * compareByDateValue(a.updated_at, b.updated_at);"},{"lineNumber":20,"author":{"gitId":"-"},"content":" default:"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // title, responseTag are string values"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return direction * compareByStringValue(a[sort.active], b[sort.active]);"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }"},{"lineNumber":24,"author":{"gitId":"-"},"content":" });"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":"function compareByStringValue(valueA: string, valueB: string): number {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" const orderA \u003d String(valueA || \u0027\u0027).toUpperCase();"},{"lineNumber":29,"author":{"gitId":"-"},"content":" const orderB \u003d String(valueB || \u0027\u0027).toUpperCase();"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return orderA \u003c orderB ? -1 : 1;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"function compareByIntegerValue(valueA: number, valueB: number): number {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return valueA \u003c valueB ? -1 : 1;"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":"function compareByDateValue(valueA: string, valueB: string): number {"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return moment(valueA).isBefore(valueB) ? -1 : 1;"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Arif-Khalid":2,"-":37}},{"path":"src/app/shared/layout/header.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cmat-toolbar color\u003d\"primary\" style\u003d\"position: sticky; position: -webkit-sticky; top: 0; z-index: 1000\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":3,"author":{"gitId":"-"},"content":" *ngIf\u003d\"isBackButtonShown()\""},{"lineNumber":4,"author":{"gitId":"-"},"content":" mat-icon-button"},{"lineNumber":5,"author":{"gitId":"-"},"content":" class\u003d\"mat-toolbar mat-primary back-button\""},{"lineNumber":6,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.9)\""},{"lineNumber":7,"author":{"gitId":"-"},"content":" (click)\u003d\"goBack()\""},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003earrow_back_ios\u003c/mat-icon\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":11,"author":{"gitId":"MadLamprey"},"content":" \u003ca"},{"lineNumber":12,"author":{"gitId":"MadLamprey"},"content":" class\u003d\"mat-toolbar mat-primary\""},{"lineNumber":13,"author":{"gitId":"MadLamprey"},"content":" style\u003d\"text-decoration: none\""},{"lineNumber":14,"author":{"gitId":"MadLamprey"},"content":" [routerLink]\u003d\"phaseService.isRepoSet() ? phaseService.currentPhase : null\""},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003eWATcher v{{ this.getVersion() }}\u003c/a"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"phase-descriptor\" *ngIf\u003d\"auth.isAuthenticated()\" style\u003d\"margin-left: 10px\"\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" ({{ this.getPhaseDescription(phaseService.currentPhase) }})"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 this.phaseService.sessionData.sessionRepo.length \u003e 1\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cbutton mat-button [matMenuTriggerFor]\u003d\"menu\"\u003e\u003cmat-icon style\u003d\"color: white\"\u003eexpand_more\u003c/mat-icon\u003e\u003c/button\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cmat-menu #menu\u003d\"matMenu\"\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":25,"author":{"gitId":"-"},"content":" mat-menu-item"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let sessionRepo of this.phaseService.sessionData.sessionRepo\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" (click)\u003d\"this.routeToSelectedPhase(sessionRepo.phase)\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cspan\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cmat-icon [ngStyle]\u003d\"{ color: \u0027green\u0027, visibility: this.phaseService.currentPhase \u003d\u003d\u003d sessionRepo.phase ? \u0027visible\u0027 : \u0027hidden\u0027 }\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003edone\u003c/mat-icon"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" {{ this.getPhaseDescription(sessionRepo.phase) }}"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/mat-menu\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c!-- everything else --\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"flex: 1 1 auto\"\u003e\u003c/span\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 phaseService.isRepoSet()\"\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"phase-descriptor\" style\u003d\"margin-left: 10px\"\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" {{ this.currentRepo || \u0027No Repository Set\u0027 }}"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":48,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":49,"author":{"gitId":"-"},"content":" matTooltip\u003d\"{{ phaseService.isRepoSet() ? \u0027Change Repository\u0027 : \u0027Select Repository\u0027 }}\""},{"lineNumber":50,"author":{"gitId":"-"},"content":" (click)\u003d\"this.openChangeRepoDialog()\""},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eedit\u003c/mat-icon\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"flex: 1 1 auto\"\u003e\u003c/span\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cbutton mat-button matTooltip\u003d\"Download WATcher Log\" (click)\u003d\"this.exportLogFile()\"\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003ereceipt\u003c/mat-icon\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cbutton mat-button matTooltip\u003d\"Give feedback about WATcher\" (click)\u003d\"openIssueTracker()\"\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003email\u003c/mat-icon\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":66,"author":{"gitId":"-"},"content":" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 phaseService.isRepoSet() \u0026\u0026 isOpenUrlButtonShown()\""},{"lineNumber":67,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":68,"author":{"gitId":"-"},"content":" matTooltip\u003d\"View current page on GitHub\""},{"lineNumber":69,"author":{"gitId":"-"},"content":" (click)\u003d\"viewBrowser()\""},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eopen_in_new\u003c/mat-icon\u003e"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"sync-spinner\" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 (this.isLoading$ | async); else notLoading\"\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003cmat-spinner class\u003d\"white-spinner\" [diameter]\u003d\"20\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cng-template #notLoading\u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":80,"author":{"gitId":"-"},"content":" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 phaseService.isRepoSet() \u0026\u0026 isReloadButtonShown() \u0026\u0026 !this.isReloadButtonDisabled\""},{"lineNumber":81,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":82,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Synchronize with Github data\""},{"lineNumber":83,"author":{"gitId":"-"},"content":" (click)\u003d\"reload()\""},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Sync"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003erefresh\u003c/mat-icon\u003e"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"sync-spinner\" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 isReloadButtonShown() \u0026\u0026 this.isReloadButtonDisabled\"\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"font-size: 14px; margin-right: 7px\"\u003eSync\u003c/span\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003cmat-spinner class\u003d\"white-spinner\" [diameter]\u003d\"20\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cbutton *ngIf\u003d\"auth.isAuthenticated()\" mat-button matTooltip\u003d\"Log out\" (click)\u003d\"openLogOutDialog(); $event.stopPropagation()\"\u003e"},{"lineNumber":95,"author":{"gitId":"-"},"content":" ({{ userService.currentUser.loginId }})"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003cmat-icon style\u003d\"margin-left: 2px\"\u003eexit_to_app\u003c/mat-icon\u003e"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003c/mat-toolbar\u003e"}],"authorContributionMap":{"MadLamprey":4,"-":94}},{"path":"src/app/shared/layout/header.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Location } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Component, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Router, RoutesRecognized } from \u0027@angular/router\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { filter, pairwise, switchMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { STORAGE_KEYS } from \u0027../../core/constants/storage-keys.constants\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../core/models/phase.model\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { Repo } from \u0027../../core/models/repo.model\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { AuthService } from \u0027../../core/services/auth.service\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { DialogService } from \u0027../../core/services/dialog.service\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":13,"author":{"gitId":"Arif-Khalid"},"content":"import { FiltersService } from \u0027../../core/services/filters.service\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../../core/services/github.service\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../core/services/label.service\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import { PhaseDescription, PhaseService } from \u0027../../core/services/phase.service\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import { RepoSessionStorageService } from \u0027../../core/services/repo-session-storage.service\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import { RepoUrlCacheService } from \u0027../../core/services/repo-url-cache.service\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import { UserService } from \u0027../../core/services/user.service\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"const ISSUE_TRACKER_URL \u003d \u0027https://github.com/CATcher-org/WATcher/issues\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":27,"author":{"gitId":"-"},"content":" selector: \u0027app-layout-header\u0027,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" templateUrl: \u0027./header.component.html\u0027"},{"lineNumber":29,"author":{"gitId":"-"},"content":"})"},{"lineNumber":30,"author":{"gitId":"-"},"content":"export class HeaderComponent implements OnInit {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private prevUrl;"},{"lineNumber":32,"author":{"gitId":"-"},"content":" isReloadButtonDisabled \u003d false;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ISSUE_FILTER \u003d \u0027/issues?q\u003dis:issue+is:all\u0027; // the filtered list must be an issue and must be open"},{"lineNumber":34,"author":{"gitId":"-"},"content":" TUTORIAL_LABEL \u003d \u0027+label:tutorial.\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" TEAM_LABEL \u003d \u0027+label:team.\u0027;"},{"lineNumber":36,"author":{"gitId":"-"},"content":" EXCLUDE_DUPLICATE \u003d \u0027+-label:duplicate\u0027; // exclude duplicate issues"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" public isLoading$: Observable\u003cboolean\u003e;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" // Messages for the modal popup window upon logging out"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private readonly logOutDialogMessages \u003d [\u0027Do you wish to log out?\u0027];"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private readonly yesButtonDialogMessage \u003d \u0027Yes, I wish to log out\u0027;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private readonly noButtonDialogMessage \u003d \"No, I don\u0027t wish to log out\";"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" /** Model for the displayed repository name */"},{"lineNumber":46,"author":{"gitId":"-"},"content":" currentRepo \u003d \u0027\u0027;"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":49,"author":{"gitId":"-"},"content":" private router: Router,"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public auth: AuthService,"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public phaseService: PhaseService,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public userService: UserService,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public logger: LoggingService,"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private location: Location,"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private githubEventService: GithubEventService,"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private repoUrlCacheService: RepoUrlCacheService,"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private labelService: LabelService,"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private githubService: GithubService,"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private dialogService: DialogService,"},{"lineNumber":62,"author":{"gitId":"Arif-Khalid"},"content":" private repoSessionStorageService: RepoSessionStorageService,"},{"lineNumber":63,"author":{"gitId":"Arif-Khalid"},"content":" private filtersService: FiltersService"},{"lineNumber":64,"author":{"gitId":"-"},"content":" ) {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" router.events"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .pipe("},{"lineNumber":67,"author":{"gitId":"-"},"content":" filter((e: any) \u003d\u003e e instanceof RoutesRecognized),"},{"lineNumber":68,"author":{"gitId":"-"},"content":" pairwise()"},{"lineNumber":69,"author":{"gitId":"-"},"content":" )"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .subscribe((e) \u003d\u003e {"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.prevUrl \u003d e[0].urlAfterRedirects;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" });"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.auth.currentAuthState.subscribe(() \u003d\u003e {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (auth.isAuthenticated() \u0026\u0026 !repoSessionStorageService.hasRepoLocation()) {"},{"lineNumber":76,"author":{"gitId":"nknguyenhc"},"content":" if (!this.auth.hasNext()) {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.openChangeRepoDialog();"},{"lineNumber":78,"author":{"gitId":"nknguyenhc"},"content":" } else {"},{"lineNumber":79,"author":{"gitId":"nknguyenhc"},"content":" this.auth.redirectToNext();"},{"lineNumber":80,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":" });"},{"lineNumber":83,"author":{"gitId":"-"},"content":""},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.phaseService.repoSetState.subscribe((state) \u003d\u003e {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (auth.isAuthenticated() \u0026\u0026 phaseService.isRepoSet()) {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.initializeRepoNameInTitle();"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }"},{"lineNumber":88,"author":{"gitId":"-"},"content":" });"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.isLoading$ \u003d this.issueService.isLoading.asObservable();"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" ngOnInit() {}"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Replaces and resets the current phase data and routes the app to the"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * newly selected phase."},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @param openPhase - Open Phase that is selected by the user."},{"lineNumber":99,"author":{"gitId":"-"},"content":" */"},{"lineNumber":100,"author":{"gitId":"-"},"content":" routeToSelectedPhase(openPhase: string): void {"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // Do nothing if the selected phase is the current phase."},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase \u003d\u003d\u003d Phase[openPhase]) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" // Replace Current Phase Data."},{"lineNumber":107,"author":{"gitId":"-"},"content":" this.phaseService.changePhase(Phase[openPhase]);"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":" // Remove current phase issues and load selected phase issues."},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.githubService.reset();"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.issueService.reset(false);"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.labelService.reset();"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.reload();"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":" // Route app to new phase."},{"lineNumber":116,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(this.phaseService.currentPhase);"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":" isBackButtonShown(): boolean {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return `/${this.phaseService.currentPhase}` !\u003d\u003d this.router.url \u0026\u0026 this.router.url !\u003d\u003d \u0027/\u0027 \u0026\u0026 !this.router.url.startsWith(\u0027/?code\u0027);"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }"},{"lineNumber":122,"author":{"gitId":"-"},"content":""},{"lineNumber":123,"author":{"gitId":"-"},"content":" isReloadButtonShown(): boolean {"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return this.router.url !\u003d\u003d \u0027/phaseBugReporting/issues/new\u0027;"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }"},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":" isOpenUrlButtonShown(): boolean {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return this.phaseService.currentPhase \u003d\u003d\u003d Phase.issuesViewer || this.phaseService.currentPhase \u003d\u003d\u003d Phase.activityDashboard;"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }"},{"lineNumber":130,"author":{"gitId":"-"},"content":""},{"lineNumber":131,"author":{"gitId":"-"},"content":" getVersion(): string {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return AppConfig.version;"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }"},{"lineNumber":134,"author":{"gitId":"-"},"content":""},{"lineNumber":135,"author":{"gitId":"-"},"content":" getPhaseDescription(openPhase: string): string {"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return PhaseDescription[openPhase];"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":" goBack() {"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (this.prevUrl \u003d\u003d\u003d `/${this.phaseService.currentPhase}/issues/new`) {"},{"lineNumber":141,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(this.phaseService.currentPhase);"},{"lineNumber":142,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" this.location.back();"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }"},{"lineNumber":146,"author":{"gitId":"-"},"content":""},{"lineNumber":147,"author":{"gitId":"-"},"content":" viewBrowser() {"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (this.phaseService.currentPhase \u003d\u003d\u003d Phase.activityDashboard) {"},{"lineNumber":149,"author":{"gitId":"-"},"content":" window.open(`https://github.com/${this.phaseService.currentRepo.owner}/${this.phaseService.currentRepo.name}/pulse`);"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":" const routerUrl \u003d this.router.url.substring(1); // remove the first \u0027/\u0027 from string"},{"lineNumber":154,"author":{"gitId":"-"},"content":" const issueUrlIndex \u003d routerUrl.indexOf(\u0027/\u0027); // find the index of second \u0027/\u0027"},{"lineNumber":155,"author":{"gitId":"-"},"content":" let issueUrl: string;"},{"lineNumber":156,"author":{"gitId":"-"},"content":""},{"lineNumber":157,"author":{"gitId":"-"},"content":" // If can\u0027t find the index of second \u0027/\u0027, then router is at the /issues (table list) page"},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (issueUrlIndex \u003c 0) {"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // Apply filters to the issueUrl"},{"lineNumber":160,"author":{"gitId":"-"},"content":" issueUrl \u003d this.ISSUE_FILTER;"},{"lineNumber":161,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // issueUrl will be from the second \u0027/\u0027"},{"lineNumber":163,"author":{"gitId":"-"},"content":" issueUrl \u003d routerUrl.substring(issueUrlIndex);"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // Open the url in user\u0027s preferred browser"},{"lineNumber":166,"author":{"gitId":"-"},"content":" window.open(\u0027https://github.com/\u0027.concat(this.githubService.getRepoURL()).concat(issueUrl));"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }"},{"lineNumber":168,"author":{"gitId":"-"},"content":""},{"lineNumber":169,"author":{"gitId":"-"},"content":" openIssueTracker() {"},{"lineNumber":170,"author":{"gitId":"-"},"content":" window.open(ISSUE_TRACKER_URL);"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }"},{"lineNumber":172,"author":{"gitId":"-"},"content":""},{"lineNumber":173,"author":{"gitId":"-"},"content":" reload() {"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.isReloadButtonDisabled \u003d true;"},{"lineNumber":175,"author":{"gitId":"-"},"content":""},{"lineNumber":176,"author":{"gitId":"-"},"content":" this.githubEventService.reloadPage().subscribe("},{"lineNumber":177,"author":{"gitId":"-"},"content":" (success) \u003d\u003e success,"},{"lineNumber":178,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error, () \u003d\u003e this.githubEventService.reloadPage());"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }"},{"lineNumber":181,"author":{"gitId":"-"},"content":" );"},{"lineNumber":182,"author":{"gitId":"-"},"content":""},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.labelService.fetchLabels().subscribe("},{"lineNumber":184,"author":{"gitId":"-"},"content":" (success) \u003d\u003e success,"},{"lineNumber":185,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error, () \u003d\u003e this.labelService.fetchLabels());"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }"},{"lineNumber":188,"author":{"gitId":"-"},"content":" );"},{"lineNumber":189,"author":{"gitId":"-"},"content":""},{"lineNumber":190,"author":{"gitId":"-"},"content":" // Prevent user from spamming the reload button"},{"lineNumber":191,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":192,"author":{"gitId":"-"},"content":" this.isReloadButtonDisabled \u003d false;"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }, 3000);"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }"},{"lineNumber":195,"author":{"gitId":"-"},"content":""},{"lineNumber":196,"author":{"gitId":"-"},"content":" logOut() {"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.auth.logOut();"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":" openLogOutDialog() {"},{"lineNumber":201,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openUserConfirmationModal("},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.logOutDialogMessages,"},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.yesButtonDialogMessage,"},{"lineNumber":204,"author":{"gitId":"-"},"content":" this.noButtonDialogMessage"},{"lineNumber":205,"author":{"gitId":"-"},"content":" );"},{"lineNumber":206,"author":{"gitId":"-"},"content":""},{"lineNumber":207,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":208,"author":{"gitId":"-"},"content":" if (res) {"},{"lineNumber":209,"author":{"gitId":"-"},"content":" this.logger.info(`HeaderComponent: Logging out from ${this.userService.currentUser.loginId}`);"},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.logOut();"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }"},{"lineNumber":212,"author":{"gitId":"-"},"content":" });"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }"},{"lineNumber":214,"author":{"gitId":"-"},"content":""},{"lineNumber":215,"author":{"gitId":"-"},"content":" exportLogFile() {"},{"lineNumber":216,"author":{"gitId":"-"},"content":" this.logger.exportLogFile();"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }"},{"lineNumber":218,"author":{"gitId":"-"},"content":""},{"lineNumber":219,"author":{"gitId":"-"},"content":" initializeRepoNameInTitle() {"},{"lineNumber":220,"author":{"gitId":"-"},"content":" if (Repo.isInvalidRepoName(this.phaseService.currentRepo)) {"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }"},{"lineNumber":223,"author":{"gitId":"-"},"content":" const currentRepoString \u003d this.phaseService.currentRepo.toString();"},{"lineNumber":224,"author":{"gitId":"-"},"content":" this.logger.info(`HeaderComponent: initializing current repository name as ${currentRepoString}`);"},{"lineNumber":225,"author":{"gitId":"-"},"content":" this.currentRepo \u003d currentRepoString;"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }"},{"lineNumber":227,"author":{"gitId":"-"},"content":""},{"lineNumber":228,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Change repository viewed on Issue Dashboard, if a valid repository is provided."},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Re-open dialog to prompt for another repository if an invalid one is provided."},{"lineNumber":231,"author":{"gitId":"-"},"content":" */"},{"lineNumber":232,"author":{"gitId":"-"},"content":" changeRepositoryIfValid(repo: Repo, newRepoString: string) {"},{"lineNumber":233,"author":{"gitId":"-"},"content":" if (newRepoString \u003d\u003d\u003d this.currentRepo) {"},{"lineNumber":234,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }"},{"lineNumber":236,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":237,"author":{"gitId":"Arif-Khalid"},"content":" this.filtersService.clearFilters();"},{"lineNumber":238,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":239,"author":{"gitId":"-"},"content":" this.phaseService"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .changeRepositoryIfValid(repo)"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e {"},{"lineNumber":242,"author":{"gitId":"-"},"content":" this.auth.setTitleWithPhaseDetail();"},{"lineNumber":243,"author":{"gitId":"-"},"content":" this.currentRepo \u003d newRepoString;"},{"lineNumber":244,"author":{"gitId":"-"},"content":" })"},{"lineNumber":245,"author":{"gitId":"-"},"content":" .catch((error) \u003d\u003e {"},{"lineNumber":246,"author":{"gitId":"-"},"content":" this.openChangeRepoDialog();"},{"lineNumber":247,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":248,"author":{"gitId":"-"},"content":" });"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }"},{"lineNumber":250,"author":{"gitId":"-"},"content":""},{"lineNumber":251,"author":{"gitId":"-"},"content":" openChangeRepoDialog() {"},{"lineNumber":252,"author":{"gitId":"-"},"content":" const dialogRef \u003d this.dialogService.openChangeRepoDialog(this.currentRepo);"},{"lineNumber":253,"author":{"gitId":"-"},"content":""},{"lineNumber":254,"author":{"gitId":"-"},"content":" dialogRef.afterClosed().subscribe((res) \u003d\u003e {"},{"lineNumber":255,"author":{"gitId":"-"},"content":" if (!res) {"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }"},{"lineNumber":258,"author":{"gitId":"-"},"content":" const newRepo \u003d Repo.of(res);"},{"lineNumber":259,"author":{"gitId":"-"},"content":""},{"lineNumber":260,"author":{"gitId":"-"},"content":" if (this.phaseService.isRepoSet()) {"},{"lineNumber":261,"author":{"gitId":"-"},"content":" this.changeRepositoryIfValid(newRepo, newRepo.toString());"},{"lineNumber":262,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":263,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":264,"author":{"gitId":"-"},"content":" * From session-selection.component.ts"},{"lineNumber":265,"author":{"gitId":"-"},"content":" *"},{"lineNumber":266,"author":{"gitId":"-"},"content":" * Persist repo information in local browser storage"},{"lineNumber":267,"author":{"gitId":"-"},"content":" * To retrieve after authentication redirects back to WATcher"},{"lineNumber":268,"author":{"gitId":"-"},"content":" *"},{"lineNumber":269,"author":{"gitId":"-"},"content":" * Since localStorage::setItem with an undefined value can result in"},{"lineNumber":270,"author":{"gitId":"-"},"content":" * the subsequent value being stored as a string being \u0027undefined\u0027, check"},{"lineNumber":271,"author":{"gitId":"-"},"content":" * if undefined before storing it. Let\u0027s reset the items before setting them."},{"lineNumber":272,"author":{"gitId":"-"},"content":" */"},{"lineNumber":273,"author":{"gitId":"-"},"content":" window.localStorage.removeItem(STORAGE_KEYS.ORG);"},{"lineNumber":274,"author":{"gitId":"-"},"content":" window.localStorage.removeItem(STORAGE_KEYS.DATA_REPO);"},{"lineNumber":275,"author":{"gitId":"-"},"content":""},{"lineNumber":276,"author":{"gitId":"-"},"content":" if (newRepo) {"},{"lineNumber":277,"author":{"gitId":"-"},"content":" window.localStorage.setItem(STORAGE_KEYS.ORG, newRepo.owner);"},{"lineNumber":278,"author":{"gitId":"-"},"content":" window.localStorage.setItem(STORAGE_KEYS.DATA_REPO, newRepo.name);"},{"lineNumber":279,"author":{"gitId":"-"},"content":""},{"lineNumber":280,"author":{"gitId":"-"},"content":" this.repoUrlCacheService.cache(newRepo.toString());"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }"},{"lineNumber":282,"author":{"gitId":"-"},"content":" this.auth.setRepo().subscribe();"},{"lineNumber":283,"author":{"gitId":"-"},"content":" }"},{"lineNumber":284,"author":{"gitId":"-"},"content":" });"},{"lineNumber":285,"author":{"gitId":"-"},"content":" }"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":4,"Arif-Khalid":6,"-":276}},{"path":"tests/app/auth/login/login.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { ComponentFixture, TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { LoginComponent } from \u0027../../../../src/app/auth/login/login.component\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { AuthService, AuthState } from \u0027../../../../src/app/core/services/auth.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../../../src/app/core/services/logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"describe(\u0027LoginComponent\u0027, () \u003d\u003e {"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" let authServiceSpy: jasmine.SpyObj\u003cAuthService\u003e;"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" let errorHandlingServiceSpy: jasmine.SpyObj\u003cErrorHandlingService\u003e;"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" let loggingServiceSpy: jasmine.SpyObj\u003cLoggingService\u003e;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" let component: LoginComponent;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" let fixture: ComponentFixture\u003cLoginComponent\u003e;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":" beforeEach("},{"lineNumber":15,"author":{"gitId":"-"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" authServiceSpy \u003d jasmine.createSpyObj\u003cAuthService\u003e(\u0027AuthService\u0027, [\u0027startOAuthProcess\u0027, \u0027changeAuthState\u0027]);"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" loggingServiceSpy \u003d jasmine.createSpyObj\u003cLoggingService\u003e(\u0027LoggingService\u0027, [\u0027info\u0027]);"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" errorHandlingServiceSpy \u003d jasmine.createSpyObj\u003cErrorHandlingService\u003e(\u0027ErrorHandlingService\u0027, [\u0027handleError\u0027]);"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" TestBed.configureTestingModule({"},{"lineNumber":21,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" { provide: AuthService, useValue: authServiceSpy },"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" { provide: LoggingService, useValue: loggingServiceSpy },"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" { provide: ErrorHandlingService, useValue: errorHandlingServiceSpy }"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":26,"author":{"gitId":"-"},"content":" declarations: [LoginComponent]"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }).compileComponents();"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" fixture \u003d TestBed.createComponent(LoginComponent);"},{"lineNumber":30,"author":{"gitId":"-"},"content":" component \u003d fixture.componentInstance;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" })"},{"lineNumber":33,"author":{"gitId":"-"},"content":" );"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" it(\u0027should create\u0027, () \u003d\u003e {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" expect(component).toBeTruthy();"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" it(\u0027startPublicOnlyLoginProcess should call startLoginProcess with false\u0027, () \u003d\u003e {"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" spyOn(component, \u0027startLoginProcess\u0027);"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" component.startPublicOnlyLoginProcess();"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" expect(component.startLoginProcess).toHaveBeenCalledWith(false);"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" it(\u0027startIncludePrivateLoginProcess should call startLoginProcess with true\u0027, () \u003d\u003e {"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" spyOn(component, \u0027startLoginProcess\u0027);"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" component.startIncludePrivateLoginProcess();"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" expect(component.startLoginProcess).toHaveBeenCalledWith(true);"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should call authService.startOAuthProcess on startLoginProcess\u0027, () \u003d\u003e {"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" const hasPrivateConsent \u003d false;"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" component.startLoginProcess(hasPrivateConsent);"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" expect(authServiceSpy.startOAuthProcess).toHaveBeenCalledWith(hasPrivateConsent);"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" expect(loggingServiceSpy.info).toHaveBeenCalledWith(\u0027LoginComponent: Beginning login process\u0027);"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should call error handling methods when error is thrown\u0027, () \u003d\u003e {"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" const hasPrivateConsent \u003d false;"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" const errorMessage \u003d \u0027Error!\u0027;"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" const error: Error \u003d new Error(errorMessage);"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" authServiceSpy.startOAuthProcess.and.throwError(error);"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" component.startLoginProcess(hasPrivateConsent);"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" expect(authServiceSpy.changeAuthState).toHaveBeenCalledWith(AuthState.NotAuthenticated);"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" expect(errorHandlingServiceSpy.handleError).toHaveBeenCalledWith(error);"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" expect(loggingServiceSpy.info.calls.allArgs()).toEqual(["},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" [\u0027LoginComponent: Beginning login process\u0027],"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" [`LoginComponent: Login process failed with an error: ${error}`]"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" ]);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" });"},{"lineNumber":80,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":49,"-":31}},{"path":"tests/app/core/models/session-model.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"import { Phase } from \u0027../../../../src/app/core/models/phase.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" assertSessionDataIntegrity,"},{"lineNumber":5,"author":{"gitId":"-"},"content":" NO_VALID_OPEN_PHASES,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" OPENED_PHASE_REPO_UNDEFINED,"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" SESSION_DATA_MISSING_FIELDS,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" SESSION_DATA_UNAVAILABLE"},{"lineNumber":9,"author":{"gitId":"-"},"content":"} from \u0027../../../../src/app/core/models/session.model\u0027;"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import { VALID_SESSION_DATA, WATCHER_REPO } from \u0027../../../constants/session.constants\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"describe(\u0027Session Model\u0027, () \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" describe(\u0027assertSessionDataIntegrity()\u0027, () \u003d\u003e {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" it(\u0027should throw error on unavailable session\u0027, () \u003d\u003e {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" of(undefined)"},{"lineNumber":16,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":17,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":19,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_UNAVAILABLE))"},{"lineNumber":20,"author":{"gitId":"-"},"content":" });"},{"lineNumber":21,"author":{"gitId":"-"},"content":" });"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should throw error on session data with invalid session\u0027, () \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: null })"},{"lineNumber":25,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":27,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_MISSING_FIELDS))"},{"lineNumber":29,"author":{"gitId":"-"},"content":" });"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [] })"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" .subscribe({"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_MISSING_FIELDS))"},{"lineNumber":35,"author":{"gitId":"-"},"content":" });"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: \u0027repo\u0027 })"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":39,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_MISSING_FIELDS))"},{"lineNumber":41,"author":{"gitId":"-"},"content":" });"},{"lineNumber":42,"author":{"gitId":"-"},"content":" });"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should throw error on session with invalid phases\u0027, () \u003d\u003e {"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: \u0027invalidPhase\u0027 as Phase, repos: [WATCHER_REPO] }] })"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":48,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":49,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(NO_VALID_OPEN_PHASES))"},{"lineNumber":50,"author":{"gitId":"-"},"content":" });"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should throw error on session data with invalid repo\u0027, () \u003d\u003e {"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: Phase.issuesViewer, repo: undefined }] })"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":57,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":58,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":59,"author":{"gitId":"-"},"content":" });"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: Phase.issuesViewer, repo: null }] })"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":63,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":64,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":65,"author":{"gitId":"-"},"content":" });"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: Phase.issuesViewer, repo: \u0027\u0027 }] })"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":69,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":70,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":71,"author":{"gitId":"-"},"content":" });"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: Phase.issuesViewer, repo: [] }] })"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":77,"author":{"gitId":"-"},"content":" });"},{"lineNumber":78,"author":{"gitId":"-"},"content":" });"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should pass for valid session data\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" of(VALID_SESSION_DATA)"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" .subscribe((el) \u003d\u003e expect(el).toEqual(VALID_SESSION_DATA));"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"-"},"content":" });"},{"lineNumber":86,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":25,"-":61}},{"path":"tests/app/shared/issue-tables/issue-paginator.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { paginateData } from \u0027../../../../src/app/shared/issue-tables/issue-paginator\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY"},{"lineNumber":9,"author":{"gitId":"-"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"describe(\u0027issue-paginator\u0027, () \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" describe(\u0027paginateData()\u0027, () \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" let dataSet_7: Issue[];"},{"lineNumber":14,"author":{"gitId":"-"},"content":" let paginator: MatPaginator;"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" const mediumSeverityIssueWithResponse: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" const mediumSeverityIssueWithAssigneee: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_ASSIGNEES);"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" const lowSeverityFeatureFlawIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY);"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" const highSeverityDocumentationBugIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY);"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" dataSet_7 \u003d ["},{"lineNumber":22,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" highSeverityDocumentationBugIssue"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":30,"author":{"gitId":"-"},"content":" paginator \u003d { pageSize: 3 } as MatPaginator;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" });"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" it(\u0027should set the length of paginator to the length of data\u0027, () \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" paginateData(paginator, dataSet_7);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expect(paginator.length).toEqual(7);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" });"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" it(\u0027should return list of issues according to page index\u0027, () \u003d\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" paginator.pageIndex \u003d 0;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" // Returns issues index 0 to 2"},{"lineNumber":42,"author":{"gitId":"-"},"content":" const returnedList \u003d paginateData(paginator, dataSet_7);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" expect(returnedList).toEqual([mediumSeverityIssueWithResponse, mediumSeverityIssueWithAssigneee, lowSeverityFeatureFlawIssue]);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" });"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" it(\u0027should return list of issues in the previous page if there are no issues on the current page\u0027, () \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" paginator.pageIndex \u003d 3;"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Returns issues index 6 on page 2"},{"lineNumber":50,"author":{"gitId":"-"},"content":" const returnedList \u003d paginateData(paginator, dataSet_7);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" expect(returnedList).toEqual([highSeverityDocumentationBugIssue]);"},{"lineNumber":52,"author":{"gitId":"-"},"content":" });"},{"lineNumber":53,"author":{"gitId":"-"},"content":" });"},{"lineNumber":54,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":4,"-":50}},{"path":"tests/app/shared/issue-tables/issue-sorter.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { getSortedData } from \u0027../../../../src/app/shared/issue-tables/issue-sorter\u0027;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import {"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" ISSUE_UPDATED_EARLIER,"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" ISSUE_UPDATED_LATER,"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"describe(\u0027issuer-sorter\u0027, () \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" describe(\u0027getSortedData()\u0027, () \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" const dummyIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" const otherDummyIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_ASSIGNEES);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" const issuesList: Issue[] \u003d [dummyIssue, otherDummyIssue];"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" const issueUpdatedEarlier: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_UPDATED_EARLIER);"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" const issueUpdatedLater: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_UPDATED_LATER);"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" const issuesWithDifferentUpdatedDate: Issue[] \u003d [issueUpdatedEarlier, issueUpdatedLater];"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" const matSort: MatSort \u003d new MatSort();"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should return the same data if sort.active is not set\u0027, () \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" const sortedData \u003d getSortedData(matSort, issuesList);"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" expect(sortedData).toEqual(issuesList);"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their assignees correctly\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027assignees\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" const sortedIssuesByAssigneesAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByAssigneesAsc, dummyIssue, otherDummyIssue);"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" const sortedIssuesByAssigneesDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByAssigneesDesc, otherDummyIssue, dummyIssue);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their string fields correctly\u0027, () \u003d\u003e {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027title\u0027;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":" const sortedIssuesByTitleAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTitleAsc, dummyIssue, otherDummyIssue);"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" const sortedIssuesByTitleDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTitleDesc, otherDummyIssue, dummyIssue);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" });"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" it(\u0027sorts issues based on their id fields correctly\u0027, () \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027id\u0027;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" const sortedIssuedByIdAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuedByIdAsc, otherDummyIssue, dummyIssue);"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" const sortedIssuedByIdDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuedByIdDesc, dummyIssue, otherDummyIssue);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" });"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" it(\u0027sorts issues based on their updated date fields correctly\u0027, () \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" matSort.active \u003d \u0027date\u0027;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" const sortedIssuedByDateAsc \u003d getSortedData(matSort, issuesWithDifferentUpdatedDate);"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" assertOrder(sortedIssuedByDateAsc, issueUpdatedEarlier, issueUpdatedLater);"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" const sortedIssuedByDateDesc \u003d getSortedData(matSort, issuesWithDifferentUpdatedDate);"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" assertOrder(sortedIssuedByDateDesc, issueUpdatedLater, issueUpdatedEarlier);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" });"},{"lineNumber":72,"author":{"gitId":"-"},"content":" });"},{"lineNumber":73,"author":{"gitId":"-"},"content":"});"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * This helper method helps to check if the sorted issues are in their"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * correct order based on the variable arguments provided."},{"lineNumber":78,"author":{"gitId":"-"},"content":" */"},{"lineNumber":79,"author":{"gitId":"-"},"content":"function assertOrder(sortedIssues: Issue[], ...expectedSortedIssues: Issue[]) {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c sortedIssues.length; i++) {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expect(sortedIssues[i].id).toBe(expectedSortedIssues[i].id);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"NereusWB922":25,"-":58}},{"path":"tests/app/shared/issue-tables/search-filter.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../../../../src/app/shared/issue-tables/issue-tables-columns\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027../../../../src/app/shared/issue-tables/search-filter\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { USER_ANUBHAV } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY"},{"lineNumber":11,"author":{"gitId":"-"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import { GITHUB_LABEL_FEATURE_FLAW } from \u0027../../../constants/githublabel.constants\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"describe(\u0027search-filter\u0027, () \u003d\u003e {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" describe(\u0027applySearchFilter()\u0027, () \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" let searchKey: string;"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" const mediumSeverityIssueWithResponse: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" const mediumSeverityIssueWithAssigneee: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_ASSIGNEES);"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" const lowSeverityFeatureFlawIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY);"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" const highSeverityDocumentationBugIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY);"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" const issuesList: Issue[] \u003d ["},{"lineNumber":23,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" highSeverityDocumentationBugIssue"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" const displayedColumns: string[] \u003d [TABLE_COLUMNS.ID, TABLE_COLUMNS.TITLE, TABLE_COLUMNS.ASSIGNEE, TABLE_COLUMNS.LABEL];"},{"lineNumber":29,"author":{"gitId":"-"},"content":" const issueService: IssueService \u003d new IssueService(null, null, null);"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues which are assigned to a specific user\u0027, () \u003d\u003e {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" searchKey \u003d USER_ANUBHAV.loginId;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" });"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" it(\u0027can filter for issues using label\u0027, () \u003d\u003e {"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" searchKey \u003d GITHUB_LABEL_FEATURE_FLAW.name;"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([lowSeverityFeatureFlawIssue]);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues that contain the search key in any other column\u0027, () \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Search by id of issue"},{"lineNumber":43,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithResponse.id.toString();"},{"lineNumber":44,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithResponse]);"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Search by title of issue"},{"lineNumber":47,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithAssigneee.title;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" });"},{"lineNumber":50,"author":{"gitId":"-"},"content":" });"},{"lineNumber":51,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":9,"-":42}},{"path":"tests/constants/data.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { UserRole } from \u0027../../src/app/core/models/user.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export const csvString \u003d"},{"lineNumber":4,"author":{"gitId":"-"},"content":" `"},{"lineNumber":5,"author":{"gitId":"-"},"content":"role,name,team"},{"lineNumber":6,"author":{"gitId":"-"},"content":"student,JunWei96,CS2103T-W12-3"},{"lineNumber":7,"author":{"gitId":"-"},"content":"admin,damithc,"},{"lineNumber":8,"author":{"gitId":"-"},"content":"tutor,anubh-v,CS2103T-W12-3"},{"lineNumber":9,"author":{"gitId":"-"},"content":"admin,geshuming,"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"tutor,jj-lim,CS2103T-W12-3"},{"lineNumber":12,"author":{"gitId":"-"},"content":"tutor,jj-lim,CS2103T-W12-3"},{"lineNumber":13,"author":{"gitId":"-"},"content":"tutor,jj-lim,CS2103T-W12-4"},{"lineNumber":14,"author":{"gitId":"-"},"content":"tutor,q ,CS2103T-W12-4"},{"lineNumber":15,"author":{"gitId":"-"},"content":"student,003-samuel,CS2103T-W12-3"},{"lineNumber":16,"author":{"gitId":"-"},"content":"student,damithc,CS2103T-W12-3"},{"lineNumber":17,"author":{"gitId":"-"},"content":"student,RonakLakhotia,CS2103T-W12-4"},{"lineNumber":18,"author":{"gitId":"-"},"content":"student,ptvrajsk,CS2103T-W12-3` + ` `;"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"// jsonData is a json representation of csvString"},{"lineNumber":21,"author":{"gitId":"-"},"content":"export const jsonData \u003d {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" roles: {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" students: {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" junwei96: \u0027true\u0027,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u0027003-samuel\u0027: \u0027true\u0027,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" damithc: \u0027true\u0027,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ronaklakhotia: \u0027true\u0027,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ptvrajsk: \u0027true\u0027"},{"lineNumber":29,"author":{"gitId":"-"},"content":" },"},{"lineNumber":30,"author":{"gitId":"-"},"content":" tutors: { \u0027anubh-v\u0027: \u0027true\u0027, \u0027jj-lim\u0027: \u0027true\u0027, q: \u0027true\u0027 },"},{"lineNumber":31,"author":{"gitId":"-"},"content":" admins: { damithc: \u0027true\u0027, geshuming: \u0027true\u0027 }"},{"lineNumber":32,"author":{"gitId":"-"},"content":" },"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u0027team-structure\u0027: {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u0027CS2103T-W12-3\u0027: {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" junwei96: \u0027JunWei96\u0027,"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u0027003-samuel\u0027: \u0027003-samuel\u0027,"},{"lineNumber":37,"author":{"gitId":"-"},"content":" damithc: \u0027damithc\u0027,"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ptvrajsk: \u0027ptvrajsk\u0027"},{"lineNumber":39,"author":{"gitId":"-"},"content":" },"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u0027CS2103T-W12-4\u0027: { ronaklakhotia: \u0027RonakLakhotia\u0027 }"},{"lineNumber":41,"author":{"gitId":"-"},"content":" },"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u0027students-allocation\u0027: {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" junwei96: { teamId: \u0027CS2103T-W12-3\u0027 },"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u0027003-samuel\u0027: { teamId: \u0027CS2103T-W12-3\u0027 },"},{"lineNumber":45,"author":{"gitId":"-"},"content":" damithc: { teamId: \u0027CS2103T-W12-3\u0027 },"},{"lineNumber":46,"author":{"gitId":"-"},"content":" ronaklakhotia: { teamId: \u0027CS2103T-W12-4\u0027 },"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ptvrajsk: { teamId: \u0027CS2103T-W12-3\u0027 }"},{"lineNumber":48,"author":{"gitId":"-"},"content":" },"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u0027tutors-allocation\u0027: {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0027anubh-v\u0027: { \u0027CS2103T-W12-3\u0027: \u0027true\u0027 },"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u0027jj-lim\u0027: { \u0027CS2103T-W12-3\u0027: \u0027true\u0027, \u0027CS2103T-W12-4\u0027: \u0027true\u0027 },"},{"lineNumber":52,"author":{"gitId":"-"},"content":" q: { \u0027CS2103T-W12-4\u0027: \u0027true\u0027 }"},{"lineNumber":53,"author":{"gitId":"-"},"content":" },"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u0027admins-allocation\u0027: { damithc: {}, geshuming: {} }"},{"lineNumber":55,"author":{"gitId":"-"},"content":"};"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":"export const USER_JUNWEI \u003d {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" loginId: \u0027JunWei96\u0027,"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" role: UserRole.Student"},{"lineNumber":60,"author":{"gitId":"-"},"content":"};"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":"export const USER_ANUBHAV \u003d {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" loginId: \u0027anubh-v\u0027,"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" role: UserRole.Student"},{"lineNumber":65,"author":{"gitId":"-"},"content":"};"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":"export const USER_Q \u003d {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" loginId: \u0027q\u0027,"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" role: UserRole.Tutor"},{"lineNumber":70,"author":{"gitId":"-"},"content":"};"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":"export const USER_SHUMING \u003d {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" loginId: \u0027geshuming\u0027,"},{"lineNumber":74,"author":{"gitId":"-"},"content":" role: UserRole.Admin,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" allocatedTeams: []"},{"lineNumber":76,"author":{"gitId":"-"},"content":"};"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":"export const USER_WITH_TWO_ROLES \u003d {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" loginId: \u0027damithc\u0027,"},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" role: UserRole.Admin"},{"lineNumber":81,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"NereusWB922":4,"-":77}},{"path":"tests/constants/githubissue.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { IssueState, IssueStateReason } from \u0027../../graphql/graphql-types\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../../src/app/core/models/github/github-issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../../src/app/core/models/github/github-label.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { USER_ANUBHAV, USER_SHUMING } from \u0027./data.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { EMPTY_TEAM_RESPONSE, PENDING_TUTOR_MODERATION } from \u0027./githubcomment.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" GITHUB_LABEL_DOCUMENTATION_BUG,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" GITHUB_LABEL_FEATURE_FLAW,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" GITHUB_LABEL_FUNCTIONALITY_BUG,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GITHUB_LABEL_HIGH_SEVERITY,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" GITHUB_LABEL_LOW_SEVERITY,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GITHUB_LABEL_MEDIUM_SEVERITY,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" GITHUB_LABEL_TEAM_LABEL,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" GITHUB_LABEL_TUTORIAL_LABEL"},{"lineNumber":15,"author":{"gitId":"-"},"content":"} from \u0027./githublabel.constants\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"const randomId: () \u003d\u003e string \u003d () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return Math.floor(Math.random() * 1000000000).toString();"},{"lineNumber":19,"author":{"gitId":"-"},"content":"};"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"const randomIssueNumber: () \u003d\u003e number \u003d () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return Math.round(Math.random() * 1000);"},{"lineNumber":23,"author":{"gitId":"-"},"content":"};"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"const randomISODate: (startDate?: Date, endDate?: Date) \u003d\u003e string \u003d ("},{"lineNumber":26,"author":{"gitId":"-"},"content":" startDate: Date \u003d new Date(2020, 1, 1),"},{"lineNumber":27,"author":{"gitId":"-"},"content":" endDate: Date \u003d new Date()"},{"lineNumber":28,"author":{"gitId":"-"},"content":") \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return new Date(startDate.getTime() + Math.random() * (startDate.getTime() - endDate.getTime())).toISOString();"},{"lineNumber":30,"author":{"gitId":"-"},"content":"};"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"const USER_ANUBHAV_DETAILS \u003d {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" login: USER_ANUBHAV.loginId,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars1.githubusercontent.com/u/35621759?v\u003d4\u0027,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/anubh-v\u0027"},{"lineNumber":36,"author":{"gitId":"-"},"content":"};"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"const USER_ANUBHAV_ASSIGNEE_DETAILS \u003d {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" login: USER_ANUBHAV.loginId,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" id: 35621759,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/anubh-v\u0027"},{"lineNumber":42,"author":{"gitId":"-"},"content":"};"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":"const USER_SHUMING_DETAILS \u003d {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" login: USER_SHUMING.loginId,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars0.githubusercontent.com/u/43642522?v\u003d4\u0027,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/geshuming\u0027"},{"lineNumber":48,"author":{"gitId":"-"},"content":"};"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":"const USER_SHUMING_ASSIGNEE_DETAILS \u003d {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" login: \u0027geshuming\u0027,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" id: 43642522,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/geshuming\u0027"},{"lineNumber":54,"author":{"gitId":"-"},"content":"};"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"const ISSUE_BODY \u003d"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u0027# Issue Description\\n{original issue description}\\n\u0027 +"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \"# Team\u0027s Response\\n{team\u0027s response}\\n # Disputes\\n\\n\" +"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \"## :question: Issue Type\\n\\n### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n-------------------\\n## :question: Issue Severity\\n\\n\" +"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \"### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n-------------------\\n## :question: Not Related Question\\n\\n\" +"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \"### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n-------------------\\n\\n\";"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION \u003d new GithubIssue({"},{"lineNumber":67,"author":{"gitId":"-"},"content":" id: \u0027574085971\u0027,"},{"lineNumber":68,"author":{"gitId":"-"},"content":" number: 92,"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":70,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":71,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-02T16:19:02Z\u0027,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":74,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" title: \u0027App starts to lag when given large amount of input\u0027,"},{"lineNumber":77,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-13T13:37:32Z\u0027,"},{"lineNumber":78,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/92\u0027,"},{"lineNumber":79,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":80,"author":{"gitId":"-"},"content":"});"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":"export const ISSUE_UPDATED_EARLIER \u003d new GithubIssue({"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" id: \u0027000000001\u0027,"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" number: 1,"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" assignees: [],"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" comments: [],"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" body: \u0027\u0027,"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" created_at: \u00272020-09-02T16:19:02Z\u0027,"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" state: IssueState.Open,"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" title: \u0027App starts to lag when given large amount of input\u0027,"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" updated_at: \u00272020-09-03T13:37:32Z\u0027,"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/93\u0027,"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":"});"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"export const ISSUE_UPDATED_LATER \u003d new GithubIssue({"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" id: \u0027000000002\u0027,"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" number: 2,"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" assignees: [],"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" comments: [],"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" body: \u0027\u0027,"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" created_at: \u00272020-10-02T16:19:02Z\u0027,"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" state: IssueState.Open,"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" title: \u0027App starts to lag when given large amount of input\u0027,"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" updated_at: \u00272020-10-22T13:37:32Z\u0027,"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/94\u0027,"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":"});"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY \u003d new GithubIssue({"},{"lineNumber":115,"author":{"gitId":"-"},"content":" id: \u0027384830567\u0027,"},{"lineNumber":116,"author":{"gitId":"-"},"content":" number: 130,"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":118,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":119,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":120,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-02T16:19:02Z\u0027,"},{"lineNumber":121,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_LOW_SEVERITY],"},{"lineNumber":122,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":123,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":124,"author":{"gitId":"-"},"content":" title: \u0027App is sometimes slow\u0027,"},{"lineNumber":125,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-13T13:37:32Z\u0027,"},{"lineNumber":126,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":127,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":128,"author":{"gitId":"-"},"content":"});"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY \u003d new GithubIssue({"},{"lineNumber":131,"author":{"gitId":"-"},"content":" id: \u0027573957398\u0027,"},{"lineNumber":132,"author":{"gitId":"-"},"content":" number: 32,"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":134,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":135,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":136,"author":{"gitId":"-"},"content":" created_at: \u00272010-03-12T19:12:02Z\u0027,"},{"lineNumber":137,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":138,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":139,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":140,"author":{"gitId":"-"},"content":" title: \u0027Too many typos\u0027,"},{"lineNumber":141,"author":{"gitId":"-"},"content":" updated_at: \u00272012-03-12T19:12:02Z\u0027,"},{"lineNumber":142,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":143,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":144,"author":{"gitId":"-"},"content":"});"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":"export const DUPLICATED_ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY \u003d new GithubIssue({"},{"lineNumber":147,"author":{"gitId":"-"},"content":" id: \u0027573957399\u0027,"},{"lineNumber":148,"author":{"gitId":"-"},"content":" number: 33,"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":150,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":151,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":152,"author":{"gitId":"-"},"content":" created_at: \u00272010-04-12T19:12:02Z\u0027,"},{"lineNumber":153,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":154,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":155,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":156,"author":{"gitId":"-"},"content":" title: \u0027Too many typos 2\u0027,"},{"lineNumber":157,"author":{"gitId":"-"},"content":" updated_at: \u00272012-04-12T19:12:02Z\u0027,"},{"lineNumber":158,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":159,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":160,"author":{"gitId":"-"},"content":"});"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_ASSIGNEES \u003d new GithubIssue({"},{"lineNumber":163,"author":{"gitId":"-"},"content":" id: \u0027551732011\u0027,"},{"lineNumber":164,"author":{"gitId":"-"},"content":" number: 91,"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assignees: [USER_ANUBHAV_ASSIGNEE_DETAILS],"},{"lineNumber":166,"author":{"gitId":"-"},"content":" body: \u0027Screen freezes every few minutes\u0027,"},{"lineNumber":167,"author":{"gitId":"-"},"content":" created_at: \u00272020-01-18T07:01:45Z\u0027,"},{"lineNumber":168,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":169,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":170,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":171,"author":{"gitId":"-"},"content":" title: \u0027Screen freezes\u0027,"},{"lineNumber":172,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-02T12:50:02Z\u0027,"},{"lineNumber":173,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/91\u0027,"},{"lineNumber":174,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS,"},{"lineNumber":175,"author":{"gitId":"-"},"content":" comments: [EMPTY_TEAM_RESPONSE]"},{"lineNumber":176,"author":{"gitId":"-"},"content":"});"},{"lineNumber":177,"author":{"gitId":"-"},"content":""},{"lineNumber":178,"author":{"gitId":"-"},"content":"export const generateIssueWithRandomData: () \u003d\u003e GithubIssue \u003d () \u003d\u003e {"},{"lineNumber":179,"author":{"gitId":"-"},"content":" const created_and_updated_date: string \u003d randomISODate();"},{"lineNumber":180,"author":{"gitId":"-"},"content":" const issueNumber: number \u003d randomIssueNumber();"},{"lineNumber":181,"author":{"gitId":"-"},"content":" const severityLabels: GithubLabel[] \u003d [GITHUB_LABEL_LOW_SEVERITY, GITHUB_LABEL_MEDIUM_SEVERITY, GITHUB_LABEL_HIGH_SEVERITY];"},{"lineNumber":182,"author":{"gitId":"-"},"content":" const typeLabels: GithubLabel[] \u003d [GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_DOCUMENTATION_BUG];"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return new GithubIssue({"},{"lineNumber":184,"author":{"gitId":"-"},"content":" id: randomId(),"},{"lineNumber":185,"author":{"gitId":"-"},"content":" number: issueNumber,"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":187,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":188,"author":{"gitId":"-"},"content":" body: `Issue No.: ${issueNumber}\\nSample Content.`,"},{"lineNumber":189,"author":{"gitId":"-"},"content":" created_at: created_and_updated_date,"},{"lineNumber":190,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, typeLabels[issueNumber % 3], severityLabels[issueNumber % 3]],"},{"lineNumber":191,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":192,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":193,"author":{"gitId":"-"},"content":" title: `Random Issue: ${issueNumber}`,"},{"lineNumber":194,"author":{"gitId":"-"},"content":" updated_at: created_and_updated_date,"},{"lineNumber":195,"author":{"gitId":"-"},"content":" url: `https://api.github.com/repos/CATcher-org/pe-results/issues/${issueNumber}`,"},{"lineNumber":196,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":197,"author":{"gitId":"-"},"content":" });"},{"lineNumber":198,"author":{"gitId":"-"},"content":"};"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION \u003d new GithubIssue({"},{"lineNumber":201,"author":{"gitId":"-"},"content":" id: \u0027574674360\u0027,"},{"lineNumber":202,"author":{"gitId":"-"},"content":" number: 26,"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":204,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":205,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-03T13:38:32Z\u0027,"},{"lineNumber":206,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":207,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":208,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":209,"author":{"gitId":"-"},"content":" title: \u0027Basic Issue, Three Disputes, Unsure\u0027,"},{"lineNumber":210,"author":{"gitId":"-"},"content":" updated_at: \u00272020-08-15T06:39:40Z\u0027,"},{"lineNumber":211,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":212,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":213,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":214,"author":{"gitId":"-"},"content":"});"},{"lineNumber":215,"author":{"gitId":"-"},"content":""},{"lineNumber":216,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION_HIGH_SEVERITY_FEATURE_FLAW \u003d new GithubIssue({"},{"lineNumber":217,"author":{"gitId":"-"},"content":" id: \u0027239538360\u0027,"},{"lineNumber":218,"author":{"gitId":"-"},"content":" number: 93,"},{"lineNumber":219,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":220,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":221,"author":{"gitId":"-"},"content":" created_at: \u00272020-10-14T10:28:32Z\u0027,"},{"lineNumber":222,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":223,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":224,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":225,"author":{"gitId":"-"},"content":" title: \u0027Redundant buggy feature\u0027,"},{"lineNumber":226,"author":{"gitId":"-"},"content":" updated_at: \u00272020-11-25T13:19:40Z\u0027,"},{"lineNumber":227,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":228,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":229,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":230,"author":{"gitId":"-"},"content":"});"},{"lineNumber":231,"author":{"gitId":"-"},"content":""},{"lineNumber":232,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION_LOW_SEVERITY_DOCUMENTATION_BUG \u003d new GithubIssue({"},{"lineNumber":233,"author":{"gitId":"-"},"content":" id: \u0027384756360\u0027,"},{"lineNumber":234,"author":{"gitId":"-"},"content":" number: 6,"},{"lineNumber":235,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":236,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":237,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-26T09:08:12Z\u0027,"},{"lineNumber":238,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_LOW_SEVERITY],"},{"lineNumber":239,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":240,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":241,"author":{"gitId":"-"},"content":" title: \u0027Documentation bug, too many typos\u0027,"},{"lineNumber":242,"author":{"gitId":"-"},"content":" updated_at: \u00272020-11-10T16:59:40Z\u0027,"},{"lineNumber":243,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":244,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":245,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":246,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":32,"-":214}},{"path":"tests/constants/githublabel.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../../src/app/core/models/github/github-label.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_FUNCTIONALITY_BUG \u003d {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" color: \u00279900cc\u0027,"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" name: \u0027type.FunctionalityBug\u0027"},{"lineNumber":6,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_FEATURE_FLAW \u003d {"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" color: \u0027d966ff\u0027,"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" name: \u0027type.FeatureFlaw\u0027"},{"lineNumber":11,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_DOCUMENTATION_BUG \u003d {"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" color: \u0027d966ff\u0027,"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" name: \u0027type.DocumentationBug\u0027"},{"lineNumber":16,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_LOW_SEVERITY \u003d {"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" color: \u0027ffcccc\u0027,"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" name: \u0027severity.Low\u0027"},{"lineNumber":21,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_HIGH_SEVERITY \u003d {"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" color: \u0027ff6666\u0027,"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" name: \u0027severity.High\u0027"},{"lineNumber":26,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_MEDIUM_SEVERITY \u003d {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" color: \u0027ff9999\u0027,"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" name: \u0027severity.Medium\u0027"},{"lineNumber":31,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_TUTORIAL_LABEL \u003d {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" color: \u0027c2e0c6\u0027,"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" name: \u0027tutorial.CS2103T-W12\u0027"},{"lineNumber":36,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_TEAM_LABEL \u003d {"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" color: \u0027d4c5f9\u0027,"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" name: \u0027team.3\u0027"},{"lineNumber":41,"author":{"gitId":"-"},"content":"} as GithubLabel;"}],"authorContributionMap":{"NereusWB922":13,"-":28}},{"path":"tests/constants/label.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"// Label name constants"},{"lineNumber":2,"author":{"gitId":"-"},"content":"export const SEVERITY_VERY_LOW \u003d \u0027Very Low\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"export const SEVERITY_LOW \u003d \u0027Low\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"export const SEVERITY_MEDIUM \u003d \u0027Medium\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"export const SEVERITY_HIGH \u003d \u0027High\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"// Label category constants"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"export const CATEGORY_SEVERITY \u003d \u0027severity\u0027;"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"// Label name constants"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"export const LABEL_NAME_SEVERITY_VERY_LOW \u003d CATEGORY_SEVERITY + \u0027.\u0027 + SEVERITY_VERY_LOW;"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"export const LABEL_NAME_SEVERITY_LOW \u003d CATEGORY_SEVERITY + \u0027.\u0027 + SEVERITY_LOW;"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"export const LABEL_NAME_SEVERITY_MEDIUM \u003d CATEGORY_SEVERITY + \u0027.\u0027 + SEVERITY_MEDIUM;"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"export const LABEL_NAME_SEVERITY_HIGH \u003d CATEGORY_SEVERITY + \u0027.\u0027 + SEVERITY_HIGH;"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"// Label definition constants"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"export const DEFINITION_SEVERITY_VERY_LOW \u003d"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cp\u003eA flaw that is \u003cmark\u003epurely cosmetic\u003c/mark\u003e and \u003cmark\u003edoes not affect usage\u003c/mark\u003e. For example, \u0027 +"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cul\u003e\u0027 +"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cli\u003etypo issues\u003c/li\u003e\u0027 +"},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cli\u003espacing issues\u003c/li\u003e\u0027 +"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cli\u003elayout issues\u003c/li\u003e\u0027 +"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cli\u003ecolor issues\u003c/li\u003e\u0027 +"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cli\u003efont issues\u003c/li\u003e\u0027 +"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003c/ul\u003e\u0027 +"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" \"in the docs or the UI that doesn\u0027t affect usage.\u003c/p\u003e\";"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":"export const DEFINITION_SEVERITY_LOW \u003d"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cp\u003eA flaw that is unlikely to affect normal operations of the product. \u0027 +"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" \u0027Appears only in very rare situations and causes a minor inconvenience only.\u003c/p\u003e\u0027;"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":"export const DEFINITION_SEVERITY_MEDIUM \u003d"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cp\u003eA flaw that causes occasional inconvenience to some users but they can \u0027 + \u0027continue to use the product.\u003c/p\u003e\u0027;"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"export const DEFINITION_SEVERITY_HIGH \u003d"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" \u0027\u003cp\u003eA flaw that affects most users and causes major problems for users.\u0027 + \u0027i.e., makes the product almost unusable for most users.\u003c/p\u003e\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"// Label color constants"},{"lineNumber":36,"author":{"gitId":"-"},"content":"export const COLOR_BLACK \u003d \u0027000000\u0027;"},{"lineNumber":37,"author":{"gitId":"-"},"content":"export const COLOR_WHITE \u003d \u0027ffffff\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_VERY_LOW \u003d \u0027ffe0e0\u0027;"},{"lineNumber":39,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_LOW \u003d \u0027ffcccc\u0027;"},{"lineNumber":40,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_MEDIUM \u003d \u0027ff9999\u0027;"},{"lineNumber":41,"author":{"gitId":"-"},"content":"export const COLOR_SEVERITY_HIGH \u003d \u0027ff6666\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":"// CSS style constants"},{"lineNumber":44,"author":{"gitId":"-"},"content":"export const DARK_BG_LIGHT_TEXT \u003d {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_BLACK}`,"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" color: `#${COLOR_WHITE}`"},{"lineNumber":47,"author":{"gitId":"-"},"content":"};"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":"export const LIGHT_BG_DARK_TEXT \u003d {"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0027background-color\u0027: `#${COLOR_WHITE}`,"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" color: `#${COLOR_BLACK}`"},{"lineNumber":52,"author":{"gitId":"-"},"content":"};"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":"// Constant array of labels for team response phase and moderation phase to simulate Github response"},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":"export const SEVERITY_LABELS \u003d ["},{"lineNumber":56,"author":{"gitId":"-"},"content":" {"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" name: LABEL_NAME_SEVERITY_VERY_LOW,"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" color: COLOR_SEVERITY_VERY_LOW,"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" definition: DEFINITION_SEVERITY_VERY_LOW"},{"lineNumber":60,"author":{"gitId":"-"},"content":" },"},{"lineNumber":61,"author":{"gitId":"-"},"content":" {"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" name: LABEL_NAME_SEVERITY_LOW,"},{"lineNumber":63,"author":{"gitId":"-"},"content":" color: COLOR_SEVERITY_LOW,"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" definition: DEFINITION_SEVERITY_LOW"},{"lineNumber":65,"author":{"gitId":"-"},"content":" },"},{"lineNumber":66,"author":{"gitId":"-"},"content":" {"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":" name: LABEL_NAME_SEVERITY_MEDIUM,"},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" color: COLOR_SEVERITY_MEDIUM,"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" definition: DEFINITION_SEVERITY_MEDIUM"},{"lineNumber":70,"author":{"gitId":"-"},"content":" },"},{"lineNumber":71,"author":{"gitId":"-"},"content":" {"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" name: LABEL_NAME_SEVERITY_HIGH,"},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" color: COLOR_SEVERITY_HIGH,"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" definition: DEFINITION_SEVERITY_HIGH"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }"},{"lineNumber":76,"author":{"gitId":"-"},"content":"];"}],"authorContributionMap":{"NereusWB922":40,"-":36}},{"path":"tests/constants/session.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../src/app/core/models/phase.model\u0027;"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"import { Repo } from \u0027../../src/app/core/models/repo.model\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { SessionData, SessionRepo } from \u0027../../src/app/core/models/session.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"export const WATCHER_REPO: Repo \u003d Repo.of(\u0027CATcher-org/WATcher\u0027);"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"const ISSUES_VIEWER_SESSION_REPO: SessionRepo \u003d {"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" phase: Phase.issuesViewer,"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" repos: [WATCHER_REPO]"},{"lineNumber":10,"author":{"gitId":"-"},"content":"};"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"const ACTIVITY_DASHBOARD_SESSION_REPO: SessionRepo \u003d {"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" phase: Phase.activityDashboard,"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" repos: [WATCHER_REPO]"},{"lineNumber":15,"author":{"gitId":"-"},"content":"};"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"export const VALID_SESSION_DATA: SessionData \u003d {"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" sessionRepo: [ISSUES_VIEWER_SESSION_REPO, ACTIVITY_DASHBOARD_SESSION_REPO]"},{"lineNumber":19,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"NereusWB922":11,"-":8}},{"path":"tests/services/label.service.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Label } from \u0027../../src/app/core/models/label.model\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { GithubService } from \u0027../../src/app/core/services/github.service\u0027;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import { LabelService } from \u0027../../src/app/core/services/label.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import * as LabelConstant from \u0027../constants/label.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"let labelService: LabelService;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"let labelList: Label[];"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"let githubServiceSpy: jasmine.SpyObj\u003cGithubService\u003e;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"describe(\u0027LabelService: fetchLabels()\u0027, () \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" githubServiceSpy \u003d jasmine.createSpyObj(\u0027GithubService\u0027, [\u0027fetchAllLabels\u0027]);"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" labelService \u003d new LabelService(githubServiceSpy);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" });"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should fetch labels successfully\u0027, () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" const mockLabels \u003d LabelConstant.SEVERITY_LABELS;"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" const parsedLabels \u003d labelService.parseLabelData(mockLabels);"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" githubServiceSpy.fetchAllLabels.and.returnValue(of(mockLabels));"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" labelService.fetchLabels().subscribe((response) \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" expect(response).toEqual(mockLabels);"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" expect(labelService.labels).toEqual(parsedLabels);"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" expect(labelService.simpleLabels).toEqual(parsedLabels);"},{"lineNumber":27,"author":{"gitId":"-"},"content":" });"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" expect(githubServiceSpy.fetchAllLabels).toHaveBeenCalled();"},{"lineNumber":30,"author":{"gitId":"-"},"content":" });"},{"lineNumber":31,"author":{"gitId":"-"},"content":"});"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: parseLabelData()\u0027, () \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" beforeAll(() \u003d\u003e {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" labelList \u003d labelService.parseLabelData(LabelConstant.SEVERITY_LABELS);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" afterAll(() \u003d\u003e {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" });"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should be severity very low label\u0027, () \u003d\u003e {"},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[0].name).toBe(LabelConstant.LABEL_NAME_SEVERITY_VERY_LOW);"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[0].color).toBe(LabelConstant.COLOR_SEVERITY_VERY_LOW);"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[0].definition).toBe(LabelConstant.DEFINITION_SEVERITY_VERY_LOW);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" });"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should be severity low label\u0027, () \u003d\u003e {"},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[1].name).toBe(LabelConstant.LABEL_NAME_SEVERITY_LOW);"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[1].color).toBe(LabelConstant.COLOR_SEVERITY_LOW);"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[1].definition).toBe(LabelConstant.DEFINITION_SEVERITY_LOW);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" });"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should be severity medium label\u0027, () \u003d\u003e {"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[2].name).toBe(LabelConstant.LABEL_NAME_SEVERITY_MEDIUM);"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[2].color).toBe(LabelConstant.COLOR_SEVERITY_MEDIUM);"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[2].definition).toBe(LabelConstant.DEFINITION_SEVERITY_MEDIUM);"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should be severity high label\u0027, () \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[3].name).toBe(LabelConstant.LABEL_NAME_SEVERITY_HIGH);"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[3].color).toBe(LabelConstant.COLOR_SEVERITY_HIGH);"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" expect(labelList[3].definition).toBe(LabelConstant.DEFINITION_SEVERITY_HIGH);"},{"lineNumber":65,"author":{"gitId":"-"},"content":" });"},{"lineNumber":66,"author":{"gitId":"-"},"content":"});"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: isDarkColor()\u0027, () \u003d\u003e {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" });"},{"lineNumber":72,"author":{"gitId":"-"},"content":""},{"lineNumber":73,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":75,"author":{"gitId":"-"},"content":" });"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":" it(\u0027should be true for dark color\u0027, () \u003d\u003e {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" expect(labelService.isDarkColor(LabelConstant.COLOR_BLACK)).toBeTruthy();"},{"lineNumber":79,"author":{"gitId":"-"},"content":" });"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" it(\u0027should be false for light color\u0027, () \u003d\u003e {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" expect(labelService.isDarkColor(LabelConstant.COLOR_WHITE)).toBeFalsy();"},{"lineNumber":83,"author":{"gitId":"-"},"content":" });"},{"lineNumber":84,"author":{"gitId":"-"},"content":"});"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":"describe(\u0027LabelService: setLabelStyle()\u0027, () \u003d\u003e {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" labelService \u003d new LabelService(null);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" });"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":" afterEach(() \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"-"},"content":" labelService \u003d null;"},{"lineNumber":93,"author":{"gitId":"-"},"content":" });"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" it(\u0027should be dark color background with light color text\u0027, () \u003d\u003e {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_BLACK)).toEqual(LabelConstant.DARK_BG_LIGHT_TEXT);"},{"lineNumber":97,"author":{"gitId":"-"},"content":" });"},{"lineNumber":98,"author":{"gitId":"-"},"content":""},{"lineNumber":99,"author":{"gitId":"-"},"content":" it(\u0027should be light color background with dark color text\u0027, () \u003d\u003e {"},{"lineNumber":100,"author":{"gitId":"-"},"content":" expect(labelService.setLabelStyle(LabelConstant.COLOR_WHITE)).toEqual(LabelConstant.LIGHT_BG_DARK_TEXT);"},{"lineNumber":101,"author":{"gitId":"-"},"content":" });"},{"lineNumber":102,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":34,"-":68}}] diff --git a/CATcher-org_WATcher_main/commits.json b/CATcher-org_WATcher_main/commits.json index c06e876..1112d1a 100644 --- a/CATcher-org_WATcher_main/commits.json +++ b/CATcher-org_WATcher_main/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"xenosf":[],"sopa301":[],"mingyuanc":[],"jingting1412":[],"KevinEyo1":[],"LamJiuFong":[],"yiwen101":[],"jonasongg":[],"domoberzin":[],"asdfghjkxd":[],"yuanxi1":[],"supermii2":[],"marquestye":[],"nknguyenhc":[{"date":"2024-02-06","commitResults":[{"hash":"043311b90c12118a4d9d8468a64e1fc7021ad64d","isMergeCommit":false,"messageTitle":"Fix label filter not working (#230)","messageBody":"Fix label filter not working\r\n\r\nFilters takes the value of `label.formattedName` instead of `label.name`.","fileTypesAndContributionMap":{"html":{"insertions":13,"deletions":5}}}]},{"date":"2024-02-13","commitResults":[{"hash":"64a68624b77c88cee70cd870e2966c1c27b89eb8","isMergeCommit":false,"messageTitle":"Add column of hidden users (#235)","messageBody":"After #192, assignees of a repo without any issues or PRs\r\nare hidden. Now, add the column to display such users\r\nwith 0 PRs and issues.\r\n\r\nCo-authored-by: Gabriel Goh \u003c77230723+gycgabriel@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"css":{"insertions":82,"deletions":0},"html":{"insertions":24,"deletions":0},"ts":{"insertions":44,"deletions":2}}}]},{"date":"2024-02-19","commitResults":[{"hash":"d6dadf4a49a6fc19e2eaa99bb37c7fe89f458a81","isMergeCommit":false,"messageTitle":"Refactor Label model (#254)","messageBody":"Previously, label full names are separated into label name\r\nand label category. However, this is not necessary for WATcher.\r\n\r\nLet\u0027s remove the separation so that filters only make use\r\nof the full name.","fileTypesAndContributionMap":{"html":{"insertions":6,"deletions":14},"ts":{"insertions":6,"deletions":14}}}]},{"date":"2024-02-26","commitResults":[{"hash":"3db1c8aa33942114acfd55af87da3d7c8d751390","isMergeCommit":false,"messageTitle":"Add shareable repo-specific URL (#255)","messageBody":"Previously, URLs are fixed upon repo change, hence URLs are not shareable.\r\n\r\nLet\u0027s make the current repo visible in the URL, so that it shareable.\r\n\r\nFurthermore, login is automated when there is such next route to be redirected to.","fileTypesAndContributionMap":{"ts":{"insertions":163,"deletions":9}}}]}],"Arif-Khalid":[{"date":"2024-01-25","commitResults":[{"hash":"79602d69bd13e2ab8c06ab6d9a6eca8b4a61e8b0","isMergeCommit":false,"messageTitle":"Hide 0 issue columns (#223)","messageBody":"Hide 0 issue columns.\r\n\r\n0 Issue columns are shown.\r\n\r\nHiding issues with 0 columns reduces the clutter on screen, \r\ncreating a better user experience. \r\nIllogical columns such as issues that are unassigned when sorting by\r\npull requests are also removed inherently.\r\n\r\nLet\u0027s add logic to hide the columns when they have no issues \r\nassociated to them.","fileTypesAndContributionMap":{"html":{"insertions":10,"deletions":1},"ts":{"insertions":15,"deletions":2}}}]},{"date":"2024-02-06","commitResults":[{"hash":"cd0d7e9f2a5169307c0c92a89a33e24610381839","isMergeCommit":false,"messageTitle":"Remove unused services (#238)","messageBody":"Couple of unused services copied from CATcher.\r\n\r\nUnused code should be removed to simplify code base \r\nand improve developer experience.\r\n\r\nLet\u0027s remove these unused services.","fileTypesAndContributionMap":{"ts":{"insertions":0,"deletions":359}}}]},{"date":"2024-02-14","commitResults":[{"hash":"5031ee2e33b49d0275892849703b81a1fc028a3d","isMergeCommit":false,"messageTitle":"Remove unused models in WATcher","messageBody":"There are a few of unused models ported from CATcher.\r\n\r\nUnnecessary models contributes to code clutter and hurts understandability\r\nof code base.\r\n\r\nLet\u0027s remove these unused models from WATcher to increase code cleanliness.","fileTypesAndContributionMap":{"ts":{"insertions":0,"deletions":40}}},{"hash":"09ef51d1e360350d0d73a4a66063df59f805d3e2","isMergeCommit":false,"messageTitle":"Remove unused session-fix-confirmation component in WATcher","messageBody":"This is a component only used in CATcher.\r\n\r\nUnnecessary components contributes to code clutter and hurts understandability\r\nof code base.\r\n\r\nLet\u0027s remove this unused component from WATcher to increase code cleanliness.","fileTypesAndContributionMap":{"css":{"insertions":0,"deletions":0},"html":{"insertions":0,"deletions":9},"ts":{"insertions":1,"deletions":27}}}]},{"date":"2024-02-22","commitResults":[{"hash":"7dbc28230cf4e6d2aa3d95448a0e247b03a5fcee","isMergeCommit":false,"messageTitle":"Refactor certain filters into its own service (#259)","messageBody":"Filters are observed, subscribed and emitted in many different \r\ncomponents.\r\n\r\nThis makes the code base hard to understand\r\nand adapt for filtering in future components.\r\n\r\nLet\u0027s refactor the filters into its own centralised service.","fileTypesAndContributionMap":{"html":{"insertions":3,"deletions":3},"ts":{"insertions":73,"deletions":35}}}]}],"NereusWB922":[{"date":"2024-02-06","commitResults":[{"hash":"552868032ec6a8340d1f8c8d662ad22189d134f1","isMergeCommit":false,"messageTitle":"Improve activity dashboard design (#233)","messageBody":"Improve activity dashboard design\r\n\r\nThe ID column in the event table is not useful for the user.\r\n\r\nThe design of the dashboard is too simple. The event table\u0027s height is\r\nnot fixed, and the expanded event details might cause the table to be\r\ntoo long, which is very inconvenient.\r\n\r\nTo address this, let\u0027s hide the ID column, add some information about\r\nthe actor, fix the event table height and make it scrollable, and\r\nimplement a dialog to display event details.","fileTypesAndContributionMap":{"css":{"insertions":129,"deletions":10},"html":{"insertions":72,"deletions":67},"ts":{"insertions":48,"deletions":18}}}]},{"date":"2024-02-08","commitResults":[{"hash":"a6efcb9a2fa9bcd321c37a824e4d2aafa8d07a81","isMergeCommit":false,"messageTitle":"Refactor test cases","messageBody":"The test cases for the Login Component and Session Model are outdated. \r\n\r\nAdditionally, the Conflict Model has been removed. \r\n\r\nLet\u0027s refactor the test cases for the Login Component and Session Model \r\nand remove the test cases for the Conflict Model.\r\n","fileTypesAndContributionMap":{"ts":{"insertions":86,"deletions":106}}},{"hash":"339b319aaa87913d2109774f1fc6826d37992172","isMergeCommit":false,"messageTitle":"Refactor test cases for issue paginator","messageBody":"The test cases for the issue paginator are outdated. \r\n\r\nLet\u0027s refactor the test cases for the issue paginator.","fileTypesAndContributionMap":{"ts":{"insertions":4,"deletions":9}}},{"hash":"6dc82ffeb34973054ecfb3a10ea107f2c653c7cc","isMergeCommit":false,"messageTitle":"Refactor test cases for issue sorter","messageBody":"The test cases for the issue sorter are outdated. \r\n\r\nLet\u0027s refactor the test cases for the issue sorter.","fileTypesAndContributionMap":{"ts":{"insertions":57,"deletions":15}}},{"hash":"aefd63e82bad15390696d3aa88c9cbe93cdecaf4","isMergeCommit":false,"messageTitle":"Refactor github label constants","messageBody":"GithubLabel model\u0027s properties have been changed.\r\n\r\nLet\u0027s refactor the github label constants.","fileTypesAndContributionMap":{"ts":{"insertions":13,"deletions":29}}},{"hash":"bb4cb781ae5ba81e77cd83d789277530d37aaea6","isMergeCommit":false,"messageTitle":"Refactor test cases for search filter","messageBody":"The test cases for the search filter are outdated. \r\n\r\nLet\u0027s refactor the test cases for the search filter.","fileTypesAndContributionMap":{"ts":{"insertions":9,"deletions":48}}}]},{"date":"2024-02-22","commitResults":[{"hash":"ba39c0647b5d9064fc9ccd0c4714d2eb03c9e862","isMergeCommit":false,"messageTitle":"Remove test cases for permissions service","messageBody":"The permission service has been removed. \r\n\r\nLet\u0027s remove the test cases for the permission service.","fileTypesAndContributionMap":{"ts":{"insertions":0,"deletions":74}}}]},{"date":"2024-02-26","commitResults":[{"hash":"70c883ae370d033a6ceb5edb4e42aa39e8df2b60","isMergeCommit":false,"messageTitle":"Remove constants for DataFile and Team model","messageBody":"DataFile and Team model are removed.\r\n\r\nLet\u0027s remove the constants of these models.","fileTypesAndContributionMap":{"ts":{"insertions":4,"deletions":44}}},{"hash":"2c36a3846be3987bf96ec5e482e05b96a69a1f57","isMergeCommit":false,"messageTitle":"Refactor test cases for label service","messageBody":"The test cases for the label service are outdated. \r\n\r\nLet\u0027s refactor the test cases for the label service and\r\nadd test case for fetchLabels method.","fileTypesAndContributionMap":{"ts":{"insertions":74,"deletions":241}}}]}],"dishenggg":[],"MadLamprey":[{"date":"2024-01-27","commitResults":[{"hash":"bb4a7f4063c0aa33b80188a83bfc610fe147950a","isMergeCommit":false,"messageTitle":"Prevent redirection when repo not set (#228)","messageBody":"Co-authored-by: Misra Aditya \u003ce1096355@u.nus.edu\u003e","fileTypesAndContributionMap":{"html":{"insertions":4,"deletions":1}}}]}],"Tim-Siu":[]},"authorFileTypeContributionMap":{"xenosf":{"js":0,"css":0,"html":0,"ts":0},"sopa301":{"js":0,"css":0,"html":0,"ts":0},"mingyuanc":{"js":0,"css":0,"html":0,"ts":0},"jingting1412":{"js":0,"css":0,"html":0,"ts":0},"KevinEyo1":{"js":0,"css":0,"html":0,"ts":0},"LamJiuFong":{"js":0,"css":0,"html":0,"ts":0},"yiwen101":{"js":0,"css":0,"html":0,"ts":0},"jonasongg":{"js":0,"css":0,"html":0,"ts":0},"domoberzin":{"js":0,"css":0,"html":0,"ts":0},"asdfghjkxd":{"js":0,"css":0,"html":0,"ts":0},"yuanxi1":{"js":0,"css":0,"html":0,"ts":0},"supermii2":{"js":0,"css":0,"html":0,"ts":0},"marquestye":{"js":0,"css":0,"html":0,"ts":0},"nknguyenhc":{"js":0,"css":82,"html":25,"ts":211},"Arif-Khalid":{"js":0,"css":0,"html":13,"ts":88},"NereusWB922":{"js":0,"css":129,"html":36,"ts":293},"dishenggg":{"js":0,"css":0,"html":0,"ts":0},"MadLamprey":{"js":0,"css":0,"html":4,"ts":0},"Tim-Siu":{"js":0,"css":0,"html":0,"ts":0}},"authorContributionVariance":{"xenosf":0.0,"sopa301":0.0,"mingyuanc":0.0,"jingting1412":0.0,"KevinEyo1":0.0,"LamJiuFong":0.0,"yiwen101":0.0,"jonasongg":0.0,"domoberzin":0.0,"asdfghjkxd":0.0,"yuanxi1":0.0,"supermii2":0.0,"marquestye":0.0,"nknguyenhc":601.74744,"Arif-Khalid":1645.3817,"NereusWB922":4338.011,"dishenggg":0.0,"MadLamprey":0.28086293,"Tim-Siu":0.0},"authorDisplayNameMap":{"xenosf":"XENO..NONG","sopa301":"POON..RYAN","mingyuanc":"CHIN..YUAN","jingting1412":"WANG..TING","KevinEyo1":"EYO ..EVIN","LamJiuFong":"LAM ..FONG","yiwen101":"WANG..IWEN","jonasongg":"JONA.. WEI","domoberzin":"DOMI.. GIN","asdfghjkxd":"GEOR.. YAO","yuanxi1":"ZHU ..ANXI","supermii2":"ALVI..S NG","marquestye":"TYE ..QUES","nknguyenhc":"NGUY..UYEN","Arif-Khalid":"ARIF..ALID","NereusWB922":"NERE.. BIN","dishenggg":"YEO ..HENG","MadLamprey":"MISR..ITYA","Tim-Siu":"XU S..UYAO"}} +{"authorDailyContributionsMap":{"xenosf":[],"sopa301":[],"mingyuanc":[],"jingting1412":[],"KevinEyo1":[],"LamJiuFong":[],"yiwen101":[],"jonasongg":[],"domoberzin":[],"asdfghjkxd":[],"yuanxi1":[],"supermii2":[],"marquestye":[],"nknguyenhc":[{"date":"2024-02-06","commitResults":[{"hash":"043311b90c12118a4d9d8468a64e1fc7021ad64d","isMergeCommit":false,"messageTitle":"Fix label filter not working (#230)","messageBody":"Fix label filter not working\r\n\r\nFilters takes the value of `label.formattedName` instead of `label.name`.","fileTypesAndContributionMap":{"html":{"insertions":13,"deletions":5}}}]},{"date":"2024-02-13","commitResults":[{"hash":"64a68624b77c88cee70cd870e2966c1c27b89eb8","isMergeCommit":false,"messageTitle":"Add column of hidden users (#235)","messageBody":"After #192, assignees of a repo without any issues or PRs\r\nare hidden. Now, add the column to display such users\r\nwith 0 PRs and issues.\r\n\r\nCo-authored-by: Gabriel Goh \u003c77230723+gycgabriel@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"css":{"insertions":82,"deletions":0},"html":{"insertions":24,"deletions":0},"ts":{"insertions":44,"deletions":2}}}]},{"date":"2024-02-19","commitResults":[{"hash":"d6dadf4a49a6fc19e2eaa99bb37c7fe89f458a81","isMergeCommit":false,"messageTitle":"Refactor Label model (#254)","messageBody":"Previously, label full names are separated into label name\r\nand label category. However, this is not necessary for WATcher.\r\n\r\nLet\u0027s remove the separation so that filters only make use\r\nof the full name.","fileTypesAndContributionMap":{"html":{"insertions":6,"deletions":14},"ts":{"insertions":6,"deletions":14}}}]},{"date":"2024-02-26","commitResults":[{"hash":"3db1c8aa33942114acfd55af87da3d7c8d751390","isMergeCommit":false,"messageTitle":"Add shareable repo-specific URL (#255)","messageBody":"Previously, URLs are fixed upon repo change, hence URLs are not shareable.\r\n\r\nLet\u0027s make the current repo visible in the URL, so that it shareable.\r\n\r\nFurthermore, login is automated when there is such next route to be redirected to.","fileTypesAndContributionMap":{"ts":{"insertions":163,"deletions":9}}}]}],"Arif-Khalid":[{"date":"2024-01-25","commitResults":[{"hash":"79602d69bd13e2ab8c06ab6d9a6eca8b4a61e8b0","isMergeCommit":false,"messageTitle":"Hide 0 issue columns (#223)","messageBody":"Hide 0 issue columns.\r\n\r\n0 Issue columns are shown.\r\n\r\nHiding issues with 0 columns reduces the clutter on screen, \r\ncreating a better user experience. \r\nIllogical columns such as issues that are unassigned when sorting by\r\npull requests are also removed inherently.\r\n\r\nLet\u0027s add logic to hide the columns when they have no issues \r\nassociated to them.","fileTypesAndContributionMap":{"html":{"insertions":10,"deletions":1},"ts":{"insertions":15,"deletions":2}}}]},{"date":"2024-02-06","commitResults":[{"hash":"cd0d7e9f2a5169307c0c92a89a33e24610381839","isMergeCommit":false,"messageTitle":"Remove unused services (#238)","messageBody":"Couple of unused services copied from CATcher.\r\n\r\nUnused code should be removed to simplify code base \r\nand improve developer experience.\r\n\r\nLet\u0027s remove these unused services.","fileTypesAndContributionMap":{"ts":{"insertions":0,"deletions":359}}}]},{"date":"2024-02-14","commitResults":[{"hash":"5031ee2e33b49d0275892849703b81a1fc028a3d","isMergeCommit":false,"messageTitle":"Remove unused models in WATcher","messageBody":"There are a few of unused models ported from CATcher.\r\n\r\nUnnecessary models contributes to code clutter and hurts understandability\r\nof code base.\r\n\r\nLet\u0027s remove these unused models from WATcher to increase code cleanliness.","fileTypesAndContributionMap":{"ts":{"insertions":0,"deletions":40}}},{"hash":"09ef51d1e360350d0d73a4a66063df59f805d3e2","isMergeCommit":false,"messageTitle":"Remove unused session-fix-confirmation component in WATcher","messageBody":"This is a component only used in CATcher.\r\n\r\nUnnecessary components contributes to code clutter and hurts understandability\r\nof code base.\r\n\r\nLet\u0027s remove this unused component from WATcher to increase code cleanliness.","fileTypesAndContributionMap":{"css":{"insertions":0,"deletions":0},"html":{"insertions":0,"deletions":9},"ts":{"insertions":1,"deletions":27}}}]},{"date":"2024-02-22","commitResults":[{"hash":"7dbc28230cf4e6d2aa3d95448a0e247b03a5fcee","isMergeCommit":false,"messageTitle":"Refactor certain filters into its own service (#259)","messageBody":"Filters are observed, subscribed and emitted in many different \r\ncomponents.\r\n\r\nThis makes the code base hard to understand\r\nand adapt for filtering in future components.\r\n\r\nLet\u0027s refactor the filters into its own centralised service.","fileTypesAndContributionMap":{"html":{"insertions":3,"deletions":3},"ts":{"insertions":73,"deletions":35}}}]},{"date":"2024-02-28","commitResults":[{"hash":"ad94663e1ac524b83b022a622544181209881c1f","isMergeCommit":false,"messageTitle":"Refactor sorting (#261)","messageBody":"MatSort is passed by reference into IssueDataTables,\r\nlifted up from filter-bar component. Changes to \r\nMatSort are detected and handled in IssueDataTables.\r\n\r\nMatSort reference in IssueDataTables performs the \r\nresponsibility of a dropdown filter outside of the \r\nfilters service.\r\nThis violates good programming practices.\r\n\r\nLet\u0027s refactor the sort filter into the filters service.","fileTypesAndContributionMap":{"html":{"insertions":8,"deletions":5},"ts":{"insertions":19,"deletions":40}}},{"hash":"ac150e0c2c69d668481bd6594339618a59ebde7c","isMergeCommit":false,"messageTitle":"Refactor milestone filters (#264)","messageBody":"","fileTypesAndContributionMap":{"html":{"insertions":2,"deletions":2}}}]}],"NereusWB922":[{"date":"2024-02-06","commitResults":[{"hash":"552868032ec6a8340d1f8c8d662ad22189d134f1","isMergeCommit":false,"messageTitle":"Improve activity dashboard design (#233)","messageBody":"Improve activity dashboard design\r\n\r\nThe ID column in the event table is not useful for the user.\r\n\r\nThe design of the dashboard is too simple. The event table\u0027s height is\r\nnot fixed, and the expanded event details might cause the table to be\r\ntoo long, which is very inconvenient.\r\n\r\nTo address this, let\u0027s hide the ID column, add some information about\r\nthe actor, fix the event table height and make it scrollable, and\r\nimplement a dialog to display event details.","fileTypesAndContributionMap":{"css":{"insertions":129,"deletions":10},"html":{"insertions":72,"deletions":67},"ts":{"insertions":48,"deletions":18}}}]},{"date":"2024-02-08","commitResults":[{"hash":"a6efcb9a2fa9bcd321c37a824e4d2aafa8d07a81","isMergeCommit":false,"messageTitle":"Refactor test cases","messageBody":"The test cases for the Login Component and Session Model are outdated. \r\n\r\nAdditionally, the Conflict Model has been removed. \r\n\r\nLet\u0027s refactor the test cases for the Login Component and Session Model \r\nand remove the test cases for the Conflict Model.\r\n","fileTypesAndContributionMap":{"ts":{"insertions":86,"deletions":106}}},{"hash":"339b319aaa87913d2109774f1fc6826d37992172","isMergeCommit":false,"messageTitle":"Refactor test cases for issue paginator","messageBody":"The test cases for the issue paginator are outdated. \r\n\r\nLet\u0027s refactor the test cases for the issue paginator.","fileTypesAndContributionMap":{"ts":{"insertions":4,"deletions":9}}},{"hash":"6dc82ffeb34973054ecfb3a10ea107f2c653c7cc","isMergeCommit":false,"messageTitle":"Refactor test cases for issue sorter","messageBody":"The test cases for the issue sorter are outdated. \r\n\r\nLet\u0027s refactor the test cases for the issue sorter.","fileTypesAndContributionMap":{"ts":{"insertions":57,"deletions":15}}},{"hash":"aefd63e82bad15390696d3aa88c9cbe93cdecaf4","isMergeCommit":false,"messageTitle":"Refactor github label constants","messageBody":"GithubLabel model\u0027s properties have been changed.\r\n\r\nLet\u0027s refactor the github label constants.","fileTypesAndContributionMap":{"ts":{"insertions":13,"deletions":29}}},{"hash":"bb4cb781ae5ba81e77cd83d789277530d37aaea6","isMergeCommit":false,"messageTitle":"Refactor test cases for search filter","messageBody":"The test cases for the search filter are outdated. \r\n\r\nLet\u0027s refactor the test cases for the search filter.","fileTypesAndContributionMap":{"ts":{"insertions":9,"deletions":48}}}]},{"date":"2024-02-22","commitResults":[{"hash":"ba39c0647b5d9064fc9ccd0c4714d2eb03c9e862","isMergeCommit":false,"messageTitle":"Remove test cases for permissions service","messageBody":"The permission service has been removed. \r\n\r\nLet\u0027s remove the test cases for the permission service.","fileTypesAndContributionMap":{"ts":{"insertions":0,"deletions":74}}}]},{"date":"2024-02-26","commitResults":[{"hash":"70c883ae370d033a6ceb5edb4e42aa39e8df2b60","isMergeCommit":false,"messageTitle":"Remove constants for DataFile and Team model","messageBody":"DataFile and Team model are removed.\r\n\r\nLet\u0027s remove the constants of these models.","fileTypesAndContributionMap":{"ts":{"insertions":4,"deletions":44}}},{"hash":"2c36a3846be3987bf96ec5e482e05b96a69a1f57","isMergeCommit":false,"messageTitle":"Refactor test cases for label service","messageBody":"The test cases for the label service are outdated. \r\n\r\nLet\u0027s refactor the test cases for the label service and\r\nadd test case for fetchLabels method.","fileTypesAndContributionMap":{"ts":{"insertions":74,"deletions":241}}}]}],"dishenggg":[],"MadLamprey":[{"date":"2024-01-27","commitResults":[{"hash":"bb4a7f4063c0aa33b80188a83bfc610fe147950a","isMergeCommit":false,"messageTitle":"Prevent redirection when repo not set (#228)","messageBody":"Co-authored-by: Misra Aditya \u003ce1096355@u.nus.edu\u003e","fileTypesAndContributionMap":{"html":{"insertions":4,"deletions":1}}}]}],"Tim-Siu":[]},"authorFileTypeContributionMap":{"xenosf":{"js":0,"css":0,"html":0,"ts":0},"sopa301":{"js":0,"css":0,"html":0,"ts":0},"mingyuanc":{"js":0,"css":0,"html":0,"ts":0},"jingting1412":{"js":0,"css":0,"html":0,"ts":0},"KevinEyo1":{"js":0,"css":0,"html":0,"ts":0},"LamJiuFong":{"js":0,"css":0,"html":0,"ts":0},"yiwen101":{"js":0,"css":0,"html":0,"ts":0},"jonasongg":{"js":0,"css":0,"html":0,"ts":0},"domoberzin":{"js":0,"css":0,"html":0,"ts":0},"asdfghjkxd":{"js":0,"css":0,"html":0,"ts":0},"yuanxi1":{"js":0,"css":0,"html":0,"ts":0},"supermii2":{"js":0,"css":0,"html":0,"ts":0},"marquestye":{"js":0,"css":0,"html":0,"ts":0},"nknguyenhc":{"js":0,"css":82,"html":25,"ts":211},"Arif-Khalid":{"js":0,"css":0,"html":22,"ts":107},"NereusWB922":{"js":0,"css":129,"html":36,"ts":293},"dishenggg":{"js":0,"css":0,"html":0,"ts":0},"MadLamprey":{"js":0,"css":0,"html":4,"ts":0},"Tim-Siu":{"js":0,"css":0,"html":0,"ts":0}},"authorContributionVariance":{"xenosf":0.0,"sopa301":0.0,"mingyuanc":0.0,"jingting1412":0.0,"KevinEyo1":0.0,"LamJiuFong":0.0,"yiwen101":0.0,"jonasongg":0.0,"domoberzin":0.0,"asdfghjkxd":0.0,"yuanxi1":0.0,"supermii2":0.0,"marquestye":0.0,"nknguyenhc":588.7847,"Arif-Khalid":1662.3722,"NereusWB922":4245.3677,"dishenggg":0.0,"MadLamprey":0.27469125,"Tim-Siu":0.0},"authorDisplayNameMap":{"xenosf":"XENO..NONG","sopa301":"POON..RYAN","mingyuanc":"CHIN..YUAN","jingting1412":"WANG..TING","KevinEyo1":"EYO ..EVIN","LamJiuFong":"LAM ..FONG","yiwen101":"WANG..IWEN","jonasongg":"JONA.. WEI","domoberzin":"DOMI.. GIN","asdfghjkxd":"GEOR.. YAO","yuanxi1":"ZHU ..ANXI","supermii2":"ALVI..S NG","marquestye":"TYE ..QUES","nknguyenhc":"NGUY..UYEN","Arif-Khalid":"ARIF..ALID","NereusWB922":"NERE.. BIN","dishenggg":"YEO ..HENG","MadLamprey":"MISR..ITYA","Tim-Siu":"XU S..UYAO"}} diff --git a/archive.zip b/archive.zip index 2fa38acfa13a9a87abcd919bea8969ccd43702fc..f23f915369d961dd23ad3d2aec7896418aa4440c 100644 GIT binary patch delta 117218 zcmV)PK()W`wjjf=Aq`MV0|XQR2nYxOVE|o`4LE;WbKANRe($fqurIw>40tE~RK-yo zony$OkTh^qY&GHtO75psMvSH_& z!AO6_jbp>cwmZPq!1jzIgNi&)t4l8HtdjcFoX9zx@-4^pEs8m_ohZQA^|=*W0kLru z5$eS@O9IQr73xqFEWo3CSb}ZMc+V#;?;VQ&KPaA|n*kL5wE^q@k3G0wtnE z@Vw`xge#)I{MmNG=�_{HFKv8u<@__J}pK|VeJ~&9@y?n1`cCF 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%0DkbTsse|G}_)n3E)_@Nh<{(2AQ(900cc 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 z z%8#uGkd@?xnRtz+LxPl#bWKB(bWKu+u8{L`+CisA;Pw3DjcM9>M4RhpVJ`VU zn-mMfdnj~<=w|80Pj_>l-U>o+gxAK2I!ZKG#B4Wz(dKz{ysy`jJJmsc4ys#>B_)*6 zQbK%&^#ys%9mY-pPssjSS9M;!=$xCh8ftF`@U2BSGSV-P2l-{U0$5|L$I+&g|G1*N zII%`)@CGCjnPqx}DBzqtKD{xRL@M7z!Arj}c4|!<7XQWwR<06@AW`7(h{lgh8!mFl zc{G#M1*hUn?8pAxJ9vT(#*98QUGycThwHrNw*R~z3{c1wDU(-r(I29&$dXys#7v1; z*cufRJV)7Jgkc!JPxs%~4vdSAv{QrKUt(XMB#jnfkfA`6-N9uz(Hs_Y$T?M!&?RH# zL<8eyh4>7@f5Az?3wxs~=){~tT7-v9SRy$^m@8HSBH>#LSh-w&D@jA3M~AP%QnQGx84cqHR-NF40O-Xj!rbwiTsN@$b?fuc>yuwBw6i)_``T|9RF zIGTp3Jn8LIo7Go>Iffj_<#o!iOQ&i33_{uu)0{<9gWS_+>N=&q{&T4~Ahg)Ll3QH> zlt-JO_Lwdq{Pi3w!Ml50$Nh5c@@O-plfhK}$Z{AA^*tq)DK+|$+;8AuKIf+6j2+2M z3PLlVewnOPjJ6^!lt6_Lg+ zB#IgP<M)k^e+D6n{&t`VZjp>Y4Fov1aA(E(*B+mQ_isLQ4i8S zJt3g=r@P~AkkMm7x}O^@j5BH&|EA+vEsDj{i_7xJv1^CL!|Hk2sjLP%G0ycTP?v!_ z){R@1Nz`jwd_$>iI=j+|P0xCx>-%;7W1_z1@aAC7BLK0k53F>)rk~gKKW>1+&b?+iAg7m(8~yzhn2Vp~+&zu7FB}?vP7M7sOdS0hbISo3Y-WU0R4QcFC2$Jm8@r7-% z2`t?C<^p|6GK?M%i&kiz?J(X-!C?Wqf6j5LX6X$bk_reRgiC4D7FgKyKiX*X$Bsf~ z*YzKVLLktTxeIbQt~PL=`hBmT z(?(#|4y%OjiEn)d#1pO|aQOQt(J?9NB6<#foUkK{pB5zLKwcs^a$9K{0KhSSs>&0AP{&}?*~KeXjS@J?YV>T&{M5M z^oN{HbEoWdmkrN{LbTt>D*y=a08b+eK>EAy>H%xm1ovrMSq{{BmX1F@03QIi!=)z< zrUuno4vb_%OIFivE}Nk2wrYI+H<~?|DPjkQ@T{I8VpnjhEkL_L--R;#6zXZ{vD>-x zi}8r^a*2ESaXb^s4wg;p*K*5E^*!YzdRIz0WP=CK-!@;rsGlvgW<3Jx7{5;7HSF5{ zE>AVVKrO$6-M;WD?x`LnzdyJ1yf1t_L&5$-pamk%16hBUhbwLq3Ht7Jdc5ynO*}Cp z?zWaRq1#xtk7s*uI-5y%IvgSPzkm|T#_MbUoadfCAhCy>(-27>cxF>fzCxxJshr_p zRhygcYcdeXQsWo%roc*gz`p;{e?R|tT?RUZy>>VT={c221vz5Wns|@?{z(@$9oQz<>|0V1~aJhQa+xJ=j4uRxsFTwk#$3!tn+O18V zF_2k>jqywn!g#K}ygLz9h$XCqX}E&(q1h&%T5)bdyvRR=B4c!sb5S?biQwp*G=QNf zmNs)3#Q2R$+n)MRll+^GqE!#hyd{@cQwOlI*BRS-!x+RFMPI95XQiXh+TlsTNGK7U zB`GetHdSabHI>E*Q{jQ4nX)lPJ7F}`9*^(?0y*DP9<$3JQXjdK$I8dnqp8yc<+eJ# zwHqnp>^%O8=8+VMvC#NGTd;5`s)6I^bOt>~|C_Y&QmPE0rV5Gb;}bKmbE%&Ktg5GH zw>BXHgQQniPou`n$7-qFefiffYf|p|M<`# zu!rE~Gar~@x(Fx!_8^9PwFmwke`pk(Z;!el{TL8~-4HYAvX`OfLom$(Mt|h)=Z)IV z3SPu-e0eW@WQi&C8VA1_B(W4`V1rPx$xMa|jACRm6{O6UD^`xioFb5iT7kFB(Ew$B!ODcJj@?{R&CusPghKVH^)BymYLrBZmX+!l`?sGLA1PF= z6*?DCXE=%JReS7(#F2fhx*~>+#@}FeOvSZGA@ztS958YuZjTWFtBN=i7X`u6($hT3 zHA=LqF`MJOH@k(*7~9<&PYgvrm#by@yX^P!t(A|Ect^?*e8i6>L9_HOFVi-mByv%d*`TCm ziQIGwc`>u1bJ8;cOxzCc`?QoFYQAIS`W-p%Srs-aHmBl0v-ZbjD|-xJ5059~3z?~d zcE-bn0}T@ZdGYUx|4xk8vO;ghb3^pVjH|oiwvPWXrx(2{aU=O5dZBndKIWTjZhPjo zO}`U{aU&=c&z+_J3wpghM0lK=K#2pm{GP$9o27_!lPt!7(-4+|&5}3iV}^1QG^*Tj zCrf^SO-4*-V(Ub#@?_uY<*VzC)DZ=J%)qZN3ZN;w<}xX`ccY)_kWa6snLH}PC%YI%QPtHx} zkOV?HW0?Rj0@nUKUj9i_Fpc#fxqwFa7@)sV*lpK{qNgfFA2wUljboEp(M}kOE1>uI zdsaF^Rw$80!#TbqTLSOIVveY}*~A(IK82(cka6cuZxqo|GTkNIb!0{A0=D&ahmO~8 z!Qz*AfsGUC5!D`IB;7YuoCvxA23R)Q4jtii$a6lxSg%<|i>|wQl(9z~>gW@gLn;H z^iHIX8g8GudCdpUeZfU(8q*r{Qo^=%UA4zr;C|9MJh{i&%K8zojt%+F5!M8dhm+yF4}o+y zLqe6o^bwUuq#e8}{@lx7>xzd#PD?Y5f-B2-IqjM>RQe>1pe@Heh=y}~S>`wbNHs5p z9M*Mb>tJTjwc|7cv_2Pa7oWWF32b#MTD zmgkZC1BQVUSa=JmW?a9UQ3-vWzUv`c=Y)(9lel@K9|iQuq&M!>7rxDICRg?h%+R~d z(-0i!kQo`47kLY}pPBnZ@XtBqnSL(kp4&m;O1k)r6 zsrRe6ruD1)!Mw~GQA#gQDY|qci`x#gl>b}bF8FKTBE z;4uoM%4O$%dn7ru`SgY||7 zX?j9Y8J|z@f3Yg5+!|uRO8cm73|8v!s|qPjV(Sf^2&x!L$mdgc(>R~!zEQ2yadNs( zjd$P$>mqWpBk!^&_iipj+qeSs$hF49KDD;ad#;;SKD~X66ZdK?9c+ndwZFr0LhZbm z8SA6e4f;f)X6DcLWZ^&LZG6ddeOLMG#`lycpzTx-$F@8WRZWO_u~}EY2ZN}q)Jxf& zdeSVT2XumpYzK$1n>;_?`%XkomM*a!e}v@7XgDQV{Uk+^OI$g?G8_0`TGwrN{_$%- zbev|YG-k)T6ncX`VISja?H1nwJ&8{{QjdhfBf4L48*VE>T3^6P|4j*~bgu#)M4D!U zKM5XdA-Kb1NL%~lu-o6#MuUX&xsbjm8*C6_3d?%y(W~~;(d%Z;os1c=_t;l!b-WIq zffD=R76qni-Yq;kqBr%s}%P#w+eav&1~W*-yC} z3-6Fq#1g?C=;`RtHzW@1*i)x!XyA|Zc^BKvwb}+Jgu>R5{o=y&b)TA=DJp3md@zb6 zs2J_Rlk#s+a&D#?7^-71E&Aa}@fWJ#%+uF(NVNNwaIzD?9fh2RVU$iG)JS~ocb>JJ za5r>d2;D~Wo&&*LtGJ19kGDlY|E~44r8c+B@@OFC7bv^xgz!BZf`ArrgU_QTeZ;FK zPtme|rzj|2E_n>l$KYIeLasMpnGy~~l+B)v5rGnRDZ>YUZzQR7-s2|UY-EpFuMG1xYJxW3ODeZZ6;s_l7nMZ29 zq_M!RKuA#fI)tic{mH|zHCe!@Nan+5GfRkTY9?CU7V5eOF=xR zHUrz+#*gOZr&xo!FQvJ~5IjACjx*JI$-Q2AX4Zu5FRwt!UtCq z*1o6j{P(d;+!BSK!mw?KBvvu#XY0)Zc<4_HQpNrNhys~!-H8m|7DC9iO6_*24aY`! z-lw1*EqTg2o?dL5gnc?ORzA+Dbd-2hA)qnFUzv-AX3u2Ae1f^VcYzLZbQevB$;fiN zrSL$NtYtw_Hr(~oZ%V6phUJoI-1z;k?Z;6T zh!A*CwseN)LWlvQ&SLyw+O}^W`gLqn=zG!3d5t*(+&zdbc7~G&G;qFF@zM89w?MK1 zL}7(5H7{%E)e3|*J9I>Mu}M>fWCD(!15_mxNY|iu^PF0a!U9LR50|~Yl}j`9D|K6;$f(!WeuCZNYF48>an0}Jfh`n%DxNAa5_uWx}>}5FT!yGUd;b;-^ zRL6>2sL|QZV#M*FqAt`31Tad^7NE2IQnPVWGp7D^h6MhOZ zw1XIxqP=}_s(uC?qd-5ye%Z5kj?d(+4U%tBYwSzCoG8D9JPopw5li%sFQi}wCxsCq zK}0J?cX9~US|7~v1HZW!%cX1}iO95p0eZk=a+9ep z?jg*-SZLrloj~$TF^WLu=0(IzXNgqZT&;#obA|Pium6s>kEl?&lT~RPSbCWZuj#i= zAaz_M6(;*?`q*DvqKMgJC^C2u(aIt!gO?%gvLe@E9&f5Hl6Vx2Z2^s^LHTfT#S0wg zc%nlfAHXk?605>~_#;**06!($=W>KaG*$_nGyG}=Y!;+{vIc3uUEARX3}njzQY>#@LSwpOA40bS zi`M6d2^JPlc_GSa9Jopax62L3c9YkzRD8$;?z^~Kcz6|K&6kdvbpwA#=itv#?gAHL zC(7+pQ|@}LlQBi^sQ|N*V_5&g^ZpiDxYwJbtM~y#5M?>snje9`BF#WGYP03so;UfP5 z-!DjpgC!``FcmrBF$+Oxqw`Z#+b<}c`Bu#a8OJ4ffEfGPZX|JgJ@7R9@weM5yH2(H zlke1wsyU+L7d~4}?DZHnkYH6^prr0BPj*Hv7Rzw|G`~bK#jfRGsAF`ZfpwzZAy~af zZ}0vQ;Ldd$D^}*eW4}*w*DnN|jx5ZRprCZ;L~B{TdsC{ZEjRKt!M$}=O#PGFq*VL! zFaufw-gg~7nI7K)9wUKB**@>$|4)*pkN)!+6!GYWY|wp!?IkNhkB={-Q)t}(BxquW z${Dkpl3r0Nj6+Q2ri^_BaGxHiCz7k*THhOkB|iEFz4KsdMdO&Fkd7@p;5`#|V z>FkZ#oUVSt_;H4L1AW^k4~K+Jz1)0UE3m;OMno_OkG6Fc4cIlw{uxKFU%W7({05O& zi;MmzHIwAd%YNFC82mj0_-@7wvlo{wt%zKI>&LD_UHGU|%s=(};`Z4)j;IFQq-Xey|zIw7M=Za_)?C8%); z#;@aZaE>w;`%f8Af)b{yQ>oqGVMuFAxLl@|Z$-BFd?- zPF6x9)f)$#1bn^@LCm83#&pP}Akw1YT(Y#4L z8~QNbjTIRdvnNOrtpAxDS9_Gp7`HmpoK*;TT!fGUbqV|qFXD8bHw)^js=@gP=}QRW zu=x7%!rz*c=f;=B?%V`1ODw>sYdwXzY?xt>H-;cA>{epIF*_bMhS10U- znM;blOjeCjbd|-{bGG!A>g+`+OXE=+5&z^~Ox&iA(O#yF$i_V;(#USe5w*^^b;cui z@4bV7SGXdDakOWx+ZLB85w{93jV%Uz7+0rW$IU?0vKP%tu=GJkjgpLUk*fY%9*2WQ z`k^LFGCmsG*-md5(B;3^DO0Q3YEf8Zm)D93r<4KxykWz4yLxY>%Cp~+Yreiqe}2%4 zl<$eh4XstOit~Tpz^r8yyCGMa*r{F~tLb_N2!+2Dwqmraby{P_R4f~J=*$SBRBR+! zFI6Lm-B{VEHpKditF$gM1q|!S!wc`EN!hXm-7U1w2NZ$o-wgl6N83!tjxwvkcQ131osT{|s&B7f zimA4?! zv4NY@-3>zV8Jf29ww)7J$%k$i@sT9!hp8Esq*D-pDHSI+u1aGKle zI9jzi9-(nJG!26slf|M|Q>|B7^y_nUWHbS9);em4|I-9n3*aqYv8*Qr@_&7+%I6kQ zNe&5q^Cb-6hQFUdOS?PozS!_WISjlyTB|{m?x+1T6v-u6Y>Q8;+=Yg!7KceWaSa@lkGBpbDt?xe5LE!feLw|1yH>s|)}hU^n|EIm*KLcB?Do(5J+MXUNy zHLabxV`Zea`u{Y2P^#TT{NIiL`@EZ6ajdl4g|lsqkLH(_rJm|{+XwqfK>Odi#@AmJ zH=4EhOszlJcW-ThOecr>88M+wgfmrpG%^17)(XlAn9Zew{|SjN!oc`LVAOwM(ZUyd z`1taea6JIx5dhd3jC1`l;DONC~M-#kY;vw&j>*n#G zHhxC%M&tp3GvvP_hMm1V72#Ik$>EGx@6^6PaS2DVAh2ns#F4BK%$5>|c3m``Z#Jkvm0#yZ^xIz);+O3$ z%@_=~aZTmNNo-JVwxSbJp0?oqB}y3i5`JT=`bqgwrq1F_aheALf42*VG#e83{cl;s z&FpXfx7BMA2$^(}S5lFBq~Sr)l}<0Rfb93YBhXtEi?Y?gQQ2RVFx41-gCg%CK|_eMtHA>3guKj7QGvS*BC~PG+r0DopUJFIuVz9|3ZH(Abv#e??ue99MPJ)Yo;|an5CtAGL}0j#E4f@Jl-Dhmz-~ zEc{81g`BL_B0d8}Am8*?P=OcaE|SpaOGr8Ne(``yXcWhjqB5(v1uG8>{ulAcoP0}})2>lS$;37G#Jxd-s{6QVB_wjWUES6XS}c@S~L z&1yDcO8oMvoejdmR0mSTY(~zt`cauoy4YHYt7rJfl8)Sk+$!(4cN;n!mnHXB&k?+! z3OUBfv}zJbS)}OG@gv1uhbi6OWqIQRl?OfJE4W5H1Q1b?L0stk~od3a^w~&uULiKMUA4B{# zg?tS0pR46#h`;O>(6^8YmX{%KUc~R(%uqJQ2Dal}E;_pTE25}s+TH3%ReiR(emc!T zE;_3c%|Q(>+SNg~U$m;lGaLUyAL?oeS^kIYD*aL&1bl#}Fr9x{1AkI0{;~%?cHThu zy=Wdr)o{>MO%sq*pqd5zjX;yo5X(=bUsMD1F4nYHAoBLz3p=$?4vHIgQK>P0)R>Xl z)!gsX(V-~|@qQ7Cy4}$dQpg<9{uh0yt0kWsKIF&1e@%bK6$1WYP5vGDgFRWj8m-DM zs{e&5+T}{OJzf&JQ>Lmyw6h&jQW0^z&6CoI|MjL=J);&9uF}&_e-OqAUCIGMK4s@o z@LJL4*8XI^b;K^y&*em`Im+dPJtgBmq}4nb$*ZcNZht447~zX8$X0bi{h@v{Z^#a&D8Ct%cUfF|C8<6ELLxFZxh7O0Hu+jcpc^=NVr#&l3xROZxL~GCJo+LgajJc(cDXbTflALt%bqGQENV)I9y0 zj=nrUSR6eH4)wOUWiv$m)bdK}FCQk_z>(WLpJqqgG4&qG?%kjRoqp|SoZRW(i0>AS z3halQV~T+}&ORD2Mh!`Z?S1VFQGLIV0nmKPy0}r2Ie=-{l9>7=kUM!!A+Hx{$CT~WDnwMe9ANALu>yO z4@#Gp)Wkxj4)GK}%|sU$iVzZd^WoIaya4wyB_&ms9#&`%Uh3(5SPp(%Ft;iv**s;h zeOqcKNQ)!-mx_zQPkgl{BIG5M=P^^>MIouIe*Cv*3FYShlbCw*m~>@qf5hJGzK5P3 z5d}G;VRi{s%q#uvg8xVHU=484-|*vqlT$pg8VKE1x2aD;=}x827m@k~>&kE$eE|WH z!WM*+CRI_L2pa11b->g#|3+q2i-SHmuum%f|CJ6Bm*sOEv><`Lk9X6vrF^=SoGhRU z(ee<&Ek)pn+P2YbZ1LjRQX7r?20Sjso;C3K0FXen=TDVAay(c$1sbN&mx1}X`LLux08&1ViLh}9?K^8|KlTmJ~IQB2FVt!DeOf3#-b?f+c9UX<2< zDZZapx8|#DUzc?r8&&OV;Zw^;m_v01pKO51pZwrDKLxU(W?S(J7yG zaSL%s;D{hU$a1;CV0Eo_qX|F#y_gZT(Af{J5>Z2JmNj47z=tL^OYf<}UkpBYErfg<~sCXX*b^7|a zpE6){FcsuAahoRz;Lnz>;RPYrXzdxrRgzG~uIgbQwD>5NZqDt!B{0tFxs+V=Y^7L0- z{iKYInY$C!0-cvN+)m7(r=t63b16B~Qvr9-L-QCcbO|hZCm-K~Ma+lxlNUjc!EODq zdVCU3j@|oRIe!$ODo0)78luY^>qAQm`$anHPhhRMsCb1?&W<1KV0emyB{a z9Mq1MBW0YHCyb`tfL)93B98>7(2DGk4h~~Zlw%4`f!NVEB~7g_~;*6 z8$t9WovewjuI(Vud`M1Pa&%lGb;BQgKG@VU=&I6XwHm_cRlm`n(Fw`h?*rJVE}Yi2 zS4*vCsV!_slI+&CKhVj{Wrn|Fq6 z|oMu-|IsyKU)Q2X2L!K)tnz~yd*ScS`2+Glu&u^d(mjnfv+ zR-btJqvxF-iqtCPikzKZ-#)$y5^S5IK*$|O!C56Rky2z^7O7)oT37f>>QpqmXM?l7 zAbW9v*idZAaH9Hf=z#PJ<0P}r=;MXSOfZZ3QS3np!pm6qEA`V%)3bdq*kx7;?3>?{)8n^4A?=U8}|k>U$y&B<$4CdBk?c#A=% zNDXrPmIqZdd*i5Ry*tii*IUO>2xy3>%b!i5k@pp+-S_MZ zq2p=2w8syL3r>00iVy4J3$?>?d$^5NK#< z5Hk>6Es+2DQGH;w`rq&RXrDe@AslF+9|zdS@#*6LPv$^_K=|uu7Dt2dM)`-*PY%)C zPYx-3_*YAYLV)50R$4H8&#N~b43kA(!#{tjb2*)8Tg#+@#+Q+zR@ob9 zO1lKkL8W90$j5%f9R;Aq^K*kt-f!uGc-MO9$zN|XXdZ2oPnC%dxD;MhbnH4kPhdU6 z)OE<6a=kxY4>Ml#6!%*aex*&Px5^6JzeE$%cyQt$vR!`xz>sM9^mZ#>AhKU8j@>*s zEwiwWQCN#-?`Wpn!#0+qS+n<8(BIXyug7Im<%+Teg+`iKTwe;7o6H14jEmG(&Lgni zOLHqQfAO1V*GqSPw<(i+8c6EsMQW1OJx^&FBCm{hKI zbpH~NNHyOrzoHz6#ip-LT>Sw5W?NcO@qH{yxM(99sBt@mu)}hq9!foB%cJOTNGp5- zeuD%V{dgVBg~loPCHOQoH3bL~*)A^Uw%ZW6^Bek|3>Z;kqk)j1#07z`QbPxltulW_ z>9;Y^i7spq%bKs3n{q5G2plhywWYMR1ZHP;#M1Afs2ro|^^>gPK);~jIhB9+uoIxw zrFAg_E^UlT>nd)CdY^8Kej{IiEh|XOtG|Wf)&P-We8IHM1+)h=23lqeMH5oapDX7` zzaY>iRcXdE*o_NM{AN6L`yIuXs7FY(R#I17tXX5-) zfoOhk8IsEQvr2(5HPn~hgQ@jQ26n_-d7{Eh$`}>i?vC{hV67$b5D1JFZMqwlAYv_d%RU`Ek+MQdTJ z6Uwn#qL!Bc(6p##jBAA4KPl~euPlkRWY`A@5`?^_(cxlGf{I$yJc)-~riXm&qy{@= zqcmWHJLu!2LW~E*YI%V!Zcav<8{5>t(?!14Cy%@=?};gc zE=zly^a#R(-+qgOYR_4CDHYC`sHHvzA4es9tQF&K%t63nvfY3VPkZ|##Ht_4UZrmB zkwwXt_mXUR?ZmOV_pbly^Sjfi&?qLZ z!jDbXo}A~2U_Y-TO8wjs&Z7e9(T<4i2gN*>54e{BYct&O)B$Y$17*2t zHz?cLd21)3cq8ai_M?|nz|v2&HiDz)@7=a7&c8H(>K3>Z_QmQC<$(-G(XSD{@A6Ld zrl1F){OVfwryBQ5__{nCnpunsIQGmI+66E(wPzuGySX^7KyYE880}zw+6kIxTd2wf ziC5y775TJZ**!fek49b2JZxk1@sIjf>@)>c+h%os`ebljE!DT21#vF+9nvvYtRGzC zvnutURnb^)_;h^Ycg``QT@QYUqT+}qw5+=MLw~L#CUxWq|E1%10)d!24j8d73lZXE z>zhL}d(u!7ChP}K>Mc?-C|-GHr3Kn|`VAkzX2+9eYg1X1>{i8MV4tuno~Ut-b%|gx z7?dsXtB>TNgn7VdVD((c=0Z`k*cCo{OZ8^5l&z-BiFBET(%>7%3KvW1u=0gAf8J$uZHa+u0i)oT*x2%C11aGZ2wGMlv_hAXa7a93t8 z8Z@GGjJ&f);#piRE?r`MoC7UN##pFq{;&oYT7_j_8jgOV?)#wFcyZ)g7niiF4=N}A zx<%rbRSzb6MU?Ua_Y?dwXMsZAMMjVVnkzV69^)7R0t!GL;Z}?h#>vava2xyQ)~j{CfODbd#GW zZ;fKRh*BvO`zvH762RX2wW0FGe%S&kcIXQ>d6BP6gtp%g6oyElP3kn`PqUI03WYML zXesF#M$!copzti_V{872ZbSSt+;14kyucJiwq_BsWs%Vgc803n9E6t66Lw5RV;~Jz zleUQAELeSyz8W|4HWHdbTO#9DTFgdap{7M++slLMZks{34zT;o2#1}^82X*<80Cl@ z-a3xhq19P0L_DS1b7URk$OF%4+W8nXxt^jnn|lFT`WH{SG-T6mNj0bLG)TpD^BShO zj*cO}Vv}#HAv+#Ht{XZWa8O$ zXt_lTT;XzARKoM33IEzYkF4Pk7D{$T$^Rp$po+|5IQ7J@n82|&m3)h&ofn&zLz_9v zUbe?GJDI+lS^Rp072B#qkp1Ypi=}Hwgklw)fXLEsy(g|D6-%-UwR0p3`B2F?TII$G zhq7Vi;Wj|bYwm_3+2hwC@6g%`{&Jo}!vRr1U(`4^(?u?5R zdhj6}8VWO440{CW0!%ll^vd_S@e-P`1AN=Q%j+(sY7Q^Z#cE-5`7IIc>gHOfx;k@W z2q%`oA#^$n8E+&pRMj)&p9U!{q!*>oK@Wm=zr6sk71`wEgY||-{UnR#o$peP{9>DsyR*TkJkTO8!x2Ds;74yjECMfW$?8d zf@h!bj2)*f$WH%uOFDPABlS2a}HYWT1+5&8NBAVA_Q5@Y8QJrvMPz?pPWeduaiIs!M zd*KM+W528a2>lLWpmSa&zldL&W})Kx_@Gf=y_*y?p0#DGskHq2iQo>Qw{H?(loUH3 z-$IH!HvtOFn8-8&C#(v2dY<*$j^X*l{`@*Hrfy03nxu(OC%|mzf$FHD9xD2@L8qQ`_0SttsOP;6ED0n5DkPPij*~uv!&JMKSU~ zTR3{MuD(MBq*3i{0>$c)g>iI9m?Ri&sGwsw&NuA7Ue3XS2@)7?eeB1;bGU3l4(rMK zG*ybuwh5B&Je#Zs#!9Is$(7G5eNGp$>X@szCPkf_e?+(q6>yX`-fIcXTzJ5=&%IVV zD-SQ{ClS6pua_-dLaAGy7-Rf~Khi4)e8Tt7p2o4BRd=H02qfBg!`Xup7(0@Zt@W|~ z=yiJNxx2F*xIC^mW-bIhCwuBA>+3x(nJkvWiB!YgSHpEOu64^b4CS2idNNg ztUM~w{|#~&r_#q^c-Rb_Z8-D}FcdB=EZpEsS9+pdO3SVXggV;@Bde;aCr`6#{}@zP zS4-rlKVK#a)U^3rz2OV3Zlof8zFr|3(lpPX{?j@=*ViN1+1(_OKf5vMk}pVnH}HVk z-C^BkKr&m#`|fVlrY&On?(M@t7+Dcrd~kvHQC|U&3CvRcXLM*G*PEiZ2N@$cdw;Qi_fZTfr9gQdyh~VI^9*iz zN3Sa8mf!B{Hm9kXon7(beQEkaE=%S0X4QD0cy+-!ejcJKq_axy%PTI3D<8K<8y3J# zBwu$r0-VKbV?!k0mkYxe2!{4@4`)SG3yx*4S0!_aJehWMKld9Pgp0jAJdW^>D;910 zHH+X@)NlB{y=`ue^qs{^qaGL=UWO|>(D`ETzsaMU_O+|gGf8z$ZOh&&BWdM(uCtG8 z!~#NhUzIP8psZV}Q~M~IMR>#G+P8{psR-px0hDf|$cKyFt!!{o1 z+}FMBUM4<`H*TRYUYV&0eSU@6K@PcfdpLMns;{P+z0i0={uO1jxT?)DIx`h=&7Ogn z&pg&CjcRsveI%6aeLY2`pSJpn8h924*K5(rJri*EF%5Kd5ctEQI>C+>ID2iF8fQYX3R%?gyyQz`A>0h4jgJQ+bE?6<;q zkEKM4qiATSxIAHI*}VlWR(>#K@06jxff%gT?EUrFY^cGnc-_s#1(yvxX4uv9tyGYL zu|m2GeGi{6J#oh0DI@k^vqCo>vvIqxh15S<+z+X9KVlc$+IPlhhcO`(ZR0Uv`SK&V z{;>b~=}KVhs7F&}?KJfKtW`gjR`9sJ4cdev)1S-!E-LEojpPkG{mbieRt%%wH~>?; z_Z9xyR4^KBaVPxN2GjSd3S4VMaH{ z%cIJrmO?f2NViYWKVkWtqUf%fsTlE1m&c{1HiI{+7@x+aMvn%gUo|Acf5Tat`Z81D zk$gRxIur5D=E(VCcxGfVYrXDh6Sy>0ZRBq<<#op&alU|#JNizVdWzDc;T9PSK!7e{ znp>zTE%A22@c#06*?>RBVz#5R7{Okp`iw#OO(R>_=i!=n3eDR+ZA%HwMt;Wmu@Akg zp*0=<5*eO95NlCllgvJ_%JJ)N*`-D+NJ%@t#r|w1+bDdSYw_~v47;WJJ9Y?Ke?}XW)!hYRcRA)iohCPn2wOOu6 zB;n7*-a@eTWoPWmFb9vg76)ZF^vsF_>gKiiaq9C(KSg<*rp5@;!ZLMlqrvyXV#n4`eDDepkESB%-=hdlG$C5; zWTkK0*SeIm__bgglL4snSqoh|OLOF99-4{6SWtNu6VAITDJKP1c>|&+aeYG9rvcHx zH>lo(yLin&?dTs68ss$4+_1tjU%x~XClmD(OX5Dvl1H6&7PaOly!>u2yF5BPytsOJ z+P=DYsq5*quQcf78xjIM?)E1xS7dL;kU0A`QGmoGy5uWc+$6O}))r=5 zy)4}Wxe&+5TZ0H+0iL%%PrH9^?T3U+!Vf9bLZ|WB z=6RE*(fdz{Ww6NDbvjCCZUQo6FH)wyej0F8eb;}jVH-um*;*8#ER;^Ch27B=koQ*; zNoT0YBo%oYqyuE$ZEdiHG@;jGND+KK!3d=mor27k@nxx`?TmtGGzs0A?ZFYB|DxlT zfn|fH(qOjCsuCeX)Ub4iGZ*5LZ~L~^yK;NH!OBq0VjTI$J)4M-!`-M;nO}3%xF(P)vyx<>;EH%?@ zgoI)pX3?ISY}Xo>X;Iu^5#_~Ndy72ZS906&+A$MVT~)}oPd7HDMz9!x)IncsT}G)| zZu2>M19w9M@paQj>&XS~sKR@Qn-Ql9Ds9N;Bx*kzvOd|+?`^r=h*_@MW>eD$8VQM; z2(TG;KY9SZecS4C*G*Z6T=ZY}vPy`VCOv#-lRtOoI#5#;NiRV)p2u1O^W5o2um8)%)$nTVUQ+Y4EccY6X8++tc1UKqG zFyEVq(VS4(Hy*L{Pp>;R`qt-wwYCDn}!4N9qhW+IBR~9DjcJ zi4_glk+n8Sk*@+x%c6FFSR+E*w%83KI_^qPm;xAd* zp;wSa<6!7B^gYI26a*U)(nGK*_7{uDMA$aNw_O#h_Utoy8jkUb>-VLTPsJBvV-O^` zjo8nEGg=;s`N?K5mVNgsT{M8yib`rob9- zf~PcBX7|2S-+cogK#I3`vJVoi)K&`HC0GV(ddsL!J`53w z&Mx5aVsR^2EJPCC3zdLodx34;TxbAjm_-0XlR(Ez-@~PGgA;-4v)Sw8P|lE&H;P_X z><4CL`-RMZJZ#1zJwo>h?~(r;jKETQ3ALGWVl>)--l3HmT3;wv)K3!I`Yn6F^|rZG zRs7E7+4YWq%H=y*=)^J2d|SN58-Gm_;CSR6Cl;f0z1QW+((; z!}QMBx$-*Cz%4^4lq)~x5t(%zil;JBC(zIzC;Mm4mqL{Z^i>>Tp~p33=P9jAjar_b zT4F_Uz3t{-v@cvbmjwCaBZmRsRi$RvAM9z!Eri5#o2N&yu*^TQrh$IpN zNWFeVKXm;O_uh!>&%3@2Q~BlTvrvAI7O-(O{^jKHJcU;%y+9h>1v0FAr|elgM-*bJ zyGxHaR<=r|n!G9+jM;lAif^GW0xBi(f?%OqHQi&UILI?19y=C(qgD@SCx_d@G(Ig9 z**(}|;5;m1TzA83bKhXmtBbBA zJ_d%yf4mr<8QqLzX0qYl@dnY1-4XS39_EP^`6-Uw5?l8> z-7k~%m=s^NxKB$z3e`N$gm!8v94BrfhAf6b_%$3I%7n(0E4zUAi0UxvjJEfPF%>Zl zjCD7A{fR4wt4l(>_%S`(iobR}k2=RI%;&p?#LN5C`y#!JsSa@p2f=Io#NkKd5FVSU zj&SkCERWY8@INEI8ry967dK6H`4wvAJde|9+3axM_}-mN#pgYM%e2LPwX&n`E+Sg2FJ1J@5|b4G*o z6aSO~HN|bdA`j8Q41{ZUg`sFikkZbIK({!y=pW7IY4NjH-xr$0ymy+h}~{xqynZWz5qHDQ8PKW~yGM&opso@MREOD4bz*fU5dgVK|N0#X*j4T3m({KH&37 ztLciWAK{$k=#!(MO>!$}+3p~hiPx089pSzaAq2J}R@k83jh3K^*ZRQ}B!s&G_JE(N zBEAwc8k$@ukvwZyoCmhofJbMv(BMdB)t75R069FG>0_^Xo0X!j{R9S9WRG6oUD;3b z_D#fz>96%|Q`t;J*t6}$f5>2I^E6XCG*wAF8RJ}dVUANQobq{ZvlYqr$<Ari4|+LGzUO1Yg&zzKl%}YHCgMXB{s1khwAOBKCy4ot+fW=!`l#l85&m*7 z3tTGJf|Lrd)j~X3w?#G663stk&tX^XeIr)4Rw>g;)>p2j0MRIM`nKxT3(8kngfVY^ zia@E%{iu~!;agZ+b7gwVD6jFRt1*M%nudH7?~>LN*@bM@MT~nt!(CHSc>0@(zw8hc z&5xd2^)pDXS9_A|5UH)qZ_KnDQ55XYX+Xs`?j1|4u$B$o7GpJ4?~MZ*7|foDj<**W z+*Q|ZEhCC@0o92=#S?0S2u-M&0z5w}_3+x_P^LVI+B;uLW`w&xYy0ILc5{5J*3qg0 zr172uAI^`&p+DsOXwNjXN-zN{nwD7QP9LouD&EdA#tz7T#Y^s88$+$hDFkXgo&$!C ztjKVqy94DW_zHuDxlY_D(m_L81!Zu8Av&_?{w{f zyR8=u|Fp_^s^J2j5zDQhpZ3EnGV};-Xtb!1%znUCkXy~;;;XqFt3$R>?a$(#A7x(t zCjDK>3=Aw^J06PpwwGA9cjh3po7L~+BXPFTy5=mmKi?i{t`lWtuMNc)aVGE3L48bu zDX-Z-KJKlK9pFRCVYTNOC@a(%5^BcEkc`N+V~jJ#tbq_*l-nJM^kYK^pfuo=7liB< ziPL}NAstVZCMph&y4Sado_?+`hbuSvOyovD8s!m_ zFT9@mK@}pt23izI7B1tBiJlL))&!%z8yEOe0Tr~kL$WoG{Jzs5RaFl@*}4*Wx8qMKG?R{fe0eSlye8b zR70&W6-BJigvUVe#I?u#MUWV{NN1P5+FLq0+G-Csd4BZ87>r)D$ZPaMXzT``=`31G zgdbxi)mO>)vHmjio-zBalcT~d5)VSnr!QEFLQjAUxwOFA?3o5Pqfhl&1l3aL7BTU4 zlV-%3-m7z%h(xlFFmX4B|5l}*yNOv|Vp#(xXhgqtZYgW^MS!4vxJwQ2ND*m84h12G zBjMqa+G05BZ3$Kjcde^ihWscg}J&B(t7Kh{E~jkUrH|g*~3)7S>j-KCLQQRg~*OJ`*0~>_M(r)&>xJd zj+f$h_sKO#1B!?xBO(ZpY{AqRh=OW*Z*f46!IqJ*WIa8+O6DlKLGxxIz-n_n3d|`m>HA}l$`YhH!V%`ND!e^X%$v`Y%5$3G=nNJ)+cqTF-H#$8T2q=< zH%jhQe6th`0Yv}yO6<@mk%?JW<#L4_ty}w{wU}u(C^Y&2HGv;*X%IXrq;x-M4xEyBhF(b=RhbfpP z#a&iR&eN^{4>r$wdSAD}yQ{0OvybP?-R&Mz5ai>&HMyGn9yiC;K>KX`*x1hX$=FV} z0p?B_vi|`P5v+PG{TqF#xR~mkF^cIpKU#w9;Gt71A@BvNTqeLfbMVLHALYZNGO`{p zQLZ`HUx?YrJ)nEvWdROs5F$5PYE&`9*mUGcex74$m4XL%5w!Ekcy!7u9h-zQm*6bGI}pYdpXC?sl?L{AmDh}Zq0ih5QczpY zrvr`&dWy};2^&9$v4$|5wTVV+2!k%^abBVzrUuuSXhTI(sS_XO4ji5~DQcUxfgyz- zqr#%V&}z`7+M%M9;!IGzII+r-IP(75tcV$dShYQ=&|8VG#Mhx|7#L^&d{ozI7_@LD zWq2FQB0WQ9#yW`a@^ImzgjL1Wv%(u6lb?PjXxVi)ThN?e*EP;H-&{6=r!nvfl}0ul zACz8A3I5I*HVFZ zgcuIy{r#Dj?C^&^ez(NF`JvdZrSB-|J~E#YA`IyysNtdqQN#{f-spvHok)@69juTT zH0y8~p$JlcsYAib4H@)LK9cRuLZRqBZ-K;QTUIDi(5B=VRwx4EtWrz;l6TL+b6BGn zd>;biYuOVQT6mXxKIPQWTLq?zWvCesvDP-VzwUPIVw?_3)8xUV_g41W2B^WK*vkj;lg=lD&K8+Ka4KL_YoSMxk`p z?zZscSJwV6osFN~d6<~J4LKES zPi;?%l-`%-rMZ}}xQG-IyrvGrUTWz))h?UbSM0TKJ{tK!cTOEaoM;%SW^Mvrv@Acdc=qQ)&?PZ=;N}nrpR50P!tK(Xgg2SIH zjo3Bf+b{=LSL)Y$ zLWUSOK2~`Xqhj~#m!JJTbw#(lkQSxGotH-!q|t3vR!U%dsKgq6t)4&J|NnVho3Mn?P zu8u}zLgFg#J=I=p@DRaLbi=bNsc_zu_Me&xEdNtV$0qfqf2J$NCRne-_AL3G9f}yt zzB-wN;*n?|ArCanv%dw;PLe&sSWZ1-Rg* zb0WJG`yO`e9#!xAKeMb18R1pd$G|CUbM>%FpBp^Ii-TaAWKk~B#@tF*s{n|PU+rIX zUs%O8Is6WSjXDzYZ6JOM6M&vV@{)B3Ar<`OP{!OPej>(N<%o487PN)15sr+7WUGM; zmdyp!glp_SX$S}BzY+M|OxUzQy{>HALmNUU?31rqEa*#(6W^WahrSOB(8_`lSaF?{ zT-1F`I*ry-USl9D_H7RfkqZ>WPMk1v34Yt;)RcXC1z3rSdTk&}l$S*?R>LtYr% z4A9S^Wm<1-DXWKE$t3NsH8Yt}cB3Z=twl=}53p{jtzUgDpJ^S@J28gQ2-ECdO2+4c zq6BX3{X^M3z&B1ayuD)7UpLF7Y6$nh))`(Rnr`VHz8>t-TY3^!#KDo^1`W0$^GhU_ zmb%-dlpX}9de%4@(NDvArZ%9%+em`bbklG}5 z8RQ0wKniPmVAQT$8`NsLm^CcZGUa9MWlM6a0q08wWc;wA4?>fZ881@1{PCg--bVYMg6v<#VhKX-ck$DYn(6sK9UY=+F7ifn%XDWaaFw2tn||j}farAU$_E&2-bU z*bDN&Zsei(PA~X0;RLozcTCR_#4a#v2+Yp2=rc(io}dXe5^rE5^ma)1gF%#1vWKISWxD$2fCXD0nF< zqTe#k$g^Nr3BLk-wp%QCdy^z(GED#-$ERTV&h>?bwE+4hw%KJEJ7fQ&w=Pf{vWx7g z$GK!OeYBQjZR(9IRu!u(f((toOOotZnVE&NNK|C_+23k-(HU$Zu96YON=|PFVKkAQ+D@nH3vFv9O_Q?fUT9U$A!twVgF;H6f64mo5#bXO4h?%f%*l;`uVZLe2p2-tWLSzi$h(m4A zm%O%aB6#A1MNK`KuhO0eXv8TF$jAvNW7Cpz>TkmSGhnBc4-|p%FYW+p#P+UTO#msu zCNlA%GiF-ka(CQK-~s6KQ?n`)!W+Y?GeP$<$2?EWP6SZJQ($lOKgqc5z3qQv17os@l*=;7QxPEDm$DIfk`bK~*bn z*sJEBQp^vIapI~@ghfa)#@Ji5r`nMQ1DY8Wpyr$D?vG)8UzlNwu5-R$)&hRpi4OEO z6MR1;YkCfYhbT8`s)|cdr3ua=vxDNdoe_8zBL`&$bXl5C>x+S7&A?m;58imgL@epS z_@L|`M{^k`-kdKAK4${%NQ*jgEaATd@_ryRN?y!m>GTI{mD~h$()mP-#<_{Luw?eB#zn;(LyoIcK##zg)q< zy$|4JKF%DF1Z^1TVDkKAS592X0jR}nstvliagC6eQ!r$#2_u3hu$_5gouu2u1=lfs z_1V9f?auJ1s~87|5M;tHAI8${SiTM1vR7;@9-ky%QxNRBx!=)Vw5Tm%jSP6;l#ADD z>S1}WO@s$t!^i5c`xb^40D-rmAdc2?$=JB5kX9Goapa0s<;P16$2)`ecH%oLzv0mt z)OMmEG)uXbr)LgU<#MQ|Wz!nW`Iz_bX9arUB;;SNSRbS#iMd9?%{b9c$HUjCS&|kk zYx0pyyD4MnJr?8C7w9UZG{rY3^-tovBv`voi>U$Bs?NoPudGHCMHeY|HGhmOG10%s zF4vHMDVMao!_Z(`PARMeB@#C^M0lX?&_iMkw{LFprjsXt2O{@39)g$&G#wkw1=|jA z^b0LxBCPkNrz#vxN-JtDeaB5dR+Y^Sx0~PUPWh(UmR8W#&7JWT14*-vWfP*5Ep0R- zVHW^4hQ8@VdGqV6e%6vQ*I6FZYDlYshQlaK!~U)yGdxC;@Uj!+vG27(khN~P3qD)M zNb)>hx z49z&<^Ql^g`oJN;mU;y46optQ3P-{IAzrfxlZIu?6<03QIt=B&dKNB)o z*Gi}sbZ9@*=%dqL77k`5#n$8nqc$tJOoSeA(Cg@U7rXY*Ri#2D7@lp+(-2Zb|~lLT9y@)_in_AVDY+@%#mubpzon5FFHW z<*gr#YdKGWJ6pF3yPbX$^_55|^J%3Nwez5B>7va=p9?3L^GcZm_@#;^2* z_NqJ=1D%t|O(wNA1}iq`W&an;cQ`V#So)+zOHVTGu6# z#*V68ZiA*B7MbhT3e7yK09$6CnVJTzH(4Qv#!>#H9cy$TCPpcWTZMd`w`QaHFqHN> zdY7Qp%be&Y%;oKe&2!+%m4FG{Cie)}^7G;dgiV~q&LcY>s1yz-<;0Uiyyiw9luuoq zhv+TUutzNT6;pKCJS#o3CQXS=uDZgJJAyS&{3!spdoF#eJgBh6C_t4`kF2ZDzs9GD zU-A5r5np+&PWuH*LUD`nd98^eY9^~Gh4REeKCD_yYW4aTnDDgh}Q);c^HXj$D^}FVs@fr5m3d&GIZbPmY zc_w$1`TpG$v|~srldBVcod$TsrSYR zvy=16&IYBQ<0HAOaKl^yJPJ;q1adCFg0vpt3_UkUyA3f}X9KnPJm#d7*dLm3w|Z!f zAHjA=6bOY7%t@`vu#sseG8Uoysw1`-j=(yRS~ayoUOhlwQ+m|VC9=-#Z@MxzN9&G(7Ip6FF_Gv`qDN89GrLXt7f-L31JEr`Sy6^rd^pXbG zw>esgatDk>F5e7bGNSH@oPNUwe$H5Vb7-w}eiwYxU%XtK({?gc+dztSYFMiHNgYL_ z7VK5Lp)4fp@x)Na@r=o;8Ld+x1%W_@1|2is@ z+&u7RQTingT-K-H8+KE6XI0yMm^7hi;)!MqVyoZ5Tw}Rf<1Z7IjRx*75We@^mXIWWsaMrY@*F{0QY zt7D&>)?pH?SX^~eK5!ikw$k28hm^*FJVxUe)M2M)Up)1WKjo=E$usGyi=FXfT_RgF z_pEXz!g#gLk<3`cb*JWRR5zZsc|R-|FpTB&>Nh~%Dv3bQJY){vGA!bokS~{U%bz1@ah;D{4gQ$`r&-iVQy27M6Arf2#3)WNOAWtt0fv$fWReN$g-C zFS#nYSEJ=GzED?`NVO6pA;K%lZY^GsJ7m-ifby?d@!(!yciQ{pWD3v2o~Cn+DNJCc zW236IoAVhsdA%eH11qnbp;0bWP^+x$i;{VWIrMl=MtfpjVP0Eouqg83P!`0qE4rt` z0&EGCf1TyQDZEvchllL~Cf)GFjP8{@ctMn*$Hhp+aJ`ZeTeCCW8>0|%=7dUqTBng3jbA2#>?k?E0@%8o8u+=Ww@?DpJHx+mRRExeLDhqgLT#KF z4MuHg=~FsLjhSUpuTX8HF=J+=+H`}wivwcb1@v}5lHx`KND5w zf01x>4l7f{0*YW^m-Lc`B!q~HRuG5?n!MAP%hQv%KypZvBzJ_bC{hedkt9530V=!( zE;GRtFtS7wu4u_N7^<&$%mK|?FOuM3Ra0 z4UBfW{_unaw+u7KFWc@6`=k%j3PkZFf0=eWzM5hpR-C#jk{J0jMbtiBqme195_Eb? zD6>*uQl?$Ymvj}IF_7`_DqAHGG}H=eX>zx6=8LVsEQOJRXOVGk1D$C^0*ylZ}XwEiG(BOxx*C=H%R+PBJGWOxjjbe_wb> zQX&q+YCe!w^TGE{qgi9#sm`GCAKSK?vHM1nLVXI26Vf1)mWA)hC3=1=3=a5ru3kIH z?At^V(<8Tc6#lE(K(aHAY5!cvpVh}mVLFK@(!if4adhv+tuRM4Mw}!OAd9&Mq48qX z_VP#fP`zSU#H4G(4wO^?@XWQ{e`&lYwqoxAPyOdAbrlsifkBO3D(EX>u1%W2@fR7Z%CjFxI3JMf!;vxF3cB_5T#g> zXVufJ!*U52E?F)lbxru_b4JuJli=Hh5Ye3LkU}Ke4xrSTS`S53cH^4W+kr)vh*;Ka+DcbYyRDeiJy4I^L72Iy%Pe{I+U%6q zoOrI9UTqcE__ftF5}!4IZ)_LT*lae~oHT^rZ3V};!jLw)b~dL|=3m!zEQt43$Z9f1 zHA^71U{n)9saYb(4N6Tzq3#7fLJGBMBQS{9O9RjyvHfV)ntFp~f0>f{)XuyjVk2t| zFtlRFIW)}&QI9wCO`L<$qHGmrSz`zKh1QUOX0I9rQuM6-&WRWwV_iCtLS@LUQ@?UG zQjiSu`e?;y;PuH)XCYYZGYQHes8&|HDG0F|^}~rtkX%YtyIIGf8o{p5)0>=x$t%_a<#UR zpH;pTiaSixUq)JU+v~1l8UMoHj;7R1qG*Ydkm~O2r)Y}m`0e4(r^nat&fdL$cl}0C zWl$t@FSgz5^3!|8<%r12lQyh+Vl^HeD4kq{N5wKH z*WQ)saHhL6f3AB!_VDE5IzHk(xr(l=TrixMu4e4yGP@Fi-EdXLHOB=RoZAL~gLY5G zPp%)R=}wLj7ZaI?+XNtokXt#048S3yaytQR(#L>|vdqNUCsyB~={=)WFrFSud{)@5>$Cd$jy1>WhD4ofXC@wq(hs(~BD3jD$%j^17 z*WpO2rTKDUoWe~o@r6~4(*=q%+oQ%#VM3G}fB84_%UH9jT1-wqLQ!Er^pHkn+p-bt|Di84bzSijug=4lKM1a`3vs&Y4Xl098E;L6tXf z{azB@j!}?r&&w4U;!k&#JzhuHRW;qUmmTq52YPe+tPcoK171US%G-eG9k|mS6oU-I78~ed zm?8jM$YvKd4v1-<8RS5ZZnuM=zA9@*mP(YaP7mAxAP~CLyy!p%?V%hY(z;%0@CF&=MX-zTB%O|d z9e`1IZcdk0D>7hlIHycOPzVbiF-Gv*ovsP199&wT7ze_2H_lCmzJ8@NvS7v3U`t7n zz?V`}cdKbUrHHt=zV-{AghZUQf4yKB&qeAUT1RJ-*+8a@U_;~SN?k)^xc+zwQ~OBR zFul0CLJ$kH3t;h!wM?0SrcB+$jHfYmZGvk0V9$n4&=VC3D;NFwz7$>9dG=y|4A!~_ zgQFl)+_WSz#5UcuASM=}76lbfTX*G@H;4*IR)%XOx*uXS5EFk;V}Y2;e}lJ0Yk(1A z$Oo)$&b0&(M=Lg07dATHb`uP86ib*n=eYkvakioGPTs-YCLxL}NKL>l~iEgZu^qf}G;Z{<%uLXZNw^tPM{mA}*iWR{}Q^0-=%#7B7WY9HzT zeh=PId~P%7Jjh?F>~ZklvrrgI_rk3m>|i~RX#m~?pSsvURpabuur&A)_noQz)77kI z66dHOhk^VQ9lW=?e{5DWT5N>Qs`}K(-LS;9dg*dn? z|1qxK4+l-BvK)kk%z+tOiBC*N7gOAxm4E_zHVbJ0H8L12f6-AZsT#dp06Gm5GPp&C zsGyr_yY8F&sN%$W84xKhSA@$KG9);LI?d9TO^%CIu6ac*=<<4NO%f0{@)%8PqVY0f zCvxwp_ga&sDl_%P3C&~p*;~i+H8ik=+OAamt}IKJMQQ5C0s<>fyp=Cw8#)6_R=2Lw zBo8L?vfrQke<5(iBu%nxC~U4kYTrP7B)%y~>mGpDgx1ZFccHeB!k~_*o!2yPN}`bO zA=jaOav$ol;z3r-Hvhv>r{4)**C!L?u*)uJVs+3=-LNrF_@}z5Ju4;H9si> zrfo|2fZPmS3+h_?A^fJ*+G2EDnQaSeuZHO-M=zuUe^TFd{QUZ10}#8eqkxR$-swf; z9+Ipfa<2u63gF)bLZn2=U6J5w$MO$|jn*+SaX`e4wsWzCU-?dzp}iEu6hNctvbQ;g zlhG$k;|eUxd~_LDUgs9*1xBD`aKF7h@9@?SBPsjU0c4Y8C3M6h&sW)aZ*Q7RiU<{S zpVr=Dws*4*Bk<*h3CuZ^pQ%xXLgX8te(4u;4b|_Fl~Y+d3UW^@ zVHrv`K7}RKYnE5*n<$(NtHuV{KJ_wx56FnpV4GTmgVPJWb&NQ(xlq%2=KXefIavg0 zb>C1GGDExrrk4raek2$Q+ibe2+q%{5dra=fe}+8U5AlYKF0J%}qHYKgy({0cc)`Yd z{{Xu`Em$vCJFESitV;c#s~(cbmXiQ~Sq4SUjv7izIPYc!eY4ors(_{Cfpxje~h5reDoJ65` zfBZVsR)YDg`jzmnBq6?#(zN&%M$Qkr05>vT7cdPkN(%>`sEo*m-;p<@JF0em$pIMx z8#{L*2zICITI3u8TY|r$EsnZ6#az_`Vq1Gec9D>RkjH2W5VgQ)I6Yv2$$TqaIzEx+ z^?FrANvB$l)pw_Mk1f8O%#@OmL3OCze<*4@rijHxY-W#IY}~{cl{$8za`tr0VgO5h z+fn3mK^b+$tNRtp$2zu3edM z86&7sy#Cw!@9wlH3qp#4~tWOQW!3BxdSh3+QKPe-iU* zP+>p>&;b|;NU1Zq8RLJ1tEuoh7*`V$Z_3o$u9g`X!BRC((ZeB4mIM0|Q6aZQLLpms ziG!UTM;`J4qpkfC$vZ|~hnzc8I38cv?=q?00B`X@Z)Iq1oTK>#8ED7BwPY-v%AT|{ zDdbgS9%T7TX%x%fp)wjzup!k$f1xU;b@xYkQkc8wS~%^s+qq#G-# zJ?TzsKOkq{lzUA{7f-N+@dGYMk1=U$y7&P(CC50emK^Z|a!wAK7=A!bzCq{i+Ya=A zlr)1pMk94p#ZgxiRS;vhVLU&@%{N_dFK=+t;7qTYyEFIBk4_E^_xe`G|#9jOrq zwA|Pj_xXaNG$ergAVj{PWzYF7Oawl9rZKW*IU}p3=#g^5Z!bxc; zjLu5mt0ois-+kTPWkNxyFX5VQ9{lfbH(@TJ-v1(W?0(}b>{P^k9qeHyi%e+#=#s&+uK+Bhrb z+J!AQwtJccnHMLy7kmn{eAip4Q`6kx~4TeeXb z`ea>nNWNic-9?=bkhRky@d^Uj#9q3Fcz>tRCLh;EaYLsbCl~v+%Sdxh6^L=|C-J@k z!JO}0Ra9ugI5p zSyA6cqj%S@s!Z@~olk*8TKBS-lF{b5>>U;qrn{Dtx<(PQest2Qn>zby9@15Y{ajQZ z&9hubdAN##qcmAfle_qA1v{LX;YW01$yXY+jlEclQxwKe2spQ1F{hwdnO7Cdv1RNp z_>}L;@Y79_FPs}pyc?lH^LK7=ADt8@?5*vkklrTMeuh(!pR<>VSO+A3No<5{Yga*s zX*e7HbpcV)`syF?QmA`Qt6?^z+t3?iqny$`Yk{?Ybbj{k=@fJ>GtmhO(k_Eas&e%4*KRk?S>-<>(uQswd~; zXw4<6sNDNwcLSY>-=yMyo0&{VR-9~4!{bvijUvm;6C~)B5PhmCK|J+>Wtf9)sbPDC zrIb0LKAAHkcYi$AtK9z4qe?NXv%AV-8aRXliY>GmrQ%mz zt$e7`Nv`GPmiS4_siKwzQWX`DleF=m>SCR}^FxRP>rztn8_*$t`g0V*VZ-<0aj*t* z)>P4k6T)NdGP|om7OF^`e$4n?SIe|mq0?qNir;9pEI}P}v893m^p9ij9h4gSk(&Wp zl96~k5Bm>Qe6Zd1iN;Mus|lETTh=^DcXtM-sw&K5+2r7~?u zHC#UQkh7|_<826ko`L;!jDL7+Ya4l7{%d1<(u(mrITpv`mu!re=JFca%$&_V&=N`2 zI_5$}NXx?0nH1At<_ovllU(H8EhO}%7sgN*Bs?-OeZ-G9VeA)8A>zPnQa0dvL zc55+Tij@)JcXF-EMOu<`ShvsF6IwM%{H3X~YkwTgF$^$Sn__?RDs&{tDFlJQjQ7H+yvU#_#x;?2TXE z(b!wl)}PDZ_>CWv!SUO_P6n?T!&_i+{5tV5SzLYeLjAXePmy6{xWX+c@Jmacps2lx zp4N{d-u)$iQ$*l*ncEN%_24BZ_+l$A;U3lqs*X^!QTs)w{= zI#p523Kw=xXvHY2O2u6v1$RCD3wqd+)xDrx$I@TfQ|tjwi=QW{b23VJzntUZ^6dQZ z^)b}#URdGJ37}~JFv*^71U38^+-IZmW9N+#X9coB1;W~|m6Zlf+^!*?PDOZ0*5LSZX z6m6z|4u3s7JvsdO@^Po_d#yKx6m{BQ_AH;z_}xTH*>-Dx2Zys*FY8PldX<@sYwA8uSs0X2?A* zjX(h*e|4?w4w=!?RWPiH;&w;n|9eM%wzx@u{8ZbYNaT!mH?OBEvINUv%lV3Y#paB} zIB4@a76a($Lx-ePeY9|ubfx~(1IT-s>X*#SK8pwx1L^Wy3^<)?urTSaNvh5~=)Q}L zNn;kI_?1HSby;(Hcz${E_VslkbdC-$563l?=q6`cx{2O85XWQhiWoygvJXD1O&fcE zHhb)wNrP=GKrc$Zne5tl)7YvnRt3t?los3?Fj#Wl{l9L zM@Xg&W0MgC#T37l6iAG2x#mwGGxA*NH2CZ4gIvH8di#~LhJj?f;MR|I^I$>tj@f(J zb40u$SkOg~D@6I091 zS|I#W(1A^qRG6TrLd~p#cq#@5k}ngvN}8`W>qmPMVumszuz7j@K!obDX!_OItEElJ zUHC(S%V^{$gGmbJKq!?|0$@Ky#>n%2TLdx%8+3L}*#LYcyh~wr7?KWu+bCM9vfijL zd#Q((`_h$jR)e*3iV#vUf&CQG8r6!^cE3bJi9%w_8D01xPX7F-ck7e4C5WH}JGEZs;5XV?l5t)@LgYOUY}PvA(N+u?J@2i0pWuk<|QtFg*SB9<^(h1l-JO?oHFYk_}p>(-0zg zepI2k`|-VPp%WWwiFx14o9+geikX#VSqMXz9PqSMb7hG7TT_xcan+_&{87#!8wM3` zU%fao6Ip5gBnv*|VBQPqdc7?q&Y_K8iuaKt`h*ht%P%0;(-aj`2!)KaZM>=lMJcQCnR z>=phMvO91ditoSr44yX}O=?+Z6*f$y|5FW8Pn7mVZD)0U> z=-rpsBWlnzNG=2=2RaV*psC3J_(Le|ozZHYEiCnfZa-Cg0jz>lh#NF68IAAPbX{3Nk27n&ME zZNOEC|62ExS&=2(=!sI?>mk#Tp{tuJpiT5sdu?I7PK1T@v-^0W1%JgwC$nGS^-aN# zVyd!up&mI?v<4{m7_If|tF=$=tEFzB!%V)W0l%t$MYa!pwJ=j1I$aiD)~K_JleK}K zmPWbY?RROi3^O!}zfXjp)U6+^h2qCSZ?NDz5Lbk9pWL$x22YbaX*DSbeVWsdiPH2P-iqH+lxLoMStEK_=0kX0ue%`d&P~zwd zj%%G?RL5u!p=5=4IlebTVg+xh)mOP`C zachSn6h491H#te?g`P9oEkw=M$!2Z9=kH_rv_hr7JohLNP;PTA#vOX$_IrPde}jiRbvMv1nhXZ%9nj(2OEFg zlHgD@4{8P{A_>W$mH+K_Cb?-B!_H(h@_H0gkeG0TpB(EVqeWQAI}_m(>Od6A|Kw&} zjyMK7Cd(+T=N7fPT*Sm1WKT(nH^^hmC_QQ*;0ZDxDwalr5qXg!6vGXSW|4%5ndEptG1p|(^!v(l`A-xPK( zEOnCWRwCHixIzCiJ^@w})Xl6EevIsA0=K-$I#+cv2{hCY>U!k;zGucZe=O21zn2zvPy2n4Y)W}0DGT&rr5QhTHuc-b^Lo0jzN(g$VWwUYdaDQ1 zLAi(>RJm~Tfr>wu+GGbHf9>-VfVRK&y}EW{Th9^+$n$K@uFO5L6X&+YJZLjU@nj>) zN$bh*1MS7R9_p864!3Z(cwJ?hVlRiM7j1DFrF&Q{#*rAYk0&5eXuS0{rOtLjCQ?UAfSp;ekEbQIjf1`xlWDOR+K^rG+#&Z8+t9eDCj_mTi#BsQWm zbXF}Lt zR{)@!%WP?nxb%WSegyz8w39V4bqE14B_$3akM+L?Iw0licxJ+ua+JY6UhA~vTIRD( zV}x7#RUo|BAVaF+sp&qYW2`2Hn|r)g?SPucgO%D76Li#7f1`ZafmvFPw{Bzwp^#)I z^`aPg^|}u_ASK?wg7)^jS4rx{$=xpWMO!ar#b6mj&2s-<-S%Wc%-HkrGIbt1CHH{X z<`zQ}?$_Xwn6IO&M1&x*uA9IfL1~JV(9;xL*5(zLmNjj#Q@hF}ZEWw(m!u>i>n?)e*odhu7cqMV*U@-PL;wpj3yXx1u>MtG7QE}DgEKC)cSi9Kb^{-tDi;y zNSVZ9+KplDIx*J{XL*o<0df+D`L6e}n0ePbj)J8m#F_XR+TI;Y_2hzex6)b=~g_H%g zE|)g#f4P^^cx)rMJ^Lw&UGY=7p$MuCF=1GNwj^nRX(Ocfu$0m+%rK%6k_XEbV6eQ0 z08D|ThpB)?zKoo65sU2d`v@iiz@@gSCYdH08(N8Ea$o_sUIqur-av0hX@GU!QJ9I{ zzt_F?GJxKBDK-T0muOZ6>e>(jFFgwTnS{E zv8{azfOeRjCcezDD9UWbX&|fNcEXXbeHz5` zd{K=23>lV($8SH+488uOTmiu)#`;tkYg}_D)Dfv^Y_OH~Z(<=pJXe_<@ML$_m>B3B zIe$u+ooP<^d{ z?(&0V5|jXF+}$ zE`vm{*`PD2g`ButJJC@jWR^NgjM>PE$hASszIEnA;`^}!R*BgV!+xIM$wG!=e?jhe z0Z1U#EJPEzibdPA^yx8S?#ieH${GyRN8N|YZ!%GzwXQdcGnXGC;e=jU4b91v5*R@< z$3gRV82TGm&#Ie$WS|W@+TeM`d@72x6_Djs0lJO6f@d7lscBT28x6YBpDI|JP6ERd zkEsOKFnAi1Q<47qoHe-=8+(|he?5_gD81^di6DNUthKAxqC2P%eLUSk#pG*{;55uy zq&g9;4?iOk(jIn3B(OdEDVhtG>WZw&6NjU+!g`h<#CBfP8dV$xv z`s}Ob;LrEFZ$%d2bQ;7m#GKXsQIA&DFGth|Teuw=nKNQB6rLVj`l&E%f5+Z;t53vB zhnBIzcz731^TpWPfBp;`km;x`{ZGY!Uq3?!WI0p_Rc+*tvC>yYX>vD|?b$G#Fy6l0 z_>+(GRE#whBSsJ^N#{3%gM))zulNs!7Q~z+Nri_qOodilXW{^`?Z;!}EpU%srfl3m`QGx78AE(qrf;dOtrkHkOlNV$8& zsR|H}y)cGhhO;QZUY?mNCfAvT{}HbL{x|4uvbY7y0^cyJl*MjKKUeo5x`zyw@YQqM z@%_eQ>Mi>%Mj1{+C>ateN>E*Lhb0d11{KO|9uH+b)!3VePqExRe>^7c9<-3@&z}8- z8u+GD1s>QYQw1Kj?xYG#aWWGc4bADHx(N?Zy9ZnpG6Els3(#Lk#(jLa?Gis8r{0iG z@i4Y~(0{G7Je=JR^=B;uGZ}!ys(2Ke&Ir6Hw*7cNMi{DATu6+S$qt?B0}mIw2h4*{ z`B2hH%Rw@kqTpHVe-eVp5RxW@5q2lumm25oUf2O@H8c6(PFQZkn>6r0jy?I;5I#Z1 zWw8Mglin<49*_EVQ>=gM=RVpMm}&780{3g&S798PNCv4|hpY8Ii}kF$u|vYoo6 z1vmU^N(+?c@z5%L!|;eIy_F1$v`5(_O`-_GC{p?OVkC?}fAPR+H-WzR_7)3yGs!)< z4boWz0!uuFz?$F@&X&4u`O-IjTKMR35@Uf=rraMcvthB+q0A0)j?6WQAdy-raA+|V z-eP02I0cC)uo%I9oEHni=q?+Ng}Zt4F%%3|oDex~N-zNNv*6(_Ap5qN^}_=$K=*At zz6oYYinL-OqyjHN&gv!@ih1( z>>4B&mZ>sIVTh>BNfp|ew*t$e6XK;l+BJOQNTf5&FYD?A8*Rt`nDhzk%Z2-O3_y+ji+l%9y@UML9+ysT2QPnyN~sa=D^-F7vjPkvY$D)WwNqygxD*nF_5w^P zMow!kY;8Xq{;l)9xYt|tC5RohN9+lB0uiEG_`@E#7n%wDxr*l(;AVX&wg>hH z{#4dXVO_4%Xi$O;$Vx5sPS*f)_Fwu-JG{CQ+FI0@hJ6Jg2=!sHIEdee zG?9N|h47{--EB?)@oSI(1bYmX0IIA zeLCEGz3u^7>~9Z8wZ;y%WQ{#~@vu>|C~IQ2Rqfk3@$2o^s%{u(=RDn7n#h!YScziI z+I2{HreH*?6o}s#xGE4TXQQzZdHUd02c3 zF~mGbmr#Hch~G^^e;E`-SK{~2!Ka4o%md1Aa(1h}8pUQuVb)sBDhw~5zyr?V#C%pJM!@LQ48oXEE4+9$k8@EqoiRXO@ z8$xv5ItQ~I)GFi-^BC0}fBaE=(kLJbyl38z+B(pEBeV-z*bH!yqCZ02HF`OjSaESw z<&ujJ$c~_EWL=yOMvEJEeYiSm{ZN$(#Ns zwmhDJ(PI4(JHLPFaST(=H6Go;=oQ;()Oy_@mG^Y>?b-Si(!|9`l5e%n~A^~c#?GppLz87L03f)cGt5kRjNgUmKP4A!# ze%IJ@baJ#?XV}r@$>r&B^TWf7i<8%HkFC#74}U&B#c=QXLB^92<28_3kU_gMiD9SE zLZFKq=yeQqkQOb5r&TP#G?2zMbEzjj9??DHzOR35{w9Q%jEJIei!`>rl@_UjA?tYC z$Hcyax0MkWXt$Rwk~=`4)Jg$;J8Exx?UmKSje)$^Ve zXi5X+E$(1%&8;D9xTf@rFCISDx?#S5E+|#|Dnf@3@2q=b6JqFsn?u(>}A6T8Czb7Jq3+RF)&14!);u< z)_>?*`>FRT$R`Wc61!w&&yOMxdbC3qY|t$-++%c#5?;kBS*>NtifXKJes(@;i0B%f_!el__2_iRvcV z@EMr_8I+TtLTN5s9rfEJe+P;-&f9<54CCdN=mL-;yG@W9@sh|c&cX{Jktv~LnqrW` z>$AtAnnyL5>8#CPYv~`AFXZ< z374!>Pq$+;6^wuDhq7AEOLXT`Pv5VIL+~J*G?;q6CtIK!&)G}ruY2%D#7^DgQWsd| zE|raB5WzEA_PL!r<4ef(TQB~=JN_ce1Vtqq3WnK<>PmmEJF^drW$j>Ffp`5y6^F*A zO=eDS67TI@NJFS z+GB7Fzn*#u%NDq;3+1aC}1c)%CH*a34EX}^Sb^lhD4_pLQE+aL-Z%OPPM zWz#3AyQW|*!^x}CJ7fvmg3@vcWo9wVU;G1`fm>LLh{Junov?clJNtjr*s-zRt|}GO zjHaWFv+>5lZAKBuCA$rQ`CsoDK2?t@QOVoQcOI09u2?z(yL$9N6?I@M?oleL9qeUt zOI|TM>komD#k&=|2SJA56*M8wbD=Y|j&~k!C-L%2yQTMsnf0SEo8QH2ZOa-L(RpK zit>w^JZwGY%^7#wosi)YeF%mhH@$V4OxIEHXt}L#=WpZ$kDZjNdO!T^r`U8=qF7bL zW&Ei3U@J+g%6om6!ewmxQdFASN}&PN|JAV|R^sY~oUMH+>aTx}Sy}0;kCQ3Kl4|8z z(Awa}atKxa+skFuxm@RoVCER*k48q?FjZgeI3ZSIE1p%>wuXs)|3MoE{3h=V>?{N^gFWL}gvvxBq+s zaP7ZH@W|rB?*QY61-0g=*(vAE#Vg5qSAJZ~^7R(W=HWJNI17Vl+CT;i{B*LA71plF z=)D!ybfH8`5tAy|l)=Z~e!VKoGR0{}_evV*g3M9wr}KXxAKm)V8fr4VRpd{CMG{S` z3jGVYO!2!t$0Dh*FkReK-x9}|oHF{o+DSSF?3MCG3j}XOP8$})Pt#;IP3~e{uJ49< zV^_vEC>QGPh18BGC9*@7`|%Wjmz+~_E+?x=WvY)F@*?;1wFydS{En!HI?FYyiB;ym zcO{vjQ7wO}w^=dIC{yct;tkX@Lg+Rspv_jYMZ{MH5!4XbKy}ZC?o65$<+R?zj(b0; zqNn*{iOLg`6O^(bii(L2qsZ7|^<~!*=mM#G3CSvmi#43V&(uY5s`FIVH+0VrR z*n+4c)`zr+DzJ%&f~qHEKp#Ps!>TqEQ!oZyND-@09#cpWYgK4VkS<}d2+4xvWo%Pc zuGUeM2LBd5KnaukPJHB@>(8ib;)qVF7$8>2aK!+rPNt_A@H7~Mccp(g3NuJLco~UD zDvp0jtE0Djuyuh$4e75-~wBQ1*ShO(U@>+@eA{4@b3U25vDxL{A{{pj&X0 zP!&9{ITP6C5|tO;+Jq*p&31C6kEb-{kp=XTcioJN7Y_B@KLzgU+(Mq5qHJMp!pjm` zwtXY}SapPr+@_5-l^AxenK&jEZ6D3~j^Ka7N##CF3A@RWPK@2;%b{-lK`vb4=?`+n z()P?qav_sbCzQoTM8!ZZZ^9IVJsM9Gd}$O*siOJwU}g`>V{DSLDksKpn;2zF@Q17M z?D=?%e>GLM#4wqh=|SAND#2E!dJUL%+qi_4^n>w z^R#kWACY~`(r_3eRU^&HOu?Mcrjj>XT+Gv18%u^~2WVfps<#sfysIv+F|%`K5!UTLqjuP3C~&PF_Q#zQ2D})VWUV zwf^vHtUR4o^tFBfY%C1AqvKbH?@uqUkIv8D9i9F5_WISy>E-eHu2**itfkc;*$Qt( z5sPbGJXkt4uMAQ;(w7>Gn3WHJ@N`4Mu>_|C+b9!?oQYIT?Ph&IfQh3B%6@mGSRo4S zW)onCLI6}MVaYORLYb%jB!_>hlXdQufWMGsJN0hvq1)%en+CZr7-p)I%e<98?|ZZP zR2FTYn7L{_uO_i-4~o=i$JwLVq!`X#-5f$e?`UQ!3bN-+YjRCSycNU{_RzUn;Ppt5 zZ%8H?>AJ0!Nro`*hS+*E6SeFuqgqjnNf=Lv&@(J)1g7dyq2zj^+fjd5vG45{AfYJ> zQOKG??PwXKV%I3@8;wQlLAP;J1u7THr7@9>=#?)^yh*BUgw!^A7qVS1j3II>?1`0N zfB^6=@;6hPzVHlwff60Rt+dMU;$rIfO~N zW9oZdgq(-i++Y2XS53&Qihn*soU|g&Q*^6F`M!bwM7U?j~u|GzM=?Ozeymx7d3{KiGA@SRn);J>>tI)P-@p~G| zZ1ps;aU*hq%*0P~E9xpau$TC)3uzjNqkvsgkG~KvURq{A!S$$jAb$eVqlMpxA3Bc0t92MRacG-^%OTBZ%Aj^o@dJtBG|3jxgGk^I<&vq%QX zGb-LK3%q+477`_D{&r5mLIఞWKLvZ&V6FLtIu2O%I@`TF>5OI-2uU7%i(vTNB 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 diff --git a/markbind_markbind_master/authorship.json b/markbind_markbind_master/authorship.json index 3476994..4ea81be 100644 --- a/markbind_markbind_master/authorship.json +++ b/markbind_markbind_master/authorship.json @@ -1 +1 @@ -[{"path":".github/workflows/pr-message-reminder.yml","fileType":"yml","lines":[{"lineNumber":1,"author":{"gitId":"KevinEyo1"},"content":"name: PR Message Reminder"},{"lineNumber":2,"author":{"gitId":"KevinEyo1"},"content":"on:"},{"lineNumber":3,"author":{"gitId":"KevinEyo1"},"content":" push:"},{"lineNumber":4,"author":{"gitId":"KevinEyo1"},"content":" branches:"},{"lineNumber":5,"author":{"gitId":"KevinEyo1"},"content":" - master"},{"lineNumber":6,"author":{"gitId":"KevinEyo1"},"content":" tags:"},{"lineNumber":7,"author":{"gitId":"KevinEyo1"},"content":" - \u0027v[0-9]+.[0-9]+.[0-9]+\u0027"},{"lineNumber":8,"author":{"gitId":"KevinEyo1"},"content":" pull_request:"},{"lineNumber":9,"author":{"gitId":"KevinEyo1"},"content":" types:"},{"lineNumber":10,"author":{"gitId":"KevinEyo1"},"content":" - opened"},{"lineNumber":11,"author":{"gitId":"KevinEyo1"},"content":" - synchronize"},{"lineNumber":12,"author":{"gitId":"KevinEyo1"},"content":" - reopened"},{"lineNumber":13,"author":{"gitId":"KevinEyo1"},"content":" - edited"},{"lineNumber":14,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":15,"author":{"gitId":"KevinEyo1"},"content":"concurrency:"},{"lineNumber":16,"author":{"gitId":"KevinEyo1"},"content":" group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}"},{"lineNumber":17,"author":{"gitId":"KevinEyo1"},"content":" cancel-in-progress: true"},{"lineNumber":18,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":19,"author":{"gitId":"KevinEyo1"},"content":"jobs:"},{"lineNumber":20,"author":{"gitId":"KevinEyo1"},"content":" remind-pr-author:"},{"lineNumber":21,"author":{"gitId":"KevinEyo1"},"content":" if: github.event_name \u003d\u003d \u0027pull_request\u0027"},{"lineNumber":22,"author":{"gitId":"KevinEyo1"},"content":" runs-on: ubuntu-latest"},{"lineNumber":23,"author":{"gitId":"KevinEyo1"},"content":" "},{"lineNumber":24,"author":{"gitId":"KevinEyo1"},"content":" steps:"},{"lineNumber":25,"author":{"gitId":"KevinEyo1"},"content":" - uses: actions/checkout@v3"},{"lineNumber":26,"author":{"gitId":"KevinEyo1"},"content":" - name: Extract Proposed Commit Message"},{"lineNumber":27,"author":{"gitId":"KevinEyo1"},"content":" run: |"},{"lineNumber":28,"author":{"gitId":"KevinEyo1"},"content":" python scripts/process_message.py \"${TEXT_BODY}\" \u003e processed_body.txt"},{"lineNumber":29,"author":{"gitId":"KevinEyo1"},"content":" processed_body\u003d$(cat processed_body.txt)"},{"lineNumber":30,"author":{"gitId":"KevinEyo1"},"content":" proposed_commit_message\u003d$(echo \"$processed_body\" | awk \u0027/\\\\*\\\\*Proposed commit message: \\\\\\(wrap lines at 72 characters\\\\\\)\\\\*\\\\*/,/\\\\*\\\\*Checklist:\\\\*\\\\*/\u0027 | tail -n +2 | head -n -3)"},{"lineNumber":31,"author":{"gitId":"KevinEyo1"},"content":" echo \"Proposed commit message:\""},{"lineNumber":32,"author":{"gitId":"KevinEyo1"},"content":" echo \"$proposed_commit_message\""},{"lineNumber":33,"author":{"gitId":"KevinEyo1"},"content":" if ! grep -q \u0027[^[:space:]]\u0027 \u003c\u003c\u003c \"$proposed_commit_message\"; then"},{"lineNumber":34,"author":{"gitId":"KevinEyo1"},"content":" echo \"Please fill in the proposed commit message section in the pull request description.\""},{"lineNumber":35,"author":{"gitId":"KevinEyo1"},"content":" exit 1"},{"lineNumber":36,"author":{"gitId":"KevinEyo1"},"content":" fi"},{"lineNumber":37,"author":{"gitId":"KevinEyo1"},"content":" env:"},{"lineNumber":38,"author":{"gitId":"KevinEyo1"},"content":" TEXT_BODY: ${{ github.event.pull_request.body }}"},{"lineNumber":39,"author":{"gitId":"KevinEyo1"},"content":" "}],"authorContributionMap":{"KevinEyo1":39}},{"path":"docs/userGuide/cliCommands.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cfrontmatter\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" title: \"User Guide: Command Line Interface (CLI)\""},{"lineNumber":3,"author":{"gitId":"-"},"content":" layout: userGuide.md"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: default"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c/frontmatter\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"# CLI Commands"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"### Overview"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"If you do not have MarkBind installed globally, you can still use MarkBind commands by prefixing the commands with `npx`. For example, `markbind init` becomes `npx markbind-cli init`."},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"If you have MarkBind installed locally, you may also refer to the scripts section of your `package.json` file for the commands you can use. For example, `npm run init` for `markbind init`."},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"An overview of MarkBind\u0027s Command Line Interface (CLI) can be referenced with `markbind --help`:"},{"lineNumber":21,"author":{"gitId":"-"},"content":"```"},{"lineNumber":22,"author":{"gitId":"-"},"content":"$ markbind --help"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Usage: markbind \u003ccommand\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" "},{"lineNumber":25,"author":{"gitId":"-"},"content":" Options:"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -V, --version output the version number"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -h, --help output usage information"},{"lineNumber":28,"author":{"gitId":"-"},"content":" "},{"lineNumber":29,"author":{"gitId":"-"},"content":" Commands:"},{"lineNumber":30,"author":{"gitId":"-"},"content":" init|i [options] [root] init a markbind website project"},{"lineNumber":31,"author":{"gitId":"-"},"content":" serve|s [options] [root] build then serve a website from a directory"},{"lineNumber":32,"author":{"gitId":"-"},"content":" build|b [options] [root] [output] build a website"},{"lineNumber":33,"author":{"gitId":"-"},"content":" deploy|d [options] [root] deploy the latest build of the site to the repo\u0027s Github pages"},{"lineNumber":34,"author":{"gitId":"-"},"content":"```"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"markbind-init\"\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"### `init` Command"},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"**Format:** `markbind init [options] [root]`"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":"**Alias:** `markbind i`"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":"**Description:** Initializes a directory into a MarkBind site by creating a skeleton structure for the website which includes a `index.md` and a `site.json`."},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":"**Arguments:**"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* `[root]`\u003cbr\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Root directory. Default is the current directory.\u003cbr\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" {{ icon_example }} `./myWebsite`"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**Options** :fas-cogs:\" type\u003d\"minimal\" expanded\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":"**Options** :fas-cogs:"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"* `-c`, `--convert`\u003cbr\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Convert an existing GitHub wiki or `docs` folder into a MarkBind website. See [Converting an existing GitHub project]({{ baseUrl }}/userGuide/markBindInTheProjectWorkflow.html#converting-existing-project-documentation-wiki) for more information."},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"* `-t`, `--template` \u003cbr\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" When initialising MarkBind, change the template that you start with. See [templates](templates.html)."},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":"{{ icon_examples }}"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* `markbind init` : Initializes the site in the current working directory."},{"lineNumber":64,"author":{"gitId":"-"},"content":"* `markbind init ./myWebsite` : Initializes the site in `./myWebsite` directory."},{"lineNumber":65,"author":{"gitId":"-"},"content":"* `markbind init --convert --template minimal`: Converts the GitHub wiki or `docs` folder in the current working directory into a minimal MarkBind website."},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":"### `serve` Command"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":"**Format:** `markbind serve [options] [root]`"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":"**Alias:** `markbind s`"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":"**Description:** Does the following steps:"},{"lineNumber":79,"author":{"gitId":"-"},"content":"1. Builds the site and puts the generated files in a directory named `_site`."},{"lineNumber":80,"author":{"gitId":"LamJiuFong"},"content":"1. Starts a web server instance locally and makes the site available at `http://127.0.0.1:8080` by default."},{"lineNumber":81,"author":{"gitId":"-"},"content":"1. Opens a \u003ctrigger trigger\u003d\"click\" for\u003d\"modal:cliCommands-livePreview\"\u003elive preview\u003c/trigger\u003e of the website."},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cmodal large header\u003d\"Live Preview\" id\u003d\"modal:cliCommands-livePreview\"\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"glossary.md#live-preview\"/\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003c/modal\u003e"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":"**Arguments:**"},{"lineNumber":88,"author":{"gitId":"-"},"content":"* `[root]`\u003cbr\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Root directory. The default is the directory where this command was executed.\u003cbr\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" {{ icon_example }} `./myWebsite`"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**Options** :fas-cogs:\" type\u003d\"minimal\" expanded\u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":"**Options** :fas-cogs:"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":"* `-o \u003cfile\u003e`, `--one-page \u003cfile\u003e`\u003cbr\u003e"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Serves only a single page from your website **initially**. If `\u003cfile\u003e` is not specified, it defaults to `index.md`.\u003cbr\u003e"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Thereafter, when changes to source files have been made, the opened pages will be rebuilt if it was affected.\u003cbr\u003e"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Navigating to a new page will build the new page, if it has not been built before, or there were some changes to source files that affected it before navigating to it.\u003cbr\u003e"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * {{ icon_example }} `--one-page guide/index.md`"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" light header\u003d\"Caveats\" style\u003d\"width: calc(100% - 50px); position: relative; left: 40px;\"\u003e"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":"Essentially, this optional feature is very useful when writing content, more so if your build times are starting to slow down!"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":"The caveat is that not building all pages during the initial process, or not rebuilding all affected pages when a file changes, will cause your search results for these pages to be empty or outdated, until you navigate to them to trigger a rebuild."},{"lineNumber":107,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":"* `-b`, `--background-build` **[BETA]**\u003cbr\u003e"},{"lineNumber":110,"author":{"gitId":"-"},"content":" If `--one-page` is specified, this mode enhances the single-page serve by building the pages that are not yet built"},{"lineNumber":111,"author":{"gitId":"-"},"content":" or marked to be rebuilt in the background."},{"lineNumber":112,"author":{"gitId":"-"},"content":" "},{"lineNumber":113,"author":{"gitId":"-"},"content":" You can still edit the pages during the background build. When MarkBind detects changes to the source"},{"lineNumber":114,"author":{"gitId":"-"},"content":" files, the background build will stop, rebuild the files affected, then resumes the background build with the"},{"lineNumber":115,"author":{"gitId":"-"},"content":" remaining pages."},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":"* `-s \u003cfile\u003e`, `--site-config \u003cfile\u003e`\u003cbr\u003e"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Specify the site config file (default: `site.json`)\u003cbr\u003e"},{"lineNumber":119,"author":{"gitId":"-"},"content":" {{ icon_example }} `-s otherSite.json`"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":"* `-n`, `--no-open`\u003cbr\u003e"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Don\u0027t open a live preview in the browser automatically."},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":"* `-f`, `--force-reload`\u003cbr\u003e"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Force live reload to process all files in the site, instead of just the relevant files. This option is useful when you are modifying a file that is not a file type monitored by the \u003ctrigger trigger\u003d\"click\" for\u003d\"modal:cliCommands-livePreview\"\u003elive preview\u003c/trigger\u003e feature."},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"LamJiuFong"},"content":"* `-a \u003caddress\u003e`, `--address \u003caddress\u003e`\u003cbr\u003e"},{"lineNumber":128,"author":{"gitId":"LamJiuFong"},"content":" Specify the server address/host (Default is 127.0.0.1)."},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"LamJiuFong"},"content":"* `-p \u003cport\u003e`, `--port \u003cport\u003e`\u003cbr\u003e"},{"lineNumber":131,"author":{"gitId":"LamJiuFong"},"content":" Serve the website in the specified port (Default is 8080)."},{"lineNumber":132,"author":{"gitId":"-"},"content":""},{"lineNumber":133,"author":{"gitId":"-"},"content":"{{ icon_examples }}"},{"lineNumber":134,"author":{"gitId":"-"},"content":"* `markbind serve` : Serves the site from the current working directory."},{"lineNumber":135,"author":{"gitId":"-"},"content":"* `markbind serve ./myWebsite` : Serves the site from the `./myWebsite` directory."},{"lineNumber":136,"author":{"gitId":"-"},"content":"* `markbind serve -p 8888 -s otherSite.json` : Serves the site in Port 8888 from the current working directory, using `otherSite.json` as the site configuration file."},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":139,"author":{"gitId":"-"},"content":""},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":141,"author":{"gitId":"-"},"content":""},{"lineNumber":142,"author":{"gitId":"-"},"content":"### `build` Command"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":"**Format:** `markbind build [options] [root] [output]`"},{"lineNumber":146,"author":{"gitId":"-"},"content":""},{"lineNumber":147,"author":{"gitId":"-"},"content":"**Alias:** `markbind b`"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":"**Description:** Generates the site to the directory named `_site` in the current directory."},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":"**Arguments:**"},{"lineNumber":152,"author":{"gitId":"-"},"content":"* `[root]`\u003cbr\u003e"},{"lineNumber":153,"author":{"gitId":"-"},"content":" Root directory. Default is the current directory.\u003cbr\u003e"},{"lineNumber":154,"author":{"gitId":"-"},"content":" {{ icon_example }} `./myWebsite`"},{"lineNumber":155,"author":{"gitId":"-"},"content":""},{"lineNumber":156,"author":{"gitId":"-"},"content":"* `[root] [output]`\u003cbr\u003e"},{"lineNumber":157,"author":{"gitId":"-"},"content":" Read source files from the `[root]` directory and put the generated files in the specified `[output]` directory. Default output directory is `_site`.\u003cbr\u003e"},{"lineNumber":158,"author":{"gitId":"-"},"content":" {{ icon_example }} `./myWebsite ./myWebsite/myOutDir`"},{"lineNumber":159,"author":{"gitId":"-"},"content":""},{"lineNumber":160,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**Options** :fas-cogs:\" type\u003d\"minimal\" expanded\u003e"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":"**Options** :fas-cogs:"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `--baseUrl \u003cbase\u003e`\u003cbr\u003e"},{"lineNumber":165,"author":{"gitId":"-"},"content":" Override the `baseUrl` property (read from the `site.json`) with the given `\u003cbase\u003e` value.\u003cbr\u003e"},{"lineNumber":166,"author":{"gitId":"-"},"content":" {{ icon_example }} `--baseUrl staging`"},{"lineNumber":167,"author":{"gitId":"-"},"content":""},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `-s \u003cfile\u003e`, `--site-config \u003cfile\u003e`\u003cbr\u003e"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Specify the site config file (default: `site.json`)\u003cbr\u003e"},{"lineNumber":170,"author":{"gitId":"-"},"content":" {{ icon_example }} `-s otherSite.json`"},{"lineNumber":171,"author":{"gitId":"-"},"content":""},{"lineNumber":172,"author":{"gitId":"-"},"content":"**{{ icon_examples }}**"},{"lineNumber":173,"author":{"gitId":"-"},"content":"* `markbind build` : Generates the site from the current working directory."},{"lineNumber":174,"author":{"gitId":"-"},"content":"* `markbind build ./myWebsite` : Generates the site from the `./myWebsite` directory."},{"lineNumber":175,"author":{"gitId":"-"},"content":"* `markbind build ./myWebsite ./myOutDir` : Generates the site from the `./myWebsite` directory to the `./myOutDir` directory."},{"lineNumber":176,"author":{"gitId":"-"},"content":"* `markbind build ./stagingDir --baseUrl staging` : Generates the site from the `./stagingDir` directory, with the `baseUrl` property in `site.json` set to `staging`."},{"lineNumber":177,"author":{"gitId":"-"},"content":""},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":181,"author":{"gitId":"-"},"content":""},{"lineNumber":182,"author":{"gitId":"-"},"content":"### `deploy` Command"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":184,"author":{"gitId":"-"},"content":""},{"lineNumber":185,"author":{"gitId":"-"},"content":"**Format:** `markbind deploy [options] [root]`"},{"lineNumber":186,"author":{"gitId":"-"},"content":""},{"lineNumber":187,"author":{"gitId":"-"},"content":"**Alias:** `markbind d`"},{"lineNumber":188,"author":{"gitId":"-"},"content":""},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Description:** Deploys the site to the repo\u0027s GitHub pages by generating the site (default dir: `_site`) and pushing the generated site to the `gh-pages` branch of the current git working directory\u0027s remote repo."},{"lineNumber":190,"author":{"gitId":"-"},"content":""},{"lineNumber":191,"author":{"gitId":"-"},"content":"**Arguments:**"},{"lineNumber":192,"author":{"gitId":"-"},"content":"* `[root]`\u003cbr\u003e"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Root directory. Default is the current directory.\u003cbr\u003e"},{"lineNumber":194,"author":{"gitId":"-"},"content":" {{ icon_example }} `./myWebsite`"},{"lineNumber":195,"author":{"gitId":"-"},"content":""},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**Options** :fas-cogs:\" type\u003d\"minimal\" expanded\u003e"},{"lineNumber":197,"author":{"gitId":"-"},"content":""},{"lineNumber":198,"author":{"gitId":"-"},"content":"**Options** :fas-cogs:"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":"* `-c \u003cgithubTokenName\u003e`, `--ci \u003cgithubTokenName\u003e`\u003cbr\u003e"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Deploy the site in CI Environments using the GitHub personal access token stored in `\u003cgithubTokenName\u003e` (default: `GITHUB_TOKEN`).\u003cbr\u003e"},{"lineNumber":202,"author":{"gitId":"-"},"content":" {{ icon_example }} `-c PA_TOKEN`"},{"lineNumber":203,"author":{"gitId":"-"},"content":""},{"lineNumber":204,"author":{"gitId":"-"},"content":"* `-n`, `--no-build`\u003cbr\u003e"},{"lineNumber":205,"author":{"gitId":"-"},"content":" Skips the generation of the site before deploying it. By default, the `deploy` command generates the site before deploying the built site. This command should be used if the site needs to be generated with non-default arguments for the `build` command (e.g. baseUrl is specified using the `--baseUrl` flag for the `markbind build` command)."},{"lineNumber":206,"author":{"gitId":"-"},"content":""},{"lineNumber":207,"author":{"gitId":"-"},"content":"* `-s \u003cfile\u003e`, `--site-config \u003cfile\u003e`\u003cbr\u003e"},{"lineNumber":208,"author":{"gitId":"-"},"content":" Specify the site config file (default: `site.json`).\u003cbr\u003e"},{"lineNumber":209,"author":{"gitId":"-"},"content":" {{ icon_example }} `-s otherSite.json`"},{"lineNumber":210,"author":{"gitId":"-"},"content":""},{"lineNumber":211,"author":{"gitId":"-"},"content":"%%{{ icon_info }} Related: [User Guide: Deploying the Website](deployingTheSite.html).%%"},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":"**{{ icon_examples }}**"},{"lineNumber":214,"author":{"gitId":"-"},"content":"* `markbind deploy` : Deploys after generating the site from the current working directory."},{"lineNumber":215,"author":{"gitId":"-"},"content":"* `markbind deploy ./myWebsite` : Deploys after generating the site from the `./myWebsite` directory."},{"lineNumber":216,"author":{"gitId":"-"},"content":"* `markbind deploy --no-build` : Deploys the site from the current working directory without generating it."},{"lineNumber":217,"author":{"gitId":"-"},"content":""},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":219,"author":{"gitId":"-"},"content":""},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":221,"author":{"gitId":"-"},"content":""},{"lineNumber":222,"author":{"gitId":"-"},"content":"### `--help` Option"},{"lineNumber":223,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":224,"author":{"gitId":"-"},"content":""},{"lineNumber":225,"author":{"gitId":"-"},"content":"**Format:** `markbind [command] --help`"},{"lineNumber":226,"author":{"gitId":"-"},"content":""},{"lineNumber":227,"author":{"gitId":"-"},"content":"**Alias:** `markbind [command] -h`"},{"lineNumber":228,"author":{"gitId":"-"},"content":""},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Description:** Prints a summary of MarkBind commands or a detailed usage guide for the given `command`."},{"lineNumber":230,"author":{"gitId":"-"},"content":""},{"lineNumber":231,"author":{"gitId":"-"},"content":"{{ icon_examples }}"},{"lineNumber":232,"author":{"gitId":"-"},"content":"* `markbind --help` : Prints a summary of MarkBind commands."},{"lineNumber":233,"author":{"gitId":"-"},"content":"* `markbind serve --help` : Prints a detailed usage guide for the `serve` command."}],"authorContributionMap":{"LamJiuFong":5,"-":228}},{"path":"docs/userGuide/components/presentation.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"{% set title \u003d \"Presentational Components\" %}"},{"lineNumber":2,"author":{"gitId":"-"},"content":"{% set filename \u003d \"presentation\" %}"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"title\" class\u003d\"d-none\"\u003e{{ title }}\u003c/span\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cfrontmatter\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" title: \"User Guide: {{ title }}\""},{"lineNumber":7,"author":{"gitId":"-"},"content":" layout: userGuide.md"},{"lineNumber":8,"author":{"gitId":"-"},"content":" pageNav: 3"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/frontmatter\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"link\" class\u003d\"d-none\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cmd\u003e[_User Guide → {{ title }}_]({{ filename }}.html)\u003c/md\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"advanced.md#slots-info\" /\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"# Presentation"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"overview\" class\u003d\"lead\"\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"The components in this page are the core **presentational** components you may want to use. Panels and tabs can be used to **organise content sections**, while badges and boxes can **highlight small, specific pieces of information**."},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":23,"author":{"gitId":"yiwen101"},"content":"\u003cbox type \u003d \"warning\" header \u003d \"#### Use of markdown in content\" \u003e"},{"lineNumber":24,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":25,"author":{"gitId":"yiwen101"},"content":"As presentational components are HTML-based, you need to follow the HTML syntax when using markdown in the content of the components."},{"lineNumber":26,"author":{"gitId":"yiwen101"},"content":"More specifically, you should use either:"},{"lineNumber":27,"author":{"gitId":"yiwen101"},"content":"- add a line break with no indentation before the markdown content"},{"lineNumber":28,"author":{"gitId":"yiwen101"},"content":"- use the `\u003cmarkdown\u003e` (block level elements) or `\u003cmd\u003e` (inline level elements) tags to wrap the markdown content."},{"lineNumber":29,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":30,"author":{"gitId":"yiwen101"},"content":"For more information, please refer to this [section]({{baseUrl}}/userGuide/usingHtmlJavaScriptCss.html#markdown-in-html)."},{"lineNumber":31,"author":{"gitId":"yiwen101"},"content":"\u003c/box\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"{% from \"userGuide/fullSyntaxReference.md\" import syntax_topics as topics %}"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"{% macro show_topic(filename) %}"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"../syntax/{{ filename }}.md\" /\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003chr\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":"{% endmacro %}"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":"{% for k,v in topics %}"},{"lineNumber":41,"author":{"gitId":"-"},"content":"{% if \u0027presentation\u0027 in v[1] %}"},{"lineNumber":42,"author":{"gitId":"-"},"content":"{{ show_topic(k) }}"},{"lineNumber":43,"author":{"gitId":"-"},"content":"{% endif %}"},{"lineNumber":44,"author":{"gitId":"-"},"content":"{% endfor %}"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"# Relevant Tips \u0026 Tricks"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Indent components\"\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"../tipsAndTricks.md#indentComponents\" /\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"{% from \"njk/common.njk\" import previous_next %}"},{"lineNumber":57,"author":{"gitId":"-"},"content":"{{ previous_next(\u0027../usingComponents\u0027, \u0027imagesAndDiagrams\u0027) }}"}],"authorContributionMap":{"-":48,"yiwen101":9}},{"path":"docs/userGuide/syntax/badges.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"## Badges"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"yiwen101"},"content":"**Example:**"},{"lineNumber":4,"author":{"gitId":"yiwen101"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":5,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":6,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":7,"author":{"gitId":"yiwen101"},"content":"\u003cspan class\u003d\"badge bg-primary\"\u003e"},{"lineNumber":8,"author":{"gitId":"yiwen101"},"content":"Some Plain Text"},{"lineNumber":9,"author":{"gitId":"yiwen101"},"content":"\u003c/span\u003e"},{"lineNumber":10,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":11,"author":{"gitId":"yiwen101"},"content":"\u003cspan class\u003d\"badge bg-primary\"\u003e"},{"lineNumber":12,"author":{"gitId":"yiwen101"},"content":"\u003cmd\u003e_Some Markdown_\u003c/md\u003e"},{"lineNumber":13,"author":{"gitId":"yiwen101"},"content":"\u003c/span\u003e"},{"lineNumber":14,"author":{"gitId":"yiwen101"},"content":"\u003c/variable\u003e"},{"lineNumber":15,"author":{"gitId":"yiwen101"},"content":"\u003c/include\u003e"},{"lineNumber":16,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":17,"author":{"gitId":"yiwen101"},"content":"**You can choose from a variety of colors for your badges. You can also use the `rounded-pill` class to make the badges pill-shaped.**"},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Normal:"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-primary\"\u003ePrimary\u003c/span\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-secondary\"\u003eSecondary\u003c/span\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-success\"\u003eSuccess\u003c/span\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-danger\"\u003eDanger\u003c/span\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-warning text-dark\"\u003eWarning\u003c/span\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-info text-dark\"\u003eInfo\u003c/span\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-light text-dark\"\u003eLight\u003c/span\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-dark\"\u003eDark\u003c/span\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cbr\u003ePills:"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-primary\"\u003ePrimary\u003c/span\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-secondary\"\u003eSecondary\u003c/span\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-success\"\u003eSuccess\u003c/span\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-danger\"\u003eDanger\u003c/span\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-warning text-dark\"\u003eWarning\u003c/span\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-info text-dark\"\u003eInfo\u003c/span\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-light text-dark\"\u003eLight\u003c/span\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-dark\"\u003eDark\u003c/span\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"yiwen101"},"content":"**You can use Badges in combination with headings, buttons, links, etc.**"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Links:"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003ca href\u003d\"#\" class\u003d\"badge bg-primary\"\u003ePrimary\u003c/a\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003ca href\u003d\"#\" class\u003d\"badge rounded-pill bg-warning text-dark\"\u003eWarning\u003c/a\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":"Buttons:"},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cbutton type\u003d\"button\" class\u003d\"btn btn-primary\"\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Difficulty Level \u003cspan class\u003d\"badge bg-light text-dark\"\u003e4\u003c/span\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"Headings:"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":"### Feature X \u003cspan class\u003d\"badge bg-danger\"\u003ebeta\u003c/span\u003e {.no-index}"},{"lineNumber":59,"author":{"gitId":"-"},"content":"##### Feature Y \u003cspan class\u003d\"badge rounded-pill bg-success\"\u003estable\u003c/span\u003e {.no-index}"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"%%{{ icon_info }} You can refer to [Bootstrap documentation](https://getbootstrap.com/docs/5.1/components/badge/) to find more information about Badges.%%"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"short\" class\u003d\"d-none\"\u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-primary\"\u003ePrimary\u003c/span\u003e"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-success\"\u003eSuccess\u003c/span\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":"\u003cbutton type\u003d\"button\" class\u003d\"btn btn-primary\"\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Difficulty Level \u003cspan class\u003d\"badge bg-light text-dark\"\u003e4\u003c/span\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":78,"author":{"gitId":"-"},"content":"```"},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"examples\" class\u003d\"d-none\"\u003e"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-primary\"\u003ePrimary\u003c/span\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-success\"\u003eSuccess\u003c/span\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cbutton type\u003d\"button\" class\u003d\"btn btn-primary\"\u003e"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Difficulty Level \u003cspan class\u003d\"badge bg-light text-dark\"\u003e4\u003c/span\u003e"},{"lineNumber":87,"author":{"gitId":"-"},"content":"##### Feature Y \u003cspan class\u003d\"badge rounded-pill bg-warning text-dark\"\u003estable\u003c/span\u003e {.no-index}"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"-":73,"yiwen101":16}},{"path":"docs/userGuide/syntax/boxes.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"{% from \"userGuide/components/advanced.md\" import slot_info_trigger %}"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Boxes"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"yiwen101"},"content":"**Simple Example**"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003cbox\u003e"},{"lineNumber":10,"author":{"gitId":"yiwen101"},"content":"plain text"},{"lineNumber":11,"author":{"gitId":"yiwen101"},"content":"\u003c/box\u003e"},{"lineNumber":12,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":13,"author":{"gitId":"yiwen101"},"content":"\u003cbox\u003e"},{"lineNumber":14,"author":{"gitId":"yiwen101"},"content":"\u003cmd\u003e_markdown_\u003c/md\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":16,"author":{"gitId":"yiwen101"},"content":"\u003c/variable\u003e"},{"lineNumber":17,"author":{"gitId":"yiwen101"},"content":"\u003c/include\u003e"},{"lineNumber":18,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":19,"author":{"gitId":"yiwen101"},"content":"**Boxes come with different built-in types.**"},{"lineNumber":20,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":21,"author":{"gitId":"yiwen101"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":22,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":23,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\"\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" info"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\"\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" warning"},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\"\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" success"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"important\"\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" important"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"wrong\"\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" wrong"},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\"\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" tip"},{"lineNumber":41,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\"\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" definition"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" dismissible\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" dismissible info"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\" header\u003d\"#### Header :rocket:\" icon-size\u003d\"2x\"\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"warning\" header\u003d\"You can use **markdown** here! :pizza:\" dismissible\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/box\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"**The built in types can be colored.**"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"primary\"\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":" primary"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"secondary\"\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" secondary"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"success\"\u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":" success"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"danger\"\u003e"},{"lineNumber":74,"author":{"gitId":"-"},"content":" danger"},{"lineNumber":75,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"warning\"\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":" warning"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"info\"\u003e"},{"lineNumber":80,"author":{"gitId":"-"},"content":" info"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"light\"\u003e"},{"lineNumber":83,"author":{"gitId":"-"},"content":" light"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"dark\"\u003e"},{"lineNumber":86,"author":{"gitId":"-"},"content":" dark"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":"**MarkBind also supports a light color scheme for boxes**"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":96,"author":{"gitId":"-"},"content":"\u003cbox light\u003e"},{"lineNumber":97,"author":{"gitId":"-"},"content":" default light"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" light\u003e"},{"lineNumber":100,"author":{"gitId":"-"},"content":" info light"},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" light\u003e"},{"lineNumber":103,"author":{"gitId":"-"},"content":" warning light"},{"lineNumber":104,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":105,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\" light\u003e"},{"lineNumber":106,"author":{"gitId":"-"},"content":" success light"},{"lineNumber":107,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":108,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"important\" light\u003e"},{"lineNumber":109,"author":{"gitId":"-"},"content":" important light"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"wrong\" light\u003e"},{"lineNumber":112,"author":{"gitId":"-"},"content":" wrong light"},{"lineNumber":113,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" light\u003e"},{"lineNumber":115,"author":{"gitId":"-"},"content":" tip light"},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":117,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\" light\u003e"},{"lineNumber":118,"author":{"gitId":"-"},"content":" definition light"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\" header\u003d\"##### Header markdown :rocket:\" light\u003e"},{"lineNumber":121,"author":{"gitId":"-"},"content":" definition light with header markdown"},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":123,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":124,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":"**MarkBind also supports a seamless style of boxes**"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\"\u003e"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":"As `light` and `seamless` are mutually exclusive styles, `light` takes priority over `seamless`."},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":132,"author":{"gitId":"-"},"content":""},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cbox seamless\u003e"},{"lineNumber":137,"author":{"gitId":"-"},"content":" default seamless"},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e"},{"lineNumber":140,"author":{"gitId":"-"},"content":" info seamless"},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e"},{"lineNumber":143,"author":{"gitId":"-"},"content":" warning seamless"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\" seamless\u003e"},{"lineNumber":146,"author":{"gitId":"-"},"content":" success seamless"},{"lineNumber":147,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"important\" seamless\u003e"},{"lineNumber":149,"author":{"gitId":"-"},"content":" important seamless"},{"lineNumber":150,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":151,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"wrong\" seamless\u003e"},{"lineNumber":152,"author":{"gitId":"-"},"content":" wrong seamless"},{"lineNumber":153,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":154,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e"},{"lineNumber":155,"author":{"gitId":"-"},"content":" tip seamless"},{"lineNumber":156,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":157,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\" seamless dismissible\u003e"},{"lineNumber":158,"author":{"gitId":"-"},"content":" dismissible definition seamless"},{"lineNumber":159,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":160,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\" header\u003d\"##### Header markdown :rocket:\" seamless\u003e"},{"lineNumber":161,"author":{"gitId":"-"},"content":" success seamless with header markdown"},{"lineNumber":162,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":163,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":164,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":165,"author":{"gitId":"-"},"content":""},{"lineNumber":166,"author":{"gitId":"-"},"content":"**You can further customize the Box\u0027s appearance.**"},{"lineNumber":167,"author":{"gitId":"-"},"content":""},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":169,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":170,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":171,"author":{"gitId":"-"},"content":"\u003cbox background-color\u003d\"#ffca6a\" border-color\u003d\"grey\" border-left-color\u003d\"#8b5a01\"\u003e"},{"lineNumber":172,"author":{"gitId":"-"},"content":"default type, styled as an orange box with a brown left border"},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" color\u003d\"red\" icon\u003d\":rocket:\"\u003e"},{"lineNumber":175,"author":{"gitId":"-"},"content":""},{"lineNumber":176,"author":{"gitId":"-"},"content":"info, with a custom markdown rocket icon and `red` colored text."},{"lineNumber":177,"author":{"gitId":"-"},"content":""},{"lineNumber":178,"author":{"gitId":"-"},"content":"You can use any inline markdown in the `icon` property."},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":182,"author":{"gitId":"-"},"content":""},{"lineNumber":183,"author":{"gitId":"-"},"content":"**You can remove the background, icon and borders of preset styles.**"},{"lineNumber":184,"author":{"gitId":"-"},"content":""},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cbox no-icon no-background type\u003d\"success\"\u003e"},{"lineNumber":189,"author":{"gitId":"-"},"content":" success box without a tick icon and backgound"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":191,"author":{"gitId":"-"},"content":""},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cbox no-border type\u003d\"definition\" light\u003e"},{"lineNumber":193,"author":{"gitId":"-"},"content":" definition type box, light style without border"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":197,"author":{"gitId":"-"},"content":""},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox header\u003d\"Note\" type\u003d\"info\" seamless\u003e"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":"Custom styles **(** `background-color`, `border-color`, `border-left-color`, `icon` **)** as introduced in the previous section, takes precedence over the `no-background`, `no-border`, `no-icon` attributes."},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":202,"author":{"gitId":"-"},"content":""},{"lineNumber":203,"author":{"gitId":"-"},"content":"**You can also use icons, resize them and change their color accordingly.**"},{"lineNumber":204,"author":{"gitId":"-"},"content":""},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\" icon\u003d\":fas-camera:\"\u003e"},{"lineNumber":209,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipiscing elit"},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" icon\u003d\":fas-camera:\" icon-size\u003d\"2x\"\u003e"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\" icon\u003d\":fas-camera:\" icon-size\u003d\"3x\"\u003e"},{"lineNumber":215,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" icon\u003d\":fas-camera:\" icon-color\u003d\"red\" icon-size\u003d\"3x\"\u003e"},{"lineNumber":218,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":222,"author":{"gitId":"-"},"content":""},{"lineNumber":223,"author":{"gitId":"-"},"content":"****Options****"},{"lineNumber":224,"author":{"gitId":"-"},"content":"Name | Type | Default | Description"},{"lineNumber":225,"author":{"gitId":"-"},"content":"--- | --- | --- | ---"},{"lineNumber":226,"author":{"gitId":"-"},"content":"background-color | `String` | `null` |"},{"lineNumber":227,"author":{"gitId":"-"},"content":"border-color | `String` | `null` |"},{"lineNumber":228,"author":{"gitId":"-"},"content":"border-left-color | `String` | `null` | Overrides border-color for the left border."},{"lineNumber":229,"author":{"gitId":"-"},"content":"color | `String` | `null` | Color of the text."},{"lineNumber":230,"author":{"gitId":"-"},"content":"dismissible | `Boolean` | `false` | Adds a button to close the box to the top right corner."},{"lineNumber":231,"author":{"gitId":"-"},"content":"icon{{slot_info_trigger}} | `String` | `null` | Inline MarkDown text of the icon displayed on the left."},{"lineNumber":232,"author":{"gitId":"-"},"content":"icon-size | `String` | `null` | Resizes the icon. Supports integer-scaling of the icon dimensions e.g. `2x`, `3x`, `4x`, etc."},{"lineNumber":233,"author":{"gitId":"-"},"content":"icon-color | `String` | `null` | Color of the icon."},{"lineNumber":234,"author":{"gitId":"-"},"content":"header{{slot_info_trigger}} | `String` | `null` | Markdown text of the box header."},{"lineNumber":235,"author":{"gitId":"-"},"content":"type | `String` | `\u0027\u0027` | Supports: `info`, `warning`, `success`, `important`, `wrong`, `tip`, `definition`, or empty for default."},{"lineNumber":236,"author":{"gitId":"-"},"content":"theme | `String` | `\u0027\u0027` | Supports: `primary`, `secondary`, `success`, `danger`, `warning`, `tip`, `light`, `dark` or empty for default."},{"lineNumber":237,"author":{"gitId":"-"},"content":"light | `Boolean` | `false` | Uses a light color scheme for the box."},{"lineNumber":238,"author":{"gitId":"-"},"content":"seamless | `Boolean` | `false` | Uses a seamless style for the box. If `light` is specified, this style will not be activated."},{"lineNumber":239,"author":{"gitId":"-"},"content":"no-border | `Boolean` | `false` | Removes border, except if styled by `border-color` or `border-left-color`. "},{"lineNumber":240,"author":{"gitId":"-"},"content":"no-background | `Boolean` | `false` | Removes background, except if styled by `background-color` option."},{"lineNumber":241,"author":{"gitId":"-"},"content":"no-icon | `Boolean` | `false` | Removes icon, except if icon is displayed via `icon` option."},{"lineNumber":242,"author":{"gitId":"-"},"content":""},{"lineNumber":243,"author":{"gitId":"-"},"content":""},{"lineNumber":244,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"short\" class\u003d\"d-none\"\u003e"},{"lineNumber":245,"author":{"gitId":"-"},"content":""},{"lineNumber":246,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":247,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\"\u003e"},{"lineNumber":248,"author":{"gitId":"-"},"content":" warning"},{"lineNumber":249,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```"},{"lineNumber":251,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":252,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"examples\" class\u003d\"d-none\"\u003e"},{"lineNumber":253,"author":{"gitId":"-"},"content":""},{"lineNumber":254,"author":{"gitId":"-"},"content":"\u003cbox\u003e"},{"lineNumber":255,"author":{"gitId":"-"},"content":" default"},{"lineNumber":256,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":257,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\"\u003e"},{"lineNumber":258,"author":{"gitId":"-"},"content":" info"},{"lineNumber":259,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\"\u003e"},{"lineNumber":261,"author":{"gitId":"-"},"content":" warning"},{"lineNumber":262,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\"\u003e"},{"lineNumber":264,"author":{"gitId":"-"},"content":" success"},{"lineNumber":265,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":266,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"important\"\u003e"},{"lineNumber":267,"author":{"gitId":"-"},"content":" important"},{"lineNumber":268,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":269,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"wrong\"\u003e"},{"lineNumber":270,"author":{"gitId":"-"},"content":" wrong"},{"lineNumber":271,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":272,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\"\u003e"},{"lineNumber":273,"author":{"gitId":"-"},"content":" tip"},{"lineNumber":274,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":275,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\"\u003e"},{"lineNumber":276,"author":{"gitId":"-"},"content":" definition"},{"lineNumber":277,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":278,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"-":264,"yiwen101":14}},{"path":"docs/userGuide/syntax/emoji.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"## Emoji"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"main-example\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003emarkdown\u003c/variable\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":":+1: :exclamation: :x: :construction: :) :/ :D"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"Tim-Siu"},"content":"%%{{ icon_info }} The list of supported [emoji](https://github.com/ikatyang/emoji-cheat-sheet/blob/master/README.md) and [emoticon shortcuts](https://github.com/markdown-it/markdown-it-emoji/blob/master/lib/data/shortcuts.mjs).%%"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"short\" class\u003d\"d-none\"\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":20,"author":{"gitId":"-"},"content":":+1: :exclamation: :x: :construction: :) :/ :D"},{"lineNumber":21,"author":{"gitId":"-"},"content":"```"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"examples\" class\u003d\"d-none\"\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":":+1: :exclamation: :x: :construction: :) :/ :D"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"-":26,"Tim-Siu":1}},{"path":"docs/userGuide/syntax/includes.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"link\" class\u003d\"d-none\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003cmd\u003e[_User Guide → Reusing Contents → Includes_]({{ baseUrl }}/userGuide/reusingContents.html#includes)\u003c/md\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Includes"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"overview\"\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"**MarkBind has a powerful `\u003cinclude\u003e` mechanism** which allows you to create documents by combining other content fragments."},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"**You can use `\u003cinclude\u003e` tag to include another markdown or HTML document into the current document.**"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"{{ icon_example }} Including text from a `tip2.md` in another file."},{"lineNumber":17,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Tip 1. ..."},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"tips/tip2.md\" /\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Tip 3. ..."},{"lineNumber":21,"author":{"gitId":"-"},"content":"```"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"**You can `\u003cinclude\u003e` a fragment of a file** by specifying the `#fragment-id` at the end of the `src` attribute value, provided the fragment is wrapped in a `\u003cdiv\u003e`/`\u003cspan\u003e` tag with the matching `id`."},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"important\" seamless\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"Choose `\u003cdiv\u003e` over `\u003cspan\u003e` when wrapping block-level elements, to prevent invalid HTML markup which causes [hydration issues](https://vuejs.org/guide/scaling-up/ssr.html#hydration-mismatch)."},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":"{{ icon_example }} Including a fragment from a file:"},{"lineNumber":35,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Some text"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"docs/tips.md#tip-1\" /\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":"Some other text"},{"lineNumber":39,"author":{"gitId":"-"},"content":"```"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"`docs/tips.md`:"},{"lineNumber":42,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":43,"author":{"gitId":"-"},"content":"..."},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"tip-1\" /\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Tip 1. ..."},{"lineNumber":46,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Tip 2. ..."},{"lineNumber":49,"author":{"gitId":"-"},"content":"```"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\"\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":"When setting the `id` of a fragment, be careful not to clash with heading anchor IDs auto-generated by MarkBind. For example, if you have a heading `## Some Useful Tips`, MarkBind will auto-generate an ID `some-useful-tips` for that heading."},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"yiwen101"},"content":"\u003cinclude src\u003d\"panels.md#script_and_styles_warning\"\u003e\u003c/include\u003e"},{"lineNumber":59,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"tip.md\" boilerplate \u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"tip_body\"\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":"The `\u003cinclude\u003e` mechanism can be used inside any MarkBind source file (even inside the _frontmatter_ section) but it will not work inside some _special_ files such as the `_markbind/variables.md`."},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"**Attributes:**"},{"lineNumber":67,"author":{"gitId":"-"},"content":"* **`src`**: specify the source file path."},{"lineNumber":68,"author":{"gitId":"-"},"content":"* **`inline`** (optional): make the included result an inline element. (wrapped in `\u003cspan\u003e` tag). e.g.,"},{"lineNumber":69,"author":{"gitId":"-"},"content":" ```html"},{"lineNumber":70,"author":{"gitId":"-"},"content":" The title is \u003cinclude src\u003d\"../docs/summary.md#title\" inline /\u003e while ..."},{"lineNumber":71,"author":{"gitId":"-"},"content":" ```"},{"lineNumber":72,"author":{"gitId":"-"},"content":"* **`optional`** (optional): include the file/fragment only if it exists i.e., there will be no error message if the file/fragment does not exist. e.g.,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" ```html"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"UserStories.md\" optional /\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":" ```"},{"lineNumber":76,"author":{"gitId":"-"},"content":"* **`trim`** (optional): remove leading and trailing whitespace and newlines from the document before including."},{"lineNumber":77,"author":{"gitId":"-"},"content":" ```html"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"UserStories.md#epic\" trim /\u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":" ```"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* **`omitFrontmatter`** (optional): omit the frontmatter of the file/fragment from being included (if any)."},{"lineNumber":81,"author":{"gitId":"-"},"content":" ```html"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"UserStories.md#epic\" omitFrontmatter /\u003e"},{"lineNumber":83,"author":{"gitId":"-"},"content":" ```"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":"##### `\u003cinclude\u003e` Inside an Included File"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":"**Although the `src` attribute of an `\u003cinclude\u003e` is given _relative_ to the current directory, it is converted to an _absolute_ value _before_ the \u003ctooltip content\u003d\"i.e., the file containing the `\u003cinclude\u003e`\"\u003ehost file\u003c/tooltip\u003e is included from another file.**"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":"{{ icon_example }} Suppose you have a MarkBind project with the following file structure."},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003ctree\u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":"C:/mySite/"},{"lineNumber":94,"author":{"gitId":"-"},"content":" bookFiles/"},{"lineNumber":95,"author":{"gitId":"-"},"content":" book.md"},{"lineNumber":96,"author":{"gitId":"-"},"content":" chapter1.md"},{"lineNumber":97,"author":{"gitId":"-"},"content":" chapter2.md"},{"lineNumber":98,"author":{"gitId":"-"},"content":" reviewFiles/"},{"lineNumber":99,"author":{"gitId":"-"},"content":" review.md"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/tree\u003e"},{"lineNumber":101,"author":{"gitId":"-"},"content":"The `book.md`:"},{"lineNumber":102,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":103,"author":{"gitId":"-"},"content":"# My Book"},{"lineNumber":104,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter1.md\" /\u003e"},{"lineNumber":105,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter2.md\" /\u003e"},{"lineNumber":106,"author":{"gitId":"-"},"content":"```"},{"lineNumber":107,"author":{"gitId":"-"},"content":"The `review.md`:"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":110,"author":{"gitId":"-"},"content":"# My Review"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"../bookFiles/book.md\" /\u003e"},{"lineNumber":112,"author":{"gitId":"-"},"content":"..."},{"lineNumber":113,"author":{"gitId":"-"},"content":"```"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":"The content of the `chapter1.md` and `chapter2.md` will be included in the `review.md` (via `\u003cinclude src\u003d\"../bookFiles/book.md\" /\u003e`) although `chapter1.md` and `chapter2.md` are not in `reviewFiles` directory. i.e., `\u003cinclude src\u003d\"chapter1.md\" /\u003e` will be interpreted as `\u003cinclude src\u003d\"c:/mySite/bookFiles/chapter1.md\" /\u003e`"},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":"In other words, **`\u003cinclude\u003e` interprets the reused code relative to the original location of the file, not the location in which it is reused.**"},{"lineNumber":119,"author":{"gitId":"-"},"content":""},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":"##### Specifying Variables in an `\u003cinclude\u003e`"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":"**It is possible to include variables in an `\u003cinclude\u003e`.**"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":"{{ icon_example }} Specifying `title` and `author` variables in an `\u003cinclude\u003e` tag:"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"article.md\"\u003e"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u003cvariable name\u003d\"title\"\u003eMy Title\u003c/variable\u003e"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cvariable name\u003d\"author\"\u003eJohn Doe\u003c/variable\u003e"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":135,"author":{"gitId":"-"},"content":"```"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":"In `article.md`:"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":"{% raw %}"},{"lineNumber":140,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":141,"author":{"gitId":"-"},"content":"# {{ title }}\u003cbr\u003e"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Author: {{ author }}"},{"lineNumber":143,"author":{"gitId":"-"},"content":"```"},{"lineNumber":144,"author":{"gitId":"-"},"content":"{% endraw %}"},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":146,"author":{"gitId":"-"},"content":""},{"lineNumber":147,"author":{"gitId":"-"},"content":"These variables work the same way as variables in `_markbind/variables.md`, except that they only apply to the included file. They allow the included file to be reused as a template, for different source files using different variable values."},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":"You can also specify include variables within the `\u003cinclude\u003e` tag itself by adding a `var-` prefix."},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":"{{ icon_example }} Specifying `title` and `author` variables inline:"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":155,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"article.md\" var-title\u003d\"My Title\" var-author\u003d\"John Doe\" /\u003e"},{"lineNumber":156,"author":{"gitId":"-"},"content":"```"},{"lineNumber":157,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":"If the same variable is defined in a chain of `\u003cinclude\u003e`s (e.g. `a.md` includes `b.md` includes `c.md`...), variables defined in the top-most `\u003cinclude\u003e` will take precedence. Global variables (`_markbind/variables.md`) will take precedence over any `\u003cinclude\u003e` variables."},{"lineNumber":160,"author":{"gitId":"-"},"content":"This is to allow the outer context to adapt the reused content without changing its actual content."},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Preventing cyclical errors when using multiple includes with same variables\"\u003e"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":"Since outer variables override inner variables, this may result in errors if attempting to use an `include` within another `include` with the same variables."},{"lineNumber":165,"author":{"gitId":"-"},"content":""},{"lineNumber":166,"author":{"gitId":"-"},"content":"This is because the inner variable of the same name will be replaced with the outer variable, which contains the inner variable. "},{"lineNumber":167,"author":{"gitId":"-"},"content":"This inner variable is once again overridden to result in another inner variable and so on, causing a cyclical error."},{"lineNumber":168,"author":{"gitId":"-"},"content":""},{"lineNumber":169,"author":{"gitId":"-"},"content":"To fix this issue, do not use an inner `include` if they use the same variables."},{"lineNumber":170,"author":{"gitId":"-"},"content":"Instead, copy the content of the `src` file and replace the variables with the defined values."},{"lineNumber":171,"author":{"gitId":"-"},"content":""},{"lineNumber":172,"author":{"gitId":"-"},"content":"Example:"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":"```html {.line-numbers}"},{"lineNumber":175,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"boilerplate.md\" boilerplate\u003e"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"variable\"\u003e"},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"boilerplate.md\"\u003e"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"variable\"\u003e"},{"lineNumber":179,"author":{"gitId":"-"},"content":" VALUE_OF_VARIABLE"},{"lineNumber":180,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":181,"author":{"gitId":"-"},"content":" \u003c/include\u003e"},{"lineNumber":182,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":184,"author":{"gitId":"-"},"content":"```"},{"lineNumber":185,"author":{"gitId":"-"},"content":""},{"lineNumber":186,"author":{"gitId":"-"},"content":"The inner `variable` would be replaced by the outer `variable` resulting in a cyclical error:"},{"lineNumber":187,"author":{"gitId":"-"},"content":""},{"lineNumber":188,"author":{"gitId":"-"},"content":"```html {.line-numbers highlight-lines\u003d\"5-9\"}"},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"boilerplate.md\" boilerplate\u003e"},{"lineNumber":190,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"variable\"\u003e"},{"lineNumber":191,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"boilerplate.md\"\u003e"},{"lineNumber":192,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"variable\"\u003e"},{"lineNumber":193,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"boilerplate.md\"\u003e"},{"lineNumber":194,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"variable\"\u003e"},{"lineNumber":195,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":196,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":197,"author":{"gitId":"-"},"content":" \u003c/include\u003e"},{"lineNumber":198,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":199,"author":{"gitId":"-"},"content":" \u003c/include\u003e"},{"lineNumber":200,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":202,"author":{"gitId":"-"},"content":"```"},{"lineNumber":203,"author":{"gitId":"-"},"content":""},{"lineNumber":204,"author":{"gitId":"-"},"content":"To fix this problem, copy the content of the `src` file and replace the variables with the defined values as such:"},{"lineNumber":205,"author":{"gitId":"-"},"content":""},{"lineNumber":206,"author":{"gitId":"-"},"content":"```html {.line-numbers highlight-lines\u003d\"3\"}"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"boilerplate.md\" boilerplate\u003e"},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"variable\"\u003e"},{"lineNumber":209,"author":{"gitId":"-"},"content":" Boilerplate content: VALUE_OF_VARIABLE \u003c!-- Replace {{ \u0027{{\u0027 }} variable {{ \u0027}}\u0027 }} in boilerplate with VALUE_OF_VARIABLE --\u003e"},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":212,"author":{"gitId":"-"},"content":"```"},{"lineNumber":213,"author":{"gitId":"-"},"content":""},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":215,"author":{"gitId":"-"},"content":""},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":217,"author":{"gitId":"-"},"content":""},{"lineNumber":218,"author":{"gitId":"-"},"content":"##### Excluding Files from Rendering as Pages"},{"lineNumber":219,"author":{"gitId":"-"},"content":""},{"lineNumber":220,"author":{"gitId":"-"},"content":"**MarkBind supports the exclusion of files from page generation**. For example, you can exclude files containing \u003ctooltip content\u003d\"A fragment is a piece of content that can be reused across multiple pages.\"\u003ecustom fragments\u003c/tooltip\u003e that are only meant to be used in `\u003cinclude\u003e`."},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\"\u003e"},{"lineNumber":222,"author":{"gitId":"-"},"content":""},{"lineNumber":223,"author":{"gitId":"-"},"content":"Note: This example below is assuming that you have included the following glob pattern in the `site.json` file:"},{"lineNumber":224,"author":{"gitId":"-"},"content":""},{"lineNumber":225,"author":{"gitId":"-"},"content":"```js"},{"lineNumber":226,"author":{"gitId":"-"},"content":"{"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \"pages\": ["},{"lineNumber":228,"author":{"gitId":"-"},"content":" {"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \"glob\": \"*.md\","},{"lineNumber":230,"author":{"gitId":"-"},"content":" \"layout\": \"normal\","},{"lineNumber":231,"author":{"gitId":"-"},"content":" \"searchable\": \"yes\""},{"lineNumber":232,"author":{"gitId":"-"},"content":" }"},{"lineNumber":233,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}"},{"lineNumber":235,"author":{"gitId":"-"},"content":"```"},{"lineNumber":236,"author":{"gitId":"-"},"content":""},{"lineNumber":237,"author":{"gitId":"-"},"content":"Else, if each page is included individually, there is no need to exclude the fragments as they will not be included in the page generation."},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":239,"author":{"gitId":"-"},"content":""},{"lineNumber":240,"author":{"gitId":"-"},"content":""},{"lineNumber":241,"author":{"gitId":"-"},"content":"{{ icon_example }} Suppose you have a fragment file `content-fragment.md` and you want to include it in some pages of the site `course` without rendering `content-fragment.md` as a page."},{"lineNumber":242,"author":{"gitId":"-"},"content":""},{"lineNumber":243,"author":{"gitId":"-"},"content":"\u003ctree\u003e"},{"lineNumber":244,"author":{"gitId":"-"},"content":"C:/course/"},{"lineNumber":245,"author":{"gitId":"-"},"content":" content-fragment.md"},{"lineNumber":246,"author":{"gitId":"-"},"content":" index.md"},{"lineNumber":247,"author":{"gitId":"-"},"content":" reading.md"},{"lineNumber":248,"author":{"gitId":"-"},"content":" site.json"},{"lineNumber":249,"author":{"gitId":"-"},"content":"\u003c/tree\u003e"},{"lineNumber":250,"author":{"gitId":"-"},"content":""},{"lineNumber":251,"author":{"gitId":"-"},"content":"In `reading.md` (note how it reuses content from the `content-fragment.md`):"},{"lineNumber":252,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":253,"author":{"gitId":"-"},"content":"# Week 1 Reading:"},{"lineNumber":254,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"content-fragment.md\" /\u003e"},{"lineNumber":255,"author":{"gitId":"-"},"content":"```"},{"lineNumber":256,"author":{"gitId":"-"},"content":""},{"lineNumber":257,"author":{"gitId":"-"},"content":"In `site.json` we then exclude the fragment from the page generation with [pagesExclude](../siteJsonFile.html#pagesexclude):"},{"lineNumber":258,"author":{"gitId":"-"},"content":""},{"lineNumber":259,"author":{"gitId":"-"},"content":"```json"},{"lineNumber":260,"author":{"gitId":"-"},"content":"..."},{"lineNumber":261,"author":{"gitId":"-"},"content":"\"pagesExclude\": ["},{"lineNumber":262,"author":{"gitId":"-"},"content":" \"**/*-fragment.md\""},{"lineNumber":263,"author":{"gitId":"-"},"content":"],"},{"lineNumber":264,"author":{"gitId":"-"},"content":"..."},{"lineNumber":265,"author":{"gitId":"-"},"content":"```"},{"lineNumber":266,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":267,"author":{"gitId":"-"},"content":""},{"lineNumber":268,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":269,"author":{"gitId":"-"},"content":""},{"lineNumber":270,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"tip.md\" boilerplate \u003e"},{"lineNumber":271,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"tip_body\"\u003e"},{"lineNumber":272,"author":{"gitId":"-"},"content":"You may use any custom name you wish for your fragments but be sure to update the `pagesExclude` list with the appropriate glob pattern."},{"lineNumber":273,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":274,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":275,"author":{"gitId":"-"},"content":""},{"lineNumber":276,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":277,"author":{"gitId":"-"},"content":""},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Using Boilerplate Files"},{"lineNumber":279,"author":{"gitId":"-"},"content":""},{"lineNumber":280,"author":{"gitId":"-"},"content":"**If you find yourself duplicating a \u003ctooltip content\u003d\"code that needs to stay relative to the directory in which it used\"\u003e_boilerplate code_\u003c/tooltip\u003e fragment in multiple places of your code base, you can use a `boilerplate` file to avoid such duplication.** Note that you cannot use a normal `\u003cinclude\u003e` in this case because the code included using a normal `\u003cinclude\u003e` stays relative to the original location while boilerplate code needs to be interpreted relative to the location it is being used."},{"lineNumber":281,"author":{"gitId":"-"},"content":""},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":283,"author":{"gitId":"-"},"content":""},{"lineNumber":284,"author":{"gitId":"-"},"content":"{{ icon_example }} Suppose you have a MarkBind project with the following file structure."},{"lineNumber":285,"author":{"gitId":"-"},"content":"\u003ctree\u003e"},{"lineNumber":286,"author":{"gitId":"-"},"content":"C:/mySite/"},{"lineNumber":287,"author":{"gitId":"-"},"content":" chapter1/"},{"lineNumber":288,"author":{"gitId":"-"},"content":" chapter.md"},{"lineNumber":289,"author":{"gitId":"-"},"content":" text.md"},{"lineNumber":290,"author":{"gitId":"-"},"content":" exercises.md"},{"lineNumber":291,"author":{"gitId":"-"},"content":" chapter2/"},{"lineNumber":292,"author":{"gitId":"-"},"content":" chapter.md"},{"lineNumber":293,"author":{"gitId":"-"},"content":" text.md"},{"lineNumber":294,"author":{"gitId":"-"},"content":" exercises.md"},{"lineNumber":295,"author":{"gitId":"-"},"content":" book.md"},{"lineNumber":296,"author":{"gitId":"-"},"content":"\u003c/tree\u003e"},{"lineNumber":297,"author":{"gitId":"-"},"content":"The `book.md`:"},{"lineNumber":298,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":299,"author":{"gitId":"-"},"content":"# My Book"},{"lineNumber":300,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter1/chapter.md\" /\u003e"},{"lineNumber":301,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter2/chapter.md\" /\u003e"},{"lineNumber":302,"author":{"gitId":"-"},"content":"```"},{"lineNumber":303,"author":{"gitId":"-"},"content":"The `chapter1/chapter.md`:"},{"lineNumber":304,"author":{"gitId":"-"},"content":""},{"lineNumber":305,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Text"},{"lineNumber":307,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"text.md\" /\u003e"},{"lineNumber":308,"author":{"gitId":"-"},"content":"## Exercises"},{"lineNumber":309,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"exercises.md\" /\u003e"},{"lineNumber":310,"author":{"gitId":"-"},"content":"```"},{"lineNumber":311,"author":{"gitId":"-"},"content":"The `chapter2/chapter.md`:"},{"lineNumber":312,"author":{"gitId":"-"},"content":""},{"lineNumber":313,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":314,"author":{"gitId":"-"},"content":"## Text"},{"lineNumber":315,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"text.md\" /\u003e"},{"lineNumber":316,"author":{"gitId":"-"},"content":"## Exercises"},{"lineNumber":317,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"exercises.md\" /\u003e"},{"lineNumber":318,"author":{"gitId":"-"},"content":"```"},{"lineNumber":319,"author":{"gitId":"-"},"content":""},{"lineNumber":320,"author":{"gitId":"-"},"content":"As you can see, both `chapter.md` files are exactly the same. If we were to use only one of the `chapter.md` files and `\u003cinclude\u003e` it twice in the `book.md`, we\u0027ll end up with the same chapter content duplicated twice, which is not what we want. In other words, `chapter.md` contains boilerplate code that needs to be interpreted relative to where it is applied, once relative to `chapter1` directory and once relative to `chapter2` directory."},{"lineNumber":321,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":322,"author":{"gitId":"-"},"content":""},{"lineNumber":323,"author":{"gitId":"-"},"content":"To use a code fragment as a boilerplate file,"},{"lineNumber":324,"author":{"gitId":"-"},"content":"1. Put the code in a file inside the `_markbind/boilerplates` directory."},{"lineNumber":325,"author":{"gitId":"-"},"content":"2. `\u003cinclude\u003e` the file _as if_ a copy of it exists in any directory you want it to applied, but add the `boilerplate` attribute to the `\u003cinclude\u003e` tag."},{"lineNumber":326,"author":{"gitId":"-"},"content":""},{"lineNumber":327,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":328,"author":{"gitId":"-"},"content":""},{"lineNumber":329,"author":{"gitId":"-"},"content":"{{ icon_example }} Here\u0027s how you can use a boilerplate file to avoid duplicating the `chapter.md`:"},{"lineNumber":330,"author":{"gitId":"-"},"content":"\u003ctree\u003e"},{"lineNumber":331,"author":{"gitId":"-"},"content":"C:/mySite/"},{"lineNumber":332,"author":{"gitId":"-"},"content":" _markbind/boilerplates/"},{"lineNumber":333,"author":{"gitId":"-"},"content":" chapter.md"},{"lineNumber":334,"author":{"gitId":"-"},"content":" chapter1/"},{"lineNumber":335,"author":{"gitId":"-"},"content":" text.md"},{"lineNumber":336,"author":{"gitId":"-"},"content":" exercises.md"},{"lineNumber":337,"author":{"gitId":"-"},"content":" chapter2/"},{"lineNumber":338,"author":{"gitId":"-"},"content":" text.md"},{"lineNumber":339,"author":{"gitId":"-"},"content":" exercises.md"},{"lineNumber":340,"author":{"gitId":"-"},"content":" book.md"},{"lineNumber":341,"author":{"gitId":"-"},"content":"\u003c/tree\u003e"},{"lineNumber":342,"author":{"gitId":"-"},"content":"The `book.md`:"},{"lineNumber":343,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":344,"author":{"gitId":"-"},"content":"# My Book"},{"lineNumber":345,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter1/chapter.md\" boilerplate /\u003e"},{"lineNumber":346,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter2/chapter.md\" boilerplate /\u003e"},{"lineNumber":347,"author":{"gitId":"-"},"content":"```"},{"lineNumber":348,"author":{"gitId":"-"},"content":"The `_markbind/boilerplates/chapter.md`:"},{"lineNumber":349,"author":{"gitId":"-"},"content":""},{"lineNumber":350,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":351,"author":{"gitId":"-"},"content":"## Text"},{"lineNumber":352,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"text.md\" /\u003e"},{"lineNumber":353,"author":{"gitId":"-"},"content":"## Exercises"},{"lineNumber":354,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"exercises.md\" /\u003e"},{"lineNumber":355,"author":{"gitId":"-"},"content":"```"},{"lineNumber":356,"author":{"gitId":"-"},"content":""},{"lineNumber":357,"author":{"gitId":"-"},"content":"Consider the line `\u003cinclude src\u003d\"chapter1/chapter.md\" boilerplate /\u003e`. Note how you can use `src\u003d\"chapter1/chapter.md\"` even though there is no such file. MarkBind will use the `chapter.md` file from `/_markbind/boilerplates/` but interpret it as if the file exists in the `chapter1` directory (i.e., interpret the `chapter.md` code relative to the `chapter1` directory)."},{"lineNumber":358,"author":{"gitId":"-"},"content":""},{"lineNumber":359,"author":{"gitId":"-"},"content":"Similarly, `\u003cinclude src\u003d\"chapter2/chapter.md\" boilerplate /\u003e` interprets the `chapter.md` relative to the `chapter2` directory."},{"lineNumber":360,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":361,"author":{"gitId":"-"},"content":""},{"lineNumber":362,"author":{"gitId":"-"},"content":"If you have many boilerplate files, you can organize them into directories inside the `_markbind` directory. When using such boilerplate files, you need to replace `boilerplate` attribute with `boilerplate\u003d\"\u003cpath to file relative to _markbind/boilerplates\u003e\"`."},{"lineNumber":363,"author":{"gitId":"-"},"content":""},{"lineNumber":364,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":365,"author":{"gitId":"-"},"content":""},{"lineNumber":366,"author":{"gitId":"-"},"content":"{{ icon_example }} Suppose the `chapter.md` is places in a `book` directory:"},{"lineNumber":367,"author":{"gitId":"-"},"content":"\u003ctree\u003e"},{"lineNumber":368,"author":{"gitId":"-"},"content":"C:/mySite/"},{"lineNumber":369,"author":{"gitId":"-"},"content":" _markbind/boilerplates/"},{"lineNumber":370,"author":{"gitId":"-"},"content":" book/"},{"lineNumber":371,"author":{"gitId":"-"},"content":" chapter.md"},{"lineNumber":372,"author":{"gitId":"-"},"content":"\u003c/tree\u003e"},{"lineNumber":373,"author":{"gitId":"-"},"content":""},{"lineNumber":374,"author":{"gitId":"-"},"content":"It needs to be used as follows:"},{"lineNumber":375,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":376,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter1/chapter.md\" boilerplate\u003d\"book/chapter.md\" /\u003e"},{"lineNumber":377,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter2/chapter.md\" boilerplate\u003d\"book/chapter.md\" /\u003e"},{"lineNumber":378,"author":{"gitId":"-"},"content":"```"},{"lineNumber":379,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":380,"author":{"gitId":"-"},"content":""},{"lineNumber":381,"author":{"gitId":"-"},"content":""},{"lineNumber":382,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"short\" class\u003d\"d-none\"\u003e"},{"lineNumber":383,"author":{"gitId":"-"},"content":""},{"lineNumber":384,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":385,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"foo.md#bar\" boilerplate inline trim\u003e"},{"lineNumber":386,"author":{"gitId":"-"},"content":" \u003cvariable name\u003d\"x\"\u003e5\u003c/variable\u003e"},{"lineNumber":387,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":388,"author":{"gitId":"-"},"content":"```"},{"lineNumber":389,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"-":387,"yiwen101":2}},{"path":"docs/userGuide/syntax/panels.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"{% from \"userGuide/components/advanced.md\" import slot_info_trigger %}"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Panels"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"**Panel is a flexible container that supports collapsing and expanding its content. It is expandable by default.**"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"This is your header for a Panel, click me to expand!\"\u003e"},{"lineNumber":11,"author":{"gitId":"yiwen101"},"content":"\u003cmarkdown\u003e_markdown_\u003c/markdown\u003e"},{"lineNumber":12,"author":{"gitId":"yiwen101"},"content":"plain text ..."},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"**With `minimized` attribute, panel is minimized into an inline block element. The `alt` attribute is for you to specify the minimized block header.**"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"How to cultivate a tomato plant at home\" alt\u003d\"Tomatoes\" minimized\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Lorem ipsum ..."},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"**With `expanded` attribute, you can set the panels to be expanded when loaded in.**"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Have your readers click less to see the Panel\u0027s contents\" expanded\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Lorem ipsum ..."},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":"**With the `expand-headerless` attribute, you can hide the panel header when it is expanded.**"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"This header will only show when the Panel is collapsed\" expand-headerless\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Lorem ipsum ..."},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":"**With the `peek` attribute, you may showcase part of your content without expanding the panel.**"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Give your readers a peek of the content without expanding Panel\" peek\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore"},{"lineNumber":57,"author":{"gitId":"-"},"content":" magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo"},{"lineNumber":58,"author":{"gitId":"-"},"content":" consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."},{"lineNumber":59,"author":{"gitId":"-"},"content":" Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."},{"lineNumber":60,"author":{"gitId":"-"},"content":" Curabitur ornare ipsum eu ex congue egestas. Maecenas pretium nibh sed enim ornare finibus. Mauris quis metus "},{"lineNumber":61,"author":{"gitId":"-"},"content":" facilisis, mattis tellus nec, pulvinar mi. Quisque at vehicula lectus. Ut ac lacus mi. Donec mattis nec velit "},{"lineNumber":62,"author":{"gitId":"-"},"content":" eget tincidunt. Maecenas vel mauris mattis nisl tempor sollicitudin. Orci varius natoque penatibus et magnis "},{"lineNumber":63,"author":{"gitId":"-"},"content":" dis parturient montes, nascetur ridiculus mus. Duis tincidunt diam eu dolor pellentesque, eget dignissim tortor "},{"lineNumber":64,"author":{"gitId":"-"},"content":" pellentesque. "},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":"**Panel provides many types that change its appearance.**"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**light type panel (DEFAULT)**\" type\u003d\"light\" minimized\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":76,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**dark type panel**\" type\u003d\"dark\" minimized\u003e"},{"lineNumber":78,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":80,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**primary type panel**\" type\u003d\"primary\" minimized\u003e"},{"lineNumber":81,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**secondary type panel**\" type\u003d\"secondary\" minimized\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**info type panel**\" type\u003d\"info\" minimized\u003e"},{"lineNumber":87,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**danger type panel**\" type\u003d\"danger\" minimized\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**warning type panel**\" type\u003d\"warning\" minimized\u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**success type panel**\" type\u003d\"success\" minimized\u003e"},{"lineNumber":96,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**seamless type panel**\" type\u003d\"seamless\" minimized\u003e"},{"lineNumber":99,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**minimal type panel**\" type\u003d\"minimal\" minimized\u003e"},{"lineNumber":102,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":103,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":104,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":105,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":"**Show/Hide buttons using `no-switch`, `no-close`, or `no-minimized-switch`.**"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":113,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**This minimized panel does not have a switch button**\" minimized no-minimized-switch\u003e"},{"lineNumber":114,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":115,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"This panel does not have a switch button\" no-switch\u003e"},{"lineNumber":117,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":118,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"This panel does not have a close button\" no-close\u003e"},{"lineNumber":120,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"This panel does not have either buttons\" no-close no-switch\u003e"},{"lineNumber":123,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":124,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":126,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":"**Use markdown in the header (only inline level markdown are supported).**"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**Bold text** :rocket: ![](https://markbind.org/images/logo-lightbackground.png \u003dx20)\" type\u003d\"seamless\"\u003e"},{"lineNumber":134,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":"**If `src` attribute is provided, the panel will take content from the `src` specified and add it to the Panel body.**"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Content loaded in from \u0027src\u0027\" src\u003d\"extra/loadContent.html#fragment\" minimized\u003e\u003c/panel\u003e"},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":147,"author":{"gitId":"-"},"content":""},{"lineNumber":148,"author":{"gitId":"yiwen101"},"content":"\u003cdiv id \u003d \"script_and_styles_warning\"\u003e"},{"lineNumber":149,"author":{"gitId":"yiwen101"},"content":"\u003cbox type \u003d \"warning\" header \u003d \"#### Global Effects of the Script and Styles from the Imported Externals\"\u003e"},{"lineNumber":150,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":151,"author":{"gitId":"yiwen101"},"content":"Importing external resources that contains `script` or `styles` can inadvertently take global effects on your MarkBind website. Due to hoisting during processing, imported scripts and stylesheets affect the entire page. This could potentially alter its appearance and behavior beyond the intended scope."},{"lineNumber":152,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":153,"author":{"gitId":"yiwen101"},"content":"For example, if a CSS file imported via such means styles headings to be red, this change will be reflected page-wide."},{"lineNumber":154,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":155,"author":{"gitId":"yiwen101"},"content":"To safeguard against unintended consequences, consider directly incorporating the code or customizing styles to target specific elements or classes not used universally. This approach grants more precise control over your website\u0027s presentation and reduces the risk of unexpected changes."},{"lineNumber":156,"author":{"gitId":"yiwen101"},"content":"\u003c/box\u003e"},{"lineNumber":157,"author":{"gitId":"yiwen101"},"content":"\u003c/div\u003e"},{"lineNumber":158,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":"**If `popup-url` attribute is provided, a popup button will be shown. If clicked, it opens the specified url in a new window.**"},{"lineNumber":160,"author":{"gitId":"-"},"content":""},{"lineNumber":161,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":162,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":163,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":164,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Try clicking on my pop-up button\" popup-url\u003d\"{{ baseUrl }}/userGuide/syntax/extra/loadContent.html\"\u003e"},{"lineNumber":165,"author":{"gitId":"-"},"content":" This panel has a popup."},{"lineNumber":166,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":167,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":169,"author":{"gitId":"-"},"content":""},{"lineNumber":170,"author":{"gitId":"-"},"content":"**If `preload` attribute is provided, the panel body will load the HTML when the page renders instead of after being expanded.**"},{"lineNumber":171,"author":{"gitId":"-"},"content":""},{"lineNumber":172,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":175,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Right click and inspect my HTML before expanding me!\" src\u003d\"extra/loadContent.html#fragment\" preload\u003e"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003cp\u003eYou should be able to find this text before expanding the Panel.\u003c/p\u003e"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":180,"author":{"gitId":"-"},"content":""},{"lineNumber":181,"author":{"gitId":"-"},"content":"**You can nest Panels or other components within a Panel.**"},{"lineNumber":182,"author":{"gitId":"-"},"content":""},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Parent Panel\"\u003e"},{"lineNumber":187,"author":{"gitId":"-"},"content":" \u003cpanel header\u003d\"Level 1 Nested Panel\"\u003e"},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003cpanel header\u003d\"Level 2 Nested Panel\"\u003e"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"success\"\u003e"},{"lineNumber":190,"author":{"gitId":"-"},"content":" I\u0027m a nested box"},{"lineNumber":191,"author":{"gitId":"-"},"content":" \u003c/box\u003e"},{"lineNumber":192,"author":{"gitId":"-"},"content":" \u003cpanel header\u003d\"Level 3 Nested Panel\" type\u003d\"minimal\"\u003e"},{"lineNumber":193,"author":{"gitId":"-"},"content":" minimal-type panel"},{"lineNumber":194,"author":{"gitId":"-"},"content":" \u003c/panel\u003e"},{"lineNumber":195,"author":{"gitId":"-"},"content":" \u003c/panel\u003e"},{"lineNumber":196,"author":{"gitId":"-"},"content":" \u003c/panel\u003e"},{"lineNumber":197,"author":{"gitId":"-"},"content":" \u003cpanel header\u003d\"Level 1 Nested Panel\" type\u003d\"info\"\u003e"},{"lineNumber":198,"author":{"gitId":"-"},"content":" Some Text"},{"lineNumber":199,"author":{"gitId":"-"},"content":" \u003c/panel\u003e"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":203,"author":{"gitId":"-"},"content":""},{"lineNumber":204,"author":{"gitId":"-"},"content":"****Options****"},{"lineNumber":205,"author":{"gitId":"-"},"content":"Name | Type | Default | Description"},{"lineNumber":206,"author":{"gitId":"-"},"content":"--- | --- | --- | ---"},{"lineNumber":207,"author":{"gitId":"-"},"content":"header{{slot_info_trigger}} | `String` | `\u0027\u0027` | The clickable text on the Panel\u0027s header. Supports MarkDown text."},{"lineNumber":208,"author":{"gitId":"-"},"content":"alt | `String` | Panel header | The clickable text on the minimised Panel. Supports MarkDown text."},{"lineNumber":209,"author":{"gitId":"-"},"content":"expandable | `Boolean`| `true` | Whether Panel is expandable."},{"lineNumber":210,"author":{"gitId":"-"},"content":"expanded | `Boolean` | `false` | Whether Panel is expanded or collapsed when loaded in."},{"lineNumber":211,"author":{"gitId":"-"},"content":"minimized | `Boolean` | `false` | Whether Panel is minimized."},{"lineNumber":212,"author":{"gitId":"-"},"content":"expand-headerless | `Boolean` | `false` | Whether to hide the header text when the Panel is expanded."},{"lineNumber":213,"author":{"gitId":"-"},"content":"peek | `Boolean` | `false` | Whether to show part of the content when the Panel is collapsed."},{"lineNumber":214,"author":{"gitId":"-"},"content":"no-close | `Boolean` | `false` | Whether to show the close button."},{"lineNumber":215,"author":{"gitId":"-"},"content":"no-switch | `Boolean` | `false` | Whether to show the expand switch."},{"lineNumber":216,"author":{"gitId":"-"},"content":"bottom-switch | `Boolean` | `true` | Whether to show an expand switch at the bottom of the panel. Independent of no-switch."},{"lineNumber":217,"author":{"gitId":"-"},"content":"popup-url | `String` | | The URL that the popup window will navigate to. The URL can be absolute or relative."},{"lineNumber":218,"author":{"gitId":"-"},"content":"preload | `Boolean` | `false` | Whether the content is loaded immediately from `src`."},{"lineNumber":219,"author":{"gitId":"-"},"content":"src | `String` | | The URL to the remote page to be loaded as the content of the panel."},{"lineNumber":220,"author":{"gitId":"-"},"content":"type | `String` | `light` | The type or color scheme of the panel (single).\u003cbr\u003eSupports: `light`, `dark`, `primary`, `secondary`, `info`, `success`, `warning`, `danger`, `seamless`, `minimal`."},{"lineNumber":221,"author":{"gitId":"-"},"content":""},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"short\" class\u003d\"d-none\"\u003e"},{"lineNumber":223,"author":{"gitId":"-"},"content":""},{"lineNumber":224,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"primary type panel\" type\u003d\"primary\" \u003e"},{"lineNumber":226,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":227,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":228,"author":{"gitId":"-"},"content":"```"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":230,"author":{"gitId":"-"},"content":""},{"lineNumber":231,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"examples\" class\u003d\"d-none\"\u003e"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"minimal type panel\" type\u003d\"minimal\" \u003e"},{"lineNumber":233,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":235,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"seamless type panel\" type\u003d\"seamless\" \u003e"},{"lineNumber":236,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"info type panel\" type\u003d\"info\" expanded\u003e"},{"lineNumber":239,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":240,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"danger type panel\" type\u003d\"danger\" \u003e"},{"lineNumber":242,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":243,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":244,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"warning type panel\" type\u003d\"warning\" \u003e"},{"lineNumber":245,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":246,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":247,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"success type panel\" type\u003d\"success\" \u003e"},{"lineNumber":248,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":249,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":250,"author":{"gitId":"-"},"content":"\u003cp/\u003e"},{"lineNumber":251,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"light type panel (DEFAULT)\" type\u003d\"light\" minimized\u003e"},{"lineNumber":252,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":253,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":254,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"dark type panel\" type\u003d\"dark\" minimized\u003e"},{"lineNumber":255,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":256,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":257,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"primary type panel\" type\u003d\"primary\" minimized\u003e"},{"lineNumber":258,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":259,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"secondary type panel\" type\u003d\"secondary\" minimized\u003e"},{"lineNumber":261,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":262,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":263,"author":{"gitId":"-"},"content":""},{"lineNumber":264,"author":{"gitId":"-"},"content":""},{"lineNumber":265,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"-":252,"yiwen101":13}},{"path":"docs/userGuide/syntax/tabs.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"## Tabs"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003ctabs\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"First tab\"\u003e"},{"lineNumber":8,"author":{"gitId":"yiwen101"},"content":" Text in the first tab"},{"lineNumber":9,"author":{"gitId":"yiwen101"},"content":" \u003cmarkdown\u003e_some markdown_\u003c/markdown\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Disabled second tab :x:\" disabled\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Tab not printed\" class\u003d\"d-print-none\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" This tab will not be printed."},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003ctab-group header\u003d\"Third tab group :milky_way:\"\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Stars :star:\"\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Some stuff about stars ..."},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Disabled Moon :new_moon:\" disabled\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/tab-group\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003ctab-group header\u003d\"Disabled fourth tab group\" disabled\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Hidden tab\"\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ullamcorper ultrices lobortis."},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/tab-group\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":"\u003c/tabs\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"****Options****"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":"`tabs`:"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Name | Type | Default | Description"},{"lineNumber":36,"author":{"gitId":"-"},"content":"--- | --- | --- | ---"},{"lineNumber":37,"author":{"gitId":"-"},"content":"active | `Number` | `0` | Active Tab index (0-based)"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":"`tab`:"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Name | Type | Default | Description"},{"lineNumber":41,"author":{"gitId":"-"},"content":"--- | --- | --- | ---"},{"lineNumber":42,"author":{"gitId":"-"},"content":"header | `String` | `null` | Tab title."},{"lineNumber":43,"author":{"gitId":"-"},"content":"disabled | `Boolean` | `false` | Whether Tab is clickable and can be activated."},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":"`tab-group`:"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Name | Type | Default | Description"},{"lineNumber":47,"author":{"gitId":"-"},"content":"--- | --- | --- | ---"},{"lineNumber":48,"author":{"gitId":"-"},"content":"header | `String` | `null` | Tab Group title."},{"lineNumber":49,"author":{"gitId":"-"},"content":"disabled | `Boolean` | `false` | Whether Tab Group is clickable and can be activated."},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\"\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":"Tabs, tab group and individual tab can be omitted during printing by adding Bootstrap\u0027s display property `class\u003d\"d-print-none\"` to the respective components."},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"short\" class\u003d\"d-none\"\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003ctabs\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"First tab\"\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Content of the first tab"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Second tab\"\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Contents of the second tab"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003ctab-group header\u003d\"Third tab group :tv:\"\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Stars :star:\"\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Some stuff about stars ..."},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Moon\"\u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Some stuff about the moon ..."},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003c/tab-group\u003e"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003c/tabs\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":"```"},{"lineNumber":76,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"examples\" class\u003d\"d-none\"\u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":"\u003ctabs\u003e"},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"First tab\"\u003e"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Content of the first tab"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Second tab\"\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Contents of the second tab"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003ctab-group header\u003d\"Third tab group :tv:\"\u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Stars :star:\"\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Some stuff about stars ..."},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Moon\"\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Some stuff about the moon ..."},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003c/tab-group\u003e"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003c/tabs\u003e"},{"lineNumber":96,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"-":94,"yiwen101":2}},{"path":"docs/userGuide/troubleshooting.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"{% set title \u003d \"Troubleshooting\" %}"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"title\" class\u003d\"d-none\"\u003e{{ title }}\u003c/span\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003cfrontmatter\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" title: \"User Guide: {{ title | safe }}\""},{"lineNumber":6,"author":{"gitId":"-"},"content":" layout: userGuide.md"},{"lineNumber":7,"author":{"gitId":"-"},"content":" pageNav: 5"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/frontmatter\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"# {{ title | safe }}"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"##### HTML Rendering Issues"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"Unexpected behavior can occur in rendered pages due to a number of different reasons. One of these reasons is when the rendered pages are not valid HTML."},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"Incorrect HTML markup can be due to:"},{"lineNumber":17,"author":{"gitId":"-"},"content":"- nesting block-level elements inside `\u003cp\u003e` or `\u003cspan\u003e` elements"},{"lineNumber":18,"author":{"gitId":"-"},"content":"- missing `\u003ctbody\u003e` tags"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"###### Example: block-level elements inside `\u003cspan\u003e` elements"},{"lineNumber":21,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"example\"\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"Animal | Trainable? | Price | Remarks"},{"lineNumber":26,"author":{"gitId":"-"},"content":":------|:----------:|------:|--------"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Ants | no | 5 |"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Bees | no | 20 |"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Cats | yes | 100 |"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":"```"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"yiwen101"},"content":"The table specified by the Markdown syntax above will be rendered as a block-level element, which will be included in a inline span element. This makes the HTML output invalid."},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Underlying Error (Example)\" type\u003d\"seamless\"\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":"```"},{"lineNumber":38,"author":{"gitId":"-"},"content":"vue.js:634 [Vue warn]: The client-side rendered virtual DOM tree is not matching server-rendered content."},{"lineNumber":39,"author":{"gitId":"-"},"content":"This is likely caused by incorrect HTML markup, for example nesting block-level elements inside `\u003cp\u003e`,"},{"lineNumber":40,"author":{"gitId":"-"},"content":"or missing `\u003ctbody\u003e`."},{"lineNumber":41,"author":{"gitId":"-"},"content":"Bailing hydration and performing full client-side render."},{"lineNumber":42,"author":{"gitId":"-"},"content":"```"},{"lineNumber":43,"author":{"gitId":"-"},"content":"See [SSR guide for Vue](https://vuejs.org/guide/scaling-up/ssr.html#hydration-mismatch) for more details on hydration mismatch."},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":"A possible fix for the above situation is to wrap the table in a `\u003cdiv\u003e` element instead:"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"example\"\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"Animal | Trainable? | Price | Remarks"},{"lineNumber":53,"author":{"gitId":"-"},"content":":------|:----------:|------:|--------"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Ants | no | 5 |"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Bees | no | 20 |"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Cats | yes | 100 |"},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":"```"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"yiwen101"},"content":"##### Markdown Rendering Issues"},{"lineNumber":61,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":62,"author":{"gitId":"yiwen101"},"content":"If you encounter issues in rendering Markdown in a component, it is likely that the Markdown is not being properly recognized due to syntax errors. Signposting is required to inform Markdown to parse the content of a presentation component as Markdown rather than plain text."},{"lineNumber":63,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":64,"author":{"gitId":"yiwen101"},"content":"You could signpost Markdown either by:"},{"lineNumber":65,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":66,"author":{"gitId":"yiwen101"},"content":"- using the `\u003cmarkdown\u003e`(block level elements) or `\u003cmd\u003e`(inline level elements) tags to wrap the Markdown content."},{"lineNumber":67,"author":{"gitId":"yiwen101"},"content":"- using an empty line without any indentation before the Markdown content"},{"lineNumber":68,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":69,"author":{"gitId":"yiwen101"},"content":"###### Example: correct Markdown rendering using tags or newline:"},{"lineNumber":70,"author":{"gitId":"yiwen101"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":71,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":72,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":73,"author":{"gitId":"yiwen101"},"content":"\u003cbox\u003e"},{"lineNumber":74,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":75,"author":{"gitId":"yiwen101"},"content":"**Example1**"},{"lineNumber":76,"author":{"gitId":"yiwen101"},"content":"\u003c/box\u003e"},{"lineNumber":77,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":78,"author":{"gitId":"yiwen101"},"content":"\u003cbox\u003e "},{"lineNumber":79,"author":{"gitId":"yiwen101"},"content":"\u003cmd\u003e **Example2** \u003c/md\u003e "},{"lineNumber":80,"author":{"gitId":"yiwen101"},"content":"\u003c/box\u003e"},{"lineNumber":81,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":82,"author":{"gitId":"yiwen101"},"content":"\u003cbox\u003e "},{"lineNumber":83,"author":{"gitId":"yiwen101"},"content":"\u003cmarkdown\u003e **Example3** \u003c/markdown\u003e "},{"lineNumber":84,"author":{"gitId":"yiwen101"},"content":"\u003c/box\u003e"},{"lineNumber":85,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":86,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":87,"author":{"gitId":"yiwen101"},"content":"\u003c/variable\u003e"},{"lineNumber":88,"author":{"gitId":"yiwen101"},"content":"\u003c/include\u003e"},{"lineNumber":89,"author":{"gitId":"yiwen101"},"content":"\u003cpanel header\u003d\"###### Example: Markdown not rendered without singposting\" type\u003d\"seamless\"\u003e"},{"lineNumber":90,"author":{"gitId":"yiwen101"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":91,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":92,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":93,"author":{"gitId":"yiwen101"},"content":"\u003cbox\u003e **This will be rendered as plain text**\u003c/box\u003e"},{"lineNumber":94,"author":{"gitId":"yiwen101"},"content":"\u003c/variable\u003e"},{"lineNumber":95,"author":{"gitId":"yiwen101"},"content":"\u003c/include\u003e"},{"lineNumber":96,"author":{"gitId":"yiwen101"},"content":"\u003c/panel\u003e"}],"authorContributionMap":{"-":58,"yiwen101":38}},{"path":"packages/cli/index.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env node"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"// Entry file for MarkBind project"},{"lineNumber":4,"author":{"gitId":"-"},"content":"const program \u003d require(\u0027commander\u0027);"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"const logger \u003d require(\u0027./src/util/logger\u0027);"},{"lineNumber":7,"author":{"gitId":"-"},"content":"const { build } \u003d require(\u0027./src/cmd/build\u0027);"},{"lineNumber":8,"author":{"gitId":"-"},"content":"const { deploy } \u003d require(\u0027./src/cmd/deploy\u0027);"},{"lineNumber":9,"author":{"gitId":"-"},"content":"const { init } \u003d require(\u0027./src/cmd/init\u0027);"},{"lineNumber":10,"author":{"gitId":"-"},"content":"const { serve } \u003d require(\u0027./src/cmd/serve\u0027);"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"const CLI_VERSION \u003d require(\u0027./package.json\u0027).version;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"process.title \u003d \u0027MarkBind\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"process.stdout.write("},{"lineNumber":16,"author":{"gitId":"-"},"content":" `${String.fromCharCode(27)}]0; MarkBind${String.fromCharCode(7)}`,"},{"lineNumber":17,"author":{"gitId":"-"},"content":");"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"function printHeader() {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" logger.logo();"},{"lineNumber":21,"author":{"gitId":"-"},"content":" logger.log(` v${CLI_VERSION}`);"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"program"},{"lineNumber":25,"author":{"gitId":"-"},"content":" .addHelpText(\u0027beforeAll\u0027, printHeader())"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .showHelpAfterError(\u0027(run \"markbind --help\" to list commands)\u0027);"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"program"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .allowUnknownOption()"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .usage(\u0027\u003ccommand\u003e\u0027);"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"program"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .name(\u0027markbind\u0027)"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .version(CLI_VERSION);"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":"program"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .command(\u0027init [root]\u0027)"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .option(\u0027-c, --convert\u0027, \u0027convert a GitHub wiki or docs folder to a MarkBind website\u0027)"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .option(\u0027-t, --template \u003ctype\u003e\u0027, \u0027initialise markbind with a specified template\u0027, \u0027default\u0027)"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .alias(\u0027i\u0027)"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .description(\u0027init a markbind website project\u0027)"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .action((root, options) \u003d\u003e {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" init(root, options);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" });"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":"program"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .command(\u0027serve [root]\u0027)"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .alias(\u0027s\u0027)"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .option(\u0027-f, --force-reload\u0027, \u0027force a full reload of all site files when a file is changed\u0027)"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .option(\u0027-n, --no-open\u0027, \u0027do not automatically open the site in browser\u0027)"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .option(\u0027-o, --one-page [file]\u0027, \u0027build and serve only a single page in the site initially,\u0027"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \u0027building more pages when they are navigated to. Also lazily rebuilds only the page being viewed when\u0027"},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \u0027there are changes to the source files (if needed), building others when navigated to\u0027)"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .option(\u0027-b, --background-build\u0027, \u0027when --one-page is specified, enhances one-page serve by building\u0027"},{"lineNumber":55,"author":{"gitId":"-"},"content":" + \u0027remaining pages in the background\u0027)"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .option(\u0027-p, --port \u003cport\u003e\u0027, \u0027port for server to listen on (Default is 8080)\u0027)"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .option(\u0027-s, --site-config \u003cfile\u003e\u0027, \u0027specify the site config file (default: site.json)\u0027)"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .option(\u0027-d, --dev\u0027, \u0027development mode, enabling live \u0026 hot reload for frontend source files.\u0027)"},{"lineNumber":59,"author":{"gitId":"LamJiuFong"},"content":" .option(\u0027-a, --address \u003caddress\u003e\u0027, \u0027specify the server address/host (Default is 127.0.0.1)\u0027)"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .description(\u0027build then serve a website from a directory\u0027)"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .action((userSpecifiedRoot, options) \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" serve(userSpecifiedRoot, options);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" });"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":"program"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .command(\u0027build [root] [output]\u0027)"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .alias(\u0027b\u0027)"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .option(\u0027--baseUrl [baseUrl]\u0027,"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u0027optional flag which overrides baseUrl in site.json, leave argument empty for empty baseUrl\u0027)"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .option(\u0027-s, --site-config \u003cfile\u003e\u0027, \u0027specify the site config file (default: site.json)\u0027)"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .description(\u0027build a website\u0027)"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .action((userSpecifiedRoot, output, options) \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" build(userSpecifiedRoot, output, options);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" });"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":"program"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .command(\u0027deploy [root]\u0027)"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .alias(\u0027d\u0027)"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .option(\u0027-c, --ci [githubTokenName]\u0027, \u0027deploy the site in CI Environment [GITHUB_TOKEN]\u0027)"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .option(\u0027-n, --no-build\u0027, \u0027do not automatically build the site before deployment\u0027)"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .option(\u0027-s, --site-config \u003cfile\u003e\u0027, \u0027specify the site config file (default: site.json)\u0027)"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .description(\u0027deploy the latest build of the site to the repo\\\u0027s Github pages\u0027)"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .action((userSpecifiedRoot, options) \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" deploy(userSpecifiedRoot, options);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" });"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":"program.parse(process.argv);"}],"authorContributionMap":{"LamJiuFong":1,"-":86}},{"path":"packages/cli/src/cmd/serve.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"const chokidar \u003d require(\u0027chokidar\u0027);"},{"lineNumber":2,"author":{"gitId":"-"},"content":"const path \u003d require(\u0027path\u0027);"},{"lineNumber":3,"author":{"gitId":"LamJiuFong"},"content":"const readline \u003d require(\u0027readline\u0027);"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"const { Site } \u003d require(\u0027@markbind/core\u0027).Site;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"const { pageVueServerRenderer } \u003d require(\u0027@markbind/core/src/Page/PageVueServerRenderer\u0027);"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"const fsUtil \u003d require(\u0027@markbind/core/src/utils/fsUtil\u0027);"},{"lineNumber":9,"author":{"gitId":"-"},"content":"const { INDEX_MARKDOWN_FILE } \u003d require(\u0027@markbind/core/src/Site/constants\u0027);"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"const cliUtil \u003d require(\u0027../util/cliUtil\u0027);"},{"lineNumber":12,"author":{"gitId":"-"},"content":"const liveServer \u003d require(\u0027../lib/live-server\u0027);"},{"lineNumber":13,"author":{"gitId":"-"},"content":"const logger \u003d require(\u0027../util/logger\u0027);"},{"lineNumber":14,"author":{"gitId":"-"},"content":"const {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" addHandler,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" changeHandler,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" lazyReloadMiddleware,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" removeHandler,"},{"lineNumber":19,"author":{"gitId":"-"},"content":"} \u003d require(\u0027../util/serveUtil\u0027);"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"LamJiuFong"},"content":"function isIPAddressZero(address) {"},{"lineNumber":22,"author":{"gitId":"LamJiuFong"},"content":" const patternForZero \u003d /^0(\\.0)*$/;"},{"lineNumber":23,"author":{"gitId":"LamJiuFong"},"content":""},{"lineNumber":24,"author":{"gitId":"LamJiuFong"},"content":" return patternForZero.test(address);"},{"lineNumber":25,"author":{"gitId":"LamJiuFong"},"content":"}"},{"lineNumber":26,"author":{"gitId":"LamJiuFong"},"content":""},{"lineNumber":27,"author":{"gitId":"LamJiuFong"},"content":"function questionAsync(question) {"},{"lineNumber":28,"author":{"gitId":"LamJiuFong"},"content":" const readlineInterface \u003d readline.createInterface({ input: process.stdin, output: process.stdout });"},{"lineNumber":29,"author":{"gitId":"LamJiuFong"},"content":""},{"lineNumber":30,"author":{"gitId":"LamJiuFong"},"content":" return new Promise((resolve) \u003d\u003e {"},{"lineNumber":31,"author":{"gitId":"LamJiuFong"},"content":" readlineInterface.question(question, (response) \u003d\u003e {"},{"lineNumber":32,"author":{"gitId":"LamJiuFong"},"content":" readlineInterface.close();"},{"lineNumber":33,"author":{"gitId":"LamJiuFong"},"content":" resolve(response);"},{"lineNumber":34,"author":{"gitId":"LamJiuFong"},"content":" });"},{"lineNumber":35,"author":{"gitId":"LamJiuFong"},"content":" });"},{"lineNumber":36,"author":{"gitId":"LamJiuFong"},"content":"}"},{"lineNumber":37,"author":{"gitId":"LamJiuFong"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"function serve(userSpecifiedRoot, options) {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (options.dev) {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.useDebugConsole();"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" let rootFolder;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" rootFolder \u003d cliUtil.findRootFolder(userSpecifiedRoot, options.siteConfig);"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (options.forceReload \u0026\u0026 options.onePage) {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.error(\u0027Oops! You shouldn\\\u0027t need to use the --force-reload option with --one-page.\u0027);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" process.exitCode \u003d 1;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" process.exit();"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":" } catch (error) {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.error(error.message);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" process.exitCode \u003d 1;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" const logsFolder \u003d path.join(rootFolder, \u0027_markbind/logs\u0027);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const outputFolder \u003d path.join(rootFolder, \u0027_site\u0027);"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" const presentDefaultFile \u003d fsUtil.fileExists(INDEX_MARKDOWN_FILE) ? INDEX_MARKDOWN_FILE : false;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (options.onePage \u003d\u003d\u003d true \u0026\u0026 !presentDefaultFile) {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" logger.error(\u0027Oops! It seems that you didn\\\u0027t have the default file index.md.\u0027);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" process.exitCode \u003d 1;"},{"lineNumber":64,"author":{"gitId":"-"},"content":" process.exit();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":" let onePagePath \u003d options.onePage \u003d\u003d\u003d true ? presentDefaultFile : options.onePage;"},{"lineNumber":67,"author":{"gitId":"-"},"content":" onePagePath \u003d onePagePath ? fsUtil.ensurePosix(onePagePath) : onePagePath;"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" const reloadAfterBackgroundBuild \u003d () \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" logger.info(\u0027All opened pages will be reloaded.\u0027);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" liveServer.reloadActiveTabs();"},{"lineNumber":72,"author":{"gitId":"-"},"content":" };"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" const site \u003d new Site(rootFolder, outputFolder, onePagePath,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" options.forceReload, options.siteConfig, options.dev,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" options.backgroundBuild, reloadAfterBackgroundBuild);"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" // server config"},{"lineNumber":79,"author":{"gitId":"-"},"content":" const serverConfig \u003d {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" open: options.open,"},{"lineNumber":81,"author":{"gitId":"-"},"content":" logLevel: 0,"},{"lineNumber":82,"author":{"gitId":"-"},"content":" root: outputFolder,"},{"lineNumber":83,"author":{"gitId":"-"},"content":" port: options.port || 8080,"},{"lineNumber":84,"author":{"gitId":"LamJiuFong"},"content":" host: options.address || \u0027127.0.0.1\u0027,"},{"lineNumber":85,"author":{"gitId":"-"},"content":" middleware: [],"},{"lineNumber":86,"author":{"gitId":"-"},"content":" mount: [],"},{"lineNumber":87,"author":{"gitId":"-"},"content":" };"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" site"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .readSiteConfig()"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .then(async (config) \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"LamJiuFong"},"content":" if (isIPAddressZero(serverConfig.host)) {"},{"lineNumber":93,"author":{"gitId":"LamJiuFong"},"content":" const response \u003d await questionAsync("},{"lineNumber":94,"author":{"gitId":"LamJiuFong"},"content":" \u0027WARNING: Using the address \\\u00270.0.0.0\\\u0027 could potentially expose your server to the internet, \u0027"},{"lineNumber":95,"author":{"gitId":"LamJiuFong"},"content":" + \u0027which may pose security risks. \\n\u0027"},{"lineNumber":96,"author":{"gitId":"LamJiuFong"},"content":" + \u0027Proceed with caution? [y/N] \u0027);"},{"lineNumber":97,"author":{"gitId":"LamJiuFong"},"content":" if (response.toLowerCase() \u003d\u003d\u003d \u0027y\u0027) {"},{"lineNumber":98,"author":{"gitId":"LamJiuFong"},"content":" logger.info(\u0027Proceeding to generate website\u0027);"},{"lineNumber":99,"author":{"gitId":"LamJiuFong"},"content":" } else {"},{"lineNumber":100,"author":{"gitId":"LamJiuFong"},"content":" logger.info(\u0027Website generation is cancelled.\u0027);"},{"lineNumber":101,"author":{"gitId":"LamJiuFong"},"content":" process.exit();"},{"lineNumber":102,"author":{"gitId":"LamJiuFong"},"content":" }"},{"lineNumber":103,"author":{"gitId":"LamJiuFong"},"content":" }"},{"lineNumber":104,"author":{"gitId":"LamJiuFong"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" serverConfig.mount.push([config.baseUrl || \u0027/\u0027, outputFolder]);"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (options.dev) {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // eslint-disable-next-line global-require"},{"lineNumber":109,"author":{"gitId":"-"},"content":" const webpackDevConfig \u003d require(\u0027@markbind/core-web/webpack.dev\u0027);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" await webpackDevConfig.serverEntry(pageVueServerRenderer.updateMarkBindVueBundle, rootFolder);"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" const getMiddlewares \u003d webpackDevConfig.clientEntry;"},{"lineNumber":113,"author":{"gitId":"-"},"content":" getMiddlewares(`${config.baseUrl}/markbind`)"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .forEach(middleware \u003d\u003e serverConfig.middleware.push(middleware));"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (onePagePath) {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" const onePageHtmlUrl \u003d `${config.baseUrl}/${onePagePath.replace(/\\.md$/, \u0027.html\u0027)}`;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" serverConfig.open \u003d serverConfig.open \u0026\u0026 onePageHtmlUrl;"},{"lineNumber":120,"author":{"gitId":"-"},"content":" serverConfig.middleware.push(lazyReloadMiddleware(site, rootFolder, config));"},{"lineNumber":121,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" serverConfig.open \u003d serverConfig.open \u0026\u0026 `${config.baseUrl}/`;"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" return site.generate();"},{"lineNumber":126,"author":{"gitId":"-"},"content":" })"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" const watcher \u003d chokidar.watch(rootFolder, {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" ignored: ["},{"lineNumber":130,"author":{"gitId":"-"},"content":" logsFolder,"},{"lineNumber":131,"author":{"gitId":"-"},"content":" outputFolder,"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /(^|[/\\\\])\\../,"},{"lineNumber":133,"author":{"gitId":"-"},"content":" x \u003d\u003e x.endsWith(\u0027___jb_tmp___\u0027), x \u003d\u003e x.endsWith(\u0027___jb_old___\u0027), // IDE temp files"},{"lineNumber":134,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":135,"author":{"gitId":"-"},"content":" ignoreInitial: true,"},{"lineNumber":136,"author":{"gitId":"-"},"content":" });"},{"lineNumber":137,"author":{"gitId":"-"},"content":" watcher"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .on(\u0027add\u0027, addHandler(site, onePagePath))"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .on(\u0027change\u0027, changeHandler(site, onePagePath))"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .on(\u0027unlink\u0027, removeHandler(site, onePagePath));"},{"lineNumber":141,"author":{"gitId":"-"},"content":" })"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" const server \u003d liveServer.start(serverConfig);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" server.addListener(\u0027listening\u0027, () \u003d\u003e {"},{"lineNumber":145,"author":{"gitId":"-"},"content":" const address \u003d server.address();"},{"lineNumber":146,"author":{"gitId":"LamJiuFong"},"content":" const serveHost \u003d address.address;"},{"lineNumber":147,"author":{"gitId":"LamJiuFong"},"content":" const servePort \u003d address.port;"},{"lineNumber":148,"author":{"gitId":"LamJiuFong"},"content":" const serveURL \u003d `http://${serveHost}:${servePort}`;"},{"lineNumber":149,"author":{"gitId":"-"},"content":" logger.info(`Serving \"${outputFolder}\" at ${serveURL}`);"},{"lineNumber":150,"author":{"gitId":"-"},"content":" logger.info(\u0027Press CTRL+C to stop ...\u0027);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" });"},{"lineNumber":152,"author":{"gitId":"-"},"content":" })"},{"lineNumber":153,"author":{"gitId":"-"},"content":" .catch((error) \u003d\u003e {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.error(error.message);"},{"lineNumber":155,"author":{"gitId":"-"},"content":" process.exitCode \u003d 1;"},{"lineNumber":156,"author":{"gitId":"-"},"content":" });"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":"module.exports \u003d {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" serve,"},{"lineNumber":161,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"LamJiuFong":35,"-":126}},{"path":"packages/cli/src/lib/live-server/index.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env node"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"/*"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Patch for live-server to expose websocket clients for external use in order to keep track"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * of opened tabs."},{"lineNumber":6,"author":{"gitId":"-"},"content":" *"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * live-server locally keeps track of opened client websockets in order for it to be able"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * to perform live reload whenever there are changes in the watched directory. However, the"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * clients list is stored internally."},{"lineNumber":10,"author":{"gitId":"-"},"content":" *"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * This patch allows us to gain access to the information that can be gathered with the client"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * websockets, which in turn enables the support for multiple-tab development."},{"lineNumber":13,"author":{"gitId":"-"},"content":" *"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Patch is written against live-server v1.2.1"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The **only** changes are prefaced with a CHANGED comment"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":"var fs \u003d require(\u0027fs\u0027),"},{"lineNumber":19,"author":{"gitId":"-"},"content":" connect \u003d require(\u0027connect\u0027),"},{"lineNumber":20,"author":{"gitId":"-"},"content":" serveIndex \u003d require(\u0027serve-index\u0027),"},{"lineNumber":21,"author":{"gitId":"-"},"content":" logger \u003d require(\u0027morgan\u0027),"},{"lineNumber":22,"author":{"gitId":"-"},"content":" WebSocket \u003d require(\u0027faye-websocket\u0027),"},{"lineNumber":23,"author":{"gitId":"-"},"content":" path \u003d require(\u0027path\u0027),"},{"lineNumber":24,"author":{"gitId":"-"},"content":" parse \u003d require(\u0027url-parse\u0027),"},{"lineNumber":25,"author":{"gitId":"-"},"content":" http \u003d require(\u0027http\u0027),"},{"lineNumber":26,"author":{"gitId":"-"},"content":" send \u003d require(\u0027send\u0027),"},{"lineNumber":27,"author":{"gitId":"-"},"content":" open \u003d require(\u0027opn\u0027),"},{"lineNumber":28,"author":{"gitId":"-"},"content":" es \u003d require(\"event-stream\"),"},{"lineNumber":29,"author":{"gitId":"-"},"content":" os \u003d require(\u0027os\u0027),"},{"lineNumber":30,"author":{"gitId":"-"},"content":" chokidar \u003d require(\u0027chokidar\u0027),"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // CHANGED: added MarkBind\u0027s core fsUtil package"},{"lineNumber":32,"author":{"gitId":"-"},"content":" fsUtil \u003d require(\u0027@markbind/core/src/utils/fsUtil\u0027);"},{"lineNumber":33,"author":{"gitId":"-"},"content":"require(\u0027colors\u0027);"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"// CHANGED: added absolute path that directs to the live-server directory"},{"lineNumber":36,"author":{"gitId":"-"},"content":"const pathToLiveServerDir \u003d path.dirname(require.resolve(\u0027live-server\u0027));"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"// CHANGED: correctly resolve to the live-server directory"},{"lineNumber":39,"author":{"gitId":"-"},"content":"var INJECTED_CODE \u003d fs.readFileSync(path.join(pathToLiveServerDir, \"injected.html\"), \"utf8\");"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"var LiveServer \u003d {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" server: null,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" watcher: null,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" logLevel: 2,"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" // CHANGED: added properties relevant to MarkBind live-preview"},{"lineNumber":47,"author":{"gitId":"-"},"content":" activeTabs: [],"},{"lineNumber":48,"author":{"gitId":"-"},"content":" baseUrl: \u0027\u0027,"},{"lineNumber":49,"author":{"gitId":"-"},"content":"};"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":"function escape(html){"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return String(html)"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .replace(/\u0026(?!\\w+;)/g, \u0027\u0026amp;\u0027)"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .replace(/\u003c/g, \u0027\u0026lt;\u0027)"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .replace(/\u003e/g, \u0027\u0026gt;\u0027)"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .replace(/\"/g, \u0027\u0026quot;\u0027);"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"// Based on connect.static(), but streamlined and with added code injecter"},{"lineNumber":60,"author":{"gitId":"-"},"content":"function staticServer(root) {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" var isFile \u003d false;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" try { // For supporting mounting files instead of just directories"},{"lineNumber":63,"author":{"gitId":"-"},"content":" isFile \u003d fs.statSync(root).isFile();"},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (e) {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (e.code !\u003d\u003d \"ENOENT\") throw e;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return function(req, res, next) {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (req.method !\u003d\u003d \u0027GET\u0027 \u0026\u0026 req.method !\u003d\u003d \u0027HEAD\u0027) return next();"},{"lineNumber":69,"author":{"gitId":"-"},"content":" const reqpath \u003d isFile ? \"\" : parse(req.url).pathname;"},{"lineNumber":70,"author":{"gitId":"-"},"content":" var hasNoOrigin \u003d !req.headers.origin;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" var injectCandidates \u003d [ new RegExp(\"\u003c/body\u003e\", \"i\"), new RegExp(\"\u003c/svg\u003e\"), new RegExp(\"\u003c/head\u003e\", \"i\")];"},{"lineNumber":72,"author":{"gitId":"-"},"content":" var injectTag \u003d null;"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" function directory() {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" var pathname \u003d parse(req.url).pathname;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" res.statusCode \u003d 301;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" res.setHeader(\u0027Location\u0027, pathname + \u0027/\u0027);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" res.end(\u0027Redirecting to \u0027 + escape(pathname) + \u0027/\u0027);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" function file(filepath /*, stat*/) {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" var x \u003d path.extname(filepath).toLocaleLowerCase(), match,"},{"lineNumber":83,"author":{"gitId":"-"},"content":" possibleExtensions \u003d [ \"\", \".html\", \".htm\", \".xhtml\", \".php\", \".svg\" ];"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (hasNoOrigin \u0026\u0026 (possibleExtensions.indexOf(x) \u003e -1)) {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // TODO: Sync file read here is not nice, but we need to determine if the html should be injected or not"},{"lineNumber":86,"author":{"gitId":"-"},"content":" var contents \u003d fs.readFileSync(filepath, \"utf8\");"},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (var i \u003d 0; i \u003c injectCandidates.length; ++i) {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" match \u003d injectCandidates[i].exec(contents);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (match) {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" injectTag \u003d match[0];"},{"lineNumber":91,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (injectTag \u003d\u003d\u003d null \u0026\u0026 LiveServer.logLevel \u003e\u003d 3) {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" console.warn(\"Failed to inject refresh script!\".yellow,"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \"Couldn\u0027t find any of the tags \", injectCandidates, \"from\", filepath);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" function error(err) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (err.status \u003d\u003d\u003d 404) return next();"},{"lineNumber":104,"author":{"gitId":"-"},"content":" next(err);"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":" function inject(stream) {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (injectTag) {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // We need to modify the length given to browser"},{"lineNumber":110,"author":{"gitId":"-"},"content":" var len \u003d INJECTED_CODE.length + res.getHeader(\u0027Content-Length\u0027);"},{"lineNumber":111,"author":{"gitId":"-"},"content":" res.setHeader(\u0027Content-Length\u0027, len);"},{"lineNumber":112,"author":{"gitId":"-"},"content":" var originalPipe \u003d stream.pipe;"},{"lineNumber":113,"author":{"gitId":"-"},"content":" stream.pipe \u003d function(resp) {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" originalPipe.call(stream, es.replace(new RegExp(injectTag, \"i\"), INJECTED_CODE + injectTag)).pipe(resp);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" };"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":" send(req, reqpath, { root: root })"},{"lineNumber":120,"author":{"gitId":"-"},"content":" .on(\u0027error\u0027, error)"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .on(\u0027directory\u0027, directory)"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .on(\u0027file\u0027, file)"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .on(\u0027stream\u0027, inject)"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .pipe(res);"},{"lineNumber":125,"author":{"gitId":"-"},"content":" };"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Rewrite request URL and pass it back to the static handler."},{"lineNumber":130,"author":{"gitId":"-"},"content":" * @param staticHandler {function} Next handler"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @param file {string} Path to the entry point file"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */"},{"lineNumber":133,"author":{"gitId":"-"},"content":"function entryPoint(staticHandler, file) {"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!file) return function(req, res, next) { next(); };"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" return function(req, res, next) {"},{"lineNumber":137,"author":{"gitId":"-"},"content":" req.url \u003d \"/\" + file;"},{"lineNumber":138,"author":{"gitId":"-"},"content":" staticHandler(req, res, next);"},{"lineNumber":139,"author":{"gitId":"-"},"content":" };"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}"},{"lineNumber":141,"author":{"gitId":"-"},"content":""},{"lineNumber":142,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Start a live server with parameters given as an object"},{"lineNumber":144,"author":{"gitId":"LamJiuFong"},"content":" * @param host {string} Address to bind to (default: 127.0.0.1)"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @param port {number} Port number (default: 8080)"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param root {string} Path to root directory (default: cwd)"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param watch {array} Paths to exclusively watch for changes"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param ignore {array} Paths to ignore when watching files for changes"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param ignorePattern {regexp} Ignore files by RegExp"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param noCssInject Don\u0027t inject CSS changes, just reload as with any other file change"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @param open {(string|string[])} Subpath(s) to open in browser, use false to suppress launch (default: server root)"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * @param mount {array} Mount directories onto a route, e.g. [[\u0027/components\u0027, \u0027./node_modules\u0027]]."},{"lineNumber":153,"author":{"gitId":"-"},"content":" * @param logLevel {number} 0 \u003d errors only, 1 \u003d some, 2 \u003d lots"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * @param file {string} Path to the entry point file"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * @param wait {number} Server will wait for all changes, before reloading"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * @param htpasswd {string} Path to htpasswd file to enable HTTP Basic authentication"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param middleware {array} Append middleware to stack, e.g. [function(req, res, next) { next(); }]."},{"lineNumber":158,"author":{"gitId":"-"},"content":" */"},{"lineNumber":159,"author":{"gitId":"-"},"content":"LiveServer.start \u003d function(options) {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" options \u003d options || {};"},{"lineNumber":161,"author":{"gitId":"LamJiuFong"},"content":" var host \u003d options.host ?? \u0027127.0.0.1\u0027;"},{"lineNumber":162,"author":{"gitId":"LamJiuFong"},"content":" var port \u003d options.port ?? 8080; // 0 means random"},{"lineNumber":163,"author":{"gitId":"-"},"content":" var root \u003d options.root || process.cwd();"},{"lineNumber":164,"author":{"gitId":"-"},"content":" var mount \u003d options.mount || [];"},{"lineNumber":165,"author":{"gitId":"-"},"content":" var watchPaths \u003d options.watch || [root];"},{"lineNumber":166,"author":{"gitId":"-"},"content":" LiveServer.logLevel \u003d options.logLevel \u003d\u003d\u003d undefined ? 2 : options.logLevel;"},{"lineNumber":167,"author":{"gitId":"-"},"content":" var openPath \u003d (options.open \u003d\u003d\u003d undefined || options.open \u003d\u003d\u003d true) ?"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \"\" : ((options.open \u003d\u003d\u003d null || options.open \u003d\u003d\u003d false) ? null : options.open);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" if (options.noBrowser) openPath \u003d null; // Backwards compatibility with 0.7.0"},{"lineNumber":170,"author":{"gitId":"-"},"content":" var file \u003d options.file;"},{"lineNumber":171,"author":{"gitId":"-"},"content":" var staticServerHandler \u003d staticServer(root);"},{"lineNumber":172,"author":{"gitId":"-"},"content":" var wait \u003d options.wait \u003d\u003d\u003d undefined ? 100 : options.wait;"},{"lineNumber":173,"author":{"gitId":"-"},"content":" var browser \u003d options.browser || null;"},{"lineNumber":174,"author":{"gitId":"-"},"content":" var htpasswd \u003d options.htpasswd || null;"},{"lineNumber":175,"author":{"gitId":"-"},"content":" var cors \u003d options.cors || false;"},{"lineNumber":176,"author":{"gitId":"-"},"content":" var https \u003d options.https || null;"},{"lineNumber":177,"author":{"gitId":"-"},"content":" var proxy \u003d options.proxy || [];"},{"lineNumber":178,"author":{"gitId":"-"},"content":" var middleware \u003d options.middleware || [];"},{"lineNumber":179,"author":{"gitId":"-"},"content":" var noCssInject \u003d options.noCssInject;"},{"lineNumber":180,"author":{"gitId":"-"},"content":" var httpsModule \u003d options.httpsModule;"},{"lineNumber":181,"author":{"gitId":"-"},"content":""},{"lineNumber":182,"author":{"gitId":"-"},"content":" if (httpsModule) {"},{"lineNumber":183,"author":{"gitId":"-"},"content":" try {"},{"lineNumber":184,"author":{"gitId":"-"},"content":" require.resolve(httpsModule);"},{"lineNumber":185,"author":{"gitId":"-"},"content":" } catch (e) {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" console.error((\"HTTPS module \\\"\" + httpsModule + \"\\\" you\u0027ve provided was not found.\").red);"},{"lineNumber":187,"author":{"gitId":"-"},"content":" console.error(\"Did you do\", \"\\\"npm install \" + httpsModule + \"\\\"?\");"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }"},{"lineNumber":190,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" httpsModule \u003d \"https\";"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }"},{"lineNumber":193,"author":{"gitId":"-"},"content":""},{"lineNumber":194,"author":{"gitId":"-"},"content":" // Setup a web server"},{"lineNumber":195,"author":{"gitId":"-"},"content":" var app \u003d connect();"},{"lineNumber":196,"author":{"gitId":"-"},"content":""},{"lineNumber":197,"author":{"gitId":"-"},"content":" // Add logger. Level 2 logs only errors"},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003d\u003d\u003d 2) {"},{"lineNumber":199,"author":{"gitId":"-"},"content":" app.use(logger(\u0027dev\u0027, {"},{"lineNumber":200,"author":{"gitId":"-"},"content":" skip: function (req, res) { return res.statusCode \u003c 400; }"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // Level 2 or above logs all requests"},{"lineNumber":203,"author":{"gitId":"-"},"content":" } else if (LiveServer.logLevel \u003e 2) {"},{"lineNumber":204,"author":{"gitId":"-"},"content":" app.use(logger(\u0027dev\u0027));"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }"},{"lineNumber":206,"author":{"gitId":"-"},"content":" if (options.spa) {"},{"lineNumber":207,"author":{"gitId":"-"},"content":" middleware.push(\"spa\");"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // Add middleware"},{"lineNumber":210,"author":{"gitId":"-"},"content":" middleware.map(function(mw) {"},{"lineNumber":211,"author":{"gitId":"-"},"content":" if (typeof mw \u003d\u003d\u003d \"string\") {"},{"lineNumber":212,"author":{"gitId":"-"},"content":" var ext \u003d path.extname(mw).toLocaleLowerCase();"},{"lineNumber":213,"author":{"gitId":"-"},"content":" if (ext !\u003d\u003d \".js\") {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // CHANGED: correctly resolve to the live-server directory"},{"lineNumber":215,"author":{"gitId":"-"},"content":" mw \u003d require(path.join(pathToLiveServerDir, \"middleware\", mw + \".js\"));"},{"lineNumber":216,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":217,"author":{"gitId":"-"},"content":" mw \u003d require(mw);"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }"},{"lineNumber":220,"author":{"gitId":"-"},"content":" app.use(mw);"},{"lineNumber":221,"author":{"gitId":"-"},"content":" });"},{"lineNumber":222,"author":{"gitId":"-"},"content":""},{"lineNumber":223,"author":{"gitId":"-"},"content":" // Use http-auth if configured"},{"lineNumber":224,"author":{"gitId":"-"},"content":" if (htpasswd !\u003d\u003d null) {"},{"lineNumber":225,"author":{"gitId":"-"},"content":" var auth \u003d require(\u0027http-auth\u0027);"},{"lineNumber":226,"author":{"gitId":"-"},"content":" var basic \u003d auth.basic({"},{"lineNumber":227,"author":{"gitId":"-"},"content":" realm: \"Please authorize\","},{"lineNumber":228,"author":{"gitId":"-"},"content":" file: htpasswd"},{"lineNumber":229,"author":{"gitId":"-"},"content":" });"},{"lineNumber":230,"author":{"gitId":"-"},"content":" app.use(auth.connect(basic));"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }"},{"lineNumber":232,"author":{"gitId":"-"},"content":" if (cors) {"},{"lineNumber":233,"author":{"gitId":"-"},"content":" app.use(require(\"cors\")({"},{"lineNumber":234,"author":{"gitId":"-"},"content":" origin: true, // reflecting request origin"},{"lineNumber":235,"author":{"gitId":"-"},"content":" credentials: true // allowing requests with credentials"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }"},{"lineNumber":238,"author":{"gitId":"-"},"content":" mount.forEach(function(mountRule) {"},{"lineNumber":239,"author":{"gitId":"-"},"content":" var mountPath \u003d path.resolve(process.cwd(), mountRule[1]);"},{"lineNumber":240,"author":{"gitId":"-"},"content":" if (!options.watch) // Auto add mount paths to wathing but only if exclusive path option is not given"},{"lineNumber":241,"author":{"gitId":"-"},"content":" watchPaths.push(mountPath);"},{"lineNumber":242,"author":{"gitId":"-"},"content":" app.use(mountRule[0], staticServer(mountPath));"},{"lineNumber":243,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003e\u003d 1)"},{"lineNumber":244,"author":{"gitId":"-"},"content":" console.log(\u0027Mapping %s to \"%s\"\u0027, mountRule[0], mountPath);"},{"lineNumber":245,"author":{"gitId":"-"},"content":""},{"lineNumber":246,"author":{"gitId":"-"},"content":" // CHANGED: added baseUrl initialization based on the first mount rule"},{"lineNumber":247,"author":{"gitId":"-"},"content":" if (LiveServer.baseUrl \u003d\u003d\u003d \u0027\u0027) {"},{"lineNumber":248,"author":{"gitId":"-"},"content":" LiveServer.baseUrl \u003d mountRule[0] || \u0027/\u0027;"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }"},{"lineNumber":250,"author":{"gitId":"-"},"content":" });"},{"lineNumber":251,"author":{"gitId":"-"},"content":" proxy.forEach(function(proxyRule) {"},{"lineNumber":252,"author":{"gitId":"-"},"content":" var proxyOpts \u003d parse(proxyRule[1]);"},{"lineNumber":253,"author":{"gitId":"-"},"content":" proxyOpts.via \u003d true;"},{"lineNumber":254,"author":{"gitId":"-"},"content":" proxyOpts.preserveHost \u003d true;"},{"lineNumber":255,"author":{"gitId":"-"},"content":" app.use(proxyRule[0], require(\u0027proxy-middleware\u0027)(proxyOpts));"},{"lineNumber":256,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003e\u003d 1)"},{"lineNumber":257,"author":{"gitId":"-"},"content":" console.log(\u0027Mapping %s to \"%s\"\u0027, proxyRule[0], proxyRule[1]);"},{"lineNumber":258,"author":{"gitId":"-"},"content":" });"},{"lineNumber":259,"author":{"gitId":"-"},"content":" app.use(staticServerHandler) // Custom static server"},{"lineNumber":260,"author":{"gitId":"-"},"content":" .use(entryPoint(staticServerHandler, file))"},{"lineNumber":261,"author":{"gitId":"-"},"content":" .use(serveIndex(root, { icons: true }));"},{"lineNumber":262,"author":{"gitId":"-"},"content":""},{"lineNumber":263,"author":{"gitId":"-"},"content":" var server, protocol;"},{"lineNumber":264,"author":{"gitId":"-"},"content":" if (https !\u003d\u003d null) {"},{"lineNumber":265,"author":{"gitId":"-"},"content":" var httpsConfig \u003d https;"},{"lineNumber":266,"author":{"gitId":"-"},"content":" if (typeof https \u003d\u003d\u003d \"string\") {"},{"lineNumber":267,"author":{"gitId":"-"},"content":" httpsConfig \u003d require(path.resolve(process.cwd(), https));"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }"},{"lineNumber":269,"author":{"gitId":"-"},"content":" server \u003d require(httpsModule).createServer(httpsConfig, app);"},{"lineNumber":270,"author":{"gitId":"-"},"content":" protocol \u003d \"https\";"},{"lineNumber":271,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":272,"author":{"gitId":"-"},"content":" server \u003d http.createServer(app);"},{"lineNumber":273,"author":{"gitId":"-"},"content":" protocol \u003d \"http\";"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }"},{"lineNumber":275,"author":{"gitId":"-"},"content":""},{"lineNumber":276,"author":{"gitId":"-"},"content":" // Handle server startup errors"},{"lineNumber":277,"author":{"gitId":"-"},"content":" server.addListener(\u0027error\u0027, function(e) {"},{"lineNumber":278,"author":{"gitId":"-"},"content":" if (e.code \u003d\u003d\u003d \u0027EADDRINUSE\u0027) {"},{"lineNumber":279,"author":{"gitId":"-"},"content":" var serveURL \u003d protocol + \u0027://\u0027 + host + \u0027:\u0027 + port;"},{"lineNumber":280,"author":{"gitId":"-"},"content":" console.log(\u0027%s is already in use. Trying another port.\u0027.yellow, serveURL);"},{"lineNumber":281,"author":{"gitId":"-"},"content":" setTimeout(function() {"},{"lineNumber":282,"author":{"gitId":"-"},"content":" server.listen(0, host);"},{"lineNumber":283,"author":{"gitId":"-"},"content":" }, 1000);"},{"lineNumber":284,"author":{"gitId":"LamJiuFong"},"content":" } else if (e.code \u003d\u003d\u003d \u0027EADDRNOTAVAIL\u0027) {"},{"lineNumber":285,"author":{"gitId":"LamJiuFong"},"content":" console.log(\u0027%s is not available. Trying another address\u0027.yellow, host);"},{"lineNumber":286,"author":{"gitId":"LamJiuFong"},"content":" setTimeout(function() {"},{"lineNumber":287,"author":{"gitId":"LamJiuFong"},"content":" server.listen(port, \u0027127.0.0.1\u0027);"},{"lineNumber":288,"author":{"gitId":"LamJiuFong"},"content":" }, 1000);"},{"lineNumber":289,"author":{"gitId":"LamJiuFong"},"content":" }"},{"lineNumber":290,"author":{"gitId":"LamJiuFong"},"content":" else {"},{"lineNumber":291,"author":{"gitId":"-"},"content":" console.error(e.toString().red);"},{"lineNumber":292,"author":{"gitId":"-"},"content":" LiveServer.shutdown();"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }"},{"lineNumber":294,"author":{"gitId":"-"},"content":" });"},{"lineNumber":295,"author":{"gitId":"-"},"content":""},{"lineNumber":296,"author":{"gitId":"-"},"content":" // Handle successful server"},{"lineNumber":297,"author":{"gitId":"-"},"content":" server.addListener(\u0027listening\u0027, function(/*e*/) {"},{"lineNumber":298,"author":{"gitId":"-"},"content":" LiveServer.server \u003d server;"},{"lineNumber":299,"author":{"gitId":"-"},"content":""},{"lineNumber":300,"author":{"gitId":"-"},"content":" var address \u003d server.address();"},{"lineNumber":301,"author":{"gitId":"LamJiuFong"},"content":" var serveHost \u003d address.address;"},{"lineNumber":302,"author":{"gitId":"LamJiuFong"},"content":" var openHost \u003d host;"},{"lineNumber":303,"author":{"gitId":"-"},"content":""},{"lineNumber":304,"author":{"gitId":"-"},"content":" var serveURL \u003d protocol + \u0027://\u0027 + serveHost + \u0027:\u0027 + address.port;"},{"lineNumber":305,"author":{"gitId":"-"},"content":" var openURL \u003d protocol + \u0027://\u0027 + openHost + \u0027:\u0027 + address.port;"},{"lineNumber":306,"author":{"gitId":"-"},"content":""},{"lineNumber":307,"author":{"gitId":"-"},"content":" var serveURLs \u003d [ serveURL ];"},{"lineNumber":308,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003e 2 \u0026\u0026 address.address \u003d\u003d\u003d \"0.0.0.0\") {"},{"lineNumber":309,"author":{"gitId":"-"},"content":" var ifaces \u003d os.networkInterfaces();"},{"lineNumber":310,"author":{"gitId":"-"},"content":" serveURLs \u003d Object.keys(ifaces)"},{"lineNumber":311,"author":{"gitId":"-"},"content":" .map(function(iface) {"},{"lineNumber":312,"author":{"gitId":"-"},"content":" return ifaces[iface];"},{"lineNumber":313,"author":{"gitId":"-"},"content":" })"},{"lineNumber":314,"author":{"gitId":"-"},"content":" // flatten address data, use only IPv4"},{"lineNumber":315,"author":{"gitId":"-"},"content":" .reduce(function(data, addresses) {"},{"lineNumber":316,"author":{"gitId":"-"},"content":" addresses.filter(function(addr) {"},{"lineNumber":317,"author":{"gitId":"-"},"content":" return addr.family \u003d\u003d\u003d \"IPv4\";"},{"lineNumber":318,"author":{"gitId":"-"},"content":" }).forEach(function(addr) {"},{"lineNumber":319,"author":{"gitId":"-"},"content":" data.push(addr);"},{"lineNumber":320,"author":{"gitId":"-"},"content":" });"},{"lineNumber":321,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":322,"author":{"gitId":"-"},"content":" }, [])"},{"lineNumber":323,"author":{"gitId":"-"},"content":" .map(function(addr) {"},{"lineNumber":324,"author":{"gitId":"-"},"content":" return protocol + \"://\" + addr.address + \":\" + address.port;"},{"lineNumber":325,"author":{"gitId":"-"},"content":" });"},{"lineNumber":326,"author":{"gitId":"-"},"content":" }"},{"lineNumber":327,"author":{"gitId":"-"},"content":""},{"lineNumber":328,"author":{"gitId":"-"},"content":" // Output"},{"lineNumber":329,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003e\u003d 1) {"},{"lineNumber":330,"author":{"gitId":"-"},"content":" if (serveURL \u003d\u003d\u003d openURL)"},{"lineNumber":331,"author":{"gitId":"-"},"content":" if (serveURLs.length \u003d\u003d\u003d 1) {"},{"lineNumber":332,"author":{"gitId":"-"},"content":" console.log((\"Serving \\\"%s\\\" at %s\").green, root, serveURLs[0]);"},{"lineNumber":333,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":334,"author":{"gitId":"-"},"content":" console.log((\"Serving \\\"%s\\\" at\\n\\t%s\").green, root, serveURLs.join(\"\\n\\t\"));"},{"lineNumber":335,"author":{"gitId":"-"},"content":" }"},{"lineNumber":336,"author":{"gitId":"-"},"content":" else"},{"lineNumber":337,"author":{"gitId":"-"},"content":" console.log((\"Serving \\\"%s\\\" at %s (%s)\").green, root, openURL, serveURL);"},{"lineNumber":338,"author":{"gitId":"-"},"content":" }"},{"lineNumber":339,"author":{"gitId":"-"},"content":""},{"lineNumber":340,"author":{"gitId":"-"},"content":" // Launch browser"},{"lineNumber":341,"author":{"gitId":"-"},"content":" if (openPath !\u003d\u003d null)"},{"lineNumber":342,"author":{"gitId":"-"},"content":" if (typeof openPath \u003d\u003d\u003d \"object\") {"},{"lineNumber":343,"author":{"gitId":"-"},"content":" openPath.forEach(function(p) {"},{"lineNumber":344,"author":{"gitId":"-"},"content":" open(openURL + p, {app: browser});"},{"lineNumber":345,"author":{"gitId":"-"},"content":" });"},{"lineNumber":346,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":347,"author":{"gitId":"-"},"content":" open(openURL + openPath, {app: browser});"},{"lineNumber":348,"author":{"gitId":"-"},"content":" }"},{"lineNumber":349,"author":{"gitId":"-"},"content":" });"},{"lineNumber":350,"author":{"gitId":"-"},"content":""},{"lineNumber":351,"author":{"gitId":"-"},"content":" // Setup server to listen at port"},{"lineNumber":352,"author":{"gitId":"-"},"content":" server.listen(port, host);"},{"lineNumber":353,"author":{"gitId":"-"},"content":" "},{"lineNumber":354,"author":{"gitId":"-"},"content":" // WebSocket"},{"lineNumber":355,"author":{"gitId":"-"},"content":" // CHANGED: Removed local clients variable in favour of the clients in active tabs entries"},{"lineNumber":356,"author":{"gitId":"-"},"content":" server.addListener(\u0027upgrade\u0027, function(request, socket, head) {"},{"lineNumber":357,"author":{"gitId":"-"},"content":" var ws \u003d new WebSocket(request, socket, head);"},{"lineNumber":358,"author":{"gitId":"-"},"content":" ws.onopen \u003d function() { ws.send(\u0027connected\u0027); };"},{"lineNumber":359,"author":{"gitId":"-"},"content":""},{"lineNumber":360,"author":{"gitId":"-"},"content":" if (wait \u003e 0) {"},{"lineNumber":361,"author":{"gitId":"-"},"content":" (function() {"},{"lineNumber":362,"author":{"gitId":"-"},"content":" var wssend \u003d ws.send;"},{"lineNumber":363,"author":{"gitId":"-"},"content":" var waitTimeout;"},{"lineNumber":364,"author":{"gitId":"-"},"content":" ws.send \u003d function() {"},{"lineNumber":365,"author":{"gitId":"-"},"content":" var args \u003d arguments;"},{"lineNumber":366,"author":{"gitId":"-"},"content":" if (waitTimeout) clearTimeout(waitTimeout);"},{"lineNumber":367,"author":{"gitId":"-"},"content":" waitTimeout \u003d setTimeout(function(){"},{"lineNumber":368,"author":{"gitId":"-"},"content":" wssend.apply(ws, args);"},{"lineNumber":369,"author":{"gitId":"-"},"content":" }, wait);"},{"lineNumber":370,"author":{"gitId":"-"},"content":" };"},{"lineNumber":371,"author":{"gitId":"-"},"content":" })();"},{"lineNumber":372,"author":{"gitId":"-"},"content":" }"},{"lineNumber":373,"author":{"gitId":"-"},"content":""},{"lineNumber":374,"author":{"gitId":"-"},"content":" ws.onclose \u003d function() {"},{"lineNumber":375,"author":{"gitId":"-"},"content":" /*"},{"lineNumber":376,"author":{"gitId":"-"},"content":" * CHANGED: Modified to remove the active tab that has the closed socket as"},{"lineNumber":377,"author":{"gitId":"-"},"content":" * its current client on socket close. In other words, only socket close event that"},{"lineNumber":378,"author":{"gitId":"-"},"content":" * does not come from live reload will remove the active tab."},{"lineNumber":379,"author":{"gitId":"-"},"content":" */"},{"lineNumber":380,"author":{"gitId":"-"},"content":" LiveServer.activeTabs \u003d LiveServer.activeTabs.filter(tab \u003d\u003e tab.client !\u003d\u003d ws);"},{"lineNumber":381,"author":{"gitId":"-"},"content":" };"},{"lineNumber":382,"author":{"gitId":"-"},"content":""},{"lineNumber":383,"author":{"gitId":"-"},"content":" // CHANGED: Enhanced client websocket addition process to record the client as an active tab entry"},{"lineNumber":384,"author":{"gitId":"-"},"content":" const reqUrl \u003d path.dirname(request.url);"},{"lineNumber":385,"author":{"gitId":"-"},"content":" const normalizedUrl \u003d fsUtil.ensurePosix(path.relative(LiveServer.baseUrl, reqUrl));"},{"lineNumber":386,"author":{"gitId":"-"},"content":""},{"lineNumber":387,"author":{"gitId":"-"},"content":" // If an entry with empty client is present, reuse existing entry to maintain order from pre-reload "},{"lineNumber":388,"author":{"gitId":"-"},"content":" const existingTab \u003d LiveServer.activeTabs.find(tab \u003d\u003e tab.url \u003d\u003d\u003d normalizedUrl \u0026\u0026 !tab.client);"},{"lineNumber":389,"author":{"gitId":"-"},"content":" if (existingTab) {"},{"lineNumber":390,"author":{"gitId":"-"},"content":" existingTab.client \u003d ws;"},{"lineNumber":391,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":392,"author":{"gitId":"-"},"content":" }"},{"lineNumber":393,"author":{"gitId":"-"},"content":""},{"lineNumber":394,"author":{"gitId":"-"},"content":" // Insert new entry to the active tabs list"},{"lineNumber":395,"author":{"gitId":"-"},"content":" LiveServer.activeTabs.unshift({ url: normalizedUrl, client: ws });"},{"lineNumber":396,"author":{"gitId":"-"},"content":" });"},{"lineNumber":397,"author":{"gitId":"-"},"content":""},{"lineNumber":398,"author":{"gitId":"-"},"content":" var ignored \u003d ["},{"lineNumber":399,"author":{"gitId":"-"},"content":" function(testPath) { // Always ignore dotfiles (important e.g. because editor hidden temp files)"},{"lineNumber":400,"author":{"gitId":"-"},"content":" return testPath !\u003d\u003d \".\" \u0026\u0026 /(^[.#]|(?:__|~)$)/.test(path.basename(testPath));"},{"lineNumber":401,"author":{"gitId":"-"},"content":" }"},{"lineNumber":402,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":403,"author":{"gitId":"-"},"content":" if (options.ignore) {"},{"lineNumber":404,"author":{"gitId":"-"},"content":" ignored \u003d ignored.concat(options.ignore);"},{"lineNumber":405,"author":{"gitId":"-"},"content":" }"},{"lineNumber":406,"author":{"gitId":"-"},"content":" if (options.ignorePattern) {"},{"lineNumber":407,"author":{"gitId":"-"},"content":" ignored.push(options.ignorePattern);"},{"lineNumber":408,"author":{"gitId":"-"},"content":" }"},{"lineNumber":409,"author":{"gitId":"-"},"content":" // Setup file watcher"},{"lineNumber":410,"author":{"gitId":"-"},"content":" LiveServer.watcher \u003d chokidar.watch(watchPaths, {"},{"lineNumber":411,"author":{"gitId":"-"},"content":" ignored: ignored,"},{"lineNumber":412,"author":{"gitId":"-"},"content":" ignoreInitial: true"},{"lineNumber":413,"author":{"gitId":"-"},"content":" });"},{"lineNumber":414,"author":{"gitId":"-"},"content":" function handleChange(changePath) {"},{"lineNumber":415,"author":{"gitId":"-"},"content":" var cssChange \u003d path.extname(changePath) \u003d\u003d\u003d \".css\" \u0026\u0026 !noCssInject;"},{"lineNumber":416,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003e\u003d 1) {"},{"lineNumber":417,"author":{"gitId":"-"},"content":" if (cssChange)"},{"lineNumber":418,"author":{"gitId":"-"},"content":" console.log(\"CSS change detected\".magenta, changePath);"},{"lineNumber":419,"author":{"gitId":"-"},"content":" else console.log(\"Change detected\".cyan, changePath);"},{"lineNumber":420,"author":{"gitId":"-"},"content":" }"},{"lineNumber":421,"author":{"gitId":"-"},"content":""},{"lineNumber":422,"author":{"gitId":"-"},"content":" // CHANGED: Modified the send message to clients routine"},{"lineNumber":423,"author":{"gitId":"-"},"content":""},{"lineNumber":424,"author":{"gitId":"-"},"content":" if (cssChange) {"},{"lineNumber":425,"author":{"gitId":"-"},"content":" LiveServer.sendMessageToActiveTabs(\u0027refreshcss\u0027);"},{"lineNumber":426,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":427,"author":{"gitId":"-"},"content":" }"},{"lineNumber":428,"author":{"gitId":"-"},"content":""},{"lineNumber":429,"author":{"gitId":"-"},"content":" // Only reload active tabs if the changed file is opened in one of them"},{"lineNumber":430,"author":{"gitId":"-"},"content":" const normalizeUrl \u003d (url) \u003d\u003e {"},{"lineNumber":431,"author":{"gitId":"-"},"content":" if (!url || url.length \u003d\u003d\u003d 0) {"},{"lineNumber":432,"author":{"gitId":"-"},"content":" return \"index.html\";"},{"lineNumber":433,"author":{"gitId":"-"},"content":" }"},{"lineNumber":434,"author":{"gitId":"-"},"content":""},{"lineNumber":435,"author":{"gitId":"-"},"content":" if (path.extname(url) \u003d\u003d\u003d \u0027.html\u0027) {"},{"lineNumber":436,"author":{"gitId":"-"},"content":" return url;"},{"lineNumber":437,"author":{"gitId":"-"},"content":" }"},{"lineNumber":438,"author":{"gitId":"-"},"content":""},{"lineNumber":439,"author":{"gitId":"-"},"content":" return path.posix.join(url, \u0027index.html\u0027);"},{"lineNumber":440,"author":{"gitId":"-"},"content":" };"},{"lineNumber":441,"author":{"gitId":"-"},"content":""},{"lineNumber":442,"author":{"gitId":"-"},"content":" let normalizedPath \u003d fsUtil.ensurePosix(path.relative(root, changePath));"},{"lineNumber":443,"author":{"gitId":"-"},"content":" if (LiveServer.activeTabs.some(tab \u003d\u003e tab.client \u0026\u0026 normalizeUrl(tab.url) \u003d\u003d\u003d normalizedPath)) {"},{"lineNumber":444,"author":{"gitId":"-"},"content":" LiveServer.sendMessageToActiveTabs(\u0027reload\u0027);"},{"lineNumber":445,"author":{"gitId":"-"},"content":" }"},{"lineNumber":446,"author":{"gitId":"-"},"content":" }"},{"lineNumber":447,"author":{"gitId":"-"},"content":" LiveServer.watcher"},{"lineNumber":448,"author":{"gitId":"-"},"content":" .on(\"change\", handleChange)"},{"lineNumber":449,"author":{"gitId":"-"},"content":" .on(\"add\", handleChange)"},{"lineNumber":450,"author":{"gitId":"-"},"content":" .on(\"unlink\", handleChange)"},{"lineNumber":451,"author":{"gitId":"-"},"content":" .on(\"addDir\", handleChange)"},{"lineNumber":452,"author":{"gitId":"-"},"content":" .on(\"unlinkDir\", handleChange)"},{"lineNumber":453,"author":{"gitId":"-"},"content":" .on(\"ready\", function () {"},{"lineNumber":454,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003e\u003d 1)"},{"lineNumber":455,"author":{"gitId":"-"},"content":" console.log(\"Ready for changes\".cyan);"},{"lineNumber":456,"author":{"gitId":"-"},"content":" })"},{"lineNumber":457,"author":{"gitId":"-"},"content":" .on(\"error\", function (err) {"},{"lineNumber":458,"author":{"gitId":"-"},"content":" console.log(\"ERROR:\".red, err);"},{"lineNumber":459,"author":{"gitId":"-"},"content":" });"},{"lineNumber":460,"author":{"gitId":"-"},"content":""},{"lineNumber":461,"author":{"gitId":"-"},"content":" return server;"},{"lineNumber":462,"author":{"gitId":"-"},"content":"};"},{"lineNumber":463,"author":{"gitId":"-"},"content":""},{"lineNumber":464,"author":{"gitId":"-"},"content":"LiveServer.shutdown \u003d function() {"},{"lineNumber":465,"author":{"gitId":"-"},"content":" var watcher \u003d LiveServer.watcher;"},{"lineNumber":466,"author":{"gitId":"-"},"content":" if (watcher) {"},{"lineNumber":467,"author":{"gitId":"-"},"content":" watcher.close();"},{"lineNumber":468,"author":{"gitId":"-"},"content":" }"},{"lineNumber":469,"author":{"gitId":"-"},"content":" var server \u003d LiveServer.server;"},{"lineNumber":470,"author":{"gitId":"-"},"content":" if (server)"},{"lineNumber":471,"author":{"gitId":"-"},"content":" server.close();"},{"lineNumber":472,"author":{"gitId":"-"},"content":"};"},{"lineNumber":473,"author":{"gitId":"-"},"content":""},{"lineNumber":474,"author":{"gitId":"-"},"content":"// CHANGED: Added method to retrieve current active urls"},{"lineNumber":475,"author":{"gitId":"-"},"content":"LiveServer.getActiveUrls \u003d () \u003d\u003e LiveServer.activeTabs.filter(tab \u003d\u003e tab.client).map(tab \u003d\u003e tab.url);"},{"lineNumber":476,"author":{"gitId":"-"},"content":""},{"lineNumber":477,"author":{"gitId":"-"},"content":"// CHANGED: Added method to send message to active tabs"},{"lineNumber":478,"author":{"gitId":"-"},"content":"LiveServer.sendMessageToActiveTabs \u003d (msg) \u003d\u003e {"},{"lineNumber":479,"author":{"gitId":"-"},"content":" LiveServer.activeTabs.forEach((tab) \u003d\u003e {"},{"lineNumber":480,"author":{"gitId":"-"},"content":" if (tab.client) {"},{"lineNumber":481,"author":{"gitId":"-"},"content":" const client \u003d tab.client;"},{"lineNumber":482,"author":{"gitId":"-"},"content":" if (msg \u003d\u003d\u003d \u0027reload\u0027) {"},{"lineNumber":483,"author":{"gitId":"-"},"content":" // Clear the client from the entry to be refilled in the socket establishment phase after reload"},{"lineNumber":484,"author":{"gitId":"-"},"content":" tab.client \u003d undefined;"},{"lineNumber":485,"author":{"gitId":"-"},"content":" }"},{"lineNumber":486,"author":{"gitId":"-"},"content":" client.send(msg);"},{"lineNumber":487,"author":{"gitId":"-"},"content":" }"},{"lineNumber":488,"author":{"gitId":"-"},"content":" });"},{"lineNumber":489,"author":{"gitId":"-"},"content":"}"},{"lineNumber":490,"author":{"gitId":"-"},"content":""},{"lineNumber":491,"author":{"gitId":"-"},"content":"// CHANGED: Added convenience method to reload all active tabs"},{"lineNumber":492,"author":{"gitId":"-"},"content":"LiveServer.reloadActiveTabs \u003d () \u003d\u003e LiveServer.sendMessageToActiveTabs(\u0027reload\u0027);"},{"lineNumber":493,"author":{"gitId":"-"},"content":""},{"lineNumber":494,"author":{"gitId":"-"},"content":"module.exports \u003d LiveServer;"}],"authorContributionMap":{"LamJiuFong":12,"-":482}},{"path":"packages/cli/test/functional/test_site/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/cli/test/functional/test_site/expected/siteData.json","fileType":"json","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"{"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \"enableSearch\": true,"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"pages\": ["},{"lineNumber":4,"author":{"gitId":"-"},"content":" {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \"src\": \"bugs/index.md\","},{"lineNumber":6,"author":{"gitId":"-"},"content":" \"title\": \"Open Bugs\","},{"lineNumber":7,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":9,"author":{"gitId":"-"},"content":" },"},{"lineNumber":10,"author":{"gitId":"-"},"content":" {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \"src\": \"index.md\","},{"lineNumber":12,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"panel-with-heading\": \"Panel with heading\","},{"lineNumber":15,"author":{"gitId":"-"},"content":" \"panel-without-heading-with-keyword\": \"Panel without heading with keyword\","},{"lineNumber":16,"author":{"gitId":"-"},"content":" \"panel-with-heading-with-keyword\": \"Panel with heading with keyword\","},{"lineNumber":17,"author":{"gitId":"-"},"content":" \"panel-without-src-header\": \"Panel without src header\","},{"lineNumber":18,"author":{"gitId":"-"},"content":" \"panel-with-normal-src-header\": \"Panel with normal src header\","},{"lineNumber":19,"author":{"gitId":"-"},"content":" \"panel-with-src-from-a-page-segment-header\": \"Panel with src from a page segment header\","},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"boilerplate-referencing\": \"Boilerplate referencing\","},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"boilerplate-referencing-2\": \"Boilerplate referencing 2\","},{"lineNumber":22,"author":{"gitId":"-"},"content":" \"referencing-specified-path-in-boilerplate\": \"Referencing specified path in boilerplate\","},{"lineNumber":23,"author":{"gitId":"-"},"content":" \"outer-nested-panel\": \"Outer nested panel\","},{"lineNumber":24,"author":{"gitId":"-"},"content":" \"outer-nested-panel-without-src\": \"Outer nested panel without src\","},{"lineNumber":25,"author":{"gitId":"-"},"content":" \"panel-with-src-from-another-markbind-site-header\": \"Panel with src from another MarkBind site header\","},{"lineNumber":26,"author":{"gitId":"-"},"content":" \"panel-with-src-from-another-markbind-site-header-2\": \"Panel with src from another MarkBind site header\","},{"lineNumber":27,"author":{"gitId":"-"},"content":" \"unexpanded-panel-header\": \"Unexpanded panel header\","},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"keyword-should-be-tagged-to-this-heading-not-the-panel-heading\": \"Keyword should be tagged to this heading, not the panel heading\","},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"panel-normal-source-content-headings\": \"Panel normal source content headings\","},{"lineNumber":30,"author":{"gitId":"-"},"content":" \"panel-source-segment-content-headings\": \"Panel source segment content headings\","},{"lineNumber":31,"author":{"gitId":"-"},"content":" \"boilerplate-test-for-panel-heading\": \"boilerplate test for panel heading\","},{"lineNumber":32,"author":{"gitId":"-"},"content":" \"heading-in-panel-boilerplate\": \"heading in panel boilerplate\","},{"lineNumber":33,"author":{"gitId":"-"},"content":" \"nested-panel\": \"Nested Panel\","},{"lineNumber":34,"author":{"gitId":"-"},"content":" \"normal-panel-content-heading\": \"Normal panel content heading\","},{"lineNumber":35,"author":{"gitId":"-"},"content":" \"inner-panel-header-without-src\": \"Inner panel header without src\","},{"lineNumber":36,"author":{"gitId":"-"},"content":" \"feature-list\": \"Feature list\","},{"lineNumber":37,"author":{"gitId":"-"},"content":" \"heading-with-multiple-keywords\": \"Heading with multiple keywords\","},{"lineNumber":38,"author":{"gitId":"-"},"content":" \"heading-with-keyword-in-panel\": \"Heading with keyword in panel\","},{"lineNumber":39,"author":{"gitId":"-"},"content":" \"heading-fragment-with-leading-spaces-and-newline\": \"Heading \\nFragment with leading spaces and newline\\n\","},{"lineNumber":40,"author":{"gitId":"-"},"content":" \"heading-with-included-keyword\": \"Heading with included keyword\","},{"lineNumber":41,"author":{"gitId":"-"},"content":" \"included-heading\": \"Included Heading\","},{"lineNumber":42,"author":{"gitId":"-"},"content":" \"heading-with-nested-keyword\": \"Heading with nested keyword\","},{"lineNumber":43,"author":{"gitId":"-"},"content":" \"heading-with-hidden-keyword\": \"Heading with hidden keyword\","},{"lineNumber":44,"author":{"gitId":"-"},"content":" \"establishing-requirements\": \"Establishing Requirements\","},{"lineNumber":45,"author":{"gitId":"-"},"content":" \"brainstorming\": \"Brainstorming\","},{"lineNumber":46,"author":{"gitId":"-"},"content":" \"user-surveys\": \"User surveys\","},{"lineNumber":47,"author":{"gitId":"-"},"content":" \"focus-groups\": \"Focus groups\","},{"lineNumber":48,"author":{"gitId":"-"},"content":" \"path-within-the-boilerplate-folder-is-separately-specified\": \"Path within the boilerplate folder is separately specified\","},{"lineNumber":49,"author":{"gitId":"-"},"content":" \"level-6-header-outside-headingsearchindex-with-always-index-attribute-should-be-indexed\": \"Level 6 header (outside headingSearchIndex) with always-index attribute should be indexed\""},{"lineNumber":50,"author":{"gitId":"-"},"content":" },"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \"headingKeywords\": {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \"heading-with-keyword-in-panel\": ["},{"lineNumber":53,"author":{"gitId":"-"},"content":" \"panel keyword\""},{"lineNumber":54,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \"panel-with-heading\": ["},{"lineNumber":56,"author":{"gitId":"-"},"content":" \"panel keyword\""},{"lineNumber":57,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \"keyword-should-be-tagged-to-this-heading-not-the-panel-heading\": ["},{"lineNumber":59,"author":{"gitId":"-"},"content":" \"panel keyword\""},{"lineNumber":60,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \"panel-with-heading-with-keyword\": ["},{"lineNumber":62,"author":{"gitId":"-"},"content":" \"panel keyword\""},{"lineNumber":63,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \"heading-with-multiple-keywords\": ["},{"lineNumber":65,"author":{"gitId":"-"},"content":" \"keyword 1\","},{"lineNumber":66,"author":{"gitId":"-"},"content":" \"keyword 2\""},{"lineNumber":67,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \"heading-with-included-keyword\": ["},{"lineNumber":69,"author":{"gitId":"-"},"content":" \"included keyword\""},{"lineNumber":70,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \"included-heading\": ["},{"lineNumber":72,"author":{"gitId":"-"},"content":" \"Keyword with included heading\""},{"lineNumber":73,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \"heading-with-nested-keyword\": ["},{"lineNumber":75,"author":{"gitId":"-"},"content":" \"nested keyword\""},{"lineNumber":76,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \"heading-with-hidden-keyword\": ["},{"lineNumber":78,"author":{"gitId":"-"},"content":" \"invisible keyword\""},{"lineNumber":79,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":" },"},{"lineNumber":82,"author":{"gitId":"-"},"content":" {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \"src\": \"sub_site/index.md\","},{"lineNumber":84,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" \"feature-list\": \"Feature list\""},{"lineNumber":86,"author":{"gitId":"-"},"content":" },"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":88,"author":{"gitId":"-"},"content":" },"},{"lineNumber":89,"author":{"gitId":"-"},"content":" {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \"src\": \"sub_site/nested_sub_site/index.md\","},{"lineNumber":91,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":93,"author":{"gitId":"-"},"content":" },"},{"lineNumber":94,"author":{"gitId":"-"},"content":" {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \"src\": \"test_md_fragment.md\","},{"lineNumber":96,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \"some-heading\": \"Some heading\""},{"lineNumber":98,"author":{"gitId":"-"},"content":" },"},{"lineNumber":99,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":100,"author":{"gitId":"-"},"content":" },"},{"lineNumber":101,"author":{"gitId":"-"},"content":" {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \"src\": \"testEmptyFrontmatter.md\","},{"lineNumber":103,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":104,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":106,"author":{"gitId":"-"},"content":" },"},{"lineNumber":107,"author":{"gitId":"-"},"content":" {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \"src\": \"testLayoutsOverride.md\","},{"lineNumber":109,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":110,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":112,"author":{"gitId":"-"},"content":" },"},{"lineNumber":113,"author":{"gitId":"-"},"content":" {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \"src\": \"testEmptyAltFrontMatter.md\","},{"lineNumber":115,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":116,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":118,"author":{"gitId":"-"},"content":" },"},{"lineNumber":119,"author":{"gitId":"-"},"content":" {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \"src\": \"testLayoutsOverrideWithAltFrontmatter.md\","},{"lineNumber":121,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":122,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":124,"author":{"gitId":"-"},"content":" },"},{"lineNumber":125,"author":{"gitId":"-"},"content":" {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \"src\": \"testAltFrontMatterInvalidKeyValue.md\","},{"lineNumber":127,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":128,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":130,"author":{"gitId":"-"},"content":" },"},{"lineNumber":131,"author":{"gitId":"-"},"content":" {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \"src\": \"testSingleAltFrontMatter.md\","},{"lineNumber":133,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":134,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":136,"author":{"gitId":"-"},"content":" },"},{"lineNumber":137,"author":{"gitId":"-"},"content":" {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \"src\": \"testAltFrontMatterParsing.md\","},{"lineNumber":139,"author":{"gitId":"-"},"content":" \"title\": \"new title\","},{"lineNumber":140,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":142,"author":{"gitId":"-"},"content":" },"},{"lineNumber":143,"author":{"gitId":"-"},"content":" {"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \"src\": \"testExternalScripts.md\","},{"lineNumber":145,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":146,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":148,"author":{"gitId":"-"},"content":" },"},{"lineNumber":149,"author":{"gitId":"-"},"content":" {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" \"src\": \"testLayouts.md\","},{"lineNumber":151,"author":{"gitId":"-"},"content":" \"title\": \"Test nunjucks path resolving\","},{"lineNumber":152,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":153,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":154,"author":{"gitId":"-"},"content":" },"},{"lineNumber":155,"author":{"gitId":"-"},"content":" {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" \"src\": \"testLayoutsWithAltFrontMatter.md\","},{"lineNumber":157,"author":{"gitId":"-"},"content":" \"title\": \"Test nunjucks path resolving\","},{"lineNumber":158,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":159,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":160,"author":{"gitId":"-"},"content":" },"},{"lineNumber":161,"author":{"gitId":"-"},"content":" {"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \"src\": \"testNunjucksPathResolving.md\","},{"lineNumber":163,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":164,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":166,"author":{"gitId":"-"},"content":" },"},{"lineNumber":167,"author":{"gitId":"-"},"content":" {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \"src\": \"sub_site/testNunjucksPathResolving.md\","},{"lineNumber":169,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":170,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":171,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":172,"author":{"gitId":"-"},"content":" },"},{"lineNumber":173,"author":{"gitId":"-"},"content":" {"},{"lineNumber":174,"author":{"gitId":"-"},"content":" \"src\": \"sub_site/nested_sub_site/testNunjucksPathResolving.md\","},{"lineNumber":175,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":176,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":177,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":178,"author":{"gitId":"-"},"content":" },"},{"lineNumber":179,"author":{"gitId":"-"},"content":" {"},{"lineNumber":180,"author":{"gitId":"-"},"content":" \"src\": \"testAntiFOUCStyles.md\","},{"lineNumber":181,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":182,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":183,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":184,"author":{"gitId":"-"},"content":" },"},{"lineNumber":185,"author":{"gitId":"-"},"content":" {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" \"src\": \"testAnchorGeneration.md\","},{"lineNumber":187,"author":{"gitId":"-"},"content":" \"title\": \"Anchor Generation Test\","},{"lineNumber":188,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \"should-have-anchor-7\": \"should have anchor\","},{"lineNumber":190,"author":{"gitId":"-"},"content":" \"should-have-anchor-20\": \"should have anchor\","},{"lineNumber":191,"author":{"gitId":"-"},"content":" \"should-have-anchor-8\": \"should have anchor\","},{"lineNumber":192,"author":{"gitId":"-"},"content":" \"should-have-anchor-9\": \"should have anchor\","},{"lineNumber":193,"author":{"gitId":"-"},"content":" \"should-have-anchor-10\": \"should have anchor\","},{"lineNumber":194,"author":{"gitId":"-"},"content":" \"should-have-anchor-11\": \"should have anchor\","},{"lineNumber":195,"author":{"gitId":"-"},"content":" \"should-have-anchor-21\": \"should have anchor\","},{"lineNumber":196,"author":{"gitId":"-"},"content":" \"should-have-anchor-22\": \"should have anchor\","},{"lineNumber":197,"author":{"gitId":"-"},"content":" \"should-have-anchor-23\": \"should have anchor\","},{"lineNumber":198,"author":{"gitId":"-"},"content":" \"should-have-anchor-24\": \"should have anchor\","},{"lineNumber":199,"author":{"gitId":"-"},"content":" \"root-file\": \"Root file\","},{"lineNumber":200,"author":{"gitId":"-"},"content":" \"should-have-anchor\": \"should have anchor\","},{"lineNumber":201,"author":{"gitId":"-"},"content":" \"should-have-anchor-2\": \"should have anchor\","},{"lineNumber":202,"author":{"gitId":"-"},"content":" \"should-have-anchor-3\": \"should have anchor\","},{"lineNumber":203,"author":{"gitId":"-"},"content":" \"should-have-anchor-4\": \"should have anchor\","},{"lineNumber":204,"author":{"gitId":"-"},"content":" \"included-file\": \"Included File\","},{"lineNumber":205,"author":{"gitId":"-"},"content":" \"should-have-anchor-14\": \"should have anchor\","},{"lineNumber":206,"author":{"gitId":"-"},"content":" \"should-have-anchor-15\": \"should have anchor\","},{"lineNumber":207,"author":{"gitId":"-"},"content":" \"should-have-anchor-16\": \"should have anchor\","},{"lineNumber":208,"author":{"gitId":"-"},"content":" \"should-have-anchor-17\": \"should have anchor\""},{"lineNumber":209,"author":{"gitId":"-"},"content":" },"},{"lineNumber":210,"author":{"gitId":"-"},"content":" \"headingKeywords\": {},"},{"lineNumber":211,"author":{"gitId":"-"},"content":" \"frontmatterKeywords\": \"testFrontmatterKeywords\""},{"lineNumber":212,"author":{"gitId":"-"},"content":" },"},{"lineNumber":213,"author":{"gitId":"-"},"content":" {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" \"src\": \"testAnnotate.md\","},{"lineNumber":215,"author":{"gitId":"-"},"content":" \"title\": \"Annotate Feature Test\","},{"lineNumber":216,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":217,"author":{"gitId":"-"},"content":" \"content\": \"Content\""},{"lineNumber":218,"author":{"gitId":"-"},"content":" },"},{"lineNumber":219,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":220,"author":{"gitId":"-"},"content":" },"},{"lineNumber":221,"author":{"gitId":"-"},"content":" {"},{"lineNumber":222,"author":{"gitId":"-"},"content":" \"src\": \"testTooltipSpacing.md\","},{"lineNumber":223,"author":{"gitId":"-"},"content":" \"title\": \"Tooltip Spacing Test\","},{"lineNumber":224,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":225,"author":{"gitId":"-"},"content":" \"569-stray-space-after-tooltip\": \"569: Stray space after tooltip\""},{"lineNumber":226,"author":{"gitId":"-"},"content":" },"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":228,"author":{"gitId":"-"},"content":" },"},{"lineNumber":229,"author":{"gitId":"-"},"content":" {"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \"src\": \"testThumbnails.md\","},{"lineNumber":231,"author":{"gitId":"-"},"content":" \"title\": \"Thumbnails Test\","},{"lineNumber":232,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":233,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":234,"author":{"gitId":"-"},"content":" },"},{"lineNumber":235,"author":{"gitId":"-"},"content":" {"},{"lineNumber":236,"author":{"gitId":"-"},"content":" \"src\": \"testPlantUML.md\","},{"lineNumber":237,"author":{"gitId":"-"},"content":" \"title\": \"PlantUML Test\","},{"lineNumber":238,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":239,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":240,"author":{"gitId":"-"},"content":" },"},{"lineNumber":241,"author":{"gitId":"-"},"content":" {"},{"lineNumber":242,"author":{"gitId":"-"},"content":" \"src\": \"testCodeBlocks.md\","},{"lineNumber":243,"author":{"gitId":"-"},"content":" \"title\": \"Test: Code Blocks\","},{"lineNumber":244,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":245,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":246,"author":{"gitId":"-"},"content":" },"},{"lineNumber":247,"author":{"gitId":"-"},"content":" {"},{"lineNumber":248,"author":{"gitId":"-"},"content":" \"src\": \"testIncludePluginsRendered.md\","},{"lineNumber":249,"author":{"gitId":"-"},"content":" \"title\": \"Included files should have plugins rendered on them\","},{"lineNumber":250,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":252,"author":{"gitId":"-"},"content":" },"},{"lineNumber":253,"author":{"gitId":"-"},"content":" {"},{"lineNumber":254,"author":{"gitId":"-"},"content":" \"src\": \"testIncludeMultipleModals.md\","},{"lineNumber":255,"author":{"gitId":"-"},"content":" \"title\": \"Multiple inclusions of a modal should be supported\","},{"lineNumber":256,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":257,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":258,"author":{"gitId":"-"},"content":" },"},{"lineNumber":259,"author":{"gitId":"-"},"content":" {"},{"lineNumber":260,"author":{"gitId":"-"},"content":" \"src\": \"testPopovers.md\","},{"lineNumber":261,"author":{"gitId":"-"},"content":" \"title\": \"Test: Popovers\","},{"lineNumber":262,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":263,"author":{"gitId":"-"},"content":" \"nested-panel\": \"Nested Panel\","},{"lineNumber":264,"author":{"gitId":"-"},"content":" \"normal-panel-content-heading\": \"Normal panel content heading\","},{"lineNumber":265,"author":{"gitId":"-"},"content":" \"some-heading\": \"Some heading\","},{"lineNumber":266,"author":{"gitId":"-"},"content":" \"some-heading-2\": \"Some heading\""},{"lineNumber":267,"author":{"gitId":"-"},"content":" },"},{"lineNumber":268,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":269,"author":{"gitId":"-"},"content":" },"},{"lineNumber":270,"author":{"gitId":"-"},"content":" {"},{"lineNumber":271,"author":{"gitId":"-"},"content":" \"src\": \"testPopoverTrigger.md\","},{"lineNumber":272,"author":{"gitId":"-"},"content":" \"title\": \"Popover initiated by trigger should honor trigger attribute\","},{"lineNumber":273,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":274,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":275,"author":{"gitId":"-"},"content":" },"},{"lineNumber":276,"author":{"gitId":"-"},"content":" {"},{"lineNumber":277,"author":{"gitId":"-"},"content":" \"src\": \"testModals.md\","},{"lineNumber":278,"author":{"gitId":"-"},"content":" \"title\": \"Test: Modals\","},{"lineNumber":279,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":280,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":281,"author":{"gitId":"-"},"content":" },"},{"lineNumber":282,"author":{"gitId":"-"},"content":" {"},{"lineNumber":283,"author":{"gitId":"-"},"content":" \"src\": \"testDates.md\","},{"lineNumber":284,"author":{"gitId":"-"},"content":" \"title\": \"Nunjucks date filter tests\","},{"lineNumber":285,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":286,"author":{"gitId":"-"},"content":" \"dates\": \"Dates\""},{"lineNumber":287,"author":{"gitId":"-"},"content":" },"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":289,"author":{"gitId":"-"},"content":" },"},{"lineNumber":290,"author":{"gitId":"-"},"content":" {"},{"lineNumber":291,"author":{"gitId":"-"},"content":" \"src\": \"testVariableContainsInclude.md\","},{"lineNumber":292,"author":{"gitId":"-"},"content":" \"title\": \"Variable should be able to store included content fragments\","},{"lineNumber":293,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":294,"author":{"gitId":"-"},"content":" \"content-fragment\": \"content fragment\""},{"lineNumber":295,"author":{"gitId":"-"},"content":" },"},{"lineNumber":296,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":297,"author":{"gitId":"-"},"content":" },"},{"lineNumber":298,"author":{"gitId":"-"},"content":" {"},{"lineNumber":299,"author":{"gitId":"-"},"content":" \"src\": \"testIncludeBoilerplate.md\","},{"lineNumber":300,"author":{"gitId":"-"},"content":" \"title\": \"Content inside \u003cinclude\u003e should not be processed by markdown\","},{"lineNumber":301,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":302,"author":{"gitId":"-"},"content":" \"hello\": \"hello\""},{"lineNumber":303,"author":{"gitId":"-"},"content":" },"},{"lineNumber":304,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":305,"author":{"gitId":"-"},"content":" },"},{"lineNumber":306,"author":{"gitId":"-"},"content":" {"},{"lineNumber":307,"author":{"gitId":"-"},"content":" \"src\": \"testPanels.md\","},{"lineNumber":308,"author":{"gitId":"-"},"content":" \"title\": \"Test: Panels\","},{"lineNumber":309,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":310,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":311,"author":{"gitId":"-"},"content":" },"},{"lineNumber":312,"author":{"gitId":"-"},"content":" {"},{"lineNumber":313,"author":{"gitId":"-"},"content":" \"src\": \"testPanelMarkdownParsing.md\","},{"lineNumber":314,"author":{"gitId":"-"},"content":" \"title\": \"markdown-it should parse minimized panel as inline element and normal panel as block element\","},{"lineNumber":315,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":316,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":317,"author":{"gitId":"-"},"content":" },"},{"lineNumber":318,"author":{"gitId":"-"},"content":" {"},{"lineNumber":319,"author":{"gitId":"-"},"content":" \"src\": \"testCenterText.md\","},{"lineNumber":320,"author":{"gitId":"-"},"content":" \"title\": \"Center-aligned text test\","},{"lineNumber":321,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":322,"author":{"gitId":"-"},"content":" \"center-text\": \"Center Text\""},{"lineNumber":323,"author":{"gitId":"-"},"content":" },"},{"lineNumber":324,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":325,"author":{"gitId":"-"},"content":" },"},{"lineNumber":326,"author":{"gitId":"-"},"content":" {"},{"lineNumber":327,"author":{"gitId":"-"},"content":" \"src\": \"testHr.md\","},{"lineNumber":328,"author":{"gitId":"-"},"content":" \"title\": \"create different types of horizontal rules\","},{"lineNumber":329,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":330,"author":{"gitId":"-"},"content":" \"different-types-of-horizontal-rules\": \"Different types of horizontal rules\""},{"lineNumber":331,"author":{"gitId":"-"},"content":" },"},{"lineNumber":332,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":333,"author":{"gitId":"-"},"content":" },"},{"lineNumber":334,"author":{"gitId":"-"},"content":" {"},{"lineNumber":335,"author":{"gitId":"-"},"content":" \"src\": \"testPageNav.md\","},{"lineNumber":336,"author":{"gitId":"-"},"content":" \"title\": \"text interpolation should be skipped appropriately\","},{"lineNumber":337,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":338,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":339,"author":{"gitId":"-"},"content":" },"},{"lineNumber":340,"author":{"gitId":"-"},"content":" {"},{"lineNumber":341,"author":{"gitId":"-"},"content":" \"src\": \"testPanelsClosingTransition.md\","},{"lineNumber":342,"author":{"gitId":"-"},"content":" \"title\": \"Test: Panels closing transition\","},{"lineNumber":343,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":344,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":345,"author":{"gitId":"-"},"content":" },"},{"lineNumber":346,"author":{"gitId":"-"},"content":" {"},{"lineNumber":347,"author":{"gitId":"-"},"content":" \"src\": \"testLinks.md\","},{"lineNumber":348,"author":{"gitId":"-"},"content":" \"title\": \"Autolink tests\","},{"lineNumber":349,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":350,"author":{"gitId":"-"},"content":" \"autolinks\": \"Autolinks\""},{"lineNumber":351,"author":{"gitId":"-"},"content":" },"},{"lineNumber":352,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":353,"author":{"gitId":"-"},"content":" },"},{"lineNumber":354,"author":{"gitId":"-"},"content":" {"},{"lineNumber":355,"author":{"gitId":"-"},"content":" \"src\": \"testTree.md\","},{"lineNumber":356,"author":{"gitId":"-"},"content":" \"title\": \"Tree tests\","},{"lineNumber":357,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":358,"author":{"gitId":"-"},"content":" \"tree\": \"Tree\","},{"lineNumber":359,"author":{"gitId":"-"},"content":" \"single-tree\": \"Single Tree\","},{"lineNumber":360,"author":{"gitId":"-"},"content":" \"multiple-tree\": \"Multiple Tree\","},{"lineNumber":361,"author":{"gitId":"-"},"content":" \"inline-markdown\": \"Inline Markdown\""},{"lineNumber":362,"author":{"gitId":"-"},"content":" },"},{"lineNumber":363,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":364,"author":{"gitId":"-"},"content":" },"},{"lineNumber":365,"author":{"gitId":"-"},"content":" {"},{"lineNumber":366,"author":{"gitId":"-"},"content":" \"src\": \"testMath.md\","},{"lineNumber":367,"author":{"gitId":"-"},"content":" \"title\": \"Math formulae should be displayed correctly, with additional plugin\","},{"lineNumber":368,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":369,"author":{"gitId":"-"},"content":" \"math-formulae\": \"Math Formulae\","},{"lineNumber":370,"author":{"gitId":"-"},"content":" \"markbind-supports-typesetting-tex-math-equations\": \"Markbind supports typesetting TeX math equations\","},{"lineNumber":371,"author":{"gitId":"-"},"content":" \"additional-delimiters-can-be-used-if-mathdelimiters-plugin-is-enabled\": \"Additional delimiters can be used if mathDelimiters plugin is enabled\""},{"lineNumber":372,"author":{"gitId":"-"},"content":" },"},{"lineNumber":373,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":374,"author":{"gitId":"-"},"content":" },"},{"lineNumber":375,"author":{"gitId":"-"},"content":" {"},{"lineNumber":376,"author":{"gitId":"-"},"content":" \"src\": \"testImages.md\","},{"lineNumber":377,"author":{"gitId":"-"},"content":" \"title\": \"Rendering of images according to specified dimension and auto-linkify ability\","},{"lineNumber":378,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":379,"author":{"gitId":"-"},"content":" \"images\": \"Images\","},{"lineNumber":380,"author":{"gitId":"-"},"content":" \"alt\": \"Alt\","},{"lineNumber":381,"author":{"gitId":"-"},"content":" \"dimension\": \"Dimension\","},{"lineNumber":382,"author":{"gitId":"-"},"content":" \"linkify\": \"Linkify\""},{"lineNumber":383,"author":{"gitId":"-"},"content":" },"},{"lineNumber":384,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":385,"author":{"gitId":"-"},"content":" },"},{"lineNumber":386,"author":{"gitId":"-"},"content":" {"},{"lineNumber":387,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavTarget.md\","},{"lineNumber":388,"author":{"gitId":"-"},"content":" \"title\": \"Bootstrap scrollspy related classes should be applied only if there are navigable headings\","},{"lineNumber":389,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":390,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":391,"author":{"gitId":"-"},"content":" },"},{"lineNumber":392,"author":{"gitId":"-"},"content":" {"},{"lineNumber":393,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavWithoutTitleAndNavHeadings.md\","},{"lineNumber":394,"author":{"gitId":"-"},"content":" \"title\": \"page nav separator should be omitted when there is no title and navigation headings added\","},{"lineNumber":395,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":396,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":397,"author":{"gitId":"-"},"content":" },"},{"lineNumber":398,"author":{"gitId":"-"},"content":" {"},{"lineNumber":399,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavWithOnlyTitle.md\","},{"lineNumber":400,"author":{"gitId":"-"},"content":" \"title\": \"page nav with title added\","},{"lineNumber":401,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":402,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":403,"author":{"gitId":"-"},"content":" },"},{"lineNumber":404,"author":{"gitId":"-"},"content":" {"},{"lineNumber":405,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavPrint.md\","},{"lineNumber":406,"author":{"gitId":"-"},"content":" \"title\": \"printing page nav\","},{"lineNumber":407,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":408,"author":{"gitId":"-"},"content":" \"h1\": \"H1\","},{"lineNumber":409,"author":{"gitId":"-"},"content":" \"h2\": \"H2\""},{"lineNumber":410,"author":{"gitId":"-"},"content":" },"},{"lineNumber":411,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":412,"author":{"gitId":"-"},"content":" },"},{"lineNumber":413,"author":{"gitId":"-"},"content":" {"},{"lineNumber":414,"author":{"gitId":"-"},"content":" \"src\": \"testWeb3FormPlugin.md\","},{"lineNumber":415,"author":{"gitId":"-"},"content":" \"title\": \"web 3 forms\","},{"lineNumber":416,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":417,"author":{"gitId":"-"},"content":" \"i-am-a-header\": \"🚀 I am a header\""},{"lineNumber":418,"author":{"gitId":"-"},"content":" },"},{"lineNumber":419,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":420,"author":{"gitId":"-"},"content":" },"},{"lineNumber":421,"author":{"gitId":"-"},"content":" {"},{"lineNumber":422,"author":{"gitId":"-"},"content":" \"src\": \"testList.md\","},{"lineNumber":423,"author":{"gitId":"-"},"content":" \"title\": \"web 3 forms\","},{"lineNumber":424,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":425,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":426,"author":{"gitId":"-"},"content":" },"},{"lineNumber":427,"author":{"gitId":"-"},"content":" {"},{"lineNumber":428,"author":{"gitId":"-"},"content":" \"src\": \"testFontAwesomeInPage.md\","},{"lineNumber":429,"author":{"gitId":"-"},"content":" \"title\": \"font-awesome icon in page, only font-awesome stylesheet should be loaded\","},{"lineNumber":430,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":431,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":432,"author":{"gitId":"-"},"content":" },"},{"lineNumber":433,"author":{"gitId":"-"},"content":" {"},{"lineNumber":434,"author":{"gitId":"-"},"content":" \"src\": \"testGlyphiconInPage.md\","},{"lineNumber":435,"author":{"gitId":"-"},"content":" \"title\": \"glyphicon icon in page, only glyphicon stylesheet should be loaded\","},{"lineNumber":436,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":437,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":438,"author":{"gitId":"-"},"content":" },"},{"lineNumber":439,"author":{"gitId":"-"},"content":" {"},{"lineNumber":440,"author":{"gitId":"-"},"content":" \"src\": \"testMaterialIconsInPage.md\","},{"lineNumber":441,"author":{"gitId":"-"},"content":" \"title\": \"material-icons icon in page, only material-icons stylesheet should be loaded\","},{"lineNumber":442,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":443,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":444,"author":{"gitId":"-"},"content":" },"},{"lineNumber":445,"author":{"gitId":"-"},"content":" {"},{"lineNumber":446,"author":{"gitId":"-"},"content":" \"src\": \"testOcticonInPage.md\","},{"lineNumber":447,"author":{"gitId":"-"},"content":" \"title\": \"octicon icon in page, only octicon stylesheet should be loaded\","},{"lineNumber":448,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":449,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":450,"author":{"gitId":"-"},"content":" },"},{"lineNumber":451,"author":{"gitId":"-"},"content":" {"},{"lineNumber":452,"author":{"gitId":"-"},"content":" \"src\": \"testIconsInSiteLayout.md\","},{"lineNumber":453,"author":{"gitId":"-"},"content":" \"title\": \"glyphicon \u0026 octicon icon in page, only glyphicon \u0026 octicon stylesheets should be loaded\","},{"lineNumber":454,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":455,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":456,"author":{"gitId":"yiwen101"},"content":" },"},{"lineNumber":457,"author":{"gitId":"yiwen101"},"content":" {"},{"lineNumber":458,"author":{"gitId":"yiwen101"},"content":" \"src\": \"testSourceContainScript.md\","},{"lineNumber":459,"author":{"gitId":"yiwen101"},"content":" \"title\": \"Test: If source contains script or css, when included, the script or css should be included\","},{"lineNumber":460,"author":{"gitId":"yiwen101"},"content":" \"headings\": {"},{"lineNumber":461,"author":{"gitId":"yiwen101"},"content":" \"panel-with-src-that-contains-css-and-script-header\": \"Panel with src that contains css and script header\","},{"lineNumber":462,"author":{"gitId":"yiwen101"},"content":" \"h1-text\": \"\\n\\n\\n h1 text\\n \\n\""},{"lineNumber":463,"author":{"gitId":"yiwen101"},"content":" },"},{"lineNumber":464,"author":{"gitId":"yiwen101"},"content":" \"headingKeywords\": {}"},{"lineNumber":465,"author":{"gitId":"-"},"content":" }"},{"lineNumber":466,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":467,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":458,"yiwen101":9}},{"path":"packages/cli/test/functional/test_site/expected/testSourceContainScript.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":2,"author":{"gitId":"yiwen101"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"yiwen101"},"content":") {"},{"lineNumber":4,"author":{"gitId":"yiwen101"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027div\u0027,[_c(\u0027header\u0027,[_c(\u0027navbar\u0027,{attrs:{\"type\":\"dark\",\"default-highlight-on\":\"sibling-or-child\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/\",\"title\":\"Home\"}},[_v(\"MarkBind Test Site\")])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/test_site/bugs/index.html\"}},[_v(\"Open Bugs\")])])]),_v(\" \"),_m(0)],1),_v(\" \"),_m(1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_c(\u0027div\u0027,[_c(\u0027h2\u0027,{attrs:{\"id\":\"default-layout\"}},[_v(\"Default Layout\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#default-layout\",\"onclick\":\"event.stopPropagation()\"}})])])])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027div\u0027,[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_site/index.html\"}},[_v(\"Home 🏠\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_site/bugs/index.html\"}},[_v(\"Open Bugs 🐛\")])])]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_c(\u0027h3\u0027,{attrs:{\"id\":\"testing-site-nav\"}},[_v(\"Testing Site-Nav\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#testing-site-nav\",\"onclick\":\"event.stopPropagation()\"}})])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027strong\u0027,[_v(\"Dropdown \")]),_v(\" \"),_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-search\",attrs:{\"aria-hidden\":\"true\"}}),_v(\" title ✏️ \"),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon site-nav-rotate-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list\"},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_v(\"Dropdown link one\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_v(\"Html within site-nav \"),_c(\u0027span\u0027,{staticStyle:{\"color\":\"red\"}},[_v(\"should\")]),_v(\" be displayed properly\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_v(\"Nested Dropdown title 📐\\n\\n\"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-2\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_c(\u0027strong\u0027,[_v(\"Nested\")]),_v(\" Dropdown link one\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-2\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_c(\u0027strong\u0027,[_v(\"Nested\")]),_v(\" Dropdown link two\")])])])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_v(\"Dropdown link two\")])])])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_c(\u0027mark\u0027,[_v(\"Third Link\")]),_v(\" 📋\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_v(\"Filler text \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.youtube.com/\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-facetime-video\",attrs:{\"aria-hidden\":\"true\"}}),_v(\" Youtube 📺\")]),_v(\" filler text\"),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.youtube.com/watch?v\u003ddQw4w9WgXcQ\"}},[_v(\"The answer to everything in the universe\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027mark\u0027,[_v(\"Dropdown title\")]),_v(\" \"),_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-comment\",attrs:{\"aria-hidden\":\"true\"}}),_v(\" ✏️ \"),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon site-nav-rotate-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list\"},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-2\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_c(\u0027strong\u0027,[_v(\"Nested\")]),_v(\" Dropdown link one\")])])])])])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_v(\"Really Long Dropdown Title Really Long Dropdown Title Really Long Dropdown Title Really Long Dropdown\\n\\n\"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-1\"},[_v(\"Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text\")]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_v(\"Nested Dropdown Title\\n\\n\"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-2\"},[_v(\"Hello Doge Hello Doge 🐶\")]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-2\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_site/index.html\"}},[_c(\u0027strong\u0027,[_v(\"NESTED LINK\")]),_v(\" Home 🏠\")])])]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-2\"},[_v(\"Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit\")])])])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_v(\"Test line break in navigation layout\\n\\n\"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-1\"},[_v(\"Nested line break text ✂️\")]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_site/index.html\"}},[_v(\"Nested line break href\")]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-2\"},[_v(\"Nested Nested line break text ✂️\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_v(\"Nested line break dropdown menu\\n\\n\"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-2\"},[_v(\"Line break item 2 📘\")])])])])])])],1)],1)])]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027panel\u0027,{attrs:{\"src\":\"/test_site/testPanels/PanelSourceContainsScript._include_.html\",\"expanded\":\"\",\"panelId\":\"panel-with-src-that-contains-css-and-script-header\"},scopedSlots:_u([{key:\"header\",fn:function(){return [_c(\u0027h2\u0027,{attrs:{\"id\":\"panel-with-src-that-contains-css-and-script-header\"}},[_v(\"Panel with src that contains css and script header\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#panel-with-src-that-contains-css-and-script-header\",\"onclick\":\"event.stopPropagation()\"}})])]},proxy:true}])})],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(2)])}"},{"lineNumber":5,"author":{"gitId":"yiwen101"},"content":"};"},{"lineNumber":6,"author":{"gitId":"yiwen101"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"yiwen101"},"content":") {"},{"lineNumber":8,"author":{"gitId":"yiwen101"},"content":"with(this){return _c(\u0027div\u0027,{staticClass:\"bg-info display-4 text-center text-white\"},[_c(\u0027br\u0027),_v(\"\\n Test Jumbotron\"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027br\u0027)])}"},{"lineNumber":9,"author":{"gitId":"yiwen101"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"yiwen101"},"content":") {"},{"lineNumber":11,"author":{"gitId":"yiwen101"},"content":"with(this){return _c(\u0027p\u0027,[_c(\u0027strong\u0027,[_v(\"Relative Link Test\")]),_v(\" This is a relative Intra-Site link in a layout (see \"),_c(\u0027a\u0027,{attrs:{\"href\":\"/test_site/index.html#heading-with-hidden-keyword\"}},[_v(\"link\")]),_v(\")\")])}"},{"lineNumber":12,"author":{"gitId":"yiwen101"},"content":"},function anonymous("},{"lineNumber":13,"author":{"gitId":"yiwen101"},"content":") {"},{"lineNumber":14,"author":{"gitId":"yiwen101"},"content":"with(this){return _c(\u0027div\u0027,[_c(\u0027footer\u0027,[_c(\u0027h1\u0027,{attrs:{\"id\":\"heading-in-footer-should-not-be-indexed\"}},[_v(\"Heading in footer should not be indexed\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#heading-in-footer-should-not-be-indexed\",\"onclick\":\"event.stopPropagation()\"}})]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"text-center\"},[_v(\"\\n This is a dynamic height footer that supports markdown \"),_c(\u0027span\u0027,[_v(\"😄\")]),_v(\"!\\n \")])])])}"},{"lineNumber":15,"author":{"gitId":"yiwen101"},"content":"}];"},{"lineNumber":16,"author":{"gitId":"yiwen101"},"content":" "}],"authorContributionMap":{"yiwen101":16}},{"path":"packages/cli/test/functional/test_site/site.json","fileType":"json","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"{"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \"baseUrl\": \"/test_site\","},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"faviconPath\": \"favicon.png\","},{"lineNumber":4,"author":{"gitId":"-"},"content":" \"titlePrefix\": \"\","},{"lineNumber":5,"author":{"gitId":"-"},"content":" \"titleSuffix\": \"\","},{"lineNumber":6,"author":{"gitId":"-"},"content":" \"style\": {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \"codeLineNumbers\": true"},{"lineNumber":8,"author":{"gitId":"-"},"content":" },"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \"pages\": ["},{"lineNumber":10,"author":{"gitId":"-"},"content":" {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \"src\": \"index.md\","},{"lineNumber":12,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"frontmatter\": {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"frontmatterOverrideProperty\": \"Overridden by frontmatter override\","},{"lineNumber":15,"author":{"gitId":"-"},"content":" \"globalAndFrontmatterOverrideProperty\": \"Overridden by frontmatter override\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" }"},{"lineNumber":17,"author":{"gitId":"-"},"content":" },"},{"lineNumber":18,"author":{"gitId":"-"},"content":" {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \"src\": [\"testEmptyFrontmatter.md\", \"testLayoutsOverride.md\", \"testEmptyAltFrontMatter.md\", \"testLayoutsOverrideWithAltFrontmatter.md\"],"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"layout\": \"testLayout.md\""},{"lineNumber":22,"author":{"gitId":"-"},"content":" },"},{"lineNumber":23,"author":{"gitId":"-"},"content":" {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \"src\": [\"testAltFrontMatterInvalidKeyValue.md\", \"testSingleAltFrontMatter.md\"],"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\""},{"lineNumber":26,"author":{"gitId":"-"},"content":" },"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"src\": [\"testAltFrontMatterParsing.md\"]"},{"lineNumber":29,"author":{"gitId":"-"},"content":" },"},{"lineNumber":30,"author":{"gitId":"-"},"content":" {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \"src\": \"testExternalScripts.md\","},{"lineNumber":32,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":33,"author":{"gitId":"-"},"content":" \"layout\": \"testLayout.md\","},{"lineNumber":34,"author":{"gitId":"-"},"content":" \"externalScripts\": ["},{"lineNumber":35,"author":{"gitId":"-"},"content":" \"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config\u003dTeX-MML-AM_CHTML\""},{"lineNumber":36,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":37,"author":{"gitId":"-"},"content":" },"},{"lineNumber":38,"author":{"gitId":"-"},"content":" {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \"src\": [\"testLayouts.md\", \"testLayoutsWithAltFrontMatter.md\"],"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \"title\": \"Test nunjucks path resolving\""},{"lineNumber":41,"author":{"gitId":"-"},"content":" },"},{"lineNumber":42,"author":{"gitId":"-"},"content":" {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \"src\": ["},{"lineNumber":44,"author":{"gitId":"-"},"content":" \"testNunjucksPathResolving.md\","},{"lineNumber":45,"author":{"gitId":"-"},"content":" \"sub_site/testNunjucksPathResolving.md\","},{"lineNumber":46,"author":{"gitId":"-"},"content":" \"sub_site/nested_sub_site/testNunjucksPathResolving.md\""},{"lineNumber":47,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\""},{"lineNumber":49,"author":{"gitId":"-"},"content":" },"},{"lineNumber":50,"author":{"gitId":"-"},"content":" {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \"glob\": [\"**/index.md\", \"**/test_md_fragment.md\"]"},{"lineNumber":52,"author":{"gitId":"-"},"content":" },"},{"lineNumber":53,"author":{"gitId":"-"},"content":" {"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \"src\": \"testAntiFOUCStyles.md\","},{"lineNumber":55,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\""},{"lineNumber":56,"author":{"gitId":"-"},"content":" },"},{"lineNumber":57,"author":{"gitId":"-"},"content":" {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \"src\": \"testAnchorGeneration.md\","},{"lineNumber":59,"author":{"gitId":"-"},"content":" \"title\": \"Anchor Generation Test\""},{"lineNumber":60,"author":{"gitId":"-"},"content":" },"},{"lineNumber":61,"author":{"gitId":"-"},"content":" {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \"src\": \"testAnnotate.md\","},{"lineNumber":63,"author":{"gitId":"-"},"content":" \"title\": \"Annotate Feature Test\""},{"lineNumber":64,"author":{"gitId":"-"},"content":" },"},{"lineNumber":65,"author":{"gitId":"-"},"content":" {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \"src\": \"testTooltipSpacing.md\","},{"lineNumber":67,"author":{"gitId":"-"},"content":" \"title\": \"Tooltip Spacing Test\""},{"lineNumber":68,"author":{"gitId":"-"},"content":" },"},{"lineNumber":69,"author":{"gitId":"-"},"content":" {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \"src\": \"testThumbnails.md\","},{"lineNumber":71,"author":{"gitId":"-"},"content":" \"title\": \"Thumbnails Test\""},{"lineNumber":72,"author":{"gitId":"-"},"content":" },"},{"lineNumber":73,"author":{"gitId":"-"},"content":" {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \"src\": \"testPlantUML.md\","},{"lineNumber":75,"author":{"gitId":"-"},"content":" \"title\": \"PlantUML Test\""},{"lineNumber":76,"author":{"gitId":"-"},"content":" },"},{"lineNumber":77,"author":{"gitId":"-"},"content":" {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \"src\": \"testCodeBlocks.md\","},{"lineNumber":79,"author":{"gitId":"-"},"content":" \"title\": \"Test: Code Blocks\""},{"lineNumber":80,"author":{"gitId":"-"},"content":" },"},{"lineNumber":81,"author":{"gitId":"-"},"content":" {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \"src\": \"testIncludePluginsRendered.md\","},{"lineNumber":83,"author":{"gitId":"-"},"content":" \"title\": \"Included files should have plugins rendered on them\""},{"lineNumber":84,"author":{"gitId":"-"},"content":" },"},{"lineNumber":85,"author":{"gitId":"-"},"content":" {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \"src\": \"testIncludeMultipleModals.md\","},{"lineNumber":87,"author":{"gitId":"-"},"content":" \"title\": \"Multiple inclusions of a modal should be supported\""},{"lineNumber":88,"author":{"gitId":"-"},"content":" },"},{"lineNumber":89,"author":{"gitId":"-"},"content":" {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \"src\": \"testPopovers.md\","},{"lineNumber":91,"author":{"gitId":"-"},"content":" \"title\": \"Test: Popovers\""},{"lineNumber":92,"author":{"gitId":"-"},"content":" },"},{"lineNumber":93,"author":{"gitId":"-"},"content":" {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \"src\": \"testPopoverTrigger.md\","},{"lineNumber":95,"author":{"gitId":"-"},"content":" \"title\": \"Popover initiated by trigger should honor trigger attribute\""},{"lineNumber":96,"author":{"gitId":"-"},"content":" },"},{"lineNumber":97,"author":{"gitId":"-"},"content":" {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" \"src\": \"testModals.md\","},{"lineNumber":99,"author":{"gitId":"-"},"content":" \"title\": \"Test: Modals\""},{"lineNumber":100,"author":{"gitId":"-"},"content":" },"},{"lineNumber":101,"author":{"gitId":"-"},"content":" {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \"src\": \"testDates.md\","},{"lineNumber":103,"author":{"gitId":"-"},"content":" \"title\": \"Nunjucks date filter tests\""},{"lineNumber":104,"author":{"gitId":"-"},"content":" },"},{"lineNumber":105,"author":{"gitId":"-"},"content":" {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"src\": \"testVariableContainsInclude.md\","},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"title\": \"Variable should be able to store included content fragments\""},{"lineNumber":108,"author":{"gitId":"-"},"content":" },"},{"lineNumber":109,"author":{"gitId":"-"},"content":" {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \"src\": \"testIncludeBoilerplate.md\","},{"lineNumber":111,"author":{"gitId":"-"},"content":" \"title\": \"Content inside \u003cinclude\u003e should not be processed by markdown\""},{"lineNumber":112,"author":{"gitId":"-"},"content":" },"},{"lineNumber":113,"author":{"gitId":"-"},"content":" {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \"src\": \"testPanels.md\","},{"lineNumber":115,"author":{"gitId":"-"},"content":" \"title\": \"Test: Panels\""},{"lineNumber":116,"author":{"gitId":"-"},"content":" },"},{"lineNumber":117,"author":{"gitId":"-"},"content":" {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \"src\": \"testPanelMarkdownParsing.md\","},{"lineNumber":119,"author":{"gitId":"-"},"content":" \"title\": \"markdown-it should parse minimized panel as inline element and normal panel as block element\""},{"lineNumber":120,"author":{"gitId":"-"},"content":" },"},{"lineNumber":121,"author":{"gitId":"-"},"content":" {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \"src\": \"testCenterText.md\","},{"lineNumber":123,"author":{"gitId":"-"},"content":" \"title\": \"Center-aligned text test\""},{"lineNumber":124,"author":{"gitId":"-"},"content":" },"},{"lineNumber":125,"author":{"gitId":"-"},"content":" {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \"src\": \"testHr.md\","},{"lineNumber":127,"author":{"gitId":"-"},"content":" \"title\": \"create different types of horizontal rules\""},{"lineNumber":128,"author":{"gitId":"-"},"content":" },"},{"lineNumber":129,"author":{"gitId":"-"},"content":" {"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \"src\": \"testPageNav.md\","},{"lineNumber":131,"author":{"gitId":"-"},"content":" \"title\": \"text interpolation should be skipped appropriately\""},{"lineNumber":132,"author":{"gitId":"-"},"content":" },"},{"lineNumber":133,"author":{"gitId":"-"},"content":" {"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \"src\": \"testPanelsClosingTransition.md\","},{"lineNumber":135,"author":{"gitId":"-"},"content":" \"title\": \"Test: Panels closing transition\""},{"lineNumber":136,"author":{"gitId":"-"},"content":" },"},{"lineNumber":137,"author":{"gitId":"-"},"content":" {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \"src\": \"testLinks.md\","},{"lineNumber":139,"author":{"gitId":"-"},"content":" \"title\": \"Autolink tests\""},{"lineNumber":140,"author":{"gitId":"-"},"content":" },"},{"lineNumber":141,"author":{"gitId":"-"},"content":" {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" \"src\": \"testTree.md\","},{"lineNumber":143,"author":{"gitId":"-"},"content":" \"title\": \"Tree tests\""},{"lineNumber":144,"author":{"gitId":"-"},"content":" },"},{"lineNumber":145,"author":{"gitId":"-"},"content":" {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" \"src\": \"testMath.md\","},{"lineNumber":147,"author":{"gitId":"-"},"content":" \"title\": \"Math formulae should be displayed correctly, with additional plugin\""},{"lineNumber":148,"author":{"gitId":"-"},"content":" },"},{"lineNumber":149,"author":{"gitId":"-"},"content":" {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" \"src\": \"testImages.md\","},{"lineNumber":151,"author":{"gitId":"-"},"content":" \"title\": \"Rendering of images according to specified dimension and auto-linkify ability\""},{"lineNumber":152,"author":{"gitId":"-"},"content":" },"},{"lineNumber":153,"author":{"gitId":"-"},"content":" {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavTarget.md\","},{"lineNumber":155,"author":{"gitId":"-"},"content":" \"title\": \"Bootstrap scrollspy related classes should be applied only if there are navigable headings\""},{"lineNumber":156,"author":{"gitId":"-"},"content":" },"},{"lineNumber":157,"author":{"gitId":"-"},"content":" {"},{"lineNumber":158,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavWithoutTitleAndNavHeadings.md\","},{"lineNumber":159,"author":{"gitId":"-"},"content":" \"title\": \"page nav separator should be omitted when there is no title and navigation headings added\""},{"lineNumber":160,"author":{"gitId":"-"},"content":" },"},{"lineNumber":161,"author":{"gitId":"-"},"content":" {"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavWithOnlyTitle.md\","},{"lineNumber":163,"author":{"gitId":"-"},"content":" \"title\": \"page nav with title added\""},{"lineNumber":164,"author":{"gitId":"-"},"content":" },"},{"lineNumber":165,"author":{"gitId":"-"},"content":" {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavPrint.md\","},{"lineNumber":167,"author":{"gitId":"-"},"content":" \"title\": \"printing page nav\""},{"lineNumber":168,"author":{"gitId":"-"},"content":" },"},{"lineNumber":169,"author":{"gitId":"-"},"content":" {"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \"src\": \"testWeb3FormPlugin.md\","},{"lineNumber":171,"author":{"gitId":"-"},"content":" \"title\": \"web 3 forms\""},{"lineNumber":172,"author":{"gitId":"-"},"content":" },"},{"lineNumber":173,"author":{"gitId":"-"},"content":" {"},{"lineNumber":174,"author":{"gitId":"-"},"content":" \"src\": \"testList.md\","},{"lineNumber":175,"author":{"gitId":"-"},"content":" \"title\": \"web 3 forms\""},{"lineNumber":176,"author":{"gitId":"-"},"content":" },"},{"lineNumber":177,"author":{"gitId":"-"},"content":" {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \"src\": \"testFontAwesomeInPage.md\","},{"lineNumber":179,"author":{"gitId":"-"},"content":" \"title\": \"font-awesome icon in page, only font-awesome stylesheet should be loaded\""},{"lineNumber":180,"author":{"gitId":"-"},"content":" },"},{"lineNumber":181,"author":{"gitId":"-"},"content":" {"},{"lineNumber":182,"author":{"gitId":"-"},"content":" \"src\": \"testGlyphiconInPage.md\","},{"lineNumber":183,"author":{"gitId":"-"},"content":" \"title\": \"glyphicon icon in page, only glyphicon stylesheet should be loaded\""},{"lineNumber":184,"author":{"gitId":"-"},"content":" },"},{"lineNumber":185,"author":{"gitId":"-"},"content":" {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" \"src\": \"testMaterialIconsInPage.md\","},{"lineNumber":187,"author":{"gitId":"-"},"content":" \"title\": \"material-icons icon in page, only material-icons stylesheet should be loaded\""},{"lineNumber":188,"author":{"gitId":"-"},"content":" },"},{"lineNumber":189,"author":{"gitId":"-"},"content":" {"},{"lineNumber":190,"author":{"gitId":"-"},"content":" \"src\": \"testOcticonInPage.md\","},{"lineNumber":191,"author":{"gitId":"-"},"content":" \"title\": \"octicon icon in page, only octicon stylesheet should be loaded\""},{"lineNumber":192,"author":{"gitId":"-"},"content":" },"},{"lineNumber":193,"author":{"gitId":"-"},"content":" {"},{"lineNumber":194,"author":{"gitId":"-"},"content":" \"src\": \"testIconsInSiteLayout.md\","},{"lineNumber":195,"author":{"gitId":"-"},"content":" \"title\": \"glyphicon \u0026 octicon icon in page, only glyphicon \u0026 octicon stylesheets should be loaded\""},{"lineNumber":196,"author":{"gitId":"yiwen101"},"content":" },"},{"lineNumber":197,"author":{"gitId":"yiwen101"},"content":" {"},{"lineNumber":198,"author":{"gitId":"yiwen101"},"content":" \"src\": \"testSourceContainScript.md\","},{"lineNumber":199,"author":{"gitId":"yiwen101"},"content":" \"title\": \"Test: If source contains script or css, when included, the script or css should be included\""},{"lineNumber":200,"author":{"gitId":"-"},"content":" }"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":202,"author":{"gitId":"-"},"content":" \"pagesExclude\": [\"**/*-fragment.md\"],"},{"lineNumber":203,"author":{"gitId":"-"},"content":" \"ignore\": ["},{"lineNumber":204,"author":{"gitId":"-"},"content":" \"_markbind/layouts/*\","},{"lineNumber":205,"author":{"gitId":"-"},"content":" \"_markbind/logs/*\","},{"lineNumber":206,"author":{"gitId":"-"},"content":" \"_site/*\","},{"lineNumber":207,"author":{"gitId":"-"},"content":" \"site.json\","},{"lineNumber":208,"author":{"gitId":"-"},"content":" \"*.md\","},{"lineNumber":209,"author":{"gitId":"-"},"content":" \"testFileIgnore.sh\","},{"lineNumber":210,"author":{"gitId":"-"},"content":" \"testFileIgnore/*\","},{"lineNumber":211,"author":{"gitId":"-"},"content":" \"expected/*\""},{"lineNumber":212,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":213,"author":{"gitId":"-"},"content":" \"deploy\": {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" \"message\": \"Site Update.\""},{"lineNumber":215,"author":{"gitId":"-"},"content":" },"},{"lineNumber":216,"author":{"gitId":"-"},"content":" \"globalOverride\": {"},{"lineNumber":217,"author":{"gitId":"-"},"content":" \"globalOverrideProperty\": \"Overridden by global override\","},{"lineNumber":218,"author":{"gitId":"-"},"content":" \"globalAndFrontmatterOverrideProperty\": \"Overridden by global override\""},{"lineNumber":219,"author":{"gitId":"-"},"content":" },"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \"headingIndexingLevel\": 4,"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \"plugins\": ["},{"lineNumber":222,"author":{"gitId":"-"},"content":" \"testMarkbindPlugin\","},{"lineNumber":223,"author":{"gitId":"-"},"content":" \"filterTags\","},{"lineNumber":224,"author":{"gitId":"-"},"content":" \"googleAnalytics\","},{"lineNumber":225,"author":{"gitId":"-"},"content":" \"mathDelimiters\","},{"lineNumber":226,"author":{"gitId":"-"},"content":" \"web3Form\""},{"lineNumber":227,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \"pluginsContext\": {"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \"testMarkbindPlugin\": {"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \"pre\": \"\\n\\n# Markbind Plugin Pre-render\","},{"lineNumber":231,"author":{"gitId":"-"},"content":" \"post\": \"\u003cp\u003eNode Modules Plugin Post-render\u003c/p\u003e\""},{"lineNumber":232,"author":{"gitId":"-"},"content":" },"},{"lineNumber":233,"author":{"gitId":"-"},"content":" \"filterTags\": {"},{"lineNumber":234,"author":{"gitId":"-"},"content":" \"tags\": ["},{"lineNumber":235,"author":{"gitId":"-"},"content":" \"tag-site-shown\","},{"lineNumber":236,"author":{"gitId":"-"},"content":" \"+tag-site-override-shown\","},{"lineNumber":237,"author":{"gitId":"-"},"content":" \"+tag-site-override-specific-shown\""},{"lineNumber":238,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":239,"author":{"gitId":"-"},"content":" },"},{"lineNumber":240,"author":{"gitId":"-"},"content":" \"googleAnalytics\": {"},{"lineNumber":241,"author":{"gitId":"-"},"content":" \"trackingID\": \"TRACKING-ID\""},{"lineNumber":242,"author":{"gitId":"-"},"content":" },"},{"lineNumber":243,"author":{"gitId":"-"},"content":" \"mathDelimiters\": {"},{"lineNumber":244,"author":{"gitId":"-"},"content":" \"delimiters\": [\"beg_end\"]"},{"lineNumber":245,"author":{"gitId":"-"},"content":" },"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \"web3Form\": {"},{"lineNumber":247,"author":{"gitId":"-"},"content":" \"accessKey\": \"\""},{"lineNumber":248,"author":{"gitId":"-"},"content":" }"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }"},{"lineNumber":250,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":246,"yiwen101":4}},{"path":"packages/cli/test/functional/test_site/testPanels/PanelSourceContainsScript.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yiwen101"},"content":"\u003ch1\u003e"},{"lineNumber":2,"author":{"gitId":"yiwen101"},"content":"\u003cscript\u003e"},{"lineNumber":3,"author":{"gitId":"yiwen101"},"content":" // JavaScript code specific to this component"},{"lineNumber":4,"author":{"gitId":"yiwen101"},"content":" console.log(\"Inline script executed! 35\");"},{"lineNumber":5,"author":{"gitId":"yiwen101"},"content":"\u003c/script\u003e"},{"lineNumber":6,"author":{"gitId":"yiwen101"},"content":"\u003cstyle\u003e"},{"lineNumber":7,"author":{"gitId":"yiwen101"},"content":" /* CSS styles specific to this component */"},{"lineNumber":8,"author":{"gitId":"yiwen101"},"content":" h1 {"},{"lineNumber":9,"author":{"gitId":"yiwen101"},"content":" color: red;"},{"lineNumber":10,"author":{"gitId":"yiwen101"},"content":" }"},{"lineNumber":11,"author":{"gitId":"yiwen101"},"content":"\u003c/style\u003e"},{"lineNumber":12,"author":{"gitId":"yiwen101"},"content":"h1 text"},{"lineNumber":13,"author":{"gitId":"yiwen101"},"content":"\u003c/h1\u003e"}],"authorContributionMap":{"yiwen101":13}},{"path":"packages/cli/test/functional/test_site/testSourceContainScript.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yiwen101"},"content":"\u003cpanel header\u003d\"## Panel with src that contains css and script header\" src\u003d\"testPanels/PanelSourceContainsScript.md\" expanded\u003e\u003c/panel\u003e"}],"authorContributionMap":{"yiwen101":1}},{"path":"packages/cli/test/functional/test_site_algolia_plugin/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/404.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027p\u0027),_m(0),_v(\" \"),_m(1),_c(\u0027p\u0027)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027p\u0027,{staticStyle:{\"font-size\":\"10rem\"}},[_v(\"404\")])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027p\u0027,{staticStyle:{\"font-size\":\"1.5rem\"}},[_v(\"File not found\"),_c(\u0027br\u0027),_v(\"Click \"),_c(\u0027a\u0027,{attrs:{\"href\":\"/\"}},[_v(\"here\")]),_v(\" to go back to the home page.\")])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/Home.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027p\u0027,[_v(\"Welcome to the test-deploy wiki!\")])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [];"},{"lineNumber":7,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":6}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/Page-1.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"page-1\"}},[_v(\"Page 1\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#page-1\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":10,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":9}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/_Footer.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027p\u0027,[_v(\"Custom footer.\")])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [];"},{"lineNumber":7,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":6}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/_Sidebar.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027ul\u0027,[_c(\u0027li\u0027,[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,[_v(\"[[Page-1]]\")])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":10,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":9}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/about.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0),_v(\" \"),_m(1)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"about\"}},[_v(\"About\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#about\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027p\u0027,[_v(\"Welcome to your \"),_c(\u0027strong\u0027,[_v(\"About Us\")]),_v(\" page.\")])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/contents/topic1.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_m(0),_v(\" \"),_m(1)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"topic-1\"}},[_v(\"Topic 1\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#topic-1\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027blockquote\u0027,[_c(\u0027p\u0027,[_v(\"More content to be added\")])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/contents/topic2.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027box\u0027,[_c(\u0027span\u0027,{staticClass:\"fas fa-tools\"}),_c(\u0027span\u0027,[_v(\" This is a placeholder page\")])])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [];"},{"lineNumber":7,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":6}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/contents/topic3a.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027box\u0027,[_c(\u0027span\u0027,{staticClass:\"fas fa-tools\"}),_c(\u0027span\u0027,[_v(\" This is a placeholder page\")])])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [];"},{"lineNumber":7,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":6}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/contents/topic3b.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027box\u0027,[_c(\u0027span\u0027,{staticClass:\"fas fa-tools\"}),_c(\u0027span\u0027,[_v(\" This is a placeholder page\")])])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [];"},{"lineNumber":7,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":6}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/index.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027p\u0027,[_v(\"Welcome to the test-deploy wiki!\")])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [];"},{"lineNumber":7,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":6}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/404.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027p\u0027),_m(0),_v(\" \"),_m(1),_c(\u0027p\u0027)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(2)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027p\u0027,{staticStyle:{\"font-size\":\"10rem\"}},[_v(\"404\")])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027p\u0027,{staticStyle:{\"font-size\":\"1.5rem\"}},[_v(\"File not found\"),_c(\u0027br\u0027),_v(\"Click \"),_c(\u0027a\u0027,{attrs:{\"href\":\"/\"}},[_v(\"here\")]),_v(\" to go back to the home page.\")])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":13,"author":{"gitId":"-"},"content":") {"},{"lineNumber":14,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":16,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":15}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/Home.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027p\u0027,[_v(\"Welcome to the test-deploy wiki!\")])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(0)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":10,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":9}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/Page-1.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(1)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"page-1\"}},[_v(\"Page 1\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#page-1\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/README.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0),_v(\" \"),_c(\u0027p\u0027,[_v(\"Test readme file\")])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(1)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"readme\"}},[_v(\"Readme\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#readme\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/about.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0),_v(\" \"),_m(1)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(2)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"about\"}},[_v(\"About\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#about\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027p\u0027,[_v(\"Welcome to your \"),_c(\u0027strong\u0027,[_v(\"About Us\")]),_v(\" page.\")])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":13,"author":{"gitId":"-"},"content":") {"},{"lineNumber":14,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":16,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":15}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/contents/topic1.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_m(0),_v(\" \"),_m(1)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(2)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"topic-1\"}},[_v(\"Topic 1\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#topic-1\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027blockquote\u0027,[_c(\u0027p\u0027,[_v(\"More content to be added\")])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":13,"author":{"gitId":"-"},"content":") {"},{"lineNumber":14,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":16,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":15}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/contents/topic2.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027box\u0027,[_c(\u0027span\u0027,{staticClass:\"fas fa-tools\"}),_c(\u0027span\u0027,[_v(\" This is a placeholder page\")])])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(0)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":10,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":9}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/contents/topic3a.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027box\u0027,[_c(\u0027span\u0027,{staticClass:\"fas fa-tools\"}),_c(\u0027span\u0027,[_v(\" This is a placeholder page\")])])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(0)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":10,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":9}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/contents/topic3b.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027box\u0027,[_c(\u0027span\u0027,{staticClass:\"fas fa-tools\"}),_c(\u0027span\u0027,[_v(\" This is a placeholder page\")])])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(0)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":10,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":9}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/index.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0),_v(\" \"),_c(\u0027p\u0027,[_v(\"Test readme file\")])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(1)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"readme\"}},[_v(\"Readme\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#readme\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/test_folder/extra_1.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(1)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"sample-content-in-another-folder-which-is-not-named-content\"}},[_v(\"Sample content in another folder which is not named content\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#sample-content-in-another-folder-which-is-not-named-content\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/test_folder/extra_2.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(1)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"sample-content-in-another-folder-which-is-not-named-content\"}},[_v(\"Sample content in another folder which is not named content\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#sample-content-in-another-folder-which-is-not-named-content\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/test_folder/extra_3.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(1)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"sample-content-in-another-folder-which-is-not-named-content\"}},[_v(\"Sample content in another folder which is not named content\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#sample-content-in-another-folder-which-is-not-named-content\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_special_tags/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/cli/test/functional/test_site_templates/test_default/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/cli/test/functional/test_site_templates/test_minimal/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/core-web/asset/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/core/src/Site/siteConvertLayout.njk","fileType":"njk","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{% raw %}{{baseUrl}}{% endraw %}/stylesheets/main.css\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar placement\u003d\"top\" type\u003d\"dark\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{% raw %}{{baseUrl}}{% endraw %}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003e"},{"lineNumber":8,"author":{"gitId":"jingting1412"},"content":" \u003ci class\u003d\"fa-solid fa-house\"\u003e\u003c/i\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003c/a\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{% raw %}{{baseUrl}}{% endraw %}/index.html\" class\u003d\"nav-link\"\u003eHOME\u003c/a\u003e\u003c/li\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{% raw %}{{baseUrl}}{% endraw %}/about.html\" class\u003d\"nav-link\"\u003eABOUT\u003c/a\u003e\u003c/li\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/form\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/li\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003c/header\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eContents\u003c/div\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":"{{ siteNav }}"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/nav\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cbreadcrumb /\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" {% raw %}{{ content }}{% endraw %}"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/nav\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003cfooter\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":"{%- set defaultFooter -%}"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003csmall\u003e[Generated by {% raw %}{{MarkBind}}{% endraw %}]\u003c/small\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":"{%- endset -%}"},{"lineNumber":50,"author":{"gitId":"-"},"content":"{{ footer or defaultFooter }}"},{"lineNumber":51,"author":{"gitId":"-"},"content":"\u003c/footer\u003e"}],"authorContributionMap":{"jingting1412":1,"-":50}},{"path":"scripts/process_message.py","fileType":"py","lines":[{"lineNumber":1,"author":{"gitId":"KevinEyo1"},"content":"import json"},{"lineNumber":2,"author":{"gitId":"KevinEyo1"},"content":"import re"},{"lineNumber":3,"author":{"gitId":"KevinEyo1"},"content":"import sys"},{"lineNumber":4,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":5,"author":{"gitId":"KevinEyo1"},"content":"markdown_content \u003d sys.argv[1]"},{"lineNumber":6,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":7,"author":{"gitId":"KevinEyo1"},"content":"# Preprocessing the markdown content"},{"lineNumber":8,"author":{"gitId":"KevinEyo1"},"content":"markdown_content \u003d markdown_content.replace(\u0027`\u0027, \u0027\\\\`\u0027)"},{"lineNumber":9,"author":{"gitId":"KevinEyo1"},"content":"markdown_content \u003d markdown_content.replace(\u0027(\u0027, \u0027\\\\(\u0027).replace(\u0027)\u0027, \u0027\\\\)\u0027)"},{"lineNumber":10,"author":{"gitId":"KevinEyo1"},"content":"markdown_content \u003d re.sub(r\u0027\u003c!--.*?--\u003e\u0027, \u0027\u0027, markdown_content, flags\u003dre.DOTALL) # Remove HTML comments"},{"lineNumber":11,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":12,"author":{"gitId":"KevinEyo1"},"content":"print(markdown_content)"},{"lineNumber":13,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":14,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":15,"author":{"gitId":"KevinEyo1"},"content":""}],"authorContributionMap":{"KevinEyo1":15}}] +[{"path":".github/workflows/pr-message-reminder.yml","fileType":"yml","lines":[{"lineNumber":1,"author":{"gitId":"KevinEyo1"},"content":"name: PR Message Reminder"},{"lineNumber":2,"author":{"gitId":"KevinEyo1"},"content":"on:"},{"lineNumber":3,"author":{"gitId":"KevinEyo1"},"content":" push:"},{"lineNumber":4,"author":{"gitId":"KevinEyo1"},"content":" branches:"},{"lineNumber":5,"author":{"gitId":"KevinEyo1"},"content":" - master"},{"lineNumber":6,"author":{"gitId":"KevinEyo1"},"content":" tags:"},{"lineNumber":7,"author":{"gitId":"KevinEyo1"},"content":" - \u0027v[0-9]+.[0-9]+.[0-9]+\u0027"},{"lineNumber":8,"author":{"gitId":"KevinEyo1"},"content":" pull_request:"},{"lineNumber":9,"author":{"gitId":"KevinEyo1"},"content":" types:"},{"lineNumber":10,"author":{"gitId":"KevinEyo1"},"content":" - opened"},{"lineNumber":11,"author":{"gitId":"KevinEyo1"},"content":" - synchronize"},{"lineNumber":12,"author":{"gitId":"KevinEyo1"},"content":" - reopened"},{"lineNumber":13,"author":{"gitId":"KevinEyo1"},"content":" - edited"},{"lineNumber":14,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":15,"author":{"gitId":"KevinEyo1"},"content":"concurrency:"},{"lineNumber":16,"author":{"gitId":"KevinEyo1"},"content":" group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}"},{"lineNumber":17,"author":{"gitId":"KevinEyo1"},"content":" cancel-in-progress: true"},{"lineNumber":18,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":19,"author":{"gitId":"KevinEyo1"},"content":"jobs:"},{"lineNumber":20,"author":{"gitId":"KevinEyo1"},"content":" remind-pr-author:"},{"lineNumber":21,"author":{"gitId":"KevinEyo1"},"content":" if: github.event_name \u003d\u003d \u0027pull_request\u0027"},{"lineNumber":22,"author":{"gitId":"KevinEyo1"},"content":" runs-on: ubuntu-latest"},{"lineNumber":23,"author":{"gitId":"KevinEyo1"},"content":" "},{"lineNumber":24,"author":{"gitId":"KevinEyo1"},"content":" steps:"},{"lineNumber":25,"author":{"gitId":"KevinEyo1"},"content":" - uses: actions/checkout@v3"},{"lineNumber":26,"author":{"gitId":"KevinEyo1"},"content":" - name: Extract Proposed Commit Message"},{"lineNumber":27,"author":{"gitId":"KevinEyo1"},"content":" run: |"},{"lineNumber":28,"author":{"gitId":"KevinEyo1"},"content":" python scripts/process_message.py \"${TEXT_BODY}\" \u003e processed_body.txt"},{"lineNumber":29,"author":{"gitId":"KevinEyo1"},"content":" processed_body\u003d$(cat processed_body.txt)"},{"lineNumber":30,"author":{"gitId":"KevinEyo1"},"content":" proposed_commit_message\u003d$(echo \"$processed_body\" | awk \u0027/\\\\*\\\\*Proposed commit message: \\\\\\(wrap lines at 72 characters\\\\\\)\\\\*\\\\*/,/\\\\*\\\\*Checklist:\\\\*\\\\*/\u0027 | tail -n +2 | head -n -3)"},{"lineNumber":31,"author":{"gitId":"KevinEyo1"},"content":" echo \"Proposed commit message:\""},{"lineNumber":32,"author":{"gitId":"KevinEyo1"},"content":" echo \"$proposed_commit_message\""},{"lineNumber":33,"author":{"gitId":"KevinEyo1"},"content":" if ! grep -q \u0027[^[:space:]]\u0027 \u003c\u003c\u003c \"$proposed_commit_message\"; then"},{"lineNumber":34,"author":{"gitId":"KevinEyo1"},"content":" echo \"Please fill in the proposed commit message section in the pull request description.\""},{"lineNumber":35,"author":{"gitId":"KevinEyo1"},"content":" exit 1"},{"lineNumber":36,"author":{"gitId":"KevinEyo1"},"content":" fi"},{"lineNumber":37,"author":{"gitId":"KevinEyo1"},"content":" env:"},{"lineNumber":38,"author":{"gitId":"KevinEyo1"},"content":" TEXT_BODY: ${{ github.event.pull_request.body }}"},{"lineNumber":39,"author":{"gitId":"KevinEyo1"},"content":" "}],"authorContributionMap":{"KevinEyo1":39}},{"path":"docs/userGuide/cliCommands.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cfrontmatter\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" title: \"User Guide: Command Line Interface (CLI)\""},{"lineNumber":3,"author":{"gitId":"-"},"content":" layout: userGuide.md"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: default"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c/frontmatter\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"# CLI Commands"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"### Overview"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"If you do not have MarkBind installed globally, you can still use MarkBind commands by prefixing the commands with `npx`. For example, `markbind init` becomes `npx markbind-cli init`."},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"If you have MarkBind installed locally, you may also refer to the scripts section of your `package.json` file for the commands you can use. For example, `npm run init` for `markbind init`."},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"An overview of MarkBind\u0027s Command Line Interface (CLI) can be referenced with `markbind --help`:"},{"lineNumber":21,"author":{"gitId":"-"},"content":"```"},{"lineNumber":22,"author":{"gitId":"-"},"content":"$ markbind --help"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Usage: markbind \u003ccommand\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" "},{"lineNumber":25,"author":{"gitId":"-"},"content":" Options:"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -V, --version output the version number"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -h, --help output usage information"},{"lineNumber":28,"author":{"gitId":"-"},"content":" "},{"lineNumber":29,"author":{"gitId":"-"},"content":" Commands:"},{"lineNumber":30,"author":{"gitId":"-"},"content":" init|i [options] [root] init a markbind website project"},{"lineNumber":31,"author":{"gitId":"-"},"content":" serve|s [options] [root] build then serve a website from a directory"},{"lineNumber":32,"author":{"gitId":"-"},"content":" build|b [options] [root] [output] build a website"},{"lineNumber":33,"author":{"gitId":"-"},"content":" deploy|d [options] [root] deploy the latest build of the site to the repo\u0027s Github pages"},{"lineNumber":34,"author":{"gitId":"-"},"content":"```"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"markbind-init\"\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"### `init` Command"},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"**Format:** `markbind init [options] [root]`"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":"**Alias:** `markbind i`"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":"**Description:** Initializes a directory into a MarkBind site by creating a skeleton structure for the website which includes a `index.md` and a `site.json`."},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":"**Arguments:**"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* `[root]`\u003cbr\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Root directory. Default is the current directory.\u003cbr\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" {{ icon_example }} `./myWebsite`"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**Options** :fas-cogs:\" type\u003d\"minimal\" expanded\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":"**Options** :fas-cogs:"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"* `-c`, `--convert`\u003cbr\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Convert an existing GitHub wiki or `docs` folder into a MarkBind website. See [Converting an existing GitHub project]({{ baseUrl }}/userGuide/markBindInTheProjectWorkflow.html#converting-existing-project-documentation-wiki) for more information."},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"* `-t`, `--template` \u003cbr\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" When initialising MarkBind, change the template that you start with. See [templates](templates.html)."},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":"{{ icon_examples }}"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* `markbind init` : Initializes the site in the current working directory."},{"lineNumber":64,"author":{"gitId":"-"},"content":"* `markbind init ./myWebsite` : Initializes the site in `./myWebsite` directory."},{"lineNumber":65,"author":{"gitId":"-"},"content":"* `markbind init --convert --template minimal`: Converts the GitHub wiki or `docs` folder in the current working directory into a minimal MarkBind website."},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":"### `serve` Command"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":"**Format:** `markbind serve [options] [root]`"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":"**Alias:** `markbind s`"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":"**Description:** Does the following steps:"},{"lineNumber":79,"author":{"gitId":"-"},"content":"1. Builds the site and puts the generated files in a directory named `_site`."},{"lineNumber":80,"author":{"gitId":"LamJiuFong"},"content":"1. Starts a web server instance locally and makes the site available at `http://127.0.0.1:8080` by default."},{"lineNumber":81,"author":{"gitId":"-"},"content":"1. Opens a \u003ctrigger trigger\u003d\"click\" for\u003d\"modal:cliCommands-livePreview\"\u003elive preview\u003c/trigger\u003e of the website."},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cmodal large header\u003d\"Live Preview\" id\u003d\"modal:cliCommands-livePreview\"\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"glossary.md#live-preview\"/\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003c/modal\u003e"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":"**Arguments:**"},{"lineNumber":88,"author":{"gitId":"-"},"content":"* `[root]`\u003cbr\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Root directory. The default is the directory where this command was executed.\u003cbr\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" {{ icon_example }} `./myWebsite`"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**Options** :fas-cogs:\" type\u003d\"minimal\" expanded\u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":"**Options** :fas-cogs:"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":"* `-o \u003cfile\u003e`, `--one-page \u003cfile\u003e`\u003cbr\u003e"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Serves only a single page from your website **initially**. If `\u003cfile\u003e` is not specified, it defaults to `index.md`.\u003cbr\u003e"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Thereafter, when changes to source files have been made, the opened pages will be rebuilt if it was affected.\u003cbr\u003e"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Navigating to a new page will build the new page, if it has not been built before, or there were some changes to source files that affected it before navigating to it.\u003cbr\u003e"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * {{ icon_example }} `--one-page guide/index.md`"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" light header\u003d\"Caveats\" style\u003d\"width: calc(100% - 50px); position: relative; left: 40px;\"\u003e"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":"Essentially, this optional feature is very useful when writing content, more so if your build times are starting to slow down!"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":"The caveat is that not building all pages during the initial process, or not rebuilding all affected pages when a file changes, will cause your search results for these pages to be empty or outdated, until you navigate to them to trigger a rebuild."},{"lineNumber":107,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":"* `-b`, `--background-build` **[BETA]**\u003cbr\u003e"},{"lineNumber":110,"author":{"gitId":"-"},"content":" If `--one-page` is specified, this mode enhances the single-page serve by building the pages that are not yet built"},{"lineNumber":111,"author":{"gitId":"-"},"content":" or marked to be rebuilt in the background."},{"lineNumber":112,"author":{"gitId":"-"},"content":" "},{"lineNumber":113,"author":{"gitId":"-"},"content":" You can still edit the pages during the background build. When MarkBind detects changes to the source"},{"lineNumber":114,"author":{"gitId":"-"},"content":" files, the background build will stop, rebuild the files affected, then resumes the background build with the"},{"lineNumber":115,"author":{"gitId":"-"},"content":" remaining pages."},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":"* `-s \u003cfile\u003e`, `--site-config \u003cfile\u003e`\u003cbr\u003e"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Specify the site config file (default: `site.json`)\u003cbr\u003e"},{"lineNumber":119,"author":{"gitId":"-"},"content":" {{ icon_example }} `-s otherSite.json`"},{"lineNumber":120,"author":{"gitId":"-"},"content":""},{"lineNumber":121,"author":{"gitId":"-"},"content":"* `-n`, `--no-open`\u003cbr\u003e"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Don\u0027t open a live preview in the browser automatically."},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":"* `-f`, `--force-reload`\u003cbr\u003e"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Force live reload to process all files in the site, instead of just the relevant files. This option is useful when you are modifying a file that is not a file type monitored by the \u003ctrigger trigger\u003d\"click\" for\u003d\"modal:cliCommands-livePreview\"\u003elive preview\u003c/trigger\u003e feature."},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"LamJiuFong"},"content":"* `-a \u003caddress\u003e`, `--address \u003caddress\u003e`\u003cbr\u003e"},{"lineNumber":128,"author":{"gitId":"LamJiuFong"},"content":" Specify the server address/host (Default is 127.0.0.1)."},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"LamJiuFong"},"content":"* `-p \u003cport\u003e`, `--port \u003cport\u003e`\u003cbr\u003e"},{"lineNumber":131,"author":{"gitId":"LamJiuFong"},"content":" Serve the website in the specified port (Default is 8080)."},{"lineNumber":132,"author":{"gitId":"-"},"content":""},{"lineNumber":133,"author":{"gitId":"-"},"content":"{{ icon_examples }}"},{"lineNumber":134,"author":{"gitId":"-"},"content":"* `markbind serve` : Serves the site from the current working directory."},{"lineNumber":135,"author":{"gitId":"-"},"content":"* `markbind serve ./myWebsite` : Serves the site from the `./myWebsite` directory."},{"lineNumber":136,"author":{"gitId":"-"},"content":"* `markbind serve -p 8888 -s otherSite.json` : Serves the site in Port 8888 from the current working directory, using `otherSite.json` as the site configuration file."},{"lineNumber":137,"author":{"gitId":"-"},"content":""},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":139,"author":{"gitId":"-"},"content":""},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":141,"author":{"gitId":"-"},"content":""},{"lineNumber":142,"author":{"gitId":"-"},"content":"### `build` Command"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":144,"author":{"gitId":"-"},"content":""},{"lineNumber":145,"author":{"gitId":"-"},"content":"**Format:** `markbind build [options] [root] [output]`"},{"lineNumber":146,"author":{"gitId":"-"},"content":""},{"lineNumber":147,"author":{"gitId":"-"},"content":"**Alias:** `markbind b`"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":"**Description:** Generates the site to the directory named `_site` in the current directory."},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":"**Arguments:**"},{"lineNumber":152,"author":{"gitId":"-"},"content":"* `[root]`\u003cbr\u003e"},{"lineNumber":153,"author":{"gitId":"-"},"content":" Root directory. Default is the current directory.\u003cbr\u003e"},{"lineNumber":154,"author":{"gitId":"-"},"content":" {{ icon_example }} `./myWebsite`"},{"lineNumber":155,"author":{"gitId":"-"},"content":""},{"lineNumber":156,"author":{"gitId":"-"},"content":"* `[root] [output]`\u003cbr\u003e"},{"lineNumber":157,"author":{"gitId":"-"},"content":" Read source files from the `[root]` directory and put the generated files in the specified `[output]` directory. Default output directory is `_site`.\u003cbr\u003e"},{"lineNumber":158,"author":{"gitId":"-"},"content":" {{ icon_example }} `./myWebsite ./myWebsite/myOutDir`"},{"lineNumber":159,"author":{"gitId":"-"},"content":""},{"lineNumber":160,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**Options** :fas-cogs:\" type\u003d\"minimal\" expanded\u003e"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":"**Options** :fas-cogs:"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `--baseUrl \u003cbase\u003e`\u003cbr\u003e"},{"lineNumber":165,"author":{"gitId":"-"},"content":" Override the `baseUrl` property (read from the `site.json`) with the given `\u003cbase\u003e` value.\u003cbr\u003e"},{"lineNumber":166,"author":{"gitId":"-"},"content":" {{ icon_example }} `--baseUrl staging`"},{"lineNumber":167,"author":{"gitId":"-"},"content":""},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `-s \u003cfile\u003e`, `--site-config \u003cfile\u003e`\u003cbr\u003e"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Specify the site config file (default: `site.json`)\u003cbr\u003e"},{"lineNumber":170,"author":{"gitId":"-"},"content":" {{ icon_example }} `-s otherSite.json`"},{"lineNumber":171,"author":{"gitId":"-"},"content":""},{"lineNumber":172,"author":{"gitId":"-"},"content":"**{{ icon_examples }}**"},{"lineNumber":173,"author":{"gitId":"-"},"content":"* `markbind build` : Generates the site from the current working directory."},{"lineNumber":174,"author":{"gitId":"-"},"content":"* `markbind build ./myWebsite` : Generates the site from the `./myWebsite` directory."},{"lineNumber":175,"author":{"gitId":"-"},"content":"* `markbind build ./myWebsite ./myOutDir` : Generates the site from the `./myWebsite` directory to the `./myOutDir` directory."},{"lineNumber":176,"author":{"gitId":"-"},"content":"* `markbind build ./stagingDir --baseUrl staging` : Generates the site from the `./stagingDir` directory, with the `baseUrl` property in `site.json` set to `staging`."},{"lineNumber":177,"author":{"gitId":"-"},"content":""},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":181,"author":{"gitId":"-"},"content":""},{"lineNumber":182,"author":{"gitId":"-"},"content":"### `deploy` Command"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":184,"author":{"gitId":"-"},"content":""},{"lineNumber":185,"author":{"gitId":"-"},"content":"**Format:** `markbind deploy [options] [root]`"},{"lineNumber":186,"author":{"gitId":"-"},"content":""},{"lineNumber":187,"author":{"gitId":"-"},"content":"**Alias:** `markbind d`"},{"lineNumber":188,"author":{"gitId":"-"},"content":""},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Description:** Deploys the site to the repo\u0027s GitHub pages by generating the site (default dir: `_site`) and pushing the generated site to the `gh-pages` branch of the current git working directory\u0027s remote repo."},{"lineNumber":190,"author":{"gitId":"-"},"content":""},{"lineNumber":191,"author":{"gitId":"-"},"content":"**Arguments:**"},{"lineNumber":192,"author":{"gitId":"-"},"content":"* `[root]`\u003cbr\u003e"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Root directory. Default is the current directory.\u003cbr\u003e"},{"lineNumber":194,"author":{"gitId":"-"},"content":" {{ icon_example }} `./myWebsite`"},{"lineNumber":195,"author":{"gitId":"-"},"content":""},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**Options** :fas-cogs:\" type\u003d\"minimal\" expanded\u003e"},{"lineNumber":197,"author":{"gitId":"-"},"content":""},{"lineNumber":198,"author":{"gitId":"-"},"content":"**Options** :fas-cogs:"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":"* `-c \u003cgithubTokenName\u003e`, `--ci \u003cgithubTokenName\u003e`\u003cbr\u003e"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Deploy the site in CI Environments using the GitHub personal access token stored in `\u003cgithubTokenName\u003e` (default: `GITHUB_TOKEN`).\u003cbr\u003e"},{"lineNumber":202,"author":{"gitId":"-"},"content":" {{ icon_example }} `-c PA_TOKEN`"},{"lineNumber":203,"author":{"gitId":"-"},"content":""},{"lineNumber":204,"author":{"gitId":"-"},"content":"* `-n`, `--no-build`\u003cbr\u003e"},{"lineNumber":205,"author":{"gitId":"-"},"content":" Skips the generation of the site before deploying it. By default, the `deploy` command generates the site before deploying the built site. This command should be used if the site needs to be generated with non-default arguments for the `build` command (e.g. baseUrl is specified using the `--baseUrl` flag for the `markbind build` command)."},{"lineNumber":206,"author":{"gitId":"-"},"content":""},{"lineNumber":207,"author":{"gitId":"-"},"content":"* `-s \u003cfile\u003e`, `--site-config \u003cfile\u003e`\u003cbr\u003e"},{"lineNumber":208,"author":{"gitId":"-"},"content":" Specify the site config file (default: `site.json`).\u003cbr\u003e"},{"lineNumber":209,"author":{"gitId":"-"},"content":" {{ icon_example }} `-s otherSite.json`"},{"lineNumber":210,"author":{"gitId":"-"},"content":""},{"lineNumber":211,"author":{"gitId":"-"},"content":"%%{{ icon_info }} Related: [User Guide: Deploying the Website](deployingTheSite.html).%%"},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":"**{{ icon_examples }}**"},{"lineNumber":214,"author":{"gitId":"-"},"content":"* `markbind deploy` : Deploys after generating the site from the current working directory."},{"lineNumber":215,"author":{"gitId":"-"},"content":"* `markbind deploy ./myWebsite` : Deploys after generating the site from the `./myWebsite` directory."},{"lineNumber":216,"author":{"gitId":"-"},"content":"* `markbind deploy --no-build` : Deploys the site from the current working directory without generating it."},{"lineNumber":217,"author":{"gitId":"-"},"content":""},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":219,"author":{"gitId":"-"},"content":""},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":221,"author":{"gitId":"-"},"content":""},{"lineNumber":222,"author":{"gitId":"-"},"content":"### `--help` Option"},{"lineNumber":223,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":224,"author":{"gitId":"-"},"content":""},{"lineNumber":225,"author":{"gitId":"-"},"content":"**Format:** `markbind [command] --help`"},{"lineNumber":226,"author":{"gitId":"-"},"content":""},{"lineNumber":227,"author":{"gitId":"-"},"content":"**Alias:** `markbind [command] -h`"},{"lineNumber":228,"author":{"gitId":"-"},"content":""},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Description:** Prints a summary of MarkBind commands or a detailed usage guide for the given `command`."},{"lineNumber":230,"author":{"gitId":"-"},"content":""},{"lineNumber":231,"author":{"gitId":"-"},"content":"{{ icon_examples }}"},{"lineNumber":232,"author":{"gitId":"-"},"content":"* `markbind --help` : Prints a summary of MarkBind commands."},{"lineNumber":233,"author":{"gitId":"-"},"content":"* `markbind serve --help` : Prints a detailed usage guide for the `serve` command."}],"authorContributionMap":{"LamJiuFong":5,"-":228}},{"path":"docs/userGuide/components/presentation.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"{% set title \u003d \"Presentational Components\" %}"},{"lineNumber":2,"author":{"gitId":"-"},"content":"{% set filename \u003d \"presentation\" %}"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"title\" class\u003d\"d-none\"\u003e{{ title }}\u003c/span\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cfrontmatter\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" title: \"User Guide: {{ title }}\""},{"lineNumber":7,"author":{"gitId":"-"},"content":" layout: userGuide.md"},{"lineNumber":8,"author":{"gitId":"-"},"content":" pageNav: 3"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/frontmatter\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"link\" class\u003d\"d-none\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cmd\u003e[_User Guide → {{ title }}_]({{ filename }}.html)\u003c/md\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"advanced.md#slots-info\" /\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"# Presentation"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"overview\" class\u003d\"lead\"\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"The components in this page are the core **presentational** components you may want to use. Panels and tabs can be used to **organise content sections**, while badges and boxes can **highlight small, specific pieces of information**."},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":23,"author":{"gitId":"yiwen101"},"content":"\u003cbox type \u003d \"warning\" header \u003d \"#### Use of markdown in content\" \u003e"},{"lineNumber":24,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":25,"author":{"gitId":"yiwen101"},"content":"As presentational components are HTML-based, you need to follow the HTML syntax when using markdown in the content of the components."},{"lineNumber":26,"author":{"gitId":"yiwen101"},"content":"More specifically, you should use either:"},{"lineNumber":27,"author":{"gitId":"yiwen101"},"content":"- add a line break with no indentation before the markdown content"},{"lineNumber":28,"author":{"gitId":"yiwen101"},"content":"- use the `\u003cmarkdown\u003e` (block level elements) or `\u003cmd\u003e` (inline level elements) tags to wrap the markdown content."},{"lineNumber":29,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":30,"author":{"gitId":"yiwen101"},"content":"For more information, please refer to this [section]({{baseUrl}}/userGuide/usingHtmlJavaScriptCss.html#markdown-in-html)."},{"lineNumber":31,"author":{"gitId":"yiwen101"},"content":"\u003c/box\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"{% from \"userGuide/fullSyntaxReference.md\" import syntax_topics as topics %}"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"{% macro show_topic(filename) %}"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"../syntax/{{ filename }}.md\" /\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003chr\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":"{% endmacro %}"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":"{% for k,v in topics %}"},{"lineNumber":41,"author":{"gitId":"-"},"content":"{% if \u0027presentation\u0027 in v[1] %}"},{"lineNumber":42,"author":{"gitId":"-"},"content":"{{ show_topic(k) }}"},{"lineNumber":43,"author":{"gitId":"-"},"content":"{% endif %}"},{"lineNumber":44,"author":{"gitId":"-"},"content":"{% endfor %}"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"# Relevant Tips \u0026 Tricks"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Indent components\"\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"../tipsAndTricks.md#indentComponents\" /\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"{% from \"njk/common.njk\" import previous_next %}"},{"lineNumber":57,"author":{"gitId":"-"},"content":"{{ previous_next(\u0027../usingComponents\u0027, \u0027imagesAndDiagrams\u0027) }}"}],"authorContributionMap":{"-":48,"yiwen101":9}},{"path":"docs/userGuide/reusingContents.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"{% set title \u003d \"Reusing Contents\" %}"},{"lineNumber":2,"author":{"gitId":"-"},"content":"{% set filename \u003d \"reusingContents\" %}"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"title\" class\u003d\"d-none\"\u003e{{ title }}\u003c/span\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cfrontmatter\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" title: \"User Guide: {{ title }}\""},{"lineNumber":7,"author":{"gitId":"-"},"content":" layout: userGuide.md"},{"lineNumber":8,"author":{"gitId":"-"},"content":" pageNav: 4"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/frontmatter\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"link\" class\u003d\"d-none\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cmd\u003e[_User Guide → {{ title }}_]({{ filename }}.html)\u003c/md\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"# {{ title }}"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"lead\" id\u003d\"overview\"\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"**MarkBind is highly-optimized for content reuse**. It offers several mechanisms to provide readers with many variations of the content while minimizing duplication at source file level. As a result, instead of creating a one-size-fits-all site, MarkBind can create a site in which readers can chart their own path of reading."},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"syntax/variables.md\" /\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"syntax/includes.md\" /\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":"## Reusing Contents Across Sites"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"**MarkBind supports reusing across sites.** It allows you to include the pages you want from a _sub-site_ in another _main-site_ without having to change anything in the source files of the _sub-site_ as long as the _sub-site_ source files are inside the directory of the _main-site_."},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":"{{ icon_example }} Suppose you have a site `textbook` and you want to include some pages from it in another site `course`. Given below is how you can locate the sub-site `textbook` inside the root directory of the main-site `course` so that files from `textbook` can be reused in the `course` site."},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003ctree\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":"C:/course/"},{"lineNumber":40,"author":{"gitId":"-"},"content":" textbook/"},{"lineNumber":41,"author":{"gitId":"-"},"content":" index.md"},{"lineNumber":42,"author":{"gitId":"-"},"content":" overview.md"},{"lineNumber":43,"author":{"gitId":"-"},"content":" site.json"},{"lineNumber":44,"author":{"gitId":"-"},"content":" index.md"},{"lineNumber":45,"author":{"gitId":"-"},"content":" reading.md"},{"lineNumber":46,"author":{"gitId":"-"},"content":" site.json"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003c/tree\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":"In `reading.md` (note how it reuses content from the sub-site `textbook`):"},{"lineNumber":50,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":51,"author":{"gitId":"-"},"content":"# Week 1 Reading:"},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"textbook/overview.md\" /\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":"```"},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"tip.md\" boilerplate \u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"tip_body\"\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":"If you are using Git for version control, you can set up the sub-site repository as a [Git sub-module](https://git-scm.com/book/en/v2/Git-Tools-Submodules) of the main site repository."},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"-"},"content":"## Creating Content Variations"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"**MarkBind can create sites that give more control to the reader.** Given below are some mechanisms authors can use to create variations of content that gives more control to the reader in charting their own path through the content."},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":"#### Allowing users to remove some contents"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":"When the readers can remove an item from a page, they can create their own version of the page by removing items they don\u0027t want to see. This is especially useful when printing a page."},{"lineNumber":72,"author":{"gitId":"-"},"content":""},{"lineNumber":73,"author":{"gitId":"-"},"content":"To make an element closeable, use `v-closeable`."},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":""},{"lineNumber":77,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cdiv v-closeable\u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":"Optional video:"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"-"},"content":"@[youtube](v40b3ExbM0c)"},{"lineNumber":83,"author":{"gitId":"-"},"content":""},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":"```"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":"This is how the content will appear. Note how you can hover over the content to access the :x: button that can collapse the content."},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cdiv v-closeable\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":""},{"lineNumber":90,"author":{"gitId":"-"},"content":"Optional video:"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"-"},"content":"@[youtube](v40b3ExbM0c)"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":95,"author":{"gitId":"-"},"content":""},{"lineNumber":96,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":"#### Giving alternative contents"},{"lineNumber":99,"author":{"gitId":"-"},"content":""},{"lineNumber":100,"author":{"gitId":"-"},"content":"You can use a [_Tabs_ component](components/presentation.html#tabs) to give alternative versions of content, for example, giving a code snippet in different programming languages."},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":"#### Giving access to additional contents"},{"lineNumber":103,"author":{"gitId":"-"},"content":""},{"lineNumber":104,"author":{"gitId":"-"},"content":"You can use following components to give readers an option to access additional content at their discretion."},{"lineNumber":105,"author":{"gitId":"-"},"content":"* [Tooltips](components/popups.html#tooltip), [Popovers](components/popups.html#popover), [Modals](components/popups.html#modal)"},{"lineNumber":106,"author":{"gitId":"-"},"content":"* [Expandable Panels](components/presentation.html#panels)"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":"#### Organizing contents in alternative ways"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":"You can take advantage of [MarkBind\u0027s feature for content reuse](reusingContents.html) to organize content in alternative ways to cater for different readers, without having to duplicate content. For example, you can have different pages that organizes the same information alphabetically, chronologically, by difficulty, group information by topic, etc."},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":"#### Optimizing the Print View"},{"lineNumber":113,"author":{"gitId":"-"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":"To \u003cspan class\u003d\"keyword\"\u003ehide minimized panels in the _print view_\u003c/span\u003e, add the following code to a CSS file used in your site."},{"lineNumber":115,"author":{"gitId":"-"},"content":""},{"lineNumber":116,"author":{"gitId":"-"},"content":"```css"},{"lineNumber":117,"author":{"gitId":"-"},"content":"@media print {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" .card-container \u003e .morph {"},{"lineNumber":119,"author":{"gitId":"-"},"content":" display: none;"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}"},{"lineNumber":122,"author":{"gitId":"-"},"content":"```"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"Tim-Siu"},"content":"MarkBind also comes with some built-in optimizations for printing by default:"},{"lineNumber":125,"author":{"gitId":"Tim-Siu"},"content":"- \u003cinclude src\u003d\"syntax/code.md#code-print-optimization\" /\u003e"},{"lineNumber":126,"author":{"gitId":"Tim-Siu"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":"#### Hiding some info in the generated content"},{"lineNumber":128,"author":{"gitId":"-"},"content":""},{"lineNumber":129,"author":{"gitId":"-"},"content":"To permanently hide a fragment from the reader:"},{"lineNumber":130,"author":{"gitId":"-"},"content":""},{"lineNumber":131,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"d-none\"\u003e"},{"lineNumber":133,"author":{"gitId":"-"},"content":" content to hide ..."},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"...\" add-class\u003d\"d-none\"\u003e"},{"lineNumber":137,"author":{"gitId":"-"},"content":" content to hide ..."},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003cpanel\u003e"},{"lineNumber":139,"author":{"gitId":"-"},"content":"```"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":"To hide a fragment in one specific page, \u0027mark\u0027 the elements using a `class`:"},{"lineNumber":142,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"extra\"\u003e"},{"lineNumber":144,"author":{"gitId":"-"},"content":" content to hide ..."},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":146,"author":{"gitId":"-"},"content":"```"},{"lineNumber":147,"author":{"gitId":"-"},"content":""},{"lineNumber":148,"author":{"gitId":"-"},"content":"Then, in a page-specific CSS file,"},{"lineNumber":149,"author":{"gitId":"-"},"content":"```css"},{"lineNumber":150,"author":{"gitId":"-"},"content":".extra {"},{"lineNumber":151,"author":{"gitId":"-"},"content":" display: none; /* \u0027block\u0027 or \u0027inline-block\u0027 if you want it to show */"},{"lineNumber":152,"author":{"gitId":"-"},"content":"}"},{"lineNumber":153,"author":{"gitId":"-"},"content":"```"},{"lineNumber":154,"author":{"gitId":"-"},"content":""},{"lineNumber":155,"author":{"gitId":"-"},"content":"#### Deploying a page multiple times with different titles"},{"lineNumber":156,"author":{"gitId":"-"},"content":""},{"lineNumber":157,"author":{"gitId":"-"},"content":"By [overriding the `title` declared in the frontmatter of the page using `site.json`](tweakingThePageStructure.html#front-matter), it is possible to allow MarkBind to serve the same page with different titles. "},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":"This may especially be useful for users who are serving a page from a submodule."},{"lineNumber":160,"author":{"gitId":"-"},"content":""},{"lineNumber":161,"author":{"gitId":"-"},"content":"#### Creating slight variations of content"},{"lineNumber":162,"author":{"gitId":"-"},"content":""},{"lineNumber":163,"author":{"gitId":"-"},"content":"Tags are a good way to create multiple variations of a page within the same source file, such as to filter content for creating multiple different versions of the same page. See [_User Guide: Tweaking the Page Structure → Tags_](tweakingThePageStructure.html#tags) section for more information."},{"lineNumber":164,"author":{"gitId":"-"},"content":""},{"lineNumber":165,"author":{"gitId":"-"},"content":"{% from \"njk/common.njk\" import previous_next %}"},{"lineNumber":166,"author":{"gitId":"-"},"content":"{{ previous_next(\u0027tweakingThePageStructure\u0027, \u0027workingWithSites\u0027) }}"}],"authorContributionMap":{"-":163,"Tim-Siu":3}},{"path":"docs/userGuide/syntax/badges.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"## Badges"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"yiwen101"},"content":"**Example:**"},{"lineNumber":4,"author":{"gitId":"yiwen101"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":5,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":6,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":7,"author":{"gitId":"yiwen101"},"content":"\u003cspan class\u003d\"badge bg-primary\"\u003e"},{"lineNumber":8,"author":{"gitId":"yiwen101"},"content":"Some Plain Text"},{"lineNumber":9,"author":{"gitId":"yiwen101"},"content":"\u003c/span\u003e"},{"lineNumber":10,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":11,"author":{"gitId":"yiwen101"},"content":"\u003cspan class\u003d\"badge bg-primary\"\u003e"},{"lineNumber":12,"author":{"gitId":"yiwen101"},"content":"\u003cmd\u003e_Some Markdown_\u003c/md\u003e"},{"lineNumber":13,"author":{"gitId":"yiwen101"},"content":"\u003c/span\u003e"},{"lineNumber":14,"author":{"gitId":"yiwen101"},"content":"\u003c/variable\u003e"},{"lineNumber":15,"author":{"gitId":"yiwen101"},"content":"\u003c/include\u003e"},{"lineNumber":16,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":17,"author":{"gitId":"yiwen101"},"content":"**You can choose from a variety of colors for your badges. You can also use the `rounded-pill` class to make the badges pill-shaped.**"},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Normal:"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-primary\"\u003ePrimary\u003c/span\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-secondary\"\u003eSecondary\u003c/span\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-success\"\u003eSuccess\u003c/span\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-danger\"\u003eDanger\u003c/span\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-warning text-dark\"\u003eWarning\u003c/span\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-info text-dark\"\u003eInfo\u003c/span\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-light text-dark\"\u003eLight\u003c/span\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-dark\"\u003eDark\u003c/span\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cbr\u003ePills:"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-primary\"\u003ePrimary\u003c/span\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-secondary\"\u003eSecondary\u003c/span\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-success\"\u003eSuccess\u003c/span\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-danger\"\u003eDanger\u003c/span\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-warning text-dark\"\u003eWarning\u003c/span\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-info text-dark\"\u003eInfo\u003c/span\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-light text-dark\"\u003eLight\u003c/span\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-dark\"\u003eDark\u003c/span\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"yiwen101"},"content":"**You can use Badges in combination with headings, buttons, links, etc.**"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Links:"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003ca href\u003d\"#\" class\u003d\"badge bg-primary\"\u003ePrimary\u003c/a\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003ca href\u003d\"#\" class\u003d\"badge rounded-pill bg-warning text-dark\"\u003eWarning\u003c/a\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":"Buttons:"},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cbutton type\u003d\"button\" class\u003d\"btn btn-primary\"\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Difficulty Level \u003cspan class\u003d\"badge bg-light text-dark\"\u003e4\u003c/span\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"Headings:"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":"### Feature X \u003cspan class\u003d\"badge bg-danger\"\u003ebeta\u003c/span\u003e {.no-index}"},{"lineNumber":59,"author":{"gitId":"-"},"content":"##### Feature Y \u003cspan class\u003d\"badge rounded-pill bg-success\"\u003estable\u003c/span\u003e {.no-index}"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":""},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"%%{{ icon_info }} You can refer to [Bootstrap documentation](https://getbootstrap.com/docs/5.1/components/badge/) to find more information about Badges.%%"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"short\" class\u003d\"d-none\"\u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-primary\"\u003ePrimary\u003c/span\u003e"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-success\"\u003eSuccess\u003c/span\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":"\u003cbutton type\u003d\"button\" class\u003d\"btn btn-primary\"\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Difficulty Level \u003cspan class\u003d\"badge bg-light text-dark\"\u003e4\u003c/span\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":78,"author":{"gitId":"-"},"content":"```"},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"examples\" class\u003d\"d-none\"\u003e"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge bg-primary\"\u003ePrimary\u003c/span\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cspan class\u003d\"badge rounded-pill bg-success\"\u003eSuccess\u003c/span\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cbutton type\u003d\"button\" class\u003d\"btn btn-primary\"\u003e"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Difficulty Level \u003cspan class\u003d\"badge bg-light text-dark\"\u003e4\u003c/span\u003e"},{"lineNumber":87,"author":{"gitId":"-"},"content":"##### Feature Y \u003cspan class\u003d\"badge rounded-pill bg-warning text-dark\"\u003estable\u003c/span\u003e {.no-index}"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"-":73,"yiwen101":16}},{"path":"docs/userGuide/syntax/boxes.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"{% from \"userGuide/components/advanced.md\" import slot_info_trigger %}"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Boxes"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"yiwen101"},"content":"**Simple Example**"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003cbox\u003e"},{"lineNumber":10,"author":{"gitId":"yiwen101"},"content":"plain text"},{"lineNumber":11,"author":{"gitId":"yiwen101"},"content":"\u003c/box\u003e"},{"lineNumber":12,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":13,"author":{"gitId":"yiwen101"},"content":"\u003cbox\u003e"},{"lineNumber":14,"author":{"gitId":"yiwen101"},"content":"\u003cmd\u003e_markdown_\u003c/md\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":16,"author":{"gitId":"yiwen101"},"content":"\u003c/variable\u003e"},{"lineNumber":17,"author":{"gitId":"yiwen101"},"content":"\u003c/include\u003e"},{"lineNumber":18,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":19,"author":{"gitId":"yiwen101"},"content":"**Boxes come with different built-in types.**"},{"lineNumber":20,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":21,"author":{"gitId":"yiwen101"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":22,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":23,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\"\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" info"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\"\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" warning"},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\"\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" success"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"important\"\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" important"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"wrong\"\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" wrong"},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\"\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" tip"},{"lineNumber":41,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\"\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" definition"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" dismissible\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" dismissible info"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\" header\u003d\"#### Header :rocket:\" icon-size\u003d\"2x\"\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"warning\" header\u003d\"You can use **markdown** here! :pizza:\" dismissible\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/box\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"**The built in types can be colored.**"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"primary\"\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":" primary"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"secondary\"\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" secondary"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"success\"\u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":" success"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"danger\"\u003e"},{"lineNumber":74,"author":{"gitId":"-"},"content":" danger"},{"lineNumber":75,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"warning\"\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":" warning"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"info\"\u003e"},{"lineNumber":80,"author":{"gitId":"-"},"content":" info"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"light\"\u003e"},{"lineNumber":83,"author":{"gitId":"-"},"content":" light"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" theme\u003d\"dark\"\u003e"},{"lineNumber":86,"author":{"gitId":"-"},"content":" dark"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":"**MarkBind also supports a light color scheme for boxes**"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":96,"author":{"gitId":"-"},"content":"\u003cbox light\u003e"},{"lineNumber":97,"author":{"gitId":"-"},"content":" default light"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" light\u003e"},{"lineNumber":100,"author":{"gitId":"-"},"content":" info light"},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" light\u003e"},{"lineNumber":103,"author":{"gitId":"-"},"content":" warning light"},{"lineNumber":104,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":105,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\" light\u003e"},{"lineNumber":106,"author":{"gitId":"-"},"content":" success light"},{"lineNumber":107,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":108,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"important\" light\u003e"},{"lineNumber":109,"author":{"gitId":"-"},"content":" important light"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"wrong\" light\u003e"},{"lineNumber":112,"author":{"gitId":"-"},"content":" wrong light"},{"lineNumber":113,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" light\u003e"},{"lineNumber":115,"author":{"gitId":"-"},"content":" tip light"},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":117,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\" light\u003e"},{"lineNumber":118,"author":{"gitId":"-"},"content":" definition light"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\" header\u003d\"##### Header markdown :rocket:\" light\u003e"},{"lineNumber":121,"author":{"gitId":"-"},"content":" definition light with header markdown"},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":123,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":124,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":"**MarkBind also supports a seamless style of boxes**"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\"\u003e"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":"As `light` and `seamless` are mutually exclusive styles, `light` takes priority over `seamless`."},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":132,"author":{"gitId":"-"},"content":""},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cbox seamless\u003e"},{"lineNumber":137,"author":{"gitId":"-"},"content":" default seamless"},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e"},{"lineNumber":140,"author":{"gitId":"-"},"content":" info seamless"},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e"},{"lineNumber":143,"author":{"gitId":"-"},"content":" warning seamless"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\" seamless\u003e"},{"lineNumber":146,"author":{"gitId":"-"},"content":" success seamless"},{"lineNumber":147,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"important\" seamless\u003e"},{"lineNumber":149,"author":{"gitId":"-"},"content":" important seamless"},{"lineNumber":150,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":151,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"wrong\" seamless\u003e"},{"lineNumber":152,"author":{"gitId":"-"},"content":" wrong seamless"},{"lineNumber":153,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":154,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e"},{"lineNumber":155,"author":{"gitId":"-"},"content":" tip seamless"},{"lineNumber":156,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":157,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\" seamless dismissible\u003e"},{"lineNumber":158,"author":{"gitId":"-"},"content":" dismissible definition seamless"},{"lineNumber":159,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":160,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\" header\u003d\"##### Header markdown :rocket:\" seamless\u003e"},{"lineNumber":161,"author":{"gitId":"-"},"content":" success seamless with header markdown"},{"lineNumber":162,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":163,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":164,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":165,"author":{"gitId":"-"},"content":""},{"lineNumber":166,"author":{"gitId":"-"},"content":"**You can further customize the Box\u0027s appearance.**"},{"lineNumber":167,"author":{"gitId":"-"},"content":""},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":169,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":170,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":171,"author":{"gitId":"-"},"content":"\u003cbox background-color\u003d\"#ffca6a\" border-color\u003d\"grey\" border-left-color\u003d\"#8b5a01\"\u003e"},{"lineNumber":172,"author":{"gitId":"-"},"content":"default type, styled as an orange box with a brown left border"},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" color\u003d\"red\" icon\u003d\":rocket:\"\u003e"},{"lineNumber":175,"author":{"gitId":"-"},"content":""},{"lineNumber":176,"author":{"gitId":"-"},"content":"info, with a custom markdown rocket icon and `red` colored text."},{"lineNumber":177,"author":{"gitId":"-"},"content":""},{"lineNumber":178,"author":{"gitId":"-"},"content":"You can use any inline markdown in the `icon` property."},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":182,"author":{"gitId":"-"},"content":""},{"lineNumber":183,"author":{"gitId":"-"},"content":"**You can remove the background, icon and borders of preset styles.**"},{"lineNumber":184,"author":{"gitId":"-"},"content":""},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cbox no-icon no-background type\u003d\"success\"\u003e"},{"lineNumber":189,"author":{"gitId":"-"},"content":" success box without a tick icon and backgound"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":191,"author":{"gitId":"-"},"content":""},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cbox no-border type\u003d\"definition\" light\u003e"},{"lineNumber":193,"author":{"gitId":"-"},"content":" definition type box, light style without border"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":197,"author":{"gitId":"-"},"content":""},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox header\u003d\"Note\" type\u003d\"info\" seamless\u003e"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":"Custom styles **(** `background-color`, `border-color`, `border-left-color`, `icon` **)** as introduced in the previous section, takes precedence over the `no-background`, `no-border`, `no-icon` attributes."},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":202,"author":{"gitId":"-"},"content":""},{"lineNumber":203,"author":{"gitId":"-"},"content":"**You can also use icons, resize them and change their color accordingly.**"},{"lineNumber":204,"author":{"gitId":"-"},"content":""},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\" icon\u003d\":fas-camera:\"\u003e"},{"lineNumber":209,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipiscing elit"},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" icon\u003d\":fas-camera:\" icon-size\u003d\"2x\"\u003e"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\" icon\u003d\":fas-camera:\" icon-size\u003d\"3x\"\u003e"},{"lineNumber":215,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" icon\u003d\":fas-camera:\" icon-color\u003d\"red\" icon-size\u003d\"3x\"\u003e"},{"lineNumber":218,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":222,"author":{"gitId":"-"},"content":""},{"lineNumber":223,"author":{"gitId":"-"},"content":"****Options****"},{"lineNumber":224,"author":{"gitId":"-"},"content":"Name | Type | Default | Description"},{"lineNumber":225,"author":{"gitId":"-"},"content":"--- | --- | --- | ---"},{"lineNumber":226,"author":{"gitId":"-"},"content":"background-color | `String` | `null` |"},{"lineNumber":227,"author":{"gitId":"-"},"content":"border-color | `String` | `null` |"},{"lineNumber":228,"author":{"gitId":"-"},"content":"border-left-color | `String` | `null` | Overrides border-color for the left border."},{"lineNumber":229,"author":{"gitId":"-"},"content":"color | `String` | `null` | Color of the text."},{"lineNumber":230,"author":{"gitId":"-"},"content":"dismissible | `Boolean` | `false` | Adds a button to close the box to the top right corner."},{"lineNumber":231,"author":{"gitId":"-"},"content":"icon{{slot_info_trigger}} | `String` | `null` | Inline MarkDown text of the icon displayed on the left."},{"lineNumber":232,"author":{"gitId":"-"},"content":"icon-size | `String` | `null` | Resizes the icon. Supports integer-scaling of the icon dimensions e.g. `2x`, `3x`, `4x`, etc."},{"lineNumber":233,"author":{"gitId":"-"},"content":"icon-color | `String` | `null` | Color of the icon."},{"lineNumber":234,"author":{"gitId":"-"},"content":"header{{slot_info_trigger}} | `String` | `null` | Markdown text of the box header."},{"lineNumber":235,"author":{"gitId":"-"},"content":"type | `String` | `\u0027\u0027` | Supports: `info`, `warning`, `success`, `important`, `wrong`, `tip`, `definition`, or empty for default."},{"lineNumber":236,"author":{"gitId":"-"},"content":"theme | `String` | `\u0027\u0027` | Supports: `primary`, `secondary`, `success`, `danger`, `warning`, `tip`, `light`, `dark` or empty for default."},{"lineNumber":237,"author":{"gitId":"-"},"content":"light | `Boolean` | `false` | Uses a light color scheme for the box."},{"lineNumber":238,"author":{"gitId":"-"},"content":"seamless | `Boolean` | `false` | Uses a seamless style for the box. If `light` is specified, this style will not be activated."},{"lineNumber":239,"author":{"gitId":"-"},"content":"no-border | `Boolean` | `false` | Removes border, except if styled by `border-color` or `border-left-color`. "},{"lineNumber":240,"author":{"gitId":"-"},"content":"no-background | `Boolean` | `false` | Removes background, except if styled by `background-color` option."},{"lineNumber":241,"author":{"gitId":"-"},"content":"no-icon | `Boolean` | `false` | Removes icon, except if icon is displayed via `icon` option."},{"lineNumber":242,"author":{"gitId":"-"},"content":""},{"lineNumber":243,"author":{"gitId":"-"},"content":""},{"lineNumber":244,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"short\" class\u003d\"d-none\"\u003e"},{"lineNumber":245,"author":{"gitId":"-"},"content":""},{"lineNumber":246,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":247,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\"\u003e"},{"lineNumber":248,"author":{"gitId":"-"},"content":" warning"},{"lineNumber":249,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```"},{"lineNumber":251,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":252,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"examples\" class\u003d\"d-none\"\u003e"},{"lineNumber":253,"author":{"gitId":"-"},"content":""},{"lineNumber":254,"author":{"gitId":"-"},"content":"\u003cbox\u003e"},{"lineNumber":255,"author":{"gitId":"-"},"content":" default"},{"lineNumber":256,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":257,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\"\u003e"},{"lineNumber":258,"author":{"gitId":"-"},"content":" info"},{"lineNumber":259,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\"\u003e"},{"lineNumber":261,"author":{"gitId":"-"},"content":" warning"},{"lineNumber":262,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\"\u003e"},{"lineNumber":264,"author":{"gitId":"-"},"content":" success"},{"lineNumber":265,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":266,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"important\"\u003e"},{"lineNumber":267,"author":{"gitId":"-"},"content":" important"},{"lineNumber":268,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":269,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"wrong\"\u003e"},{"lineNumber":270,"author":{"gitId":"-"},"content":" wrong"},{"lineNumber":271,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":272,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\"\u003e"},{"lineNumber":273,"author":{"gitId":"-"},"content":" tip"},{"lineNumber":274,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":275,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"definition\"\u003e"},{"lineNumber":276,"author":{"gitId":"-"},"content":" definition"},{"lineNumber":277,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":278,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"-":264,"yiwen101":14}},{"path":"docs/userGuide/syntax/code.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"## Code"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"#### Themes"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"MarkBind can present formatted code blocks, be it fenced or inline, with either **light** or **dark** themes. The default is dark \u003ctrigger for\u003d\"modal:code-dark-example\" trigger\u003d\"click\"\u003e_(click for an example)_\u003c/trigger\u003e."},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003cmodal header\u003d\"Dark Code Theme\" id\u003d\"modal:code-dark-example\"\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003cpic src\u003d\"/images/codeDarkTheme.png\" alt\u003d\"Theme example\"\u003e\u003c/pic\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c/modal\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"Refer [here](../siteJsonFile.html#style) for configuring MarkBind to use a specific theme for the code blocks."},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"#### Fenced Code"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"MarkBind provides several features, some of which are added on top of the existing functionality of Markdown\u0027s _fenced code blocks_."},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003csmall\u003eMore info: \u003chttps://www.markdownguide.org/extended-syntax#fenced-code-blocks\u003e\u003c/small\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"Features:"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":"* Syntax coloring"},{"lineNumber":23,"author":{"gitId":"-"},"content":"* Line numbering"},{"lineNumber":24,"author":{"gitId":"-"},"content":"* Line highlighting"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* Code block headers"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":"##### Syntax coloring"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":"To enable syntax coloring, specify a language next to the backticks before the fenced code block."},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"main-example\"\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutputCode.md\" boilerplate \u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":"```xml"},{"lineNumber":34,"author":{"gitId":"-"},"content":"\u003cfoo\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cbar type\u003d\"name\"\u003egoo\u003c/bar\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003c/foo\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":"```"},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":"##### Line numbering"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":"Line numbers are \u003ctooltip content\u003d\"Line numbers were provided by default in version v3.1.1 and below. To preserve the exact line numbers behavior of sites generated in previous versions, simply set the codeLineNumbers option in site.json to true\"\u003ehidden by default\u003c/tooltip\u003e. To enable line numbers for the entire site by default,"},{"lineNumber":45,"author":{"gitId":"-"},"content":"add `\"codeLineNumbers\": true` to the [`site.json`]({{baseUrl}}/userGuide/siteJsonFile.html#style) file:"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":"```json {highlight-lines\u003d\"8[:]\"}"},{"lineNumber":48,"author":{"gitId":"-"},"content":"{"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // ..."},{"lineNumber":50,"author":{"gitId":"-"},"content":" \"style\": {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \"bootstrapTheme\": \"bootswatch-cerulean\","},{"lineNumber":52,"author":{"gitId":"-"},"content":" \"codeTheme\": \"light\","},{"lineNumber":53,"author":{"gitId":"-"},"content":" \"codeLineNumbers\": true // optional, false if omitted"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // code below omitted for brevity"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}"},{"lineNumber":57,"author":{"gitId":"-"},"content":"```"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"For each code block, you may also use the `line-numbers` or `no-line-numbers` classes to override the site-wide setting as such:"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutputCode.md\" boilerplate \u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":"```xml {.line-numbers}"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cfoo\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003cbar type\u003d\"name\"\u003egoo\u003c/bar\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003c/foo\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":"```"},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutputCode.md\" boilerplate \u003e"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":"```xml {.no-line-numbers}"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cfoo\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003cbar type\u003d\"name\"\u003egoo\u003c/bar\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":"\u003c/foo\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":"```"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":"You can have your line numbers start with a value other than `1` with the `start-from` attribute."},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutputCode.md\" boilerplate \u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":"```js {start-from\u003d6}"},{"lineNumber":86,"author":{"gitId":"-"},"content":"function add(a, b) {"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return a + b;"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}"},{"lineNumber":89,"author":{"gitId":"-"},"content":"```"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":"##### Line highlighting"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":"You can add the `highlight-lines` attribute to add highlighting to your code block. Refer to the examples"},{"lineNumber":96,"author":{"gitId":"-"},"content":"below for a visual demonstration of all the possible ways of highlighting a code block."},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":"**Full text highlight**"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutputCode.md\" boilerplate \u003e"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":101,"author":{"gitId":"-"},"content":"```js {start-from\u003d6 .line-numbers highlight-lines\u003d\"7, 9\"}"},{"lineNumber":102,"author":{"gitId":"-"},"content":"function add(a, b) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" const sum \u003d a + b;"},{"lineNumber":104,"author":{"gitId":"-"},"content":" console.log(`${a} + ${b} \u003d ${sum}`);"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return sum;"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}"},{"lineNumber":107,"author":{"gitId":"-"},"content":"```"},{"lineNumber":108,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":109,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":110,"author":{"gitId":"-"},"content":""},{"lineNumber":111,"author":{"gitId":"-"},"content":"**Substring highlight**"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutputCode.md\" boilerplate \u003e"},{"lineNumber":113,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":114,"author":{"gitId":"-"},"content":"```js {.line-numbers highlight-lines\u003d\"1[\u0027function\u0027], 2[\u0027a\u0027], 2[\u0027b\u0027], 4[\u0027diff\u0027]\"}"},{"lineNumber":115,"author":{"gitId":"-"},"content":"function subtract(a, b) {"},{"lineNumber":116,"author":{"gitId":"-"},"content":" const diff \u003d a - b;"},{"lineNumber":117,"author":{"gitId":"-"},"content":" console.log(`${a} + ${b} \u003d ${diff}`);"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return diff;"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}"},{"lineNumber":120,"author":{"gitId":"-"},"content":"```"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":"**Character-bounded highlight**"},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutputCode.md\" boilerplate \u003e"},{"lineNumber":126,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":127,"author":{"gitId":"-"},"content":"```js {.line-numbers highlight-lines\u003d\"1[0:3], 1[6:10], 2[5:], 3[:6]\"}"},{"lineNumber":128,"author":{"gitId":"-"},"content":"function multiply(a, b) {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" const product \u003d a * b;"},{"lineNumber":130,"author":{"gitId":"-"},"content":" console.log(\u0027Product \u003d ${product}\u0027);"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return product;"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}"},{"lineNumber":133,"author":{"gitId":"-"},"content":"```"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":"**Word-bounded highlight**"},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutputCode.md\" boilerplate \u003e"},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":140,"author":{"gitId":"-"},"content":"```js {.line-numbers highlight-lines\u003d\"1[1::3], 1[5::7], 2[2::], 3[::3]\"}"},{"lineNumber":141,"author":{"gitId":"-"},"content":"// Function returns the distance travelled assuming constant speed"},{"lineNumber":142,"author":{"gitId":"-"},"content":"function calculateDistance(speed, time) {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" const distance \u003d speed * time;"},{"lineNumber":144,"author":{"gitId":"-"},"content":" console.log(`Distance travelled \u003d ${distance}`);"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return distance;"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}"},{"lineNumber":147,"author":{"gitId":"-"},"content":"```"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":149,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":"**Full-line highlight**"},{"lineNumber":152,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutputCode.md\" boilerplate \u003e"},{"lineNumber":153,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```js {start-from\u003d10 .line-numbers highlight-lines\u003d\"11[:]\"}"},{"lineNumber":155,"author":{"gitId":"-"},"content":"function add(a, b) {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return a + b;"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}"},{"lineNumber":158,"author":{"gitId":"-"},"content":"```"},{"lineNumber":159,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":160,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":"**Sample Combined Usage**"},{"lineNumber":163,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutputCode.md\" boilerplate \u003e"},{"lineNumber":164,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":165,"author":{"gitId":"-"},"content":"```java {.line-numbers highlight-lines\u003d\"1[:],3[\u0027Inventory\u0027],3[4::6],4[\u0027It\\\u0027s designed\u0027],5,6[8:15],6[18:],8[0::2],12[:]-14,16-18,20[12:]-22,24[1::]-26\"}"},{"lineNumber":166,"author":{"gitId":"-"},"content":"import java.util.List;"},{"lineNumber":167,"author":{"gitId":"-"},"content":""},{"lineNumber":168,"author":{"gitId":"-"},"content":"// Inventory is a class that stores inventory items in a list."},{"lineNumber":169,"author":{"gitId":"-"},"content":"// It\u0027s designed as a thin wrapper on the List interface."},{"lineNumber":170,"author":{"gitId":"-"},"content":"public class Inventory {"},{"lineNumber":171,"author":{"gitId":"-"},"content":" private List\u003cItem\u003e items;"},{"lineNumber":172,"author":{"gitId":"-"},"content":""},{"lineNumber":173,"author":{"gitId":"-"},"content":" public int getItemCount(){"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return items.size();"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }"},{"lineNumber":176,"author":{"gitId":"-"},"content":""},{"lineNumber":177,"author":{"gitId":"-"},"content":" public bool isEmpty() {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return items.isEmpty();"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }"},{"lineNumber":180,"author":{"gitId":"-"},"content":""},{"lineNumber":181,"author":{"gitId":"-"},"content":" public Item getItem(idx: int) {"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return items.get(idx);"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }"},{"lineNumber":184,"author":{"gitId":"-"},"content":""},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void addItem(item: Item) {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return items.add(item);"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }"},{"lineNumber":188,"author":{"gitId":"-"},"content":""},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void removeItem(item: Item) {"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return items.remove(item);"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}"},{"lineNumber":193,"author":{"gitId":"-"},"content":"```"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":196,"author":{"gitId":"-"},"content":""},{"lineNumber":197,"author":{"gitId":"-"},"content":"The value of `highlight-lines` is composed of *highlight rules*, separated by commas."},{"lineNumber":198,"author":{"gitId":"-"},"content":"These rules dictate where and how MarkBind should highlight your code block."},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":"You can specify the highlight rules in many different ways, each is detailed as follows:"},{"lineNumber":201,"author":{"gitId":"-"},"content":""},{"lineNumber":202,"author":{"gitId":"-"},"content":"Type | Format | Example"},{"lineNumber":203,"author":{"gitId":"-"},"content":"-----|--------|--------"},{"lineNumber":204,"author":{"gitId":"-"},"content":"**Full text highlight**\u003cbr\u003eHighlights the entirety of the text portion of the line | The line numbers as-is (subject to the starting line number set in `start-from`). | `3`, `5`"},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Substring highlight**\u003cbr\u003eHighlights _all_ occurrences of a substring in the line | `lineNumber[part]`\u003cbr\u003e\u003cbr\u003e_Limitations_: `part` must be wrapped in quotes. If `part` contains a quote, escape it with a backslash (`\\`). | `3[\u0027Inventory\u0027]`,`4[\u0027It\\\u0027s designed\u0027]`"},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Character-bounded highlight**\u003cbr\u003eHighlights a specific range of characters in the line | `lineNumber[start:end]`, highlights from character position `start` up to (but not including) `end`.\u003cbr\u003e\u003cbr\u003eCharacter positions start from `0` as the first non-whitespace character, upwards.\u003cbr\u003e\u003cbr\u003eOmit either `start`/`end` to highlight from the start / up to the end, respectively. | `19[1:5]`,`30[10:]`,`35[:20]`"},{"lineNumber":207,"author":{"gitId":"-"},"content":"**Word-bounded highlight**\u003cbr\u003eHighlights a specific range of words in the line | `lineNumber[start::end]`, highlights from word position `start` up to (but not including) `end`.\u003cbr\u003e\u003cbr\u003eWord positions start from `0` as the first word (sequence of non-whitespace characters), upwards.\u003cbr\u003e\u003cbr\u003eOmit either `start`/`end` to highlight from the start / up to the end, respectively. | `5[2::4]`,`9[1::]`,`11[::5]`"},{"lineNumber":208,"author":{"gitId":"-"},"content":"**Full line highlight**\u003cbr\u003eHighlights the entirety of the line | `lineNumber[:]` | `7[:]`"},{"lineNumber":209,"author":{"gitId":"-"},"content":""},{"lineNumber":210,"author":{"gitId":"-"},"content":"Not only a single line, MarkBind is also capable of highlighting ranges of lines in various ways. In general, the syntax"},{"lineNumber":211,"author":{"gitId":"-"},"content":"for range highlighting consists of two single line highlight rules as listed above joined by a dash (`-`)."},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":"Type | Format | Example"},{"lineNumber":214,"author":{"gitId":"-"},"content":"-----|--------|--------"},{"lineNumber":215,"author":{"gitId":"-"},"content":"**Ranged full text highlight**\u003cbr\u003eHighlights from the first non-whitespace character to the last non-whitespace character | `lineStart-lineEnd` | `2-4`"},{"lineNumber":216,"author":{"gitId":"-"},"content":"**Ranged full line highlight**\u003cbr\u003eLike ranged full text highlight, but highlights the entirety of the lines | `lineStart[:]-lineEnd` or `lineStart-lineEnd[:]` | `1[:]-5`,`10-12[:]`"},{"lineNumber":217,"author":{"gitId":"-"},"content":"**Ranged character-bounded highlight**\u003cbr\u003eHighlights the text portion of the lines within the range, but starts/ends at an arbitrary character | `lineStart[start:]-lineEnd` or `lineStart-lineEnd[:end]` | `3[2:]-7`, `4-9[:17]`"},{"lineNumber":218,"author":{"gitId":"-"},"content":"**Ranged word-bounded highlight**\u003cbr\u003eLike ranged character-bounded highlight, but starts/ends at an arbitrary word | `lineStart[start::]-lineEnd` or `lineStart-lineEnd[::end]` | `16[1::]-20`,`22-24[::3]`"},{"lineNumber":219,"author":{"gitId":"-"},"content":""},{"lineNumber":220,"author":{"gitId":"-"},"content":"##### Heading"},{"lineNumber":221,"author":{"gitId":"-"},"content":"To add a heading, add the attribute `heading` with the heading text as the value, as shown below."},{"lineNumber":222,"author":{"gitId":"-"},"content":""},{"lineNumber":223,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutputCode.md\" boilerplate \u003e"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":225,"author":{"gitId":"-"},"content":"```xml {heading\u003d\"Heading title\"}"},{"lineNumber":226,"author":{"gitId":"-"},"content":"\u003cfoo\u003e"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cbar type\u003d\"name\"\u003egoo\u003c/bar\u003e"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003c/foo\u003e"},{"lineNumber":229,"author":{"gitId":"-"},"content":"```"},{"lineNumber":230,"author":{"gitId":"-"},"content":""},{"lineNumber":231,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":233,"author":{"gitId":"-"},"content":""},{"lineNumber":234,"author":{"gitId":"-"},"content":"Headings support inline Markdown, except for `Inline Code` and %%Dim%% text styles."},{"lineNumber":235,"author":{"gitId":"-"},"content":""},{"lineNumber":236,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutputCode.md\" boilerplate \u003e"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":238,"author":{"gitId":"-"},"content":"```{heading\u003d\"**Bold**, _Italic_, ___Bold and Italic___, ~~Strike through~~, ****Super Bold****, !!Underline!!, \u003d\u003dHighlight\u003d\u003d, :+1: :exclamation: :x: :construction:\u003cbr\u003eWe support page breaks\"}"},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003cfoo\u003e\u003c/foo\u003e"},{"lineNumber":240,"author":{"gitId":"-"},"content":"```"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":242,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":243,"author":{"gitId":"-"},"content":""},{"lineNumber":244,"author":{"gitId":"-"},"content":"##### Using multiple features"},{"lineNumber":245,"author":{"gitId":"-"},"content":""},{"lineNumber":246,"author":{"gitId":"-"},"content":"You can also use multiple features together, as shown below."},{"lineNumber":247,"author":{"gitId":"-"},"content":""},{"lineNumber":248,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutputCode.md\" boilerplate \u003e"},{"lineNumber":249,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```xml {highlight-lines\u003d\"2\" heading\u003d\"Heading title\"}"},{"lineNumber":251,"author":{"gitId":"-"},"content":"\u003cfoo\u003e"},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u003cbar type\u003d\"name\"\u003egoo\u003c/bar\u003e"},{"lineNumber":253,"author":{"gitId":"-"},"content":"\u003c/foo\u003e"},{"lineNumber":254,"author":{"gitId":"-"},"content":"```"},{"lineNumber":255,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":256,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":257,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":258,"author":{"gitId":"-"},"content":""},{"lineNumber":259,"author":{"gitId":"-"},"content":"##### Copy button"},{"lineNumber":260,"author":{"gitId":"-"},"content":""},{"lineNumber":261,"author":{"gitId":"-"},"content":"A _copy_ button can be added to code blocks using the `codeBlockCopyButtons` plugin:"},{"lineNumber":262,"author":{"gitId":"-"},"content":""},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cpanel type\u003d\"seamless\" header\u003d\"**User Guide: Using Plugins → Plugin: `codeBlockCopyButtons`**\" popup-url\u003d\"usingPlugins.html#plugin-codeblockcopybuttons\"\u003e"},{"lineNumber":264,"author":{"gitId":"-"},"content":""},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"../plugins/codeBlockCopyButtons.md\" /\u003e"},{"lineNumber":266,"author":{"gitId":"-"},"content":""},{"lineNumber":267,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":268,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":269,"author":{"gitId":"-"},"content":""},{"lineNumber":270,"author":{"gitId":"-"},"content":"##### Wrap text button"},{"lineNumber":271,"author":{"gitId":"-"},"content":""},{"lineNumber":272,"author":{"gitId":"-"},"content":"A _wrap text_ button can be added to code blocks using the `codeBlockWrapButtons` plugin:"},{"lineNumber":273,"author":{"gitId":"-"},"content":""},{"lineNumber":274,"author":{"gitId":"-"},"content":"\u003cpanel type\u003d\"seamless\" header\u003d\"**User Guide: Using Plugins → Plugin: `codeBlockWrapButtons`**\" popup-url\u003d\"usingPlugins.html#plugin-codeblockwrapbuttons\"\u003e"},{"lineNumber":275,"author":{"gitId":"-"},"content":""},{"lineNumber":276,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"../plugins/codeBlockWrapButtons.md\" /\u003e"},{"lineNumber":277,"author":{"gitId":"-"},"content":""},{"lineNumber":278,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":279,"author":{"gitId":"-"},"content":"\u003cbr\u003e"},{"lineNumber":280,"author":{"gitId":"-"},"content":""},{"lineNumber":281,"author":{"gitId":"Tim-Siu"},"content":"##### Printing optimization"},{"lineNumber":282,"author":{"gitId":"Tim-Siu"},"content":""},{"lineNumber":283,"author":{"gitId":"Tim-Siu"},"content":"\u003cdiv id\u003d\"code-print-optimization\"\u003e"},{"lineNumber":284,"author":{"gitId":"Tim-Siu"},"content":"Markbind enhances the readability of your code blocks for printing by applying soft wrapping, ensuring code doesn\u0027t get cut off. Additionally, line numbers are added to maintain context when wrapping occurs."},{"lineNumber":285,"author":{"gitId":"Tim-Siu"},"content":"\u003c/div\u003e"},{"lineNumber":286,"author":{"gitId":"Tim-Siu"},"content":"\u003cbr\u003e"},{"lineNumber":287,"author":{"gitId":"Tim-Siu"},"content":""},{"lineNumber":288,"author":{"gitId":"-"},"content":"#### Inline Code"},{"lineNumber":289,"author":{"gitId":"-"},"content":""},{"lineNumber":290,"author":{"gitId":"-"},"content":"##### Syntax coloring"},{"lineNumber":291,"author":{"gitId":"-"},"content":""},{"lineNumber":292,"author":{"gitId":"-"},"content":"MarkBind can apply syntax-coloring on inline code too."},{"lineNumber":293,"author":{"gitId":"-"},"content":""},{"lineNumber":294,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":295,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":296,"author":{"gitId":"-"},"content":"Consider the XML code `\u003cbar type\u003d\"name\"\u003egoo\u003c/bar\u003e`{.xml},\u003cbr\u003e"},{"lineNumber":297,"author":{"gitId":"-"},"content":"or the java code `public static void main(String[] args)`{.java}."},{"lineNumber":298,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":299,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":300,"author":{"gitId":"-"},"content":""},{"lineNumber":301,"author":{"gitId":"-"},"content":"{% raw %}"},{"lineNumber":302,"author":{"gitId":"-"},"content":""},{"lineNumber":303,"author":{"gitId":"-"},"content":"##### Displaying content within curly braces: `{{ content }}`"},{"lineNumber":304,"author":{"gitId":"-"},"content":""},{"lineNumber":305,"author":{"gitId":"-"},"content":"If your code contains special Nunjucks tags like `{{` or `}}`, use a [raw-endraw block](../tipsAndTricks.html#using-raw-endraw-to-display-content):"},{"lineNumber":306,"author":{"gitId":"-"},"content":""},{"lineNumber":307,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":308,"author":{"gitId":"-"},"content":"{% raw %} {{ content }} {% endraw %}"},{"lineNumber":309,"author":{"gitId":"-"},"content":"```"},{"lineNumber":310,"author":{"gitId":"-"},"content":"{% endraw %}"},{"lineNumber":311,"author":{"gitId":"-"},"content":""},{"lineNumber":312,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"short\" class\u003d\"d-none\"\u003e"},{"lineNumber":313,"author":{"gitId":"-"},"content":""},{"lineNumber":314,"author":{"gitId":"-"},"content":"````"},{"lineNumber":315,"author":{"gitId":"-"},"content":"```xml"},{"lineNumber":316,"author":{"gitId":"-"},"content":"\u003cfoo\u003e"},{"lineNumber":317,"author":{"gitId":"-"},"content":" \u003cbar type\u003d\"name\"\u003egoo\u003c/bar\u003e"},{"lineNumber":318,"author":{"gitId":"-"},"content":"\u003c/foo\u003e"},{"lineNumber":319,"author":{"gitId":"-"},"content":"```"},{"lineNumber":320,"author":{"gitId":"-"},"content":"````"},{"lineNumber":321,"author":{"gitId":"-"},"content":""},{"lineNumber":322,"author":{"gitId":"-"},"content":"```"},{"lineNumber":323,"author":{"gitId":"-"},"content":"`\u003cbar type\u003d\"name\"\u003egoo\u003c/bar\u003e`{.xml}"},{"lineNumber":324,"author":{"gitId":"-"},"content":"```"},{"lineNumber":325,"author":{"gitId":"-"},"content":""},{"lineNumber":326,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":327,"author":{"gitId":"-"},"content":""},{"lineNumber":328,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"examples\" class\u003d\"d-none\"\u003e"},{"lineNumber":329,"author":{"gitId":"-"},"content":""},{"lineNumber":330,"author":{"gitId":"-"},"content":"```xml"},{"lineNumber":331,"author":{"gitId":"-"},"content":"\u003cfoo\u003e"},{"lineNumber":332,"author":{"gitId":"-"},"content":" \u003cbar type\u003d\"name\"\u003egoo\u003c/bar\u003e"},{"lineNumber":333,"author":{"gitId":"-"},"content":"\u003c/foo\u003e"},{"lineNumber":334,"author":{"gitId":"-"},"content":"```"},{"lineNumber":335,"author":{"gitId":"-"},"content":""},{"lineNumber":336,"author":{"gitId":"-"},"content":"Syntax coloring for inline code: `\u003cbar type\u003d\"name\"\u003egoo\u003c/bar\u003e`{.xml} too!"},{"lineNumber":337,"author":{"gitId":"-"},"content":""},{"lineNumber":338,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"-":331,"Tim-Siu":7}},{"path":"docs/userGuide/syntax/emoji.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"## Emoji"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"main-example\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003emarkdown\u003c/variable\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":":+1: :exclamation: :x: :construction: :) :/ :D"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"Tim-Siu"},"content":"%%{{ icon_info }} The list of supported [emoji](https://github.com/ikatyang/emoji-cheat-sheet/blob/master/README.md) and [emoticon shortcuts](https://github.com/markdown-it/markdown-it-emoji/blob/master/lib/data/shortcuts.mjs).%%"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"short\" class\u003d\"d-none\"\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":20,"author":{"gitId":"-"},"content":":+1: :exclamation: :x: :construction: :) :/ :D"},{"lineNumber":21,"author":{"gitId":"-"},"content":"```"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"examples\" class\u003d\"d-none\"\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":":+1: :exclamation: :x: :construction: :) :/ :D"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"-":26,"Tim-Siu":1}},{"path":"docs/userGuide/syntax/includes.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"link\" class\u003d\"d-none\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003cmd\u003e[_User Guide → Reusing Contents → Includes_]({{ baseUrl }}/userGuide/reusingContents.html#includes)\u003c/md\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Includes"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"overview\"\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"**MarkBind has a powerful `\u003cinclude\u003e` mechanism** which allows you to create documents by combining other content fragments."},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"**You can use `\u003cinclude\u003e` tag to include another markdown or HTML document into the current document.**"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"{{ icon_example }} Including text from a `tip2.md` in another file."},{"lineNumber":17,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Tip 1. ..."},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"tips/tip2.md\" /\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Tip 3. ..."},{"lineNumber":21,"author":{"gitId":"-"},"content":"```"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"**You can `\u003cinclude\u003e` a fragment of a file** by specifying the `#fragment-id` at the end of the `src` attribute value, provided the fragment is wrapped in a `\u003cdiv\u003e`/`\u003cspan\u003e` tag with the matching `id`."},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"important\" seamless\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"Choose `\u003cdiv\u003e` over `\u003cspan\u003e` when wrapping block-level elements, to prevent invalid HTML markup which causes [hydration issues](https://vuejs.org/guide/scaling-up/ssr.html#hydration-mismatch)."},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":"{{ icon_example }} Including a fragment from a file:"},{"lineNumber":35,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Some text"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"docs/tips.md#tip-1\" /\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":"Some other text"},{"lineNumber":39,"author":{"gitId":"-"},"content":"```"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"`docs/tips.md`:"},{"lineNumber":42,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":43,"author":{"gitId":"-"},"content":"..."},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"tip-1\" /\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Tip 1. ..."},{"lineNumber":46,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Tip 2. ..."},{"lineNumber":49,"author":{"gitId":"-"},"content":"```"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\"\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":"When setting the `id` of a fragment, be careful not to clash with heading anchor IDs auto-generated by MarkBind. For example, if you have a heading `## Some Useful Tips`, MarkBind will auto-generate an ID `some-useful-tips` for that heading."},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"yiwen101"},"content":"\u003cinclude src\u003d\"panels.md#script_and_styles_warning\"\u003e\u003c/include\u003e"},{"lineNumber":59,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"tip.md\" boilerplate \u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"tip_body\"\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":"The `\u003cinclude\u003e` mechanism can be used inside any MarkBind source file (even inside the _frontmatter_ section) but it will not work inside some _special_ files such as the `_markbind/variables.md`."},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"**Attributes:**"},{"lineNumber":67,"author":{"gitId":"-"},"content":"* **`src`**: specify the source file path."},{"lineNumber":68,"author":{"gitId":"-"},"content":"* **`inline`** (optional): make the included result an inline element. (wrapped in `\u003cspan\u003e` tag). e.g.,"},{"lineNumber":69,"author":{"gitId":"-"},"content":" ```html"},{"lineNumber":70,"author":{"gitId":"-"},"content":" The title is \u003cinclude src\u003d\"../docs/summary.md#title\" inline /\u003e while ..."},{"lineNumber":71,"author":{"gitId":"-"},"content":" ```"},{"lineNumber":72,"author":{"gitId":"-"},"content":"* **`optional`** (optional): include the file/fragment only if it exists i.e., there will be no error message if the file/fragment does not exist. e.g.,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" ```html"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"UserStories.md\" optional /\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":" ```"},{"lineNumber":76,"author":{"gitId":"-"},"content":"* **`trim`** (optional): remove leading and trailing whitespace and newlines from the document before including."},{"lineNumber":77,"author":{"gitId":"-"},"content":" ```html"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"UserStories.md#epic\" trim /\u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":" ```"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* **`omitFrontmatter`** (optional): omit the frontmatter of the file/fragment from being included (if any)."},{"lineNumber":81,"author":{"gitId":"-"},"content":" ```html"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"UserStories.md#epic\" omitFrontmatter /\u003e"},{"lineNumber":83,"author":{"gitId":"-"},"content":" ```"},{"lineNumber":84,"author":{"gitId":"-"},"content":""},{"lineNumber":85,"author":{"gitId":"-"},"content":"##### `\u003cinclude\u003e` Inside an Included File"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":"**Although the `src` attribute of an `\u003cinclude\u003e` is given _relative_ to the current directory, it is converted to an _absolute_ value _before_ the \u003ctooltip content\u003d\"i.e., the file containing the `\u003cinclude\u003e`\"\u003ehost file\u003c/tooltip\u003e is included from another file.**"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":""},{"lineNumber":91,"author":{"gitId":"-"},"content":"{{ icon_example }} Suppose you have a MarkBind project with the following file structure."},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003ctree\u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":"C:/mySite/"},{"lineNumber":94,"author":{"gitId":"-"},"content":" bookFiles/"},{"lineNumber":95,"author":{"gitId":"-"},"content":" book.md"},{"lineNumber":96,"author":{"gitId":"-"},"content":" chapter1.md"},{"lineNumber":97,"author":{"gitId":"-"},"content":" chapter2.md"},{"lineNumber":98,"author":{"gitId":"-"},"content":" reviewFiles/"},{"lineNumber":99,"author":{"gitId":"-"},"content":" review.md"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/tree\u003e"},{"lineNumber":101,"author":{"gitId":"-"},"content":"The `book.md`:"},{"lineNumber":102,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":103,"author":{"gitId":"-"},"content":"# My Book"},{"lineNumber":104,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter1.md\" /\u003e"},{"lineNumber":105,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter2.md\" /\u003e"},{"lineNumber":106,"author":{"gitId":"-"},"content":"```"},{"lineNumber":107,"author":{"gitId":"-"},"content":"The `review.md`:"},{"lineNumber":108,"author":{"gitId":"-"},"content":""},{"lineNumber":109,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":110,"author":{"gitId":"-"},"content":"# My Review"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"../bookFiles/book.md\" /\u003e"},{"lineNumber":112,"author":{"gitId":"-"},"content":"..."},{"lineNumber":113,"author":{"gitId":"-"},"content":"```"},{"lineNumber":114,"author":{"gitId":"-"},"content":""},{"lineNumber":115,"author":{"gitId":"-"},"content":"The content of the `chapter1.md` and `chapter2.md` will be included in the `review.md` (via `\u003cinclude src\u003d\"../bookFiles/book.md\" /\u003e`) although `chapter1.md` and `chapter2.md` are not in `reviewFiles` directory. i.e., `\u003cinclude src\u003d\"chapter1.md\" /\u003e` will be interpreted as `\u003cinclude src\u003d\"c:/mySite/bookFiles/chapter1.md\" /\u003e`"},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":117,"author":{"gitId":"-"},"content":""},{"lineNumber":118,"author":{"gitId":"-"},"content":"In other words, **`\u003cinclude\u003e` interprets the reused code relative to the original location of the file, not the location in which it is reused.**"},{"lineNumber":119,"author":{"gitId":"-"},"content":""},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":"##### Specifying Variables in an `\u003cinclude\u003e`"},{"lineNumber":123,"author":{"gitId":"-"},"content":""},{"lineNumber":124,"author":{"gitId":"-"},"content":"**It is possible to include variables in an `\u003cinclude\u003e`.**"},{"lineNumber":125,"author":{"gitId":"-"},"content":""},{"lineNumber":126,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":"{{ icon_example }} Specifying `title` and `author` variables in an `\u003cinclude\u003e` tag:"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"article.md\"\u003e"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u003cvariable name\u003d\"title\"\u003eMy Title\u003c/variable\u003e"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cvariable name\u003d\"author\"\u003eJohn Doe\u003c/variable\u003e"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":135,"author":{"gitId":"-"},"content":"```"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":"In `article.md`:"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":"{% raw %}"},{"lineNumber":140,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":141,"author":{"gitId":"-"},"content":"# {{ title }}\u003cbr\u003e"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Author: {{ author }}"},{"lineNumber":143,"author":{"gitId":"-"},"content":"```"},{"lineNumber":144,"author":{"gitId":"-"},"content":"{% endraw %}"},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":146,"author":{"gitId":"-"},"content":""},{"lineNumber":147,"author":{"gitId":"-"},"content":"These variables work the same way as variables in `_markbind/variables.md`, except that they only apply to the included file. They allow the included file to be reused as a template, for different source files using different variable values."},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":"You can also specify include variables within the `\u003cinclude\u003e` tag itself by adding a `var-` prefix."},{"lineNumber":150,"author":{"gitId":"-"},"content":""},{"lineNumber":151,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":152,"author":{"gitId":"-"},"content":""},{"lineNumber":153,"author":{"gitId":"-"},"content":"{{ icon_example }} Specifying `title` and `author` variables inline:"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":155,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"article.md\" var-title\u003d\"My Title\" var-author\u003d\"John Doe\" /\u003e"},{"lineNumber":156,"author":{"gitId":"-"},"content":"```"},{"lineNumber":157,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":"If the same variable is defined in a chain of `\u003cinclude\u003e`s (e.g. `a.md` includes `b.md` includes `c.md`...), variables defined in the top-most `\u003cinclude\u003e` will take precedence. Global variables (`_markbind/variables.md`) will take precedence over any `\u003cinclude\u003e` variables."},{"lineNumber":160,"author":{"gitId":"-"},"content":"This is to allow the outer context to adapt the reused content without changing its actual content."},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Preventing cyclical errors when using multiple includes with same variables\"\u003e"},{"lineNumber":163,"author":{"gitId":"-"},"content":""},{"lineNumber":164,"author":{"gitId":"-"},"content":"Since outer variables override inner variables, this may result in errors if attempting to use an `include` within another `include` with the same variables."},{"lineNumber":165,"author":{"gitId":"-"},"content":""},{"lineNumber":166,"author":{"gitId":"-"},"content":"This is because the inner variable of the same name will be replaced with the outer variable, which contains the inner variable. "},{"lineNumber":167,"author":{"gitId":"-"},"content":"This inner variable is once again overridden to result in another inner variable and so on, causing a cyclical error."},{"lineNumber":168,"author":{"gitId":"-"},"content":""},{"lineNumber":169,"author":{"gitId":"-"},"content":"To fix this issue, do not use an inner `include` if they use the same variables."},{"lineNumber":170,"author":{"gitId":"-"},"content":"Instead, copy the content of the `src` file and replace the variables with the defined values."},{"lineNumber":171,"author":{"gitId":"-"},"content":""},{"lineNumber":172,"author":{"gitId":"-"},"content":"Example:"},{"lineNumber":173,"author":{"gitId":"-"},"content":""},{"lineNumber":174,"author":{"gitId":"-"},"content":"```html {.line-numbers}"},{"lineNumber":175,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"boilerplate.md\" boilerplate\u003e"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"variable\"\u003e"},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"boilerplate.md\"\u003e"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"variable\"\u003e"},{"lineNumber":179,"author":{"gitId":"-"},"content":" VALUE_OF_VARIABLE"},{"lineNumber":180,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":181,"author":{"gitId":"-"},"content":" \u003c/include\u003e"},{"lineNumber":182,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":184,"author":{"gitId":"-"},"content":"```"},{"lineNumber":185,"author":{"gitId":"-"},"content":""},{"lineNumber":186,"author":{"gitId":"-"},"content":"The inner `variable` would be replaced by the outer `variable` resulting in a cyclical error:"},{"lineNumber":187,"author":{"gitId":"-"},"content":""},{"lineNumber":188,"author":{"gitId":"-"},"content":"```html {.line-numbers highlight-lines\u003d\"5-9\"}"},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"boilerplate.md\" boilerplate\u003e"},{"lineNumber":190,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"variable\"\u003e"},{"lineNumber":191,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"boilerplate.md\"\u003e"},{"lineNumber":192,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"variable\"\u003e"},{"lineNumber":193,"author":{"gitId":"-"},"content":" \u003cinclude src\u003d\"boilerplate.md\"\u003e"},{"lineNumber":194,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"variable\"\u003e"},{"lineNumber":195,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":196,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":197,"author":{"gitId":"-"},"content":" \u003c/include\u003e"},{"lineNumber":198,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":199,"author":{"gitId":"-"},"content":" \u003c/include\u003e"},{"lineNumber":200,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":202,"author":{"gitId":"-"},"content":"```"},{"lineNumber":203,"author":{"gitId":"-"},"content":""},{"lineNumber":204,"author":{"gitId":"-"},"content":"To fix this problem, copy the content of the `src` file and replace the variables with the defined values as such:"},{"lineNumber":205,"author":{"gitId":"-"},"content":""},{"lineNumber":206,"author":{"gitId":"-"},"content":"```html {.line-numbers highlight-lines\u003d\"3\"}"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"boilerplate.md\" boilerplate\u003e"},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"variable\"\u003e"},{"lineNumber":209,"author":{"gitId":"-"},"content":" Boilerplate content: VALUE_OF_VARIABLE \u003c!-- Replace {{ \u0027{{\u0027 }} variable {{ \u0027}}\u0027 }} in boilerplate with VALUE_OF_VARIABLE --\u003e"},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":212,"author":{"gitId":"-"},"content":"```"},{"lineNumber":213,"author":{"gitId":"-"},"content":""},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":215,"author":{"gitId":"-"},"content":""},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":217,"author":{"gitId":"-"},"content":""},{"lineNumber":218,"author":{"gitId":"-"},"content":"##### Excluding Files from Rendering as Pages"},{"lineNumber":219,"author":{"gitId":"-"},"content":""},{"lineNumber":220,"author":{"gitId":"-"},"content":"**MarkBind supports the exclusion of files from page generation**. For example, you can exclude files containing \u003ctooltip content\u003d\"A fragment is a piece of content that can be reused across multiple pages.\"\u003ecustom fragments\u003c/tooltip\u003e that are only meant to be used in `\u003cinclude\u003e`."},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\"\u003e"},{"lineNumber":222,"author":{"gitId":"-"},"content":""},{"lineNumber":223,"author":{"gitId":"-"},"content":"Note: This example below is assuming that you have included the following glob pattern in the `site.json` file:"},{"lineNumber":224,"author":{"gitId":"-"},"content":""},{"lineNumber":225,"author":{"gitId":"-"},"content":"```js"},{"lineNumber":226,"author":{"gitId":"-"},"content":"{"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \"pages\": ["},{"lineNumber":228,"author":{"gitId":"-"},"content":" {"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \"glob\": \"*.md\","},{"lineNumber":230,"author":{"gitId":"-"},"content":" \"layout\": \"normal\","},{"lineNumber":231,"author":{"gitId":"-"},"content":" \"searchable\": \"yes\""},{"lineNumber":232,"author":{"gitId":"-"},"content":" }"},{"lineNumber":233,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}"},{"lineNumber":235,"author":{"gitId":"-"},"content":"```"},{"lineNumber":236,"author":{"gitId":"-"},"content":""},{"lineNumber":237,"author":{"gitId":"-"},"content":"Else, if each page is included individually, there is no need to exclude the fragments as they will not be included in the page generation."},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":239,"author":{"gitId":"-"},"content":""},{"lineNumber":240,"author":{"gitId":"-"},"content":""},{"lineNumber":241,"author":{"gitId":"-"},"content":"{{ icon_example }} Suppose you have a fragment file `content-fragment.md` and you want to include it in some pages of the site `course` without rendering `content-fragment.md` as a page."},{"lineNumber":242,"author":{"gitId":"-"},"content":""},{"lineNumber":243,"author":{"gitId":"-"},"content":"\u003ctree\u003e"},{"lineNumber":244,"author":{"gitId":"-"},"content":"C:/course/"},{"lineNumber":245,"author":{"gitId":"-"},"content":" content-fragment.md"},{"lineNumber":246,"author":{"gitId":"-"},"content":" index.md"},{"lineNumber":247,"author":{"gitId":"-"},"content":" reading.md"},{"lineNumber":248,"author":{"gitId":"-"},"content":" site.json"},{"lineNumber":249,"author":{"gitId":"-"},"content":"\u003c/tree\u003e"},{"lineNumber":250,"author":{"gitId":"-"},"content":""},{"lineNumber":251,"author":{"gitId":"-"},"content":"In `reading.md` (note how it reuses content from the `content-fragment.md`):"},{"lineNumber":252,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":253,"author":{"gitId":"-"},"content":"# Week 1 Reading:"},{"lineNumber":254,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"content-fragment.md\" /\u003e"},{"lineNumber":255,"author":{"gitId":"-"},"content":"```"},{"lineNumber":256,"author":{"gitId":"-"},"content":""},{"lineNumber":257,"author":{"gitId":"-"},"content":"In `site.json` we then exclude the fragment from the page generation with [pagesExclude](../siteJsonFile.html#pagesexclude):"},{"lineNumber":258,"author":{"gitId":"-"},"content":""},{"lineNumber":259,"author":{"gitId":"-"},"content":"```json"},{"lineNumber":260,"author":{"gitId":"-"},"content":"..."},{"lineNumber":261,"author":{"gitId":"-"},"content":"\"pagesExclude\": ["},{"lineNumber":262,"author":{"gitId":"-"},"content":" \"**/*-fragment.md\""},{"lineNumber":263,"author":{"gitId":"-"},"content":"],"},{"lineNumber":264,"author":{"gitId":"-"},"content":"..."},{"lineNumber":265,"author":{"gitId":"-"},"content":"```"},{"lineNumber":266,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":267,"author":{"gitId":"-"},"content":""},{"lineNumber":268,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":269,"author":{"gitId":"-"},"content":""},{"lineNumber":270,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"tip.md\" boilerplate \u003e"},{"lineNumber":271,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"tip_body\"\u003e"},{"lineNumber":272,"author":{"gitId":"-"},"content":"You may use any custom name you wish for your fragments but be sure to update the `pagesExclude` list with the appropriate glob pattern."},{"lineNumber":273,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":274,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":275,"author":{"gitId":"-"},"content":""},{"lineNumber":276,"author":{"gitId":"-"},"content":"\u003chr\u003e\u003c!-- \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d --\u003e"},{"lineNumber":277,"author":{"gitId":"-"},"content":""},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Using Boilerplate Files"},{"lineNumber":279,"author":{"gitId":"-"},"content":""},{"lineNumber":280,"author":{"gitId":"-"},"content":"**If you find yourself duplicating a \u003ctooltip content\u003d\"code that needs to stay relative to the directory in which it used\"\u003e_boilerplate code_\u003c/tooltip\u003e fragment in multiple places of your code base, you can use a `boilerplate` file to avoid such duplication.** Note that you cannot use a normal `\u003cinclude\u003e` in this case because the code included using a normal `\u003cinclude\u003e` stays relative to the original location while boilerplate code needs to be interpreted relative to the location it is being used."},{"lineNumber":281,"author":{"gitId":"-"},"content":""},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":283,"author":{"gitId":"-"},"content":""},{"lineNumber":284,"author":{"gitId":"-"},"content":"{{ icon_example }} Suppose you have a MarkBind project with the following file structure."},{"lineNumber":285,"author":{"gitId":"-"},"content":"\u003ctree\u003e"},{"lineNumber":286,"author":{"gitId":"-"},"content":"C:/mySite/"},{"lineNumber":287,"author":{"gitId":"-"},"content":" chapter1/"},{"lineNumber":288,"author":{"gitId":"-"},"content":" chapter.md"},{"lineNumber":289,"author":{"gitId":"-"},"content":" text.md"},{"lineNumber":290,"author":{"gitId":"-"},"content":" exercises.md"},{"lineNumber":291,"author":{"gitId":"-"},"content":" chapter2/"},{"lineNumber":292,"author":{"gitId":"-"},"content":" chapter.md"},{"lineNumber":293,"author":{"gitId":"-"},"content":" text.md"},{"lineNumber":294,"author":{"gitId":"-"},"content":" exercises.md"},{"lineNumber":295,"author":{"gitId":"-"},"content":" book.md"},{"lineNumber":296,"author":{"gitId":"-"},"content":"\u003c/tree\u003e"},{"lineNumber":297,"author":{"gitId":"-"},"content":"The `book.md`:"},{"lineNumber":298,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":299,"author":{"gitId":"-"},"content":"# My Book"},{"lineNumber":300,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter1/chapter.md\" /\u003e"},{"lineNumber":301,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter2/chapter.md\" /\u003e"},{"lineNumber":302,"author":{"gitId":"-"},"content":"```"},{"lineNumber":303,"author":{"gitId":"-"},"content":"The `chapter1/chapter.md`:"},{"lineNumber":304,"author":{"gitId":"-"},"content":""},{"lineNumber":305,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Text"},{"lineNumber":307,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"text.md\" /\u003e"},{"lineNumber":308,"author":{"gitId":"-"},"content":"## Exercises"},{"lineNumber":309,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"exercises.md\" /\u003e"},{"lineNumber":310,"author":{"gitId":"-"},"content":"```"},{"lineNumber":311,"author":{"gitId":"-"},"content":"The `chapter2/chapter.md`:"},{"lineNumber":312,"author":{"gitId":"-"},"content":""},{"lineNumber":313,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":314,"author":{"gitId":"-"},"content":"## Text"},{"lineNumber":315,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"text.md\" /\u003e"},{"lineNumber":316,"author":{"gitId":"-"},"content":"## Exercises"},{"lineNumber":317,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"exercises.md\" /\u003e"},{"lineNumber":318,"author":{"gitId":"-"},"content":"```"},{"lineNumber":319,"author":{"gitId":"-"},"content":""},{"lineNumber":320,"author":{"gitId":"-"},"content":"As you can see, both `chapter.md` files are exactly the same. If we were to use only one of the `chapter.md` files and `\u003cinclude\u003e` it twice in the `book.md`, we\u0027ll end up with the same chapter content duplicated twice, which is not what we want. In other words, `chapter.md` contains boilerplate code that needs to be interpreted relative to where it is applied, once relative to `chapter1` directory and once relative to `chapter2` directory."},{"lineNumber":321,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":322,"author":{"gitId":"-"},"content":""},{"lineNumber":323,"author":{"gitId":"-"},"content":"To use a code fragment as a boilerplate file,"},{"lineNumber":324,"author":{"gitId":"-"},"content":"1. Put the code in a file inside the `_markbind/boilerplates` directory."},{"lineNumber":325,"author":{"gitId":"-"},"content":"2. `\u003cinclude\u003e` the file _as if_ a copy of it exists in any directory you want it to applied, but add the `boilerplate` attribute to the `\u003cinclude\u003e` tag."},{"lineNumber":326,"author":{"gitId":"-"},"content":""},{"lineNumber":327,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":328,"author":{"gitId":"-"},"content":""},{"lineNumber":329,"author":{"gitId":"-"},"content":"{{ icon_example }} Here\u0027s how you can use a boilerplate file to avoid duplicating the `chapter.md`:"},{"lineNumber":330,"author":{"gitId":"-"},"content":"\u003ctree\u003e"},{"lineNumber":331,"author":{"gitId":"-"},"content":"C:/mySite/"},{"lineNumber":332,"author":{"gitId":"-"},"content":" _markbind/boilerplates/"},{"lineNumber":333,"author":{"gitId":"-"},"content":" chapter.md"},{"lineNumber":334,"author":{"gitId":"-"},"content":" chapter1/"},{"lineNumber":335,"author":{"gitId":"-"},"content":" text.md"},{"lineNumber":336,"author":{"gitId":"-"},"content":" exercises.md"},{"lineNumber":337,"author":{"gitId":"-"},"content":" chapter2/"},{"lineNumber":338,"author":{"gitId":"-"},"content":" text.md"},{"lineNumber":339,"author":{"gitId":"-"},"content":" exercises.md"},{"lineNumber":340,"author":{"gitId":"-"},"content":" book.md"},{"lineNumber":341,"author":{"gitId":"-"},"content":"\u003c/tree\u003e"},{"lineNumber":342,"author":{"gitId":"-"},"content":"The `book.md`:"},{"lineNumber":343,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":344,"author":{"gitId":"-"},"content":"# My Book"},{"lineNumber":345,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter1/chapter.md\" boilerplate /\u003e"},{"lineNumber":346,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter2/chapter.md\" boilerplate /\u003e"},{"lineNumber":347,"author":{"gitId":"-"},"content":"```"},{"lineNumber":348,"author":{"gitId":"-"},"content":"The `_markbind/boilerplates/chapter.md`:"},{"lineNumber":349,"author":{"gitId":"-"},"content":""},{"lineNumber":350,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":351,"author":{"gitId":"-"},"content":"## Text"},{"lineNumber":352,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"text.md\" /\u003e"},{"lineNumber":353,"author":{"gitId":"-"},"content":"## Exercises"},{"lineNumber":354,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"exercises.md\" /\u003e"},{"lineNumber":355,"author":{"gitId":"-"},"content":"```"},{"lineNumber":356,"author":{"gitId":"-"},"content":""},{"lineNumber":357,"author":{"gitId":"-"},"content":"Consider the line `\u003cinclude src\u003d\"chapter1/chapter.md\" boilerplate /\u003e`. Note how you can use `src\u003d\"chapter1/chapter.md\"` even though there is no such file. MarkBind will use the `chapter.md` file from `/_markbind/boilerplates/` but interpret it as if the file exists in the `chapter1` directory (i.e., interpret the `chapter.md` code relative to the `chapter1` directory)."},{"lineNumber":358,"author":{"gitId":"-"},"content":""},{"lineNumber":359,"author":{"gitId":"-"},"content":"Similarly, `\u003cinclude src\u003d\"chapter2/chapter.md\" boilerplate /\u003e` interprets the `chapter.md` relative to the `chapter2` directory."},{"lineNumber":360,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":361,"author":{"gitId":"-"},"content":""},{"lineNumber":362,"author":{"gitId":"-"},"content":"If you have many boilerplate files, you can organize them into directories inside the `_markbind` directory. When using such boilerplate files, you need to replace `boilerplate` attribute with `boilerplate\u003d\"\u003cpath to file relative to _markbind/boilerplates\u003e\"`."},{"lineNumber":363,"author":{"gitId":"-"},"content":""},{"lineNumber":364,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"indented\"\u003e"},{"lineNumber":365,"author":{"gitId":"-"},"content":""},{"lineNumber":366,"author":{"gitId":"-"},"content":"{{ icon_example }} Suppose the `chapter.md` is places in a `book` directory:"},{"lineNumber":367,"author":{"gitId":"-"},"content":"\u003ctree\u003e"},{"lineNumber":368,"author":{"gitId":"-"},"content":"C:/mySite/"},{"lineNumber":369,"author":{"gitId":"-"},"content":" _markbind/boilerplates/"},{"lineNumber":370,"author":{"gitId":"-"},"content":" book/"},{"lineNumber":371,"author":{"gitId":"-"},"content":" chapter.md"},{"lineNumber":372,"author":{"gitId":"-"},"content":"\u003c/tree\u003e"},{"lineNumber":373,"author":{"gitId":"-"},"content":""},{"lineNumber":374,"author":{"gitId":"-"},"content":"It needs to be used as follows:"},{"lineNumber":375,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":376,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter1/chapter.md\" boilerplate\u003d\"book/chapter.md\" /\u003e"},{"lineNumber":377,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"chapter2/chapter.md\" boilerplate\u003d\"book/chapter.md\" /\u003e"},{"lineNumber":378,"author":{"gitId":"-"},"content":"```"},{"lineNumber":379,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":380,"author":{"gitId":"-"},"content":""},{"lineNumber":381,"author":{"gitId":"-"},"content":""},{"lineNumber":382,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"short\" class\u003d\"d-none\"\u003e"},{"lineNumber":383,"author":{"gitId":"-"},"content":""},{"lineNumber":384,"author":{"gitId":"-"},"content":"```markdown"},{"lineNumber":385,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"foo.md#bar\" boilerplate inline trim\u003e"},{"lineNumber":386,"author":{"gitId":"-"},"content":" \u003cvariable name\u003d\"x\"\u003e5\u003c/variable\u003e"},{"lineNumber":387,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":388,"author":{"gitId":"-"},"content":"```"},{"lineNumber":389,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"-":387,"yiwen101":2}},{"path":"docs/userGuide/syntax/panels.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"{% from \"userGuide/components/advanced.md\" import slot_info_trigger %}"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Panels"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"**Panel is a flexible container that supports collapsing and expanding its content. It is expandable by default.**"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"This is your header for a Panel, click me to expand!\"\u003e"},{"lineNumber":11,"author":{"gitId":"yiwen101"},"content":"\u003cmarkdown\u003e_markdown_\u003c/markdown\u003e"},{"lineNumber":12,"author":{"gitId":"yiwen101"},"content":"plain text ..."},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"**With `minimized` attribute, panel is minimized into an inline block element. The `alt` attribute is for you to specify the minimized block header.**"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"How to cultivate a tomato plant at home\" alt\u003d\"Tomatoes\" minimized\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Lorem ipsum ..."},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"**With `expanded` attribute, you can set the panels to be expanded when loaded in.**"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Have your readers click less to see the Panel\u0027s contents\" expanded\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Lorem ipsum ..."},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":"**With the `expand-headerless` attribute, you can hide the panel header when it is expanded.**"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"This header will only show when the Panel is collapsed\" expand-headerless\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Lorem ipsum ..."},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":"**With the `peek` attribute, you may showcase part of your content without expanding the panel.**"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Give your readers a peek of the content without expanding Panel\" peek\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore"},{"lineNumber":57,"author":{"gitId":"-"},"content":" magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo"},{"lineNumber":58,"author":{"gitId":"-"},"content":" consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."},{"lineNumber":59,"author":{"gitId":"-"},"content":" Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."},{"lineNumber":60,"author":{"gitId":"-"},"content":" Curabitur ornare ipsum eu ex congue egestas. Maecenas pretium nibh sed enim ornare finibus. Mauris quis metus "},{"lineNumber":61,"author":{"gitId":"-"},"content":" facilisis, mattis tellus nec, pulvinar mi. Quisque at vehicula lectus. Ut ac lacus mi. Donec mattis nec velit "},{"lineNumber":62,"author":{"gitId":"-"},"content":" eget tincidunt. Maecenas vel mauris mattis nisl tempor sollicitudin. Orci varius natoque penatibus et magnis "},{"lineNumber":63,"author":{"gitId":"-"},"content":" dis parturient montes, nascetur ridiculus mus. Duis tincidunt diam eu dolor pellentesque, eget dignissim tortor "},{"lineNumber":64,"author":{"gitId":"-"},"content":" pellentesque. "},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":"**Panel provides many types that change its appearance.**"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**light type panel (DEFAULT)**\" type\u003d\"light\" minimized\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":76,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**dark type panel**\" type\u003d\"dark\" minimized\u003e"},{"lineNumber":78,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":80,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**primary type panel**\" type\u003d\"primary\" minimized\u003e"},{"lineNumber":81,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**secondary type panel**\" type\u003d\"secondary\" minimized\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**info type panel**\" type\u003d\"info\" minimized\u003e"},{"lineNumber":87,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**danger type panel**\" type\u003d\"danger\" minimized\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**warning type panel**\" type\u003d\"warning\" minimized\u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**success type panel**\" type\u003d\"success\" minimized\u003e"},{"lineNumber":96,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**seamless type panel**\" type\u003d\"seamless\" minimized\u003e"},{"lineNumber":99,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**minimal type panel**\" type\u003d\"minimal\" minimized\u003e"},{"lineNumber":102,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":103,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":104,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":105,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":"**Show/Hide buttons using `no-switch`, `no-close`, or `no-minimized-switch`.**"},{"lineNumber":109,"author":{"gitId":"-"},"content":""},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":113,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**This minimized panel does not have a switch button**\" minimized no-minimized-switch\u003e"},{"lineNumber":114,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":115,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"This panel does not have a switch button\" no-switch\u003e"},{"lineNumber":117,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":118,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"This panel does not have a close button\" no-close\u003e"},{"lineNumber":120,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"This panel does not have either buttons\" no-close no-switch\u003e"},{"lineNumber":123,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":124,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":126,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":"**Use markdown in the header (only inline level markdown are supported).**"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"**Bold text** :rocket: ![](https://markbind.org/images/logo-lightbackground.png \u003dx20)\" type\u003d\"seamless\"\u003e"},{"lineNumber":134,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":138,"author":{"gitId":"-"},"content":""},{"lineNumber":139,"author":{"gitId":"-"},"content":"**If `src` attribute is provided, the panel will take content from the `src` specified and add it to the Panel body.**"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Content loaded in from \u0027src\u0027\" src\u003d\"extra/loadContent.html#fragment\" minimized\u003e\u003c/panel\u003e"},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":147,"author":{"gitId":"-"},"content":""},{"lineNumber":148,"author":{"gitId":"yiwen101"},"content":"\u003cdiv id \u003d \"script_and_styles_warning\"\u003e"},{"lineNumber":149,"author":{"gitId":"yiwen101"},"content":"\u003cbox type \u003d \"warning\" header \u003d \"#### Global Effects of the Script and Styles from the Imported Externals\"\u003e"},{"lineNumber":150,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":151,"author":{"gitId":"yiwen101"},"content":"Importing external resources that contains `script` or `styles` can inadvertently take global effects on your MarkBind website. Due to hoisting during processing, imported scripts and stylesheets affect the entire page. This could potentially alter its appearance and behavior beyond the intended scope."},{"lineNumber":152,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":153,"author":{"gitId":"yiwen101"},"content":"For example, if a CSS file imported via such means styles headings to be red, this change will be reflected page-wide."},{"lineNumber":154,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":155,"author":{"gitId":"yiwen101"},"content":"To safeguard against unintended consequences, consider directly incorporating the code or customizing styles to target specific elements or classes not used universally. This approach grants more precise control over your website\u0027s presentation and reduces the risk of unexpected changes."},{"lineNumber":156,"author":{"gitId":"yiwen101"},"content":"\u003c/box\u003e"},{"lineNumber":157,"author":{"gitId":"yiwen101"},"content":"\u003c/div\u003e"},{"lineNumber":158,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":"**If `popup-url` attribute is provided, a popup button will be shown. If clicked, it opens the specified url in a new window.**"},{"lineNumber":160,"author":{"gitId":"-"},"content":""},{"lineNumber":161,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":162,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":163,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":164,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Try clicking on my pop-up button\" popup-url\u003d\"{{ baseUrl }}/userGuide/syntax/extra/loadContent.html\"\u003e"},{"lineNumber":165,"author":{"gitId":"-"},"content":" This panel has a popup."},{"lineNumber":166,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":167,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":169,"author":{"gitId":"-"},"content":""},{"lineNumber":170,"author":{"gitId":"-"},"content":"**If `preload` attribute is provided, the panel body will load the HTML when the page renders instead of after being expanded.**"},{"lineNumber":171,"author":{"gitId":"-"},"content":""},{"lineNumber":172,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":175,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Right click and inspect my HTML before expanding me!\" src\u003d\"extra/loadContent.html#fragment\" preload\u003e"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003cp\u003eYou should be able to find this text before expanding the Panel.\u003c/p\u003e"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":180,"author":{"gitId":"-"},"content":""},{"lineNumber":181,"author":{"gitId":"-"},"content":"**You can nest Panels or other components within a Panel.**"},{"lineNumber":182,"author":{"gitId":"-"},"content":""},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Parent Panel\"\u003e"},{"lineNumber":187,"author":{"gitId":"-"},"content":" \u003cpanel header\u003d\"Level 1 Nested Panel\"\u003e"},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003cpanel header\u003d\"Level 2 Nested Panel\"\u003e"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"success\"\u003e"},{"lineNumber":190,"author":{"gitId":"-"},"content":" I\u0027m a nested box"},{"lineNumber":191,"author":{"gitId":"-"},"content":" \u003c/box\u003e"},{"lineNumber":192,"author":{"gitId":"-"},"content":" \u003cpanel header\u003d\"Level 3 Nested Panel\" type\u003d\"minimal\"\u003e"},{"lineNumber":193,"author":{"gitId":"-"},"content":" minimal-type panel"},{"lineNumber":194,"author":{"gitId":"-"},"content":" \u003c/panel\u003e"},{"lineNumber":195,"author":{"gitId":"-"},"content":" \u003c/panel\u003e"},{"lineNumber":196,"author":{"gitId":"-"},"content":" \u003c/panel\u003e"},{"lineNumber":197,"author":{"gitId":"-"},"content":" \u003cpanel header\u003d\"Level 1 Nested Panel\" type\u003d\"info\"\u003e"},{"lineNumber":198,"author":{"gitId":"-"},"content":" Some Text"},{"lineNumber":199,"author":{"gitId":"-"},"content":" \u003c/panel\u003e"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":203,"author":{"gitId":"-"},"content":""},{"lineNumber":204,"author":{"gitId":"-"},"content":"****Options****"},{"lineNumber":205,"author":{"gitId":"-"},"content":"Name | Type | Default | Description"},{"lineNumber":206,"author":{"gitId":"-"},"content":"--- | --- | --- | ---"},{"lineNumber":207,"author":{"gitId":"-"},"content":"header{{slot_info_trigger}} | `String` | `\u0027\u0027` | The clickable text on the Panel\u0027s header. Supports MarkDown text."},{"lineNumber":208,"author":{"gitId":"-"},"content":"alt | `String` | Panel header | The clickable text on the minimised Panel. Supports MarkDown text."},{"lineNumber":209,"author":{"gitId":"-"},"content":"expandable | `Boolean`| `true` | Whether Panel is expandable."},{"lineNumber":210,"author":{"gitId":"-"},"content":"expanded | `Boolean` | `false` | Whether Panel is expanded or collapsed when loaded in."},{"lineNumber":211,"author":{"gitId":"-"},"content":"minimized | `Boolean` | `false` | Whether Panel is minimized."},{"lineNumber":212,"author":{"gitId":"-"},"content":"expand-headerless | `Boolean` | `false` | Whether to hide the header text when the Panel is expanded."},{"lineNumber":213,"author":{"gitId":"-"},"content":"peek | `Boolean` | `false` | Whether to show part of the content when the Panel is collapsed."},{"lineNumber":214,"author":{"gitId":"-"},"content":"no-close | `Boolean` | `false` | Whether to show the close button."},{"lineNumber":215,"author":{"gitId":"-"},"content":"no-switch | `Boolean` | `false` | Whether to show the expand switch."},{"lineNumber":216,"author":{"gitId":"-"},"content":"bottom-switch | `Boolean` | `true` | Whether to show an expand switch at the bottom of the panel. Independent of no-switch."},{"lineNumber":217,"author":{"gitId":"-"},"content":"popup-url | `String` | | The URL that the popup window will navigate to. The URL can be absolute or relative."},{"lineNumber":218,"author":{"gitId":"-"},"content":"preload | `Boolean` | `false` | Whether the content is loaded immediately from `src`."},{"lineNumber":219,"author":{"gitId":"-"},"content":"src | `String` | | The URL to the remote page to be loaded as the content of the panel."},{"lineNumber":220,"author":{"gitId":"-"},"content":"type | `String` | `light` | The type or color scheme of the panel (single).\u003cbr\u003eSupports: `light`, `dark`, `primary`, `secondary`, `info`, `success`, `warning`, `danger`, `seamless`, `minimal`."},{"lineNumber":221,"author":{"gitId":"-"},"content":""},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"short\" class\u003d\"d-none\"\u003e"},{"lineNumber":223,"author":{"gitId":"-"},"content":""},{"lineNumber":224,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"primary type panel\" type\u003d\"primary\" \u003e"},{"lineNumber":226,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":227,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":228,"author":{"gitId":"-"},"content":"```"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":230,"author":{"gitId":"-"},"content":""},{"lineNumber":231,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"examples\" class\u003d\"d-none\"\u003e"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"minimal type panel\" type\u003d\"minimal\" \u003e"},{"lineNumber":233,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":235,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"seamless type panel\" type\u003d\"seamless\" \u003e"},{"lineNumber":236,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"info type panel\" type\u003d\"info\" expanded\u003e"},{"lineNumber":239,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":240,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"danger type panel\" type\u003d\"danger\" \u003e"},{"lineNumber":242,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":243,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":244,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"warning type panel\" type\u003d\"warning\" \u003e"},{"lineNumber":245,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":246,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":247,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"success type panel\" type\u003d\"success\" \u003e"},{"lineNumber":248,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":249,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":250,"author":{"gitId":"-"},"content":"\u003cp/\u003e"},{"lineNumber":251,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"light type panel (DEFAULT)\" type\u003d\"light\" minimized\u003e"},{"lineNumber":252,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":253,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":254,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"dark type panel\" type\u003d\"dark\" minimized\u003e"},{"lineNumber":255,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":256,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":257,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"primary type panel\" type\u003d\"primary\" minimized\u003e"},{"lineNumber":258,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":259,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"secondary type panel\" type\u003d\"secondary\" minimized\u003e"},{"lineNumber":261,"author":{"gitId":"-"},"content":" ..."},{"lineNumber":262,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":263,"author":{"gitId":"-"},"content":""},{"lineNumber":264,"author":{"gitId":"-"},"content":""},{"lineNumber":265,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"-":252,"yiwen101":13}},{"path":"docs/userGuide/syntax/tabs.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"## Tabs"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003ctabs\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"First tab\"\u003e"},{"lineNumber":8,"author":{"gitId":"yiwen101"},"content":" Text in the first tab"},{"lineNumber":9,"author":{"gitId":"yiwen101"},"content":" \u003cmarkdown\u003e_some markdown_\u003c/markdown\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Disabled second tab :x:\" disabled\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Tab not printed\" class\u003d\"d-print-none\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" This tab will not be printed."},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003ctab-group header\u003d\"Third tab group :milky_way:\"\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Stars :star:\"\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Some stuff about stars ..."},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Disabled Moon :new_moon:\" disabled\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/tab-group\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003ctab-group header\u003d\"Disabled fourth tab group\" disabled\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Hidden tab\"\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ullamcorper ultrices lobortis."},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/tab-group\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":"\u003c/tabs\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003c/variable\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003c/include\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"****Options****"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":"`tabs`:"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Name | Type | Default | Description"},{"lineNumber":36,"author":{"gitId":"-"},"content":"--- | --- | --- | ---"},{"lineNumber":37,"author":{"gitId":"-"},"content":"active | `Number` | `0` | Active Tab index (0-based)"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":"`tab`:"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Name | Type | Default | Description"},{"lineNumber":41,"author":{"gitId":"-"},"content":"--- | --- | --- | ---"},{"lineNumber":42,"author":{"gitId":"-"},"content":"header | `String` | `null` | Tab title."},{"lineNumber":43,"author":{"gitId":"-"},"content":"disabled | `Boolean` | `false` | Whether Tab is clickable and can be activated."},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":"`tab-group`:"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Name | Type | Default | Description"},{"lineNumber":47,"author":{"gitId":"-"},"content":"--- | --- | --- | ---"},{"lineNumber":48,"author":{"gitId":"-"},"content":"header | `String` | `null` | Tab Group title."},{"lineNumber":49,"author":{"gitId":"-"},"content":"disabled | `Boolean` | `false` | Whether Tab Group is clickable and can be activated."},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\"\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"-"},"content":"Tabs, tab group and individual tab can be omitted during printing by adding Bootstrap\u0027s display property `class\u003d\"d-print-none\"` to the respective components."},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003c/box\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"short\" class\u003d\"d-none\"\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003ctabs\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"First tab\"\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Content of the first tab"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Second tab\"\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Contents of the second tab"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003ctab-group header\u003d\"Third tab group :tv:\"\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Stars :star:\"\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Some stuff about stars ..."},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Moon\"\u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Some stuff about the moon ..."},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003c/tab-group\u003e"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003c/tabs\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":"```"},{"lineNumber":76,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"examples\" class\u003d\"d-none\"\u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"-"},"content":"\u003ctabs\u003e"},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"First tab\"\u003e"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Content of the first tab"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Second tab\"\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Contents of the second tab"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003ctab-group header\u003d\"Third tab group :tv:\"\u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Stars :star:\"\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Some stuff about stars ..."},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u003ctab header\u003d\"Moon\"\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Some stuff about the moon ..."},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c/tab\u003e"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003c/tab-group\u003e"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003c/tabs\u003e"},{"lineNumber":96,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"-":94,"yiwen101":2}},{"path":"docs/userGuide/troubleshooting.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"{% set title \u003d \"Troubleshooting\" %}"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"title\" class\u003d\"d-none\"\u003e{{ title }}\u003c/span\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":""},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003cfrontmatter\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" title: \"User Guide: {{ title | safe }}\""},{"lineNumber":6,"author":{"gitId":"-"},"content":" layout: userGuide.md"},{"lineNumber":7,"author":{"gitId":"-"},"content":" pageNav: 5"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/frontmatter\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"# {{ title | safe }}"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"##### HTML Rendering Issues"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"Unexpected behavior can occur in rendered pages due to a number of different reasons. One of these reasons is when the rendered pages are not valid HTML."},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":"Incorrect HTML markup can be due to:"},{"lineNumber":17,"author":{"gitId":"-"},"content":"- nesting block-level elements inside `\u003cp\u003e` or `\u003cspan\u003e` elements"},{"lineNumber":18,"author":{"gitId":"-"},"content":"- missing `\u003ctbody\u003e` tags"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"###### Example: block-level elements inside `\u003cspan\u003e` elements"},{"lineNumber":21,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cspan id\u003d\"example\"\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"Animal | Trainable? | Price | Remarks"},{"lineNumber":26,"author":{"gitId":"-"},"content":":------|:----------:|------:|--------"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Ants | no | 5 |"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Bees | no | 20 |"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Cats | yes | 100 |"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003c/span\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":"```"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"yiwen101"},"content":"The table specified by the Markdown syntax above will be rendered as a block-level element, which will be included in a inline span element. This makes the HTML output invalid."},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cpanel header\u003d\"Underlying Error (Example)\" type\u003d\"seamless\"\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":"```"},{"lineNumber":38,"author":{"gitId":"-"},"content":"vue.js:634 [Vue warn]: The client-side rendered virtual DOM tree is not matching server-rendered content."},{"lineNumber":39,"author":{"gitId":"-"},"content":"This is likely caused by incorrect HTML markup, for example nesting block-level elements inside `\u003cp\u003e`,"},{"lineNumber":40,"author":{"gitId":"-"},"content":"or missing `\u003ctbody\u003e`."},{"lineNumber":41,"author":{"gitId":"-"},"content":"Bailing hydration and performing full client-side render."},{"lineNumber":42,"author":{"gitId":"-"},"content":"```"},{"lineNumber":43,"author":{"gitId":"-"},"content":"See [SSR guide for Vue](https://vuejs.org/guide/scaling-up/ssr.html#hydration-mismatch) for more details on hydration mismatch."},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003c/panel\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":"A possible fix for the above situation is to wrap the table in a `\u003cdiv\u003e` element instead:"},{"lineNumber":47,"author":{"gitId":"-"},"content":""},{"lineNumber":48,"author":{"gitId":"-"},"content":"```html"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"example\"\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"Animal | Trainable? | Price | Remarks"},{"lineNumber":53,"author":{"gitId":"-"},"content":":------|:----------:|------:|--------"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Ants | no | 5 |"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Bees | no | 20 |"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Cats | yes | 100 |"},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":"```"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"yiwen101"},"content":"##### Markdown Rendering Issues"},{"lineNumber":61,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":62,"author":{"gitId":"yiwen101"},"content":"If you encounter issues in rendering Markdown in a component, it is likely that the Markdown is not being properly recognized due to syntax errors. Signposting is required to inform Markdown to parse the content of a presentation component as Markdown rather than plain text."},{"lineNumber":63,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":64,"author":{"gitId":"yiwen101"},"content":"You could signpost Markdown either by:"},{"lineNumber":65,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":66,"author":{"gitId":"yiwen101"},"content":"- using the `\u003cmarkdown\u003e`(block level elements) or `\u003cmd\u003e`(inline level elements) tags to wrap the Markdown content."},{"lineNumber":67,"author":{"gitId":"yiwen101"},"content":"- using an empty line without any indentation before the Markdown content"},{"lineNumber":68,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":69,"author":{"gitId":"yiwen101"},"content":"###### Example: correct Markdown rendering using tags or newline:"},{"lineNumber":70,"author":{"gitId":"yiwen101"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":71,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":72,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":73,"author":{"gitId":"yiwen101"},"content":"\u003cbox\u003e"},{"lineNumber":74,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":75,"author":{"gitId":"yiwen101"},"content":"**Example1**"},{"lineNumber":76,"author":{"gitId":"yiwen101"},"content":"\u003c/box\u003e"},{"lineNumber":77,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":78,"author":{"gitId":"yiwen101"},"content":"\u003cbox\u003e "},{"lineNumber":79,"author":{"gitId":"yiwen101"},"content":"\u003cmd\u003e **Example2** \u003c/md\u003e "},{"lineNumber":80,"author":{"gitId":"yiwen101"},"content":"\u003c/box\u003e"},{"lineNumber":81,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":82,"author":{"gitId":"yiwen101"},"content":"\u003cbox\u003e "},{"lineNumber":83,"author":{"gitId":"yiwen101"},"content":"\u003cmarkdown\u003e **Example3** \u003c/markdown\u003e "},{"lineNumber":84,"author":{"gitId":"yiwen101"},"content":"\u003c/box\u003e"},{"lineNumber":85,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":86,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":87,"author":{"gitId":"yiwen101"},"content":"\u003c/variable\u003e"},{"lineNumber":88,"author":{"gitId":"yiwen101"},"content":"\u003c/include\u003e"},{"lineNumber":89,"author":{"gitId":"yiwen101"},"content":"\u003cpanel header\u003d\"###### Example: Markdown not rendered without singposting\" type\u003d\"seamless\"\u003e"},{"lineNumber":90,"author":{"gitId":"yiwen101"},"content":"\u003cinclude src\u003d\"codeAndOutput.md\" boilerplate \u003e"},{"lineNumber":91,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"highlightStyle\"\u003ehtml\u003c/variable\u003e"},{"lineNumber":92,"author":{"gitId":"yiwen101"},"content":"\u003cvariable name\u003d\"code\"\u003e"},{"lineNumber":93,"author":{"gitId":"yiwen101"},"content":"\u003cbox\u003e **This will be rendered as plain text**\u003c/box\u003e"},{"lineNumber":94,"author":{"gitId":"yiwen101"},"content":"\u003c/variable\u003e"},{"lineNumber":95,"author":{"gitId":"yiwen101"},"content":"\u003c/include\u003e"},{"lineNumber":96,"author":{"gitId":"yiwen101"},"content":"\u003c/panel\u003e"}],"authorContributionMap":{"-":58,"yiwen101":38}},{"path":"packages/cli/index.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env node"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"// Entry file for MarkBind project"},{"lineNumber":4,"author":{"gitId":"-"},"content":"const program \u003d require(\u0027commander\u0027);"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":"const logger \u003d require(\u0027./src/util/logger\u0027);"},{"lineNumber":7,"author":{"gitId":"-"},"content":"const { build } \u003d require(\u0027./src/cmd/build\u0027);"},{"lineNumber":8,"author":{"gitId":"-"},"content":"const { deploy } \u003d require(\u0027./src/cmd/deploy\u0027);"},{"lineNumber":9,"author":{"gitId":"-"},"content":"const { init } \u003d require(\u0027./src/cmd/init\u0027);"},{"lineNumber":10,"author":{"gitId":"-"},"content":"const { serve } \u003d require(\u0027./src/cmd/serve\u0027);"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"const CLI_VERSION \u003d require(\u0027./package.json\u0027).version;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"process.title \u003d \u0027MarkBind\u0027;"},{"lineNumber":15,"author":{"gitId":"-"},"content":"process.stdout.write("},{"lineNumber":16,"author":{"gitId":"-"},"content":" `${String.fromCharCode(27)}]0; MarkBind${String.fromCharCode(7)}`,"},{"lineNumber":17,"author":{"gitId":"-"},"content":");"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"function printHeader() {"},{"lineNumber":20,"author":{"gitId":"-"},"content":" logger.logo();"},{"lineNumber":21,"author":{"gitId":"-"},"content":" logger.log(` v${CLI_VERSION}`);"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}"},{"lineNumber":23,"author":{"gitId":"-"},"content":""},{"lineNumber":24,"author":{"gitId":"-"},"content":"program"},{"lineNumber":25,"author":{"gitId":"-"},"content":" .addHelpText(\u0027beforeAll\u0027, printHeader())"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .showHelpAfterError(\u0027(run \"markbind --help\" to list commands)\u0027);"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"program"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .allowUnknownOption()"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .usage(\u0027\u003ccommand\u003e\u0027);"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"program"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .name(\u0027markbind\u0027)"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .version(CLI_VERSION);"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":"program"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .command(\u0027init [root]\u0027)"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .option(\u0027-c, --convert\u0027, \u0027convert a GitHub wiki or docs folder to a MarkBind website\u0027)"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .option(\u0027-t, --template \u003ctype\u003e\u0027, \u0027initialise markbind with a specified template\u0027, \u0027default\u0027)"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .alias(\u0027i\u0027)"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .description(\u0027init a markbind website project\u0027)"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .action((root, options) \u003d\u003e {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" init(root, options);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" });"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":"program"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .command(\u0027serve [root]\u0027)"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .alias(\u0027s\u0027)"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .option(\u0027-f, --force-reload\u0027, \u0027force a full reload of all site files when a file is changed\u0027)"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .option(\u0027-n, --no-open\u0027, \u0027do not automatically open the site in browser\u0027)"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .option(\u0027-o, --one-page [file]\u0027, \u0027build and serve only a single page in the site initially,\u0027"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \u0027building more pages when they are navigated to. Also lazily rebuilds only the page being viewed when\u0027"},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \u0027there are changes to the source files (if needed), building others when navigated to\u0027)"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .option(\u0027-b, --background-build\u0027, \u0027when --one-page is specified, enhances one-page serve by building\u0027"},{"lineNumber":55,"author":{"gitId":"-"},"content":" + \u0027remaining pages in the background\u0027)"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .option(\u0027-p, --port \u003cport\u003e\u0027, \u0027port for server to listen on (Default is 8080)\u0027)"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .option(\u0027-s, --site-config \u003cfile\u003e\u0027, \u0027specify the site config file (default: site.json)\u0027)"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .option(\u0027-d, --dev\u0027, \u0027development mode, enabling live \u0026 hot reload for frontend source files.\u0027)"},{"lineNumber":59,"author":{"gitId":"LamJiuFong"},"content":" .option(\u0027-a, --address \u003caddress\u003e\u0027, \u0027specify the server address/host (Default is 127.0.0.1)\u0027)"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .description(\u0027build then serve a website from a directory\u0027)"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .action((userSpecifiedRoot, options) \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" serve(userSpecifiedRoot, options);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" });"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":"program"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .command(\u0027build [root] [output]\u0027)"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .alias(\u0027b\u0027)"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .option(\u0027--baseUrl [baseUrl]\u0027,"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u0027optional flag which overrides baseUrl in site.json, leave argument empty for empty baseUrl\u0027)"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .option(\u0027-s, --site-config \u003cfile\u003e\u0027, \u0027specify the site config file (default: site.json)\u0027)"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .description(\u0027build a website\u0027)"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .action((userSpecifiedRoot, output, options) \u003d\u003e {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" build(userSpecifiedRoot, output, options);"},{"lineNumber":74,"author":{"gitId":"-"},"content":" });"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":"program"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .command(\u0027deploy [root]\u0027)"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .alias(\u0027d\u0027)"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .option(\u0027-c, --ci [githubTokenName]\u0027, \u0027deploy the site in CI Environment [GITHUB_TOKEN]\u0027)"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .option(\u0027-n, --no-build\u0027, \u0027do not automatically build the site before deployment\u0027)"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .option(\u0027-s, --site-config \u003cfile\u003e\u0027, \u0027specify the site config file (default: site.json)\u0027)"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .description(\u0027deploy the latest build of the site to the repo\\\u0027s Github pages\u0027)"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .action((userSpecifiedRoot, options) \u003d\u003e {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" deploy(userSpecifiedRoot, options);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" });"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":"program.parse(process.argv);"}],"authorContributionMap":{"LamJiuFong":1,"-":86}},{"path":"packages/cli/src/cmd/serve.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"const chokidar \u003d require(\u0027chokidar\u0027);"},{"lineNumber":2,"author":{"gitId":"-"},"content":"const path \u003d require(\u0027path\u0027);"},{"lineNumber":3,"author":{"gitId":"LamJiuFong"},"content":"const readline \u003d require(\u0027readline\u0027);"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"const { Site } \u003d require(\u0027@markbind/core\u0027).Site;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"const { pageVueServerRenderer } \u003d require(\u0027@markbind/core/src/Page/PageVueServerRenderer\u0027);"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"const fsUtil \u003d require(\u0027@markbind/core/src/utils/fsUtil\u0027);"},{"lineNumber":9,"author":{"gitId":"-"},"content":"const { INDEX_MARKDOWN_FILE } \u003d require(\u0027@markbind/core/src/Site/constants\u0027);"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"const cliUtil \u003d require(\u0027../util/cliUtil\u0027);"},{"lineNumber":12,"author":{"gitId":"-"},"content":"const liveServer \u003d require(\u0027../lib/live-server\u0027);"},{"lineNumber":13,"author":{"gitId":"-"},"content":"const logger \u003d require(\u0027../util/logger\u0027);"},{"lineNumber":14,"author":{"gitId":"-"},"content":"const {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" addHandler,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" changeHandler,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" lazyReloadMiddleware,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" removeHandler,"},{"lineNumber":19,"author":{"gitId":"-"},"content":"} \u003d require(\u0027../util/serveUtil\u0027);"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"LamJiuFong"},"content":"function isIPAddressZero(address) {"},{"lineNumber":22,"author":{"gitId":"LamJiuFong"},"content":" const patternForZero \u003d /^0(\\.0)*$/;"},{"lineNumber":23,"author":{"gitId":"LamJiuFong"},"content":""},{"lineNumber":24,"author":{"gitId":"LamJiuFong"},"content":" return patternForZero.test(address);"},{"lineNumber":25,"author":{"gitId":"LamJiuFong"},"content":"}"},{"lineNumber":26,"author":{"gitId":"LamJiuFong"},"content":""},{"lineNumber":27,"author":{"gitId":"LamJiuFong"},"content":"function questionAsync(question) {"},{"lineNumber":28,"author":{"gitId":"LamJiuFong"},"content":" const readlineInterface \u003d readline.createInterface({ input: process.stdin, output: process.stdout });"},{"lineNumber":29,"author":{"gitId":"LamJiuFong"},"content":""},{"lineNumber":30,"author":{"gitId":"LamJiuFong"},"content":" return new Promise((resolve) \u003d\u003e {"},{"lineNumber":31,"author":{"gitId":"LamJiuFong"},"content":" readlineInterface.question(question, (response) \u003d\u003e {"},{"lineNumber":32,"author":{"gitId":"LamJiuFong"},"content":" readlineInterface.close();"},{"lineNumber":33,"author":{"gitId":"LamJiuFong"},"content":" resolve(response);"},{"lineNumber":34,"author":{"gitId":"LamJiuFong"},"content":" });"},{"lineNumber":35,"author":{"gitId":"LamJiuFong"},"content":" });"},{"lineNumber":36,"author":{"gitId":"LamJiuFong"},"content":"}"},{"lineNumber":37,"author":{"gitId":"LamJiuFong"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"function serve(userSpecifiedRoot, options) {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (options.dev) {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.useDebugConsole();"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" let rootFolder;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" rootFolder \u003d cliUtil.findRootFolder(userSpecifiedRoot, options.siteConfig);"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (options.forceReload \u0026\u0026 options.onePage) {"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.error(\u0027Oops! You shouldn\\\u0027t need to use the --force-reload option with --one-page.\u0027);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" process.exitCode \u003d 1;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" process.exit();"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":" } catch (error) {"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.error(error.message);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" process.exitCode \u003d 1;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" const logsFolder \u003d path.join(rootFolder, \u0027_markbind/logs\u0027);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" const outputFolder \u003d path.join(rootFolder, \u0027_site\u0027);"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":" const presentDefaultFile \u003d fsUtil.fileExists(INDEX_MARKDOWN_FILE) ? INDEX_MARKDOWN_FILE : false;"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (options.onePage \u003d\u003d\u003d true \u0026\u0026 !presentDefaultFile) {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" logger.error(\u0027Oops! It seems that you didn\\\u0027t have the default file index.md.\u0027);"},{"lineNumber":63,"author":{"gitId":"-"},"content":" process.exitCode \u003d 1;"},{"lineNumber":64,"author":{"gitId":"-"},"content":" process.exit();"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":" let onePagePath \u003d options.onePage \u003d\u003d\u003d true ? presentDefaultFile : options.onePage;"},{"lineNumber":67,"author":{"gitId":"-"},"content":" onePagePath \u003d onePagePath ? fsUtil.ensurePosix(onePagePath) : onePagePath;"},{"lineNumber":68,"author":{"gitId":"-"},"content":""},{"lineNumber":69,"author":{"gitId":"-"},"content":" const reloadAfterBackgroundBuild \u003d () \u003d\u003e {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" logger.info(\u0027All opened pages will be reloaded.\u0027);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" liveServer.reloadActiveTabs();"},{"lineNumber":72,"author":{"gitId":"-"},"content":" };"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" const site \u003d new Site(rootFolder, outputFolder, onePagePath,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" options.forceReload, options.siteConfig, options.dev,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" options.backgroundBuild, reloadAfterBackgroundBuild);"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" // server config"},{"lineNumber":79,"author":{"gitId":"-"},"content":" const serverConfig \u003d {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" open: options.open,"},{"lineNumber":81,"author":{"gitId":"-"},"content":" logLevel: 0,"},{"lineNumber":82,"author":{"gitId":"-"},"content":" root: outputFolder,"},{"lineNumber":83,"author":{"gitId":"-"},"content":" port: options.port || 8080,"},{"lineNumber":84,"author":{"gitId":"LamJiuFong"},"content":" host: options.address || \u0027127.0.0.1\u0027,"},{"lineNumber":85,"author":{"gitId":"-"},"content":" middleware: [],"},{"lineNumber":86,"author":{"gitId":"-"},"content":" mount: [],"},{"lineNumber":87,"author":{"gitId":"-"},"content":" };"},{"lineNumber":88,"author":{"gitId":"-"},"content":""},{"lineNumber":89,"author":{"gitId":"-"},"content":" site"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .readSiteConfig()"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .then(async (config) \u003d\u003e {"},{"lineNumber":92,"author":{"gitId":"LamJiuFong"},"content":" if (isIPAddressZero(serverConfig.host)) {"},{"lineNumber":93,"author":{"gitId":"LamJiuFong"},"content":" const response \u003d await questionAsync("},{"lineNumber":94,"author":{"gitId":"LamJiuFong"},"content":" \u0027WARNING: Using the address \\\u00270.0.0.0\\\u0027 could potentially expose your server to the internet, \u0027"},{"lineNumber":95,"author":{"gitId":"LamJiuFong"},"content":" + \u0027which may pose security risks. \\n\u0027"},{"lineNumber":96,"author":{"gitId":"LamJiuFong"},"content":" + \u0027Proceed with caution? [y/N] \u0027);"},{"lineNumber":97,"author":{"gitId":"LamJiuFong"},"content":" if (response.toLowerCase() \u003d\u003d\u003d \u0027y\u0027) {"},{"lineNumber":98,"author":{"gitId":"LamJiuFong"},"content":" logger.info(\u0027Proceeding to generate website\u0027);"},{"lineNumber":99,"author":{"gitId":"LamJiuFong"},"content":" } else {"},{"lineNumber":100,"author":{"gitId":"LamJiuFong"},"content":" logger.info(\u0027Website generation is cancelled.\u0027);"},{"lineNumber":101,"author":{"gitId":"LamJiuFong"},"content":" process.exit();"},{"lineNumber":102,"author":{"gitId":"LamJiuFong"},"content":" }"},{"lineNumber":103,"author":{"gitId":"LamJiuFong"},"content":" }"},{"lineNumber":104,"author":{"gitId":"LamJiuFong"},"content":""},{"lineNumber":105,"author":{"gitId":"-"},"content":" serverConfig.mount.push([config.baseUrl || \u0027/\u0027, outputFolder]);"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (options.dev) {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // eslint-disable-next-line global-require"},{"lineNumber":109,"author":{"gitId":"-"},"content":" const webpackDevConfig \u003d require(\u0027@markbind/core-web/webpack.dev\u0027);"},{"lineNumber":110,"author":{"gitId":"-"},"content":" await webpackDevConfig.serverEntry(pageVueServerRenderer.updateMarkBindVueBundle, rootFolder);"},{"lineNumber":111,"author":{"gitId":"-"},"content":""},{"lineNumber":112,"author":{"gitId":"-"},"content":" const getMiddlewares \u003d webpackDevConfig.clientEntry;"},{"lineNumber":113,"author":{"gitId":"-"},"content":" getMiddlewares(`${config.baseUrl}/markbind`)"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .forEach(middleware \u003d\u003e serverConfig.middleware.push(middleware));"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":""},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (onePagePath) {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" const onePageHtmlUrl \u003d `${config.baseUrl}/${onePagePath.replace(/\\.md$/, \u0027.html\u0027)}`;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" serverConfig.open \u003d serverConfig.open \u0026\u0026 onePageHtmlUrl;"},{"lineNumber":120,"author":{"gitId":"-"},"content":" serverConfig.middleware.push(lazyReloadMiddleware(site, rootFolder, config));"},{"lineNumber":121,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" serverConfig.open \u003d serverConfig.open \u0026\u0026 `${config.baseUrl}/`;"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }"},{"lineNumber":124,"author":{"gitId":"-"},"content":""},{"lineNumber":125,"author":{"gitId":"-"},"content":" return site.generate();"},{"lineNumber":126,"author":{"gitId":"-"},"content":" })"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" const watcher \u003d chokidar.watch(rootFolder, {"},{"lineNumber":129,"author":{"gitId":"-"},"content":" ignored: ["},{"lineNumber":130,"author":{"gitId":"-"},"content":" logsFolder,"},{"lineNumber":131,"author":{"gitId":"-"},"content":" outputFolder,"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /(^|[/\\\\])\\../,"},{"lineNumber":133,"author":{"gitId":"-"},"content":" x \u003d\u003e x.endsWith(\u0027___jb_tmp___\u0027), x \u003d\u003e x.endsWith(\u0027___jb_old___\u0027), // IDE temp files"},{"lineNumber":134,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":135,"author":{"gitId":"-"},"content":" ignoreInitial: true,"},{"lineNumber":136,"author":{"gitId":"-"},"content":" });"},{"lineNumber":137,"author":{"gitId":"-"},"content":" watcher"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .on(\u0027add\u0027, addHandler(site, onePagePath))"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .on(\u0027change\u0027, changeHandler(site, onePagePath))"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .on(\u0027unlink\u0027, removeHandler(site, onePagePath));"},{"lineNumber":141,"author":{"gitId":"-"},"content":" })"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .then(() \u003d\u003e {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" const server \u003d liveServer.start(serverConfig);"},{"lineNumber":144,"author":{"gitId":"-"},"content":" server.addListener(\u0027listening\u0027, () \u003d\u003e {"},{"lineNumber":145,"author":{"gitId":"-"},"content":" const address \u003d server.address();"},{"lineNumber":146,"author":{"gitId":"LamJiuFong"},"content":" const serveHost \u003d address.address;"},{"lineNumber":147,"author":{"gitId":"LamJiuFong"},"content":" const servePort \u003d address.port;"},{"lineNumber":148,"author":{"gitId":"LamJiuFong"},"content":" const serveURL \u003d `http://${serveHost}:${servePort}`;"},{"lineNumber":149,"author":{"gitId":"-"},"content":" logger.info(`Serving \"${outputFolder}\" at ${serveURL}`);"},{"lineNumber":150,"author":{"gitId":"-"},"content":" logger.info(\u0027Press CTRL+C to stop ...\u0027);"},{"lineNumber":151,"author":{"gitId":"-"},"content":" });"},{"lineNumber":152,"author":{"gitId":"-"},"content":" })"},{"lineNumber":153,"author":{"gitId":"-"},"content":" .catch((error) \u003d\u003e {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.error(error.message);"},{"lineNumber":155,"author":{"gitId":"-"},"content":" process.exitCode \u003d 1;"},{"lineNumber":156,"author":{"gitId":"-"},"content":" });"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}"},{"lineNumber":158,"author":{"gitId":"-"},"content":""},{"lineNumber":159,"author":{"gitId":"-"},"content":"module.exports \u003d {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" serve,"},{"lineNumber":161,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"LamJiuFong":35,"-":126}},{"path":"packages/cli/src/lib/live-server/index.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env node"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"/*"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Patch for live-server to expose websocket clients for external use in order to keep track"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * of opened tabs."},{"lineNumber":6,"author":{"gitId":"-"},"content":" *"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * live-server locally keeps track of opened client websockets in order for it to be able"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * to perform live reload whenever there are changes in the watched directory. However, the"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * clients list is stored internally."},{"lineNumber":10,"author":{"gitId":"-"},"content":" *"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * This patch allows us to gain access to the information that can be gathered with the client"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * websockets, which in turn enables the support for multiple-tab development."},{"lineNumber":13,"author":{"gitId":"-"},"content":" *"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Patch is written against live-server v1.2.1"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The **only** changes are prefaced with a CHANGED comment"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":"var fs \u003d require(\u0027fs\u0027),"},{"lineNumber":19,"author":{"gitId":"-"},"content":" connect \u003d require(\u0027connect\u0027),"},{"lineNumber":20,"author":{"gitId":"-"},"content":" serveIndex \u003d require(\u0027serve-index\u0027),"},{"lineNumber":21,"author":{"gitId":"-"},"content":" logger \u003d require(\u0027morgan\u0027),"},{"lineNumber":22,"author":{"gitId":"-"},"content":" WebSocket \u003d require(\u0027faye-websocket\u0027),"},{"lineNumber":23,"author":{"gitId":"-"},"content":" path \u003d require(\u0027path\u0027),"},{"lineNumber":24,"author":{"gitId":"-"},"content":" parse \u003d require(\u0027url-parse\u0027),"},{"lineNumber":25,"author":{"gitId":"-"},"content":" http \u003d require(\u0027http\u0027),"},{"lineNumber":26,"author":{"gitId":"-"},"content":" send \u003d require(\u0027send\u0027),"},{"lineNumber":27,"author":{"gitId":"-"},"content":" open \u003d require(\u0027opn\u0027),"},{"lineNumber":28,"author":{"gitId":"-"},"content":" es \u003d require(\"event-stream\"),"},{"lineNumber":29,"author":{"gitId":"-"},"content":" os \u003d require(\u0027os\u0027),"},{"lineNumber":30,"author":{"gitId":"-"},"content":" chokidar \u003d require(\u0027chokidar\u0027),"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // CHANGED: added MarkBind\u0027s core fsUtil package"},{"lineNumber":32,"author":{"gitId":"-"},"content":" fsUtil \u003d require(\u0027@markbind/core/src/utils/fsUtil\u0027);"},{"lineNumber":33,"author":{"gitId":"-"},"content":"require(\u0027colors\u0027);"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":"// CHANGED: added absolute path that directs to the live-server directory"},{"lineNumber":36,"author":{"gitId":"-"},"content":"const pathToLiveServerDir \u003d path.dirname(require.resolve(\u0027live-server\u0027));"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"// CHANGED: correctly resolve to the live-server directory"},{"lineNumber":39,"author":{"gitId":"-"},"content":"var INJECTED_CODE \u003d fs.readFileSync(path.join(pathToLiveServerDir, \"injected.html\"), \"utf8\");"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"var LiveServer \u003d {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" server: null,"},{"lineNumber":43,"author":{"gitId":"-"},"content":" watcher: null,"},{"lineNumber":44,"author":{"gitId":"-"},"content":" logLevel: 2,"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" // CHANGED: added properties relevant to MarkBind live-preview"},{"lineNumber":47,"author":{"gitId":"-"},"content":" activeTabs: [],"},{"lineNumber":48,"author":{"gitId":"-"},"content":" baseUrl: \u0027\u0027,"},{"lineNumber":49,"author":{"gitId":"-"},"content":"};"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":"function escape(html){"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return String(html)"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .replace(/\u0026(?!\\w+;)/g, \u0027\u0026amp;\u0027)"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .replace(/\u003c/g, \u0027\u0026lt;\u0027)"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .replace(/\u003e/g, \u0027\u0026gt;\u0027)"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .replace(/\"/g, \u0027\u0026quot;\u0027);"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}"},{"lineNumber":58,"author":{"gitId":"-"},"content":""},{"lineNumber":59,"author":{"gitId":"-"},"content":"// Based on connect.static(), but streamlined and with added code injecter"},{"lineNumber":60,"author":{"gitId":"-"},"content":"function staticServer(root) {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" var isFile \u003d false;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" try { // For supporting mounting files instead of just directories"},{"lineNumber":63,"author":{"gitId":"-"},"content":" isFile \u003d fs.statSync(root).isFile();"},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (e) {"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (e.code !\u003d\u003d \"ENOENT\") throw e;"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return function(req, res, next) {"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (req.method !\u003d\u003d \u0027GET\u0027 \u0026\u0026 req.method !\u003d\u003d \u0027HEAD\u0027) return next();"},{"lineNumber":69,"author":{"gitId":"-"},"content":" const reqpath \u003d isFile ? \"\" : parse(req.url).pathname;"},{"lineNumber":70,"author":{"gitId":"-"},"content":" var hasNoOrigin \u003d !req.headers.origin;"},{"lineNumber":71,"author":{"gitId":"-"},"content":" var injectCandidates \u003d [ new RegExp(\"\u003c/body\u003e\", \"i\"), new RegExp(\"\u003c/svg\u003e\"), new RegExp(\"\u003c/head\u003e\", \"i\")];"},{"lineNumber":72,"author":{"gitId":"-"},"content":" var injectTag \u003d null;"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" function directory() {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" var pathname \u003d parse(req.url).pathname;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" res.statusCode \u003d 301;"},{"lineNumber":77,"author":{"gitId":"-"},"content":" res.setHeader(\u0027Location\u0027, pathname + \u0027/\u0027);"},{"lineNumber":78,"author":{"gitId":"-"},"content":" res.end(\u0027Redirecting to \u0027 + escape(pathname) + \u0027/\u0027);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" function file(filepath /*, stat*/) {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" var x \u003d path.extname(filepath).toLocaleLowerCase(), match,"},{"lineNumber":83,"author":{"gitId":"-"},"content":" possibleExtensions \u003d [ \"\", \".html\", \".htm\", \".xhtml\", \".php\", \".svg\" ];"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (hasNoOrigin \u0026\u0026 (possibleExtensions.indexOf(x) \u003e -1)) {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // TODO: Sync file read here is not nice, but we need to determine if the html should be injected or not"},{"lineNumber":86,"author":{"gitId":"-"},"content":" var contents \u003d fs.readFileSync(filepath, \"utf8\");"},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (var i \u003d 0; i \u003c injectCandidates.length; ++i) {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" match \u003d injectCandidates[i].exec(contents);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (match) {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" injectTag \u003d match[0];"},{"lineNumber":91,"author":{"gitId":"-"},"content":" break;"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }"},{"lineNumber":94,"author":{"gitId":"-"},"content":""},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (injectTag \u003d\u003d\u003d null \u0026\u0026 LiveServer.logLevel \u003e\u003d 3) {"},{"lineNumber":96,"author":{"gitId":"-"},"content":" console.warn(\"Failed to inject refresh script!\".yellow,"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \"Couldn\u0027t find any of the tags \", injectCandidates, \"from\", filepath);"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }"},{"lineNumber":101,"author":{"gitId":"-"},"content":""},{"lineNumber":102,"author":{"gitId":"-"},"content":" function error(err) {"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (err.status \u003d\u003d\u003d 404) return next();"},{"lineNumber":104,"author":{"gitId":"-"},"content":" next(err);"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }"},{"lineNumber":106,"author":{"gitId":"-"},"content":""},{"lineNumber":107,"author":{"gitId":"-"},"content":" function inject(stream) {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (injectTag) {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // We need to modify the length given to browser"},{"lineNumber":110,"author":{"gitId":"-"},"content":" var len \u003d INJECTED_CODE.length + res.getHeader(\u0027Content-Length\u0027);"},{"lineNumber":111,"author":{"gitId":"-"},"content":" res.setHeader(\u0027Content-Length\u0027, len);"},{"lineNumber":112,"author":{"gitId":"-"},"content":" var originalPipe \u003d stream.pipe;"},{"lineNumber":113,"author":{"gitId":"-"},"content":" stream.pipe \u003d function(resp) {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" originalPipe.call(stream, es.replace(new RegExp(injectTag, \"i\"), INJECTED_CODE + injectTag)).pipe(resp);"},{"lineNumber":115,"author":{"gitId":"-"},"content":" };"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }"},{"lineNumber":118,"author":{"gitId":"-"},"content":""},{"lineNumber":119,"author":{"gitId":"-"},"content":" send(req, reqpath, { root: root })"},{"lineNumber":120,"author":{"gitId":"-"},"content":" .on(\u0027error\u0027, error)"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .on(\u0027directory\u0027, directory)"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .on(\u0027file\u0027, file)"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .on(\u0027stream\u0027, inject)"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .pipe(res);"},{"lineNumber":125,"author":{"gitId":"-"},"content":" };"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}"},{"lineNumber":127,"author":{"gitId":"-"},"content":""},{"lineNumber":128,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Rewrite request URL and pass it back to the static handler."},{"lineNumber":130,"author":{"gitId":"-"},"content":" * @param staticHandler {function} Next handler"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @param file {string} Path to the entry point file"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */"},{"lineNumber":133,"author":{"gitId":"-"},"content":"function entryPoint(staticHandler, file) {"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!file) return function(req, res, next) { next(); };"},{"lineNumber":135,"author":{"gitId":"-"},"content":""},{"lineNumber":136,"author":{"gitId":"-"},"content":" return function(req, res, next) {"},{"lineNumber":137,"author":{"gitId":"-"},"content":" req.url \u003d \"/\" + file;"},{"lineNumber":138,"author":{"gitId":"-"},"content":" staticHandler(req, res, next);"},{"lineNumber":139,"author":{"gitId":"-"},"content":" };"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}"},{"lineNumber":141,"author":{"gitId":"-"},"content":""},{"lineNumber":142,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Start a live server with parameters given as an object"},{"lineNumber":144,"author":{"gitId":"LamJiuFong"},"content":" * @param host {string} Address to bind to (default: 127.0.0.1)"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @param port {number} Port number (default: 8080)"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param root {string} Path to root directory (default: cwd)"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param watch {array} Paths to exclusively watch for changes"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param ignore {array} Paths to ignore when watching files for changes"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param ignorePattern {regexp} Ignore files by RegExp"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param noCssInject Don\u0027t inject CSS changes, just reload as with any other file change"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @param open {(string|string[])} Subpath(s) to open in browser, use false to suppress launch (default: server root)"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * @param mount {array} Mount directories onto a route, e.g. [[\u0027/components\u0027, \u0027./node_modules\u0027]]."},{"lineNumber":153,"author":{"gitId":"-"},"content":" * @param logLevel {number} 0 \u003d errors only, 1 \u003d some, 2 \u003d lots"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * @param file {string} Path to the entry point file"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * @param wait {number} Server will wait for all changes, before reloading"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * @param htpasswd {string} Path to htpasswd file to enable HTTP Basic authentication"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param middleware {array} Append middleware to stack, e.g. [function(req, res, next) { next(); }]."},{"lineNumber":158,"author":{"gitId":"-"},"content":" */"},{"lineNumber":159,"author":{"gitId":"-"},"content":"LiveServer.start \u003d function(options) {"},{"lineNumber":160,"author":{"gitId":"-"},"content":" options \u003d options || {};"},{"lineNumber":161,"author":{"gitId":"LamJiuFong"},"content":" var host \u003d options.host ?? \u0027127.0.0.1\u0027;"},{"lineNumber":162,"author":{"gitId":"LamJiuFong"},"content":" var port \u003d options.port ?? 8080; // 0 means random"},{"lineNumber":163,"author":{"gitId":"-"},"content":" var root \u003d options.root || process.cwd();"},{"lineNumber":164,"author":{"gitId":"-"},"content":" var mount \u003d options.mount || [];"},{"lineNumber":165,"author":{"gitId":"-"},"content":" var watchPaths \u003d options.watch || [root];"},{"lineNumber":166,"author":{"gitId":"-"},"content":" LiveServer.logLevel \u003d options.logLevel \u003d\u003d\u003d undefined ? 2 : options.logLevel;"},{"lineNumber":167,"author":{"gitId":"-"},"content":" var openPath \u003d (options.open \u003d\u003d\u003d undefined || options.open \u003d\u003d\u003d true) ?"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \"\" : ((options.open \u003d\u003d\u003d null || options.open \u003d\u003d\u003d false) ? null : options.open);"},{"lineNumber":169,"author":{"gitId":"-"},"content":" if (options.noBrowser) openPath \u003d null; // Backwards compatibility with 0.7.0"},{"lineNumber":170,"author":{"gitId":"-"},"content":" var file \u003d options.file;"},{"lineNumber":171,"author":{"gitId":"-"},"content":" var staticServerHandler \u003d staticServer(root);"},{"lineNumber":172,"author":{"gitId":"-"},"content":" var wait \u003d options.wait \u003d\u003d\u003d undefined ? 100 : options.wait;"},{"lineNumber":173,"author":{"gitId":"-"},"content":" var browser \u003d options.browser || null;"},{"lineNumber":174,"author":{"gitId":"-"},"content":" var htpasswd \u003d options.htpasswd || null;"},{"lineNumber":175,"author":{"gitId":"-"},"content":" var cors \u003d options.cors || false;"},{"lineNumber":176,"author":{"gitId":"-"},"content":" var https \u003d options.https || null;"},{"lineNumber":177,"author":{"gitId":"-"},"content":" var proxy \u003d options.proxy || [];"},{"lineNumber":178,"author":{"gitId":"-"},"content":" var middleware \u003d options.middleware || [];"},{"lineNumber":179,"author":{"gitId":"-"},"content":" var noCssInject \u003d options.noCssInject;"},{"lineNumber":180,"author":{"gitId":"-"},"content":" var httpsModule \u003d options.httpsModule;"},{"lineNumber":181,"author":{"gitId":"-"},"content":""},{"lineNumber":182,"author":{"gitId":"-"},"content":" if (httpsModule) {"},{"lineNumber":183,"author":{"gitId":"-"},"content":" try {"},{"lineNumber":184,"author":{"gitId":"-"},"content":" require.resolve(httpsModule);"},{"lineNumber":185,"author":{"gitId":"-"},"content":" } catch (e) {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" console.error((\"HTTPS module \\\"\" + httpsModule + \"\\\" you\u0027ve provided was not found.\").red);"},{"lineNumber":187,"author":{"gitId":"-"},"content":" console.error(\"Did you do\", \"\\\"npm install \" + httpsModule + \"\\\"?\");"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }"},{"lineNumber":190,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" httpsModule \u003d \"https\";"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }"},{"lineNumber":193,"author":{"gitId":"-"},"content":""},{"lineNumber":194,"author":{"gitId":"-"},"content":" // Setup a web server"},{"lineNumber":195,"author":{"gitId":"-"},"content":" var app \u003d connect();"},{"lineNumber":196,"author":{"gitId":"-"},"content":""},{"lineNumber":197,"author":{"gitId":"-"},"content":" // Add logger. Level 2 logs only errors"},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003d\u003d\u003d 2) {"},{"lineNumber":199,"author":{"gitId":"-"},"content":" app.use(logger(\u0027dev\u0027, {"},{"lineNumber":200,"author":{"gitId":"-"},"content":" skip: function (req, res) { return res.statusCode \u003c 400; }"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // Level 2 or above logs all requests"},{"lineNumber":203,"author":{"gitId":"-"},"content":" } else if (LiveServer.logLevel \u003e 2) {"},{"lineNumber":204,"author":{"gitId":"-"},"content":" app.use(logger(\u0027dev\u0027));"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }"},{"lineNumber":206,"author":{"gitId":"-"},"content":" if (options.spa) {"},{"lineNumber":207,"author":{"gitId":"-"},"content":" middleware.push(\"spa\");"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // Add middleware"},{"lineNumber":210,"author":{"gitId":"-"},"content":" middleware.map(function(mw) {"},{"lineNumber":211,"author":{"gitId":"-"},"content":" if (typeof mw \u003d\u003d\u003d \"string\") {"},{"lineNumber":212,"author":{"gitId":"-"},"content":" var ext \u003d path.extname(mw).toLocaleLowerCase();"},{"lineNumber":213,"author":{"gitId":"-"},"content":" if (ext !\u003d\u003d \".js\") {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // CHANGED: correctly resolve to the live-server directory"},{"lineNumber":215,"author":{"gitId":"-"},"content":" mw \u003d require(path.join(pathToLiveServerDir, \"middleware\", mw + \".js\"));"},{"lineNumber":216,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":217,"author":{"gitId":"-"},"content":" mw \u003d require(mw);"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }"},{"lineNumber":220,"author":{"gitId":"-"},"content":" app.use(mw);"},{"lineNumber":221,"author":{"gitId":"-"},"content":" });"},{"lineNumber":222,"author":{"gitId":"-"},"content":""},{"lineNumber":223,"author":{"gitId":"-"},"content":" // Use http-auth if configured"},{"lineNumber":224,"author":{"gitId":"-"},"content":" if (htpasswd !\u003d\u003d null) {"},{"lineNumber":225,"author":{"gitId":"-"},"content":" var auth \u003d require(\u0027http-auth\u0027);"},{"lineNumber":226,"author":{"gitId":"-"},"content":" var basic \u003d auth.basic({"},{"lineNumber":227,"author":{"gitId":"-"},"content":" realm: \"Please authorize\","},{"lineNumber":228,"author":{"gitId":"-"},"content":" file: htpasswd"},{"lineNumber":229,"author":{"gitId":"-"},"content":" });"},{"lineNumber":230,"author":{"gitId":"-"},"content":" app.use(auth.connect(basic));"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }"},{"lineNumber":232,"author":{"gitId":"-"},"content":" if (cors) {"},{"lineNumber":233,"author":{"gitId":"-"},"content":" app.use(require(\"cors\")({"},{"lineNumber":234,"author":{"gitId":"-"},"content":" origin: true, // reflecting request origin"},{"lineNumber":235,"author":{"gitId":"-"},"content":" credentials: true // allowing requests with credentials"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }));"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }"},{"lineNumber":238,"author":{"gitId":"-"},"content":" mount.forEach(function(mountRule) {"},{"lineNumber":239,"author":{"gitId":"-"},"content":" var mountPath \u003d path.resolve(process.cwd(), mountRule[1]);"},{"lineNumber":240,"author":{"gitId":"-"},"content":" if (!options.watch) // Auto add mount paths to wathing but only if exclusive path option is not given"},{"lineNumber":241,"author":{"gitId":"-"},"content":" watchPaths.push(mountPath);"},{"lineNumber":242,"author":{"gitId":"-"},"content":" app.use(mountRule[0], staticServer(mountPath));"},{"lineNumber":243,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003e\u003d 1)"},{"lineNumber":244,"author":{"gitId":"-"},"content":" console.log(\u0027Mapping %s to \"%s\"\u0027, mountRule[0], mountPath);"},{"lineNumber":245,"author":{"gitId":"-"},"content":""},{"lineNumber":246,"author":{"gitId":"-"},"content":" // CHANGED: added baseUrl initialization based on the first mount rule"},{"lineNumber":247,"author":{"gitId":"-"},"content":" if (LiveServer.baseUrl \u003d\u003d\u003d \u0027\u0027) {"},{"lineNumber":248,"author":{"gitId":"-"},"content":" LiveServer.baseUrl \u003d mountRule[0] || \u0027/\u0027;"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }"},{"lineNumber":250,"author":{"gitId":"-"},"content":" });"},{"lineNumber":251,"author":{"gitId":"-"},"content":" proxy.forEach(function(proxyRule) {"},{"lineNumber":252,"author":{"gitId":"-"},"content":" var proxyOpts \u003d parse(proxyRule[1]);"},{"lineNumber":253,"author":{"gitId":"-"},"content":" proxyOpts.via \u003d true;"},{"lineNumber":254,"author":{"gitId":"-"},"content":" proxyOpts.preserveHost \u003d true;"},{"lineNumber":255,"author":{"gitId":"-"},"content":" app.use(proxyRule[0], require(\u0027proxy-middleware\u0027)(proxyOpts));"},{"lineNumber":256,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003e\u003d 1)"},{"lineNumber":257,"author":{"gitId":"-"},"content":" console.log(\u0027Mapping %s to \"%s\"\u0027, proxyRule[0], proxyRule[1]);"},{"lineNumber":258,"author":{"gitId":"-"},"content":" });"},{"lineNumber":259,"author":{"gitId":"-"},"content":" app.use(staticServerHandler) // Custom static server"},{"lineNumber":260,"author":{"gitId":"-"},"content":" .use(entryPoint(staticServerHandler, file))"},{"lineNumber":261,"author":{"gitId":"-"},"content":" .use(serveIndex(root, { icons: true }));"},{"lineNumber":262,"author":{"gitId":"-"},"content":""},{"lineNumber":263,"author":{"gitId":"-"},"content":" var server, protocol;"},{"lineNumber":264,"author":{"gitId":"-"},"content":" if (https !\u003d\u003d null) {"},{"lineNumber":265,"author":{"gitId":"-"},"content":" var httpsConfig \u003d https;"},{"lineNumber":266,"author":{"gitId":"-"},"content":" if (typeof https \u003d\u003d\u003d \"string\") {"},{"lineNumber":267,"author":{"gitId":"-"},"content":" httpsConfig \u003d require(path.resolve(process.cwd(), https));"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }"},{"lineNumber":269,"author":{"gitId":"-"},"content":" server \u003d require(httpsModule).createServer(httpsConfig, app);"},{"lineNumber":270,"author":{"gitId":"-"},"content":" protocol \u003d \"https\";"},{"lineNumber":271,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":272,"author":{"gitId":"-"},"content":" server \u003d http.createServer(app);"},{"lineNumber":273,"author":{"gitId":"-"},"content":" protocol \u003d \"http\";"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }"},{"lineNumber":275,"author":{"gitId":"-"},"content":""},{"lineNumber":276,"author":{"gitId":"-"},"content":" // Handle server startup errors"},{"lineNumber":277,"author":{"gitId":"-"},"content":" server.addListener(\u0027error\u0027, function(e) {"},{"lineNumber":278,"author":{"gitId":"-"},"content":" if (e.code \u003d\u003d\u003d \u0027EADDRINUSE\u0027) {"},{"lineNumber":279,"author":{"gitId":"-"},"content":" var serveURL \u003d protocol + \u0027://\u0027 + host + \u0027:\u0027 + port;"},{"lineNumber":280,"author":{"gitId":"-"},"content":" console.log(\u0027%s is already in use. Trying another port.\u0027.yellow, serveURL);"},{"lineNumber":281,"author":{"gitId":"-"},"content":" setTimeout(function() {"},{"lineNumber":282,"author":{"gitId":"-"},"content":" server.listen(0, host);"},{"lineNumber":283,"author":{"gitId":"-"},"content":" }, 1000);"},{"lineNumber":284,"author":{"gitId":"LamJiuFong"},"content":" } else if (e.code \u003d\u003d\u003d \u0027EADDRNOTAVAIL\u0027) {"},{"lineNumber":285,"author":{"gitId":"LamJiuFong"},"content":" console.log(\u0027%s is not available. Trying another address\u0027.yellow, host);"},{"lineNumber":286,"author":{"gitId":"LamJiuFong"},"content":" setTimeout(function() {"},{"lineNumber":287,"author":{"gitId":"LamJiuFong"},"content":" server.listen(port, \u0027127.0.0.1\u0027);"},{"lineNumber":288,"author":{"gitId":"LamJiuFong"},"content":" }, 1000);"},{"lineNumber":289,"author":{"gitId":"LamJiuFong"},"content":" }"},{"lineNumber":290,"author":{"gitId":"LamJiuFong"},"content":" else {"},{"lineNumber":291,"author":{"gitId":"-"},"content":" console.error(e.toString().red);"},{"lineNumber":292,"author":{"gitId":"-"},"content":" LiveServer.shutdown();"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }"},{"lineNumber":294,"author":{"gitId":"-"},"content":" });"},{"lineNumber":295,"author":{"gitId":"-"},"content":""},{"lineNumber":296,"author":{"gitId":"-"},"content":" // Handle successful server"},{"lineNumber":297,"author":{"gitId":"-"},"content":" server.addListener(\u0027listening\u0027, function(/*e*/) {"},{"lineNumber":298,"author":{"gitId":"-"},"content":" LiveServer.server \u003d server;"},{"lineNumber":299,"author":{"gitId":"-"},"content":""},{"lineNumber":300,"author":{"gitId":"-"},"content":" var address \u003d server.address();"},{"lineNumber":301,"author":{"gitId":"LamJiuFong"},"content":" var serveHost \u003d address.address;"},{"lineNumber":302,"author":{"gitId":"LamJiuFong"},"content":" var openHost \u003d host;"},{"lineNumber":303,"author":{"gitId":"-"},"content":""},{"lineNumber":304,"author":{"gitId":"-"},"content":" var serveURL \u003d protocol + \u0027://\u0027 + serveHost + \u0027:\u0027 + address.port;"},{"lineNumber":305,"author":{"gitId":"-"},"content":" var openURL \u003d protocol + \u0027://\u0027 + openHost + \u0027:\u0027 + address.port;"},{"lineNumber":306,"author":{"gitId":"-"},"content":""},{"lineNumber":307,"author":{"gitId":"-"},"content":" var serveURLs \u003d [ serveURL ];"},{"lineNumber":308,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003e 2 \u0026\u0026 address.address \u003d\u003d\u003d \"0.0.0.0\") {"},{"lineNumber":309,"author":{"gitId":"-"},"content":" var ifaces \u003d os.networkInterfaces();"},{"lineNumber":310,"author":{"gitId":"-"},"content":" serveURLs \u003d Object.keys(ifaces)"},{"lineNumber":311,"author":{"gitId":"-"},"content":" .map(function(iface) {"},{"lineNumber":312,"author":{"gitId":"-"},"content":" return ifaces[iface];"},{"lineNumber":313,"author":{"gitId":"-"},"content":" })"},{"lineNumber":314,"author":{"gitId":"-"},"content":" // flatten address data, use only IPv4"},{"lineNumber":315,"author":{"gitId":"-"},"content":" .reduce(function(data, addresses) {"},{"lineNumber":316,"author":{"gitId":"-"},"content":" addresses.filter(function(addr) {"},{"lineNumber":317,"author":{"gitId":"-"},"content":" return addr.family \u003d\u003d\u003d \"IPv4\";"},{"lineNumber":318,"author":{"gitId":"-"},"content":" }).forEach(function(addr) {"},{"lineNumber":319,"author":{"gitId":"-"},"content":" data.push(addr);"},{"lineNumber":320,"author":{"gitId":"-"},"content":" });"},{"lineNumber":321,"author":{"gitId":"-"},"content":" return data;"},{"lineNumber":322,"author":{"gitId":"-"},"content":" }, [])"},{"lineNumber":323,"author":{"gitId":"-"},"content":" .map(function(addr) {"},{"lineNumber":324,"author":{"gitId":"-"},"content":" return protocol + \"://\" + addr.address + \":\" + address.port;"},{"lineNumber":325,"author":{"gitId":"-"},"content":" });"},{"lineNumber":326,"author":{"gitId":"-"},"content":" }"},{"lineNumber":327,"author":{"gitId":"-"},"content":""},{"lineNumber":328,"author":{"gitId":"-"},"content":" // Output"},{"lineNumber":329,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003e\u003d 1) {"},{"lineNumber":330,"author":{"gitId":"-"},"content":" if (serveURL \u003d\u003d\u003d openURL)"},{"lineNumber":331,"author":{"gitId":"-"},"content":" if (serveURLs.length \u003d\u003d\u003d 1) {"},{"lineNumber":332,"author":{"gitId":"-"},"content":" console.log((\"Serving \\\"%s\\\" at %s\").green, root, serveURLs[0]);"},{"lineNumber":333,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":334,"author":{"gitId":"-"},"content":" console.log((\"Serving \\\"%s\\\" at\\n\\t%s\").green, root, serveURLs.join(\"\\n\\t\"));"},{"lineNumber":335,"author":{"gitId":"-"},"content":" }"},{"lineNumber":336,"author":{"gitId":"-"},"content":" else"},{"lineNumber":337,"author":{"gitId":"-"},"content":" console.log((\"Serving \\\"%s\\\" at %s (%s)\").green, root, openURL, serveURL);"},{"lineNumber":338,"author":{"gitId":"-"},"content":" }"},{"lineNumber":339,"author":{"gitId":"-"},"content":""},{"lineNumber":340,"author":{"gitId":"-"},"content":" // Launch browser"},{"lineNumber":341,"author":{"gitId":"-"},"content":" if (openPath !\u003d\u003d null)"},{"lineNumber":342,"author":{"gitId":"-"},"content":" if (typeof openPath \u003d\u003d\u003d \"object\") {"},{"lineNumber":343,"author":{"gitId":"-"},"content":" openPath.forEach(function(p) {"},{"lineNumber":344,"author":{"gitId":"-"},"content":" open(openURL + p, {app: browser});"},{"lineNumber":345,"author":{"gitId":"-"},"content":" });"},{"lineNumber":346,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":347,"author":{"gitId":"-"},"content":" open(openURL + openPath, {app: browser});"},{"lineNumber":348,"author":{"gitId":"-"},"content":" }"},{"lineNumber":349,"author":{"gitId":"-"},"content":" });"},{"lineNumber":350,"author":{"gitId":"-"},"content":""},{"lineNumber":351,"author":{"gitId":"-"},"content":" // Setup server to listen at port"},{"lineNumber":352,"author":{"gitId":"-"},"content":" server.listen(port, host);"},{"lineNumber":353,"author":{"gitId":"-"},"content":" "},{"lineNumber":354,"author":{"gitId":"-"},"content":" // WebSocket"},{"lineNumber":355,"author":{"gitId":"-"},"content":" // CHANGED: Removed local clients variable in favour of the clients in active tabs entries"},{"lineNumber":356,"author":{"gitId":"-"},"content":" server.addListener(\u0027upgrade\u0027, function(request, socket, head) {"},{"lineNumber":357,"author":{"gitId":"-"},"content":" var ws \u003d new WebSocket(request, socket, head);"},{"lineNumber":358,"author":{"gitId":"-"},"content":" ws.onopen \u003d function() { ws.send(\u0027connected\u0027); };"},{"lineNumber":359,"author":{"gitId":"-"},"content":""},{"lineNumber":360,"author":{"gitId":"-"},"content":" if (wait \u003e 0) {"},{"lineNumber":361,"author":{"gitId":"-"},"content":" (function() {"},{"lineNumber":362,"author":{"gitId":"-"},"content":" var wssend \u003d ws.send;"},{"lineNumber":363,"author":{"gitId":"-"},"content":" var waitTimeout;"},{"lineNumber":364,"author":{"gitId":"-"},"content":" ws.send \u003d function() {"},{"lineNumber":365,"author":{"gitId":"-"},"content":" var args \u003d arguments;"},{"lineNumber":366,"author":{"gitId":"-"},"content":" if (waitTimeout) clearTimeout(waitTimeout);"},{"lineNumber":367,"author":{"gitId":"-"},"content":" waitTimeout \u003d setTimeout(function(){"},{"lineNumber":368,"author":{"gitId":"-"},"content":" wssend.apply(ws, args);"},{"lineNumber":369,"author":{"gitId":"-"},"content":" }, wait);"},{"lineNumber":370,"author":{"gitId":"-"},"content":" };"},{"lineNumber":371,"author":{"gitId":"-"},"content":" })();"},{"lineNumber":372,"author":{"gitId":"-"},"content":" }"},{"lineNumber":373,"author":{"gitId":"-"},"content":""},{"lineNumber":374,"author":{"gitId":"-"},"content":" ws.onclose \u003d function() {"},{"lineNumber":375,"author":{"gitId":"-"},"content":" /*"},{"lineNumber":376,"author":{"gitId":"-"},"content":" * CHANGED: Modified to remove the active tab that has the closed socket as"},{"lineNumber":377,"author":{"gitId":"-"},"content":" * its current client on socket close. In other words, only socket close event that"},{"lineNumber":378,"author":{"gitId":"-"},"content":" * does not come from live reload will remove the active tab."},{"lineNumber":379,"author":{"gitId":"-"},"content":" */"},{"lineNumber":380,"author":{"gitId":"-"},"content":" LiveServer.activeTabs \u003d LiveServer.activeTabs.filter(tab \u003d\u003e tab.client !\u003d\u003d ws);"},{"lineNumber":381,"author":{"gitId":"-"},"content":" };"},{"lineNumber":382,"author":{"gitId":"-"},"content":""},{"lineNumber":383,"author":{"gitId":"-"},"content":" // CHANGED: Enhanced client websocket addition process to record the client as an active tab entry"},{"lineNumber":384,"author":{"gitId":"-"},"content":" const reqUrl \u003d path.dirname(request.url);"},{"lineNumber":385,"author":{"gitId":"-"},"content":" const normalizedUrl \u003d fsUtil.ensurePosix(path.relative(LiveServer.baseUrl, reqUrl));"},{"lineNumber":386,"author":{"gitId":"-"},"content":""},{"lineNumber":387,"author":{"gitId":"-"},"content":" // If an entry with empty client is present, reuse existing entry to maintain order from pre-reload "},{"lineNumber":388,"author":{"gitId":"-"},"content":" const existingTab \u003d LiveServer.activeTabs.find(tab \u003d\u003e tab.url \u003d\u003d\u003d normalizedUrl \u0026\u0026 !tab.client);"},{"lineNumber":389,"author":{"gitId":"-"},"content":" if (existingTab) {"},{"lineNumber":390,"author":{"gitId":"-"},"content":" existingTab.client \u003d ws;"},{"lineNumber":391,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":392,"author":{"gitId":"-"},"content":" }"},{"lineNumber":393,"author":{"gitId":"-"},"content":""},{"lineNumber":394,"author":{"gitId":"-"},"content":" // Insert new entry to the active tabs list"},{"lineNumber":395,"author":{"gitId":"-"},"content":" LiveServer.activeTabs.unshift({ url: normalizedUrl, client: ws });"},{"lineNumber":396,"author":{"gitId":"-"},"content":" });"},{"lineNumber":397,"author":{"gitId":"-"},"content":""},{"lineNumber":398,"author":{"gitId":"-"},"content":" var ignored \u003d ["},{"lineNumber":399,"author":{"gitId":"-"},"content":" function(testPath) { // Always ignore dotfiles (important e.g. because editor hidden temp files)"},{"lineNumber":400,"author":{"gitId":"-"},"content":" return testPath !\u003d\u003d \".\" \u0026\u0026 /(^[.#]|(?:__|~)$)/.test(path.basename(testPath));"},{"lineNumber":401,"author":{"gitId":"-"},"content":" }"},{"lineNumber":402,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":403,"author":{"gitId":"-"},"content":" if (options.ignore) {"},{"lineNumber":404,"author":{"gitId":"-"},"content":" ignored \u003d ignored.concat(options.ignore);"},{"lineNumber":405,"author":{"gitId":"-"},"content":" }"},{"lineNumber":406,"author":{"gitId":"-"},"content":" if (options.ignorePattern) {"},{"lineNumber":407,"author":{"gitId":"-"},"content":" ignored.push(options.ignorePattern);"},{"lineNumber":408,"author":{"gitId":"-"},"content":" }"},{"lineNumber":409,"author":{"gitId":"-"},"content":" // Setup file watcher"},{"lineNumber":410,"author":{"gitId":"-"},"content":" LiveServer.watcher \u003d chokidar.watch(watchPaths, {"},{"lineNumber":411,"author":{"gitId":"-"},"content":" ignored: ignored,"},{"lineNumber":412,"author":{"gitId":"-"},"content":" ignoreInitial: true"},{"lineNumber":413,"author":{"gitId":"-"},"content":" });"},{"lineNumber":414,"author":{"gitId":"-"},"content":" function handleChange(changePath) {"},{"lineNumber":415,"author":{"gitId":"-"},"content":" var cssChange \u003d path.extname(changePath) \u003d\u003d\u003d \".css\" \u0026\u0026 !noCssInject;"},{"lineNumber":416,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003e\u003d 1) {"},{"lineNumber":417,"author":{"gitId":"-"},"content":" if (cssChange)"},{"lineNumber":418,"author":{"gitId":"-"},"content":" console.log(\"CSS change detected\".magenta, changePath);"},{"lineNumber":419,"author":{"gitId":"-"},"content":" else console.log(\"Change detected\".cyan, changePath);"},{"lineNumber":420,"author":{"gitId":"-"},"content":" }"},{"lineNumber":421,"author":{"gitId":"-"},"content":""},{"lineNumber":422,"author":{"gitId":"-"},"content":" // CHANGED: Modified the send message to clients routine"},{"lineNumber":423,"author":{"gitId":"-"},"content":""},{"lineNumber":424,"author":{"gitId":"-"},"content":" if (cssChange) {"},{"lineNumber":425,"author":{"gitId":"-"},"content":" LiveServer.sendMessageToActiveTabs(\u0027refreshcss\u0027);"},{"lineNumber":426,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":427,"author":{"gitId":"-"},"content":" }"},{"lineNumber":428,"author":{"gitId":"-"},"content":""},{"lineNumber":429,"author":{"gitId":"-"},"content":" // Only reload active tabs if the changed file is opened in one of them"},{"lineNumber":430,"author":{"gitId":"-"},"content":" const normalizeUrl \u003d (url) \u003d\u003e {"},{"lineNumber":431,"author":{"gitId":"-"},"content":" if (!url || url.length \u003d\u003d\u003d 0) {"},{"lineNumber":432,"author":{"gitId":"-"},"content":" return \"index.html\";"},{"lineNumber":433,"author":{"gitId":"-"},"content":" }"},{"lineNumber":434,"author":{"gitId":"-"},"content":""},{"lineNumber":435,"author":{"gitId":"-"},"content":" if (path.extname(url) \u003d\u003d\u003d \u0027.html\u0027) {"},{"lineNumber":436,"author":{"gitId":"-"},"content":" return url;"},{"lineNumber":437,"author":{"gitId":"-"},"content":" }"},{"lineNumber":438,"author":{"gitId":"-"},"content":""},{"lineNumber":439,"author":{"gitId":"-"},"content":" return path.posix.join(url, \u0027index.html\u0027);"},{"lineNumber":440,"author":{"gitId":"-"},"content":" };"},{"lineNumber":441,"author":{"gitId":"-"},"content":""},{"lineNumber":442,"author":{"gitId":"-"},"content":" let normalizedPath \u003d fsUtil.ensurePosix(path.relative(root, changePath));"},{"lineNumber":443,"author":{"gitId":"-"},"content":" if (LiveServer.activeTabs.some(tab \u003d\u003e tab.client \u0026\u0026 normalizeUrl(tab.url) \u003d\u003d\u003d normalizedPath)) {"},{"lineNumber":444,"author":{"gitId":"-"},"content":" LiveServer.sendMessageToActiveTabs(\u0027reload\u0027);"},{"lineNumber":445,"author":{"gitId":"-"},"content":" }"},{"lineNumber":446,"author":{"gitId":"-"},"content":" }"},{"lineNumber":447,"author":{"gitId":"-"},"content":" LiveServer.watcher"},{"lineNumber":448,"author":{"gitId":"-"},"content":" .on(\"change\", handleChange)"},{"lineNumber":449,"author":{"gitId":"-"},"content":" .on(\"add\", handleChange)"},{"lineNumber":450,"author":{"gitId":"-"},"content":" .on(\"unlink\", handleChange)"},{"lineNumber":451,"author":{"gitId":"-"},"content":" .on(\"addDir\", handleChange)"},{"lineNumber":452,"author":{"gitId":"-"},"content":" .on(\"unlinkDir\", handleChange)"},{"lineNumber":453,"author":{"gitId":"-"},"content":" .on(\"ready\", function () {"},{"lineNumber":454,"author":{"gitId":"-"},"content":" if (LiveServer.logLevel \u003e\u003d 1)"},{"lineNumber":455,"author":{"gitId":"-"},"content":" console.log(\"Ready for changes\".cyan);"},{"lineNumber":456,"author":{"gitId":"-"},"content":" })"},{"lineNumber":457,"author":{"gitId":"-"},"content":" .on(\"error\", function (err) {"},{"lineNumber":458,"author":{"gitId":"-"},"content":" console.log(\"ERROR:\".red, err);"},{"lineNumber":459,"author":{"gitId":"-"},"content":" });"},{"lineNumber":460,"author":{"gitId":"-"},"content":""},{"lineNumber":461,"author":{"gitId":"-"},"content":" return server;"},{"lineNumber":462,"author":{"gitId":"-"},"content":"};"},{"lineNumber":463,"author":{"gitId":"-"},"content":""},{"lineNumber":464,"author":{"gitId":"-"},"content":"LiveServer.shutdown \u003d function() {"},{"lineNumber":465,"author":{"gitId":"-"},"content":" var watcher \u003d LiveServer.watcher;"},{"lineNumber":466,"author":{"gitId":"-"},"content":" if (watcher) {"},{"lineNumber":467,"author":{"gitId":"-"},"content":" watcher.close();"},{"lineNumber":468,"author":{"gitId":"-"},"content":" }"},{"lineNumber":469,"author":{"gitId":"-"},"content":" var server \u003d LiveServer.server;"},{"lineNumber":470,"author":{"gitId":"-"},"content":" if (server)"},{"lineNumber":471,"author":{"gitId":"-"},"content":" server.close();"},{"lineNumber":472,"author":{"gitId":"-"},"content":"};"},{"lineNumber":473,"author":{"gitId":"-"},"content":""},{"lineNumber":474,"author":{"gitId":"-"},"content":"// CHANGED: Added method to retrieve current active urls"},{"lineNumber":475,"author":{"gitId":"-"},"content":"LiveServer.getActiveUrls \u003d () \u003d\u003e LiveServer.activeTabs.filter(tab \u003d\u003e tab.client).map(tab \u003d\u003e tab.url);"},{"lineNumber":476,"author":{"gitId":"-"},"content":""},{"lineNumber":477,"author":{"gitId":"-"},"content":"// CHANGED: Added method to send message to active tabs"},{"lineNumber":478,"author":{"gitId":"-"},"content":"LiveServer.sendMessageToActiveTabs \u003d (msg) \u003d\u003e {"},{"lineNumber":479,"author":{"gitId":"-"},"content":" LiveServer.activeTabs.forEach((tab) \u003d\u003e {"},{"lineNumber":480,"author":{"gitId":"-"},"content":" if (tab.client) {"},{"lineNumber":481,"author":{"gitId":"-"},"content":" const client \u003d tab.client;"},{"lineNumber":482,"author":{"gitId":"-"},"content":" if (msg \u003d\u003d\u003d \u0027reload\u0027) {"},{"lineNumber":483,"author":{"gitId":"-"},"content":" // Clear the client from the entry to be refilled in the socket establishment phase after reload"},{"lineNumber":484,"author":{"gitId":"-"},"content":" tab.client \u003d undefined;"},{"lineNumber":485,"author":{"gitId":"-"},"content":" }"},{"lineNumber":486,"author":{"gitId":"-"},"content":" client.send(msg);"},{"lineNumber":487,"author":{"gitId":"-"},"content":" }"},{"lineNumber":488,"author":{"gitId":"-"},"content":" });"},{"lineNumber":489,"author":{"gitId":"-"},"content":"}"},{"lineNumber":490,"author":{"gitId":"-"},"content":""},{"lineNumber":491,"author":{"gitId":"-"},"content":"// CHANGED: Added convenience method to reload all active tabs"},{"lineNumber":492,"author":{"gitId":"-"},"content":"LiveServer.reloadActiveTabs \u003d () \u003d\u003e LiveServer.sendMessageToActiveTabs(\u0027reload\u0027);"},{"lineNumber":493,"author":{"gitId":"-"},"content":""},{"lineNumber":494,"author":{"gitId":"-"},"content":"module.exports \u003d LiveServer;"}],"authorContributionMap":{"LamJiuFong":12,"-":482}},{"path":"packages/cli/test/functional/test_site/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/cli/test/functional/test_site/expected/siteData.json","fileType":"json","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"{"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \"enableSearch\": true,"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"pages\": ["},{"lineNumber":4,"author":{"gitId":"-"},"content":" {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \"src\": \"bugs/index.md\","},{"lineNumber":6,"author":{"gitId":"-"},"content":" \"title\": \"Open Bugs\","},{"lineNumber":7,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":9,"author":{"gitId":"-"},"content":" },"},{"lineNumber":10,"author":{"gitId":"-"},"content":" {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \"src\": \"index.md\","},{"lineNumber":12,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"panel-with-heading\": \"Panel with heading\","},{"lineNumber":15,"author":{"gitId":"-"},"content":" \"panel-without-heading-with-keyword\": \"Panel without heading with keyword\","},{"lineNumber":16,"author":{"gitId":"-"},"content":" \"panel-with-heading-with-keyword\": \"Panel with heading with keyword\","},{"lineNumber":17,"author":{"gitId":"-"},"content":" \"panel-without-src-header\": \"Panel without src header\","},{"lineNumber":18,"author":{"gitId":"-"},"content":" \"panel-with-normal-src-header\": \"Panel with normal src header\","},{"lineNumber":19,"author":{"gitId":"-"},"content":" \"panel-with-src-from-a-page-segment-header\": \"Panel with src from a page segment header\","},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"boilerplate-referencing\": \"Boilerplate referencing\","},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"boilerplate-referencing-2\": \"Boilerplate referencing 2\","},{"lineNumber":22,"author":{"gitId":"-"},"content":" \"referencing-specified-path-in-boilerplate\": \"Referencing specified path in boilerplate\","},{"lineNumber":23,"author":{"gitId":"-"},"content":" \"outer-nested-panel\": \"Outer nested panel\","},{"lineNumber":24,"author":{"gitId":"-"},"content":" \"outer-nested-panel-without-src\": \"Outer nested panel without src\","},{"lineNumber":25,"author":{"gitId":"-"},"content":" \"panel-with-src-from-another-markbind-site-header\": \"Panel with src from another MarkBind site header\","},{"lineNumber":26,"author":{"gitId":"-"},"content":" \"panel-with-src-from-another-markbind-site-header-2\": \"Panel with src from another MarkBind site header\","},{"lineNumber":27,"author":{"gitId":"-"},"content":" \"unexpanded-panel-header\": \"Unexpanded panel header\","},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"keyword-should-be-tagged-to-this-heading-not-the-panel-heading\": \"Keyword should be tagged to this heading, not the panel heading\","},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"panel-normal-source-content-headings\": \"Panel normal source content headings\","},{"lineNumber":30,"author":{"gitId":"-"},"content":" \"panel-source-segment-content-headings\": \"Panel source segment content headings\","},{"lineNumber":31,"author":{"gitId":"-"},"content":" \"boilerplate-test-for-panel-heading\": \"boilerplate test for panel heading\","},{"lineNumber":32,"author":{"gitId":"-"},"content":" \"heading-in-panel-boilerplate\": \"heading in panel boilerplate\","},{"lineNumber":33,"author":{"gitId":"-"},"content":" \"nested-panel\": \"Nested Panel\","},{"lineNumber":34,"author":{"gitId":"-"},"content":" \"normal-panel-content-heading\": \"Normal panel content heading\","},{"lineNumber":35,"author":{"gitId":"-"},"content":" \"inner-panel-header-without-src\": \"Inner panel header without src\","},{"lineNumber":36,"author":{"gitId":"-"},"content":" \"feature-list\": \"Feature list\","},{"lineNumber":37,"author":{"gitId":"-"},"content":" \"heading-with-multiple-keywords\": \"Heading with multiple keywords\","},{"lineNumber":38,"author":{"gitId":"-"},"content":" \"heading-with-keyword-in-panel\": \"Heading with keyword in panel\","},{"lineNumber":39,"author":{"gitId":"-"},"content":" \"heading-fragment-with-leading-spaces-and-newline\": \"Heading \\nFragment with leading spaces and newline\\n\","},{"lineNumber":40,"author":{"gitId":"-"},"content":" \"heading-with-included-keyword\": \"Heading with included keyword\","},{"lineNumber":41,"author":{"gitId":"-"},"content":" \"included-heading\": \"Included Heading\","},{"lineNumber":42,"author":{"gitId":"-"},"content":" \"heading-with-nested-keyword\": \"Heading with nested keyword\","},{"lineNumber":43,"author":{"gitId":"-"},"content":" \"heading-with-hidden-keyword\": \"Heading with hidden keyword\","},{"lineNumber":44,"author":{"gitId":"-"},"content":" \"establishing-requirements\": \"Establishing Requirements\","},{"lineNumber":45,"author":{"gitId":"-"},"content":" \"brainstorming\": \"Brainstorming\","},{"lineNumber":46,"author":{"gitId":"-"},"content":" \"user-surveys\": \"User surveys\","},{"lineNumber":47,"author":{"gitId":"-"},"content":" \"focus-groups\": \"Focus groups\","},{"lineNumber":48,"author":{"gitId":"-"},"content":" \"path-within-the-boilerplate-folder-is-separately-specified\": \"Path within the boilerplate folder is separately specified\","},{"lineNumber":49,"author":{"gitId":"-"},"content":" \"level-6-header-outside-headingsearchindex-with-always-index-attribute-should-be-indexed\": \"Level 6 header (outside headingSearchIndex) with always-index attribute should be indexed\""},{"lineNumber":50,"author":{"gitId":"-"},"content":" },"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \"headingKeywords\": {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \"heading-with-keyword-in-panel\": ["},{"lineNumber":53,"author":{"gitId":"-"},"content":" \"panel keyword\""},{"lineNumber":54,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \"panel-with-heading\": ["},{"lineNumber":56,"author":{"gitId":"-"},"content":" \"panel keyword\""},{"lineNumber":57,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \"keyword-should-be-tagged-to-this-heading-not-the-panel-heading\": ["},{"lineNumber":59,"author":{"gitId":"-"},"content":" \"panel keyword\""},{"lineNumber":60,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \"panel-with-heading-with-keyword\": ["},{"lineNumber":62,"author":{"gitId":"-"},"content":" \"panel keyword\""},{"lineNumber":63,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \"heading-with-multiple-keywords\": ["},{"lineNumber":65,"author":{"gitId":"-"},"content":" \"keyword 1\","},{"lineNumber":66,"author":{"gitId":"-"},"content":" \"keyword 2\""},{"lineNumber":67,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \"heading-with-included-keyword\": ["},{"lineNumber":69,"author":{"gitId":"-"},"content":" \"included keyword\""},{"lineNumber":70,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \"included-heading\": ["},{"lineNumber":72,"author":{"gitId":"-"},"content":" \"Keyword with included heading\""},{"lineNumber":73,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \"heading-with-nested-keyword\": ["},{"lineNumber":75,"author":{"gitId":"-"},"content":" \"nested keyword\""},{"lineNumber":76,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \"heading-with-hidden-keyword\": ["},{"lineNumber":78,"author":{"gitId":"-"},"content":" \"invisible keyword\""},{"lineNumber":79,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":" },"},{"lineNumber":82,"author":{"gitId":"-"},"content":" {"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \"src\": \"sub_site/index.md\","},{"lineNumber":84,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":85,"author":{"gitId":"-"},"content":" \"feature-list\": \"Feature list\""},{"lineNumber":86,"author":{"gitId":"-"},"content":" },"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":88,"author":{"gitId":"-"},"content":" },"},{"lineNumber":89,"author":{"gitId":"-"},"content":" {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \"src\": \"sub_site/nested_sub_site/index.md\","},{"lineNumber":91,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":93,"author":{"gitId":"-"},"content":" },"},{"lineNumber":94,"author":{"gitId":"-"},"content":" {"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \"src\": \"test_md_fragment.md\","},{"lineNumber":96,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \"some-heading\": \"Some heading\""},{"lineNumber":98,"author":{"gitId":"-"},"content":" },"},{"lineNumber":99,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":100,"author":{"gitId":"-"},"content":" },"},{"lineNumber":101,"author":{"gitId":"-"},"content":" {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \"src\": \"testEmptyFrontmatter.md\","},{"lineNumber":103,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":104,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":106,"author":{"gitId":"-"},"content":" },"},{"lineNumber":107,"author":{"gitId":"-"},"content":" {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \"src\": \"testLayoutsOverride.md\","},{"lineNumber":109,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":110,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":112,"author":{"gitId":"-"},"content":" },"},{"lineNumber":113,"author":{"gitId":"-"},"content":" {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \"src\": \"testEmptyAltFrontMatter.md\","},{"lineNumber":115,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":116,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":118,"author":{"gitId":"-"},"content":" },"},{"lineNumber":119,"author":{"gitId":"-"},"content":" {"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \"src\": \"testLayoutsOverrideWithAltFrontmatter.md\","},{"lineNumber":121,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":122,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":124,"author":{"gitId":"-"},"content":" },"},{"lineNumber":125,"author":{"gitId":"-"},"content":" {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \"src\": \"testAltFrontMatterInvalidKeyValue.md\","},{"lineNumber":127,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":128,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":130,"author":{"gitId":"-"},"content":" },"},{"lineNumber":131,"author":{"gitId":"-"},"content":" {"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \"src\": \"testSingleAltFrontMatter.md\","},{"lineNumber":133,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":134,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":136,"author":{"gitId":"-"},"content":" },"},{"lineNumber":137,"author":{"gitId":"-"},"content":" {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \"src\": \"testAltFrontMatterParsing.md\","},{"lineNumber":139,"author":{"gitId":"-"},"content":" \"title\": \"new title\","},{"lineNumber":140,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":142,"author":{"gitId":"-"},"content":" },"},{"lineNumber":143,"author":{"gitId":"-"},"content":" {"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \"src\": \"testExternalScripts.md\","},{"lineNumber":145,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":146,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":148,"author":{"gitId":"-"},"content":" },"},{"lineNumber":149,"author":{"gitId":"-"},"content":" {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" \"src\": \"testLayouts.md\","},{"lineNumber":151,"author":{"gitId":"-"},"content":" \"title\": \"Test nunjucks path resolving\","},{"lineNumber":152,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":153,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":154,"author":{"gitId":"-"},"content":" },"},{"lineNumber":155,"author":{"gitId":"-"},"content":" {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" \"src\": \"testLayoutsWithAltFrontMatter.md\","},{"lineNumber":157,"author":{"gitId":"-"},"content":" \"title\": \"Test nunjucks path resolving\","},{"lineNumber":158,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":159,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":160,"author":{"gitId":"-"},"content":" },"},{"lineNumber":161,"author":{"gitId":"-"},"content":" {"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \"src\": \"testNunjucksPathResolving.md\","},{"lineNumber":163,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":164,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":166,"author":{"gitId":"-"},"content":" },"},{"lineNumber":167,"author":{"gitId":"-"},"content":" {"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \"src\": \"sub_site/testNunjucksPathResolving.md\","},{"lineNumber":169,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":170,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":171,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":172,"author":{"gitId":"-"},"content":" },"},{"lineNumber":173,"author":{"gitId":"-"},"content":" {"},{"lineNumber":174,"author":{"gitId":"-"},"content":" \"src\": \"sub_site/nested_sub_site/testNunjucksPathResolving.md\","},{"lineNumber":175,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":176,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":177,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":178,"author":{"gitId":"-"},"content":" },"},{"lineNumber":179,"author":{"gitId":"-"},"content":" {"},{"lineNumber":180,"author":{"gitId":"-"},"content":" \"src\": \"testAntiFOUCStyles.md\","},{"lineNumber":181,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":182,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":183,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":184,"author":{"gitId":"-"},"content":" },"},{"lineNumber":185,"author":{"gitId":"-"},"content":" {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" \"src\": \"testAnchorGeneration.md\","},{"lineNumber":187,"author":{"gitId":"-"},"content":" \"title\": \"Anchor Generation Test\","},{"lineNumber":188,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \"should-have-anchor-7\": \"should have anchor\","},{"lineNumber":190,"author":{"gitId":"-"},"content":" \"should-have-anchor-20\": \"should have anchor\","},{"lineNumber":191,"author":{"gitId":"-"},"content":" \"should-have-anchor-8\": \"should have anchor\","},{"lineNumber":192,"author":{"gitId":"-"},"content":" \"should-have-anchor-9\": \"should have anchor\","},{"lineNumber":193,"author":{"gitId":"-"},"content":" \"should-have-anchor-10\": \"should have anchor\","},{"lineNumber":194,"author":{"gitId":"-"},"content":" \"should-have-anchor-11\": \"should have anchor\","},{"lineNumber":195,"author":{"gitId":"-"},"content":" \"should-have-anchor-21\": \"should have anchor\","},{"lineNumber":196,"author":{"gitId":"-"},"content":" \"should-have-anchor-22\": \"should have anchor\","},{"lineNumber":197,"author":{"gitId":"-"},"content":" \"should-have-anchor-23\": \"should have anchor\","},{"lineNumber":198,"author":{"gitId":"-"},"content":" \"should-have-anchor-24\": \"should have anchor\","},{"lineNumber":199,"author":{"gitId":"-"},"content":" \"root-file\": \"Root file\","},{"lineNumber":200,"author":{"gitId":"-"},"content":" \"should-have-anchor\": \"should have anchor\","},{"lineNumber":201,"author":{"gitId":"-"},"content":" \"should-have-anchor-2\": \"should have anchor\","},{"lineNumber":202,"author":{"gitId":"-"},"content":" \"should-have-anchor-3\": \"should have anchor\","},{"lineNumber":203,"author":{"gitId":"-"},"content":" \"should-have-anchor-4\": \"should have anchor\","},{"lineNumber":204,"author":{"gitId":"-"},"content":" \"included-file\": \"Included File\","},{"lineNumber":205,"author":{"gitId":"-"},"content":" \"should-have-anchor-14\": \"should have anchor\","},{"lineNumber":206,"author":{"gitId":"-"},"content":" \"should-have-anchor-15\": \"should have anchor\","},{"lineNumber":207,"author":{"gitId":"-"},"content":" \"should-have-anchor-16\": \"should have anchor\","},{"lineNumber":208,"author":{"gitId":"-"},"content":" \"should-have-anchor-17\": \"should have anchor\""},{"lineNumber":209,"author":{"gitId":"-"},"content":" },"},{"lineNumber":210,"author":{"gitId":"-"},"content":" \"headingKeywords\": {},"},{"lineNumber":211,"author":{"gitId":"-"},"content":" \"frontmatterKeywords\": \"testFrontmatterKeywords\""},{"lineNumber":212,"author":{"gitId":"-"},"content":" },"},{"lineNumber":213,"author":{"gitId":"-"},"content":" {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" \"src\": \"testAnnotate.md\","},{"lineNumber":215,"author":{"gitId":"-"},"content":" \"title\": \"Annotate Feature Test\","},{"lineNumber":216,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":217,"author":{"gitId":"-"},"content":" \"content\": \"Content\""},{"lineNumber":218,"author":{"gitId":"-"},"content":" },"},{"lineNumber":219,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":220,"author":{"gitId":"-"},"content":" },"},{"lineNumber":221,"author":{"gitId":"-"},"content":" {"},{"lineNumber":222,"author":{"gitId":"-"},"content":" \"src\": \"testTooltipSpacing.md\","},{"lineNumber":223,"author":{"gitId":"-"},"content":" \"title\": \"Tooltip Spacing Test\","},{"lineNumber":224,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":225,"author":{"gitId":"-"},"content":" \"569-stray-space-after-tooltip\": \"569: Stray space after tooltip\""},{"lineNumber":226,"author":{"gitId":"-"},"content":" },"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":228,"author":{"gitId":"-"},"content":" },"},{"lineNumber":229,"author":{"gitId":"-"},"content":" {"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \"src\": \"testThumbnails.md\","},{"lineNumber":231,"author":{"gitId":"-"},"content":" \"title\": \"Thumbnails Test\","},{"lineNumber":232,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":233,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":234,"author":{"gitId":"-"},"content":" },"},{"lineNumber":235,"author":{"gitId":"-"},"content":" {"},{"lineNumber":236,"author":{"gitId":"-"},"content":" \"src\": \"testPlantUML.md\","},{"lineNumber":237,"author":{"gitId":"-"},"content":" \"title\": \"PlantUML Test\","},{"lineNumber":238,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":239,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":240,"author":{"gitId":"-"},"content":" },"},{"lineNumber":241,"author":{"gitId":"-"},"content":" {"},{"lineNumber":242,"author":{"gitId":"-"},"content":" \"src\": \"testCodeBlocks.md\","},{"lineNumber":243,"author":{"gitId":"-"},"content":" \"title\": \"Test: Code Blocks\","},{"lineNumber":244,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":245,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":246,"author":{"gitId":"-"},"content":" },"},{"lineNumber":247,"author":{"gitId":"-"},"content":" {"},{"lineNumber":248,"author":{"gitId":"-"},"content":" \"src\": \"testIncludePluginsRendered.md\","},{"lineNumber":249,"author":{"gitId":"-"},"content":" \"title\": \"Included files should have plugins rendered on them\","},{"lineNumber":250,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":252,"author":{"gitId":"-"},"content":" },"},{"lineNumber":253,"author":{"gitId":"-"},"content":" {"},{"lineNumber":254,"author":{"gitId":"-"},"content":" \"src\": \"testIncludeMultipleModals.md\","},{"lineNumber":255,"author":{"gitId":"-"},"content":" \"title\": \"Multiple inclusions of a modal should be supported\","},{"lineNumber":256,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":257,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":258,"author":{"gitId":"-"},"content":" },"},{"lineNumber":259,"author":{"gitId":"-"},"content":" {"},{"lineNumber":260,"author":{"gitId":"-"},"content":" \"src\": \"testPopovers.md\","},{"lineNumber":261,"author":{"gitId":"-"},"content":" \"title\": \"Test: Popovers\","},{"lineNumber":262,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":263,"author":{"gitId":"-"},"content":" \"nested-panel\": \"Nested Panel\","},{"lineNumber":264,"author":{"gitId":"-"},"content":" \"normal-panel-content-heading\": \"Normal panel content heading\","},{"lineNumber":265,"author":{"gitId":"-"},"content":" \"some-heading\": \"Some heading\","},{"lineNumber":266,"author":{"gitId":"-"},"content":" \"some-heading-2\": \"Some heading\""},{"lineNumber":267,"author":{"gitId":"-"},"content":" },"},{"lineNumber":268,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":269,"author":{"gitId":"-"},"content":" },"},{"lineNumber":270,"author":{"gitId":"-"},"content":" {"},{"lineNumber":271,"author":{"gitId":"-"},"content":" \"src\": \"testPopoverTrigger.md\","},{"lineNumber":272,"author":{"gitId":"-"},"content":" \"title\": \"Popover initiated by trigger should honor trigger attribute\","},{"lineNumber":273,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":274,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":275,"author":{"gitId":"-"},"content":" },"},{"lineNumber":276,"author":{"gitId":"-"},"content":" {"},{"lineNumber":277,"author":{"gitId":"-"},"content":" \"src\": \"testModals.md\","},{"lineNumber":278,"author":{"gitId":"-"},"content":" \"title\": \"Test: Modals\","},{"lineNumber":279,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":280,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":281,"author":{"gitId":"-"},"content":" },"},{"lineNumber":282,"author":{"gitId":"-"},"content":" {"},{"lineNumber":283,"author":{"gitId":"-"},"content":" \"src\": \"testDates.md\","},{"lineNumber":284,"author":{"gitId":"-"},"content":" \"title\": \"Nunjucks date filter tests\","},{"lineNumber":285,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":286,"author":{"gitId":"-"},"content":" \"dates\": \"Dates\""},{"lineNumber":287,"author":{"gitId":"-"},"content":" },"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":289,"author":{"gitId":"-"},"content":" },"},{"lineNumber":290,"author":{"gitId":"-"},"content":" {"},{"lineNumber":291,"author":{"gitId":"-"},"content":" \"src\": \"testVariableContainsInclude.md\","},{"lineNumber":292,"author":{"gitId":"-"},"content":" \"title\": \"Variable should be able to store included content fragments\","},{"lineNumber":293,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":294,"author":{"gitId":"-"},"content":" \"content-fragment\": \"content fragment\""},{"lineNumber":295,"author":{"gitId":"-"},"content":" },"},{"lineNumber":296,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":297,"author":{"gitId":"-"},"content":" },"},{"lineNumber":298,"author":{"gitId":"-"},"content":" {"},{"lineNumber":299,"author":{"gitId":"-"},"content":" \"src\": \"testIncludeBoilerplate.md\","},{"lineNumber":300,"author":{"gitId":"-"},"content":" \"title\": \"Content inside \u003cinclude\u003e should not be processed by markdown\","},{"lineNumber":301,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":302,"author":{"gitId":"-"},"content":" \"hello\": \"hello\""},{"lineNumber":303,"author":{"gitId":"-"},"content":" },"},{"lineNumber":304,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":305,"author":{"gitId":"-"},"content":" },"},{"lineNumber":306,"author":{"gitId":"-"},"content":" {"},{"lineNumber":307,"author":{"gitId":"-"},"content":" \"src\": \"testPanels.md\","},{"lineNumber":308,"author":{"gitId":"-"},"content":" \"title\": \"Test: Panels\","},{"lineNumber":309,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":310,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":311,"author":{"gitId":"-"},"content":" },"},{"lineNumber":312,"author":{"gitId":"-"},"content":" {"},{"lineNumber":313,"author":{"gitId":"-"},"content":" \"src\": \"testPanelMarkdownParsing.md\","},{"lineNumber":314,"author":{"gitId":"-"},"content":" \"title\": \"markdown-it should parse minimized panel as inline element and normal panel as block element\","},{"lineNumber":315,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":316,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":317,"author":{"gitId":"-"},"content":" },"},{"lineNumber":318,"author":{"gitId":"-"},"content":" {"},{"lineNumber":319,"author":{"gitId":"-"},"content":" \"src\": \"testCenterText.md\","},{"lineNumber":320,"author":{"gitId":"-"},"content":" \"title\": \"Center-aligned text test\","},{"lineNumber":321,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":322,"author":{"gitId":"-"},"content":" \"center-text\": \"Center Text\""},{"lineNumber":323,"author":{"gitId":"-"},"content":" },"},{"lineNumber":324,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":325,"author":{"gitId":"-"},"content":" },"},{"lineNumber":326,"author":{"gitId":"-"},"content":" {"},{"lineNumber":327,"author":{"gitId":"-"},"content":" \"src\": \"testHr.md\","},{"lineNumber":328,"author":{"gitId":"-"},"content":" \"title\": \"create different types of horizontal rules\","},{"lineNumber":329,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":330,"author":{"gitId":"-"},"content":" \"different-types-of-horizontal-rules\": \"Different types of horizontal rules\""},{"lineNumber":331,"author":{"gitId":"-"},"content":" },"},{"lineNumber":332,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":333,"author":{"gitId":"-"},"content":" },"},{"lineNumber":334,"author":{"gitId":"-"},"content":" {"},{"lineNumber":335,"author":{"gitId":"-"},"content":" \"src\": \"testPageNav.md\","},{"lineNumber":336,"author":{"gitId":"-"},"content":" \"title\": \"text interpolation should be skipped appropriately\","},{"lineNumber":337,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":338,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":339,"author":{"gitId":"-"},"content":" },"},{"lineNumber":340,"author":{"gitId":"-"},"content":" {"},{"lineNumber":341,"author":{"gitId":"-"},"content":" \"src\": \"testPanelsClosingTransition.md\","},{"lineNumber":342,"author":{"gitId":"-"},"content":" \"title\": \"Test: Panels closing transition\","},{"lineNumber":343,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":344,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":345,"author":{"gitId":"-"},"content":" },"},{"lineNumber":346,"author":{"gitId":"-"},"content":" {"},{"lineNumber":347,"author":{"gitId":"-"},"content":" \"src\": \"testLinks.md\","},{"lineNumber":348,"author":{"gitId":"-"},"content":" \"title\": \"Autolink tests\","},{"lineNumber":349,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":350,"author":{"gitId":"-"},"content":" \"autolinks\": \"Autolinks\""},{"lineNumber":351,"author":{"gitId":"-"},"content":" },"},{"lineNumber":352,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":353,"author":{"gitId":"-"},"content":" },"},{"lineNumber":354,"author":{"gitId":"-"},"content":" {"},{"lineNumber":355,"author":{"gitId":"-"},"content":" \"src\": \"testTree.md\","},{"lineNumber":356,"author":{"gitId":"-"},"content":" \"title\": \"Tree tests\","},{"lineNumber":357,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":358,"author":{"gitId":"-"},"content":" \"tree\": \"Tree\","},{"lineNumber":359,"author":{"gitId":"-"},"content":" \"single-tree\": \"Single Tree\","},{"lineNumber":360,"author":{"gitId":"-"},"content":" \"multiple-tree\": \"Multiple Tree\","},{"lineNumber":361,"author":{"gitId":"-"},"content":" \"inline-markdown\": \"Inline Markdown\""},{"lineNumber":362,"author":{"gitId":"-"},"content":" },"},{"lineNumber":363,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":364,"author":{"gitId":"-"},"content":" },"},{"lineNumber":365,"author":{"gitId":"-"},"content":" {"},{"lineNumber":366,"author":{"gitId":"-"},"content":" \"src\": \"testMath.md\","},{"lineNumber":367,"author":{"gitId":"-"},"content":" \"title\": \"Math formulae should be displayed correctly, with additional plugin\","},{"lineNumber":368,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":369,"author":{"gitId":"-"},"content":" \"math-formulae\": \"Math Formulae\","},{"lineNumber":370,"author":{"gitId":"-"},"content":" \"markbind-supports-typesetting-tex-math-equations\": \"Markbind supports typesetting TeX math equations\","},{"lineNumber":371,"author":{"gitId":"-"},"content":" \"additional-delimiters-can-be-used-if-mathdelimiters-plugin-is-enabled\": \"Additional delimiters can be used if mathDelimiters plugin is enabled\""},{"lineNumber":372,"author":{"gitId":"-"},"content":" },"},{"lineNumber":373,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":374,"author":{"gitId":"-"},"content":" },"},{"lineNumber":375,"author":{"gitId":"-"},"content":" {"},{"lineNumber":376,"author":{"gitId":"-"},"content":" \"src\": \"testImages.md\","},{"lineNumber":377,"author":{"gitId":"-"},"content":" \"title\": \"Rendering of images according to specified dimension and auto-linkify ability\","},{"lineNumber":378,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":379,"author":{"gitId":"-"},"content":" \"images\": \"Images\","},{"lineNumber":380,"author":{"gitId":"-"},"content":" \"alt\": \"Alt\","},{"lineNumber":381,"author":{"gitId":"-"},"content":" \"dimension\": \"Dimension\","},{"lineNumber":382,"author":{"gitId":"-"},"content":" \"linkify\": \"Linkify\""},{"lineNumber":383,"author":{"gitId":"-"},"content":" },"},{"lineNumber":384,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":385,"author":{"gitId":"-"},"content":" },"},{"lineNumber":386,"author":{"gitId":"-"},"content":" {"},{"lineNumber":387,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavTarget.md\","},{"lineNumber":388,"author":{"gitId":"-"},"content":" \"title\": \"Bootstrap scrollspy related classes should be applied only if there are navigable headings\","},{"lineNumber":389,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":390,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":391,"author":{"gitId":"-"},"content":" },"},{"lineNumber":392,"author":{"gitId":"-"},"content":" {"},{"lineNumber":393,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavWithoutTitleAndNavHeadings.md\","},{"lineNumber":394,"author":{"gitId":"-"},"content":" \"title\": \"page nav separator should be omitted when there is no title and navigation headings added\","},{"lineNumber":395,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":396,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":397,"author":{"gitId":"-"},"content":" },"},{"lineNumber":398,"author":{"gitId":"-"},"content":" {"},{"lineNumber":399,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavWithOnlyTitle.md\","},{"lineNumber":400,"author":{"gitId":"-"},"content":" \"title\": \"page nav with title added\","},{"lineNumber":401,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":402,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":403,"author":{"gitId":"-"},"content":" },"},{"lineNumber":404,"author":{"gitId":"-"},"content":" {"},{"lineNumber":405,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavPrint.md\","},{"lineNumber":406,"author":{"gitId":"-"},"content":" \"title\": \"printing page nav\","},{"lineNumber":407,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":408,"author":{"gitId":"-"},"content":" \"h1\": \"H1\","},{"lineNumber":409,"author":{"gitId":"-"},"content":" \"h2\": \"H2\""},{"lineNumber":410,"author":{"gitId":"-"},"content":" },"},{"lineNumber":411,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":412,"author":{"gitId":"-"},"content":" },"},{"lineNumber":413,"author":{"gitId":"-"},"content":" {"},{"lineNumber":414,"author":{"gitId":"-"},"content":" \"src\": \"testWeb3FormPlugin.md\","},{"lineNumber":415,"author":{"gitId":"-"},"content":" \"title\": \"web 3 forms\","},{"lineNumber":416,"author":{"gitId":"-"},"content":" \"headings\": {"},{"lineNumber":417,"author":{"gitId":"-"},"content":" \"i-am-a-header\": \"🚀 I am a header\""},{"lineNumber":418,"author":{"gitId":"-"},"content":" },"},{"lineNumber":419,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":420,"author":{"gitId":"-"},"content":" },"},{"lineNumber":421,"author":{"gitId":"-"},"content":" {"},{"lineNumber":422,"author":{"gitId":"-"},"content":" \"src\": \"testList.md\","},{"lineNumber":423,"author":{"gitId":"-"},"content":" \"title\": \"web 3 forms\","},{"lineNumber":424,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":425,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":426,"author":{"gitId":"-"},"content":" },"},{"lineNumber":427,"author":{"gitId":"-"},"content":" {"},{"lineNumber":428,"author":{"gitId":"-"},"content":" \"src\": \"testFontAwesomeInPage.md\","},{"lineNumber":429,"author":{"gitId":"-"},"content":" \"title\": \"font-awesome icon in page, only font-awesome stylesheet should be loaded\","},{"lineNumber":430,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":431,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":432,"author":{"gitId":"-"},"content":" },"},{"lineNumber":433,"author":{"gitId":"-"},"content":" {"},{"lineNumber":434,"author":{"gitId":"-"},"content":" \"src\": \"testGlyphiconInPage.md\","},{"lineNumber":435,"author":{"gitId":"-"},"content":" \"title\": \"glyphicon icon in page, only glyphicon stylesheet should be loaded\","},{"lineNumber":436,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":437,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":438,"author":{"gitId":"-"},"content":" },"},{"lineNumber":439,"author":{"gitId":"-"},"content":" {"},{"lineNumber":440,"author":{"gitId":"-"},"content":" \"src\": \"testMaterialIconsInPage.md\","},{"lineNumber":441,"author":{"gitId":"-"},"content":" \"title\": \"material-icons icon in page, only material-icons stylesheet should be loaded\","},{"lineNumber":442,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":443,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":444,"author":{"gitId":"-"},"content":" },"},{"lineNumber":445,"author":{"gitId":"-"},"content":" {"},{"lineNumber":446,"author":{"gitId":"-"},"content":" \"src\": \"testOcticonInPage.md\","},{"lineNumber":447,"author":{"gitId":"-"},"content":" \"title\": \"octicon icon in page, only octicon stylesheet should be loaded\","},{"lineNumber":448,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":449,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":450,"author":{"gitId":"-"},"content":" },"},{"lineNumber":451,"author":{"gitId":"-"},"content":" {"},{"lineNumber":452,"author":{"gitId":"-"},"content":" \"src\": \"testIconsInSiteLayout.md\","},{"lineNumber":453,"author":{"gitId":"-"},"content":" \"title\": \"glyphicon \u0026 octicon icon in page, only glyphicon \u0026 octicon stylesheets should be loaded\","},{"lineNumber":454,"author":{"gitId":"-"},"content":" \"headings\": {},"},{"lineNumber":455,"author":{"gitId":"-"},"content":" \"headingKeywords\": {}"},{"lineNumber":456,"author":{"gitId":"yiwen101"},"content":" },"},{"lineNumber":457,"author":{"gitId":"yiwen101"},"content":" {"},{"lineNumber":458,"author":{"gitId":"yiwen101"},"content":" \"src\": \"testSourceContainScript.md\","},{"lineNumber":459,"author":{"gitId":"yiwen101"},"content":" \"title\": \"Test: If source contains script or css, when included, the script or css should be included\","},{"lineNumber":460,"author":{"gitId":"yiwen101"},"content":" \"headings\": {"},{"lineNumber":461,"author":{"gitId":"yiwen101"},"content":" \"panel-with-src-that-contains-css-and-script-header\": \"Panel with src that contains css and script header\","},{"lineNumber":462,"author":{"gitId":"yiwen101"},"content":" \"h1-text\": \"\\n\\n\\n h1 text\\n \\n\""},{"lineNumber":463,"author":{"gitId":"yiwen101"},"content":" },"},{"lineNumber":464,"author":{"gitId":"yiwen101"},"content":" \"headingKeywords\": {}"},{"lineNumber":465,"author":{"gitId":"-"},"content":" }"},{"lineNumber":466,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":467,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":458,"yiwen101":9}},{"path":"packages/cli/test/functional/test_site/expected/testSourceContainScript.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"yiwen101"},"content":""},{"lineNumber":2,"author":{"gitId":"yiwen101"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"yiwen101"},"content":") {"},{"lineNumber":4,"author":{"gitId":"yiwen101"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027div\u0027,[_c(\u0027header\u0027,[_c(\u0027navbar\u0027,{attrs:{\"type\":\"dark\",\"default-highlight-on\":\"sibling-or-child\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/\",\"title\":\"Home\"}},[_v(\"MarkBind Test Site\")])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/test_site/bugs/index.html\"}},[_v(\"Open Bugs\")])])]),_v(\" \"),_m(0)],1),_v(\" \"),_m(1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_c(\u0027div\u0027,[_c(\u0027h2\u0027,{attrs:{\"id\":\"default-layout\"}},[_v(\"Default Layout\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#default-layout\",\"onclick\":\"event.stopPropagation()\"}})])])])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027div\u0027,[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_site/index.html\"}},[_v(\"Home 🏠\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_site/bugs/index.html\"}},[_v(\"Open Bugs 🐛\")])])]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_c(\u0027h3\u0027,{attrs:{\"id\":\"testing-site-nav\"}},[_v(\"Testing Site-Nav\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#testing-site-nav\",\"onclick\":\"event.stopPropagation()\"}})])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027strong\u0027,[_v(\"Dropdown \")]),_v(\" \"),_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-search\",attrs:{\"aria-hidden\":\"true\"}}),_v(\" title ✏️ \"),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon site-nav-rotate-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list\"},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_v(\"Dropdown link one\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_v(\"Html within site-nav \"),_c(\u0027span\u0027,{staticStyle:{\"color\":\"red\"}},[_v(\"should\")]),_v(\" be displayed properly\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_v(\"Nested Dropdown title 📐\\n\\n\"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-2\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_c(\u0027strong\u0027,[_v(\"Nested\")]),_v(\" Dropdown link one\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-2\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_c(\u0027strong\u0027,[_v(\"Nested\")]),_v(\" Dropdown link two\")])])])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_v(\"Dropdown link two\")])])])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_c(\u0027mark\u0027,[_v(\"Third Link\")]),_v(\" 📋\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_v(\"Filler text \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.youtube.com/\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-facetime-video\",attrs:{\"aria-hidden\":\"true\"}}),_v(\" Youtube 📺\")]),_v(\" filler text\"),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.youtube.com/watch?v\u003ddQw4w9WgXcQ\"}},[_v(\"The answer to everything in the universe\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027mark\u0027,[_v(\"Dropdown title\")]),_v(\" \"),_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-comment\",attrs:{\"aria-hidden\":\"true\"}}),_v(\" ✏️ \"),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon site-nav-rotate-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list\"},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-2\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"https://www.google.com/\"}},[_c(\u0027strong\u0027,[_v(\"Nested\")]),_v(\" Dropdown link one\")])])])])])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_v(\"Really Long Dropdown Title Really Long Dropdown Title Really Long Dropdown Title Really Long Dropdown\\n\\n\"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-1\"},[_v(\"Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text\")]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_v(\"Nested Dropdown Title\\n\\n\"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-2\"},[_v(\"Hello Doge Hello Doge 🐶\")]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-2\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_site/index.html\"}},[_c(\u0027strong\u0027,[_v(\"NESTED LINK\")]),_v(\" Home 🏠\")])])]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-2\"},[_v(\"Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit\")])])])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_v(\"Test line break in navigation layout\\n\\n\"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-1\"},[_v(\"Nested line break text ✂️\")]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_site/index.html\"}},[_v(\"Nested line break href\")]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-2\"},[_v(\"Nested Nested line break text ✂️\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-1\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_v(\"Nested line break dropdown menu\\n\\n\"),_c(\u0027div\u0027,{staticClass:\"site-nav-dropdown-btn-container\"},[_c(\u0027i\u0027,{staticClass:\"site-nav-dropdown-btn-icon\",attrs:{\"onclick\":\"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();\"}},[_c(\u0027span\u0027,{staticClass:\"glyphicon glyphicon-menu-down\",attrs:{\"aria-hidden\":\"true\"}})])])]),_c(\u0027ul\u0027,{staticClass:\"site-nav-dropdown-container site-nav-list\"},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-2\"},[_v(\"Line break item 2 📘\")])])])])])])],1)],1)])]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027panel\u0027,{attrs:{\"src\":\"/test_site/testPanels/PanelSourceContainsScript._include_.html\",\"expanded\":\"\",\"panelId\":\"panel-with-src-that-contains-css-and-script-header\"},scopedSlots:_u([{key:\"header\",fn:function(){return [_c(\u0027h2\u0027,{attrs:{\"id\":\"panel-with-src-that-contains-css-and-script-header\"}},[_v(\"Panel with src that contains css and script header\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#panel-with-src-that-contains-css-and-script-header\",\"onclick\":\"event.stopPropagation()\"}})])]},proxy:true}])})],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(2)])}"},{"lineNumber":5,"author":{"gitId":"yiwen101"},"content":"};"},{"lineNumber":6,"author":{"gitId":"yiwen101"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"yiwen101"},"content":") {"},{"lineNumber":8,"author":{"gitId":"yiwen101"},"content":"with(this){return _c(\u0027div\u0027,{staticClass:\"bg-info display-4 text-center text-white\"},[_c(\u0027br\u0027),_v(\"\\n Test Jumbotron\"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027br\u0027)])}"},{"lineNumber":9,"author":{"gitId":"yiwen101"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"yiwen101"},"content":") {"},{"lineNumber":11,"author":{"gitId":"yiwen101"},"content":"with(this){return _c(\u0027p\u0027,[_c(\u0027strong\u0027,[_v(\"Relative Link Test\")]),_v(\" This is a relative Intra-Site link in a layout (see \"),_c(\u0027a\u0027,{attrs:{\"href\":\"/test_site/index.html#heading-with-hidden-keyword\"}},[_v(\"link\")]),_v(\")\")])}"},{"lineNumber":12,"author":{"gitId":"yiwen101"},"content":"},function anonymous("},{"lineNumber":13,"author":{"gitId":"yiwen101"},"content":") {"},{"lineNumber":14,"author":{"gitId":"yiwen101"},"content":"with(this){return _c(\u0027div\u0027,[_c(\u0027footer\u0027,[_c(\u0027h1\u0027,{attrs:{\"id\":\"heading-in-footer-should-not-be-indexed\"}},[_v(\"Heading in footer should not be indexed\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#heading-in-footer-should-not-be-indexed\",\"onclick\":\"event.stopPropagation()\"}})]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"text-center\"},[_v(\"\\n This is a dynamic height footer that supports markdown \"),_c(\u0027span\u0027,[_v(\"😄\")]),_v(\"!\\n \")])])])}"},{"lineNumber":15,"author":{"gitId":"yiwen101"},"content":"}];"},{"lineNumber":16,"author":{"gitId":"yiwen101"},"content":" "}],"authorContributionMap":{"yiwen101":16}},{"path":"packages/cli/test/functional/test_site/site.json","fileType":"json","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"{"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \"baseUrl\": \"/test_site\","},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"faviconPath\": \"favicon.png\","},{"lineNumber":4,"author":{"gitId":"-"},"content":" \"titlePrefix\": \"\","},{"lineNumber":5,"author":{"gitId":"-"},"content":" \"titleSuffix\": \"\","},{"lineNumber":6,"author":{"gitId":"-"},"content":" \"style\": {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \"codeLineNumbers\": true"},{"lineNumber":8,"author":{"gitId":"-"},"content":" },"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \"pages\": ["},{"lineNumber":10,"author":{"gitId":"-"},"content":" {"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \"src\": \"index.md\","},{"lineNumber":12,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"frontmatter\": {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"frontmatterOverrideProperty\": \"Overridden by frontmatter override\","},{"lineNumber":15,"author":{"gitId":"-"},"content":" \"globalAndFrontmatterOverrideProperty\": \"Overridden by frontmatter override\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" }"},{"lineNumber":17,"author":{"gitId":"-"},"content":" },"},{"lineNumber":18,"author":{"gitId":"-"},"content":" {"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \"src\": [\"testEmptyFrontmatter.md\", \"testLayoutsOverride.md\", \"testEmptyAltFrontMatter.md\", \"testLayoutsOverrideWithAltFrontmatter.md\"],"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"layout\": \"testLayout.md\""},{"lineNumber":22,"author":{"gitId":"-"},"content":" },"},{"lineNumber":23,"author":{"gitId":"-"},"content":" {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \"src\": [\"testAltFrontMatterInvalidKeyValue.md\", \"testSingleAltFrontMatter.md\"],"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\""},{"lineNumber":26,"author":{"gitId":"-"},"content":" },"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"src\": [\"testAltFrontMatterParsing.md\"]"},{"lineNumber":29,"author":{"gitId":"-"},"content":" },"},{"lineNumber":30,"author":{"gitId":"-"},"content":" {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \"src\": \"testExternalScripts.md\","},{"lineNumber":32,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\","},{"lineNumber":33,"author":{"gitId":"-"},"content":" \"layout\": \"testLayout.md\","},{"lineNumber":34,"author":{"gitId":"-"},"content":" \"externalScripts\": ["},{"lineNumber":35,"author":{"gitId":"-"},"content":" \"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config\u003dTeX-MML-AM_CHTML\""},{"lineNumber":36,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":37,"author":{"gitId":"-"},"content":" },"},{"lineNumber":38,"author":{"gitId":"-"},"content":" {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \"src\": [\"testLayouts.md\", \"testLayoutsWithAltFrontMatter.md\"],"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \"title\": \"Test nunjucks path resolving\""},{"lineNumber":41,"author":{"gitId":"-"},"content":" },"},{"lineNumber":42,"author":{"gitId":"-"},"content":" {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \"src\": ["},{"lineNumber":44,"author":{"gitId":"-"},"content":" \"testNunjucksPathResolving.md\","},{"lineNumber":45,"author":{"gitId":"-"},"content":" \"sub_site/testNunjucksPathResolving.md\","},{"lineNumber":46,"author":{"gitId":"-"},"content":" \"sub_site/nested_sub_site/testNunjucksPathResolving.md\""},{"lineNumber":47,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\""},{"lineNumber":49,"author":{"gitId":"-"},"content":" },"},{"lineNumber":50,"author":{"gitId":"-"},"content":" {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \"glob\": [\"**/index.md\", \"**/test_md_fragment.md\"]"},{"lineNumber":52,"author":{"gitId":"-"},"content":" },"},{"lineNumber":53,"author":{"gitId":"-"},"content":" {"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \"src\": \"testAntiFOUCStyles.md\","},{"lineNumber":55,"author":{"gitId":"-"},"content":" \"title\": \"Hello World\""},{"lineNumber":56,"author":{"gitId":"-"},"content":" },"},{"lineNumber":57,"author":{"gitId":"-"},"content":" {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \"src\": \"testAnchorGeneration.md\","},{"lineNumber":59,"author":{"gitId":"-"},"content":" \"title\": \"Anchor Generation Test\""},{"lineNumber":60,"author":{"gitId":"-"},"content":" },"},{"lineNumber":61,"author":{"gitId":"-"},"content":" {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \"src\": \"testAnnotate.md\","},{"lineNumber":63,"author":{"gitId":"-"},"content":" \"title\": \"Annotate Feature Test\""},{"lineNumber":64,"author":{"gitId":"-"},"content":" },"},{"lineNumber":65,"author":{"gitId":"-"},"content":" {"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \"src\": \"testTooltipSpacing.md\","},{"lineNumber":67,"author":{"gitId":"-"},"content":" \"title\": \"Tooltip Spacing Test\""},{"lineNumber":68,"author":{"gitId":"-"},"content":" },"},{"lineNumber":69,"author":{"gitId":"-"},"content":" {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \"src\": \"testThumbnails.md\","},{"lineNumber":71,"author":{"gitId":"-"},"content":" \"title\": \"Thumbnails Test\""},{"lineNumber":72,"author":{"gitId":"-"},"content":" },"},{"lineNumber":73,"author":{"gitId":"-"},"content":" {"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \"src\": \"testPlantUML.md\","},{"lineNumber":75,"author":{"gitId":"-"},"content":" \"title\": \"PlantUML Test\""},{"lineNumber":76,"author":{"gitId":"-"},"content":" },"},{"lineNumber":77,"author":{"gitId":"-"},"content":" {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \"src\": \"testCodeBlocks.md\","},{"lineNumber":79,"author":{"gitId":"-"},"content":" \"title\": \"Test: Code Blocks\""},{"lineNumber":80,"author":{"gitId":"-"},"content":" },"},{"lineNumber":81,"author":{"gitId":"-"},"content":" {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \"src\": \"testIncludePluginsRendered.md\","},{"lineNumber":83,"author":{"gitId":"-"},"content":" \"title\": \"Included files should have plugins rendered on them\""},{"lineNumber":84,"author":{"gitId":"-"},"content":" },"},{"lineNumber":85,"author":{"gitId":"-"},"content":" {"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \"src\": \"testIncludeMultipleModals.md\","},{"lineNumber":87,"author":{"gitId":"-"},"content":" \"title\": \"Multiple inclusions of a modal should be supported\""},{"lineNumber":88,"author":{"gitId":"-"},"content":" },"},{"lineNumber":89,"author":{"gitId":"-"},"content":" {"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \"src\": \"testPopovers.md\","},{"lineNumber":91,"author":{"gitId":"-"},"content":" \"title\": \"Test: Popovers\""},{"lineNumber":92,"author":{"gitId":"-"},"content":" },"},{"lineNumber":93,"author":{"gitId":"-"},"content":" {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \"src\": \"testPopoverTrigger.md\","},{"lineNumber":95,"author":{"gitId":"-"},"content":" \"title\": \"Popover initiated by trigger should honor trigger attribute\""},{"lineNumber":96,"author":{"gitId":"-"},"content":" },"},{"lineNumber":97,"author":{"gitId":"-"},"content":" {"},{"lineNumber":98,"author":{"gitId":"-"},"content":" \"src\": \"testModals.md\","},{"lineNumber":99,"author":{"gitId":"-"},"content":" \"title\": \"Test: Modals\""},{"lineNumber":100,"author":{"gitId":"-"},"content":" },"},{"lineNumber":101,"author":{"gitId":"-"},"content":" {"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \"src\": \"testDates.md\","},{"lineNumber":103,"author":{"gitId":"-"},"content":" \"title\": \"Nunjucks date filter tests\""},{"lineNumber":104,"author":{"gitId":"-"},"content":" },"},{"lineNumber":105,"author":{"gitId":"-"},"content":" {"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"src\": \"testVariableContainsInclude.md\","},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"title\": \"Variable should be able to store included content fragments\""},{"lineNumber":108,"author":{"gitId":"-"},"content":" },"},{"lineNumber":109,"author":{"gitId":"-"},"content":" {"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \"src\": \"testIncludeBoilerplate.md\","},{"lineNumber":111,"author":{"gitId":"-"},"content":" \"title\": \"Content inside \u003cinclude\u003e should not be processed by markdown\""},{"lineNumber":112,"author":{"gitId":"-"},"content":" },"},{"lineNumber":113,"author":{"gitId":"-"},"content":" {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \"src\": \"testPanels.md\","},{"lineNumber":115,"author":{"gitId":"-"},"content":" \"title\": \"Test: Panels\""},{"lineNumber":116,"author":{"gitId":"-"},"content":" },"},{"lineNumber":117,"author":{"gitId":"-"},"content":" {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \"src\": \"testPanelMarkdownParsing.md\","},{"lineNumber":119,"author":{"gitId":"-"},"content":" \"title\": \"markdown-it should parse minimized panel as inline element and normal panel as block element\""},{"lineNumber":120,"author":{"gitId":"-"},"content":" },"},{"lineNumber":121,"author":{"gitId":"-"},"content":" {"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \"src\": \"testCenterText.md\","},{"lineNumber":123,"author":{"gitId":"-"},"content":" \"title\": \"Center-aligned text test\""},{"lineNumber":124,"author":{"gitId":"-"},"content":" },"},{"lineNumber":125,"author":{"gitId":"-"},"content":" {"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \"src\": \"testHr.md\","},{"lineNumber":127,"author":{"gitId":"-"},"content":" \"title\": \"create different types of horizontal rules\""},{"lineNumber":128,"author":{"gitId":"-"},"content":" },"},{"lineNumber":129,"author":{"gitId":"-"},"content":" {"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \"src\": \"testPageNav.md\","},{"lineNumber":131,"author":{"gitId":"-"},"content":" \"title\": \"text interpolation should be skipped appropriately\""},{"lineNumber":132,"author":{"gitId":"-"},"content":" },"},{"lineNumber":133,"author":{"gitId":"-"},"content":" {"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \"src\": \"testPanelsClosingTransition.md\","},{"lineNumber":135,"author":{"gitId":"-"},"content":" \"title\": \"Test: Panels closing transition\""},{"lineNumber":136,"author":{"gitId":"-"},"content":" },"},{"lineNumber":137,"author":{"gitId":"-"},"content":" {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \"src\": \"testLinks.md\","},{"lineNumber":139,"author":{"gitId":"-"},"content":" \"title\": \"Autolink tests\""},{"lineNumber":140,"author":{"gitId":"-"},"content":" },"},{"lineNumber":141,"author":{"gitId":"-"},"content":" {"},{"lineNumber":142,"author":{"gitId":"-"},"content":" \"src\": \"testTree.md\","},{"lineNumber":143,"author":{"gitId":"-"},"content":" \"title\": \"Tree tests\""},{"lineNumber":144,"author":{"gitId":"-"},"content":" },"},{"lineNumber":145,"author":{"gitId":"-"},"content":" {"},{"lineNumber":146,"author":{"gitId":"-"},"content":" \"src\": \"testMath.md\","},{"lineNumber":147,"author":{"gitId":"-"},"content":" \"title\": \"Math formulae should be displayed correctly, with additional plugin\""},{"lineNumber":148,"author":{"gitId":"-"},"content":" },"},{"lineNumber":149,"author":{"gitId":"-"},"content":" {"},{"lineNumber":150,"author":{"gitId":"-"},"content":" \"src\": \"testImages.md\","},{"lineNumber":151,"author":{"gitId":"-"},"content":" \"title\": \"Rendering of images according to specified dimension and auto-linkify ability\""},{"lineNumber":152,"author":{"gitId":"-"},"content":" },"},{"lineNumber":153,"author":{"gitId":"-"},"content":" {"},{"lineNumber":154,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavTarget.md\","},{"lineNumber":155,"author":{"gitId":"-"},"content":" \"title\": \"Bootstrap scrollspy related classes should be applied only if there are navigable headings\""},{"lineNumber":156,"author":{"gitId":"-"},"content":" },"},{"lineNumber":157,"author":{"gitId":"-"},"content":" {"},{"lineNumber":158,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavWithoutTitleAndNavHeadings.md\","},{"lineNumber":159,"author":{"gitId":"-"},"content":" \"title\": \"page nav separator should be omitted when there is no title and navigation headings added\""},{"lineNumber":160,"author":{"gitId":"-"},"content":" },"},{"lineNumber":161,"author":{"gitId":"-"},"content":" {"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavWithOnlyTitle.md\","},{"lineNumber":163,"author":{"gitId":"-"},"content":" \"title\": \"page nav with title added\""},{"lineNumber":164,"author":{"gitId":"-"},"content":" },"},{"lineNumber":165,"author":{"gitId":"-"},"content":" {"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \"src\": \"testPageNavPrint.md\","},{"lineNumber":167,"author":{"gitId":"-"},"content":" \"title\": \"printing page nav\""},{"lineNumber":168,"author":{"gitId":"-"},"content":" },"},{"lineNumber":169,"author":{"gitId":"-"},"content":" {"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \"src\": \"testWeb3FormPlugin.md\","},{"lineNumber":171,"author":{"gitId":"-"},"content":" \"title\": \"web 3 forms\""},{"lineNumber":172,"author":{"gitId":"-"},"content":" },"},{"lineNumber":173,"author":{"gitId":"-"},"content":" {"},{"lineNumber":174,"author":{"gitId":"-"},"content":" \"src\": \"testList.md\","},{"lineNumber":175,"author":{"gitId":"-"},"content":" \"title\": \"web 3 forms\""},{"lineNumber":176,"author":{"gitId":"-"},"content":" },"},{"lineNumber":177,"author":{"gitId":"-"},"content":" {"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \"src\": \"testFontAwesomeInPage.md\","},{"lineNumber":179,"author":{"gitId":"-"},"content":" \"title\": \"font-awesome icon in page, only font-awesome stylesheet should be loaded\""},{"lineNumber":180,"author":{"gitId":"-"},"content":" },"},{"lineNumber":181,"author":{"gitId":"-"},"content":" {"},{"lineNumber":182,"author":{"gitId":"-"},"content":" \"src\": \"testGlyphiconInPage.md\","},{"lineNumber":183,"author":{"gitId":"-"},"content":" \"title\": \"glyphicon icon in page, only glyphicon stylesheet should be loaded\""},{"lineNumber":184,"author":{"gitId":"-"},"content":" },"},{"lineNumber":185,"author":{"gitId":"-"},"content":" {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" \"src\": \"testMaterialIconsInPage.md\","},{"lineNumber":187,"author":{"gitId":"-"},"content":" \"title\": \"material-icons icon in page, only material-icons stylesheet should be loaded\""},{"lineNumber":188,"author":{"gitId":"-"},"content":" },"},{"lineNumber":189,"author":{"gitId":"-"},"content":" {"},{"lineNumber":190,"author":{"gitId":"-"},"content":" \"src\": \"testOcticonInPage.md\","},{"lineNumber":191,"author":{"gitId":"-"},"content":" \"title\": \"octicon icon in page, only octicon stylesheet should be loaded\""},{"lineNumber":192,"author":{"gitId":"-"},"content":" },"},{"lineNumber":193,"author":{"gitId":"-"},"content":" {"},{"lineNumber":194,"author":{"gitId":"-"},"content":" \"src\": \"testIconsInSiteLayout.md\","},{"lineNumber":195,"author":{"gitId":"-"},"content":" \"title\": \"glyphicon \u0026 octicon icon in page, only glyphicon \u0026 octicon stylesheets should be loaded\""},{"lineNumber":196,"author":{"gitId":"yiwen101"},"content":" },"},{"lineNumber":197,"author":{"gitId":"yiwen101"},"content":" {"},{"lineNumber":198,"author":{"gitId":"yiwen101"},"content":" \"src\": \"testSourceContainScript.md\","},{"lineNumber":199,"author":{"gitId":"yiwen101"},"content":" \"title\": \"Test: If source contains script or css, when included, the script or css should be included\""},{"lineNumber":200,"author":{"gitId":"-"},"content":" }"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":202,"author":{"gitId":"-"},"content":" \"pagesExclude\": [\"**/*-fragment.md\"],"},{"lineNumber":203,"author":{"gitId":"-"},"content":" \"ignore\": ["},{"lineNumber":204,"author":{"gitId":"-"},"content":" \"_markbind/layouts/*\","},{"lineNumber":205,"author":{"gitId":"-"},"content":" \"_markbind/logs/*\","},{"lineNumber":206,"author":{"gitId":"-"},"content":" \"_site/*\","},{"lineNumber":207,"author":{"gitId":"-"},"content":" \"site.json\","},{"lineNumber":208,"author":{"gitId":"-"},"content":" \"*.md\","},{"lineNumber":209,"author":{"gitId":"-"},"content":" \"testFileIgnore.sh\","},{"lineNumber":210,"author":{"gitId":"-"},"content":" \"testFileIgnore/*\","},{"lineNumber":211,"author":{"gitId":"-"},"content":" \"expected/*\""},{"lineNumber":212,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":213,"author":{"gitId":"-"},"content":" \"deploy\": {"},{"lineNumber":214,"author":{"gitId":"-"},"content":" \"message\": \"Site Update.\""},{"lineNumber":215,"author":{"gitId":"-"},"content":" },"},{"lineNumber":216,"author":{"gitId":"-"},"content":" \"globalOverride\": {"},{"lineNumber":217,"author":{"gitId":"-"},"content":" \"globalOverrideProperty\": \"Overridden by global override\","},{"lineNumber":218,"author":{"gitId":"-"},"content":" \"globalAndFrontmatterOverrideProperty\": \"Overridden by global override\""},{"lineNumber":219,"author":{"gitId":"-"},"content":" },"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \"headingIndexingLevel\": 4,"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \"plugins\": ["},{"lineNumber":222,"author":{"gitId":"-"},"content":" \"testMarkbindPlugin\","},{"lineNumber":223,"author":{"gitId":"-"},"content":" \"filterTags\","},{"lineNumber":224,"author":{"gitId":"-"},"content":" \"googleAnalytics\","},{"lineNumber":225,"author":{"gitId":"-"},"content":" \"mathDelimiters\","},{"lineNumber":226,"author":{"gitId":"-"},"content":" \"web3Form\""},{"lineNumber":227,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \"pluginsContext\": {"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \"testMarkbindPlugin\": {"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \"pre\": \"\\n\\n# Markbind Plugin Pre-render\","},{"lineNumber":231,"author":{"gitId":"-"},"content":" \"post\": \"\u003cp\u003eNode Modules Plugin Post-render\u003c/p\u003e\""},{"lineNumber":232,"author":{"gitId":"-"},"content":" },"},{"lineNumber":233,"author":{"gitId":"-"},"content":" \"filterTags\": {"},{"lineNumber":234,"author":{"gitId":"-"},"content":" \"tags\": ["},{"lineNumber":235,"author":{"gitId":"-"},"content":" \"tag-site-shown\","},{"lineNumber":236,"author":{"gitId":"-"},"content":" \"+tag-site-override-shown\","},{"lineNumber":237,"author":{"gitId":"-"},"content":" \"+tag-site-override-specific-shown\""},{"lineNumber":238,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":239,"author":{"gitId":"-"},"content":" },"},{"lineNumber":240,"author":{"gitId":"-"},"content":" \"googleAnalytics\": {"},{"lineNumber":241,"author":{"gitId":"-"},"content":" \"trackingID\": \"TRACKING-ID\""},{"lineNumber":242,"author":{"gitId":"-"},"content":" },"},{"lineNumber":243,"author":{"gitId":"-"},"content":" \"mathDelimiters\": {"},{"lineNumber":244,"author":{"gitId":"-"},"content":" \"delimiters\": [\"beg_end\"]"},{"lineNumber":245,"author":{"gitId":"-"},"content":" },"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \"web3Form\": {"},{"lineNumber":247,"author":{"gitId":"-"},"content":" \"accessKey\": \"\""},{"lineNumber":248,"author":{"gitId":"-"},"content":" }"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }"},{"lineNumber":250,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":246,"yiwen101":4}},{"path":"packages/cli/test/functional/test_site/testPanels/PanelSourceContainsScript.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yiwen101"},"content":"\u003ch1\u003e"},{"lineNumber":2,"author":{"gitId":"yiwen101"},"content":"\u003cscript\u003e"},{"lineNumber":3,"author":{"gitId":"yiwen101"},"content":" // JavaScript code specific to this component"},{"lineNumber":4,"author":{"gitId":"yiwen101"},"content":" console.log(\"Inline script executed! 35\");"},{"lineNumber":5,"author":{"gitId":"yiwen101"},"content":"\u003c/script\u003e"},{"lineNumber":6,"author":{"gitId":"yiwen101"},"content":"\u003cstyle\u003e"},{"lineNumber":7,"author":{"gitId":"yiwen101"},"content":" /* CSS styles specific to this component */"},{"lineNumber":8,"author":{"gitId":"yiwen101"},"content":" h1 {"},{"lineNumber":9,"author":{"gitId":"yiwen101"},"content":" color: red;"},{"lineNumber":10,"author":{"gitId":"yiwen101"},"content":" }"},{"lineNumber":11,"author":{"gitId":"yiwen101"},"content":"\u003c/style\u003e"},{"lineNumber":12,"author":{"gitId":"yiwen101"},"content":"h1 text"},{"lineNumber":13,"author":{"gitId":"yiwen101"},"content":"\u003c/h1\u003e"}],"authorContributionMap":{"yiwen101":13}},{"path":"packages/cli/test/functional/test_site/testSourceContainScript.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yiwen101"},"content":"\u003cpanel header\u003d\"## Panel with src that contains css and script header\" src\u003d\"testPanels/PanelSourceContainsScript.md\" expanded\u003e\u003c/panel\u003e"}],"authorContributionMap":{"yiwen101":1}},{"path":"packages/cli/test/functional/test_site_algolia_plugin/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/404.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027p\u0027),_m(0),_v(\" \"),_m(1),_c(\u0027p\u0027)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027p\u0027,{staticStyle:{\"font-size\":\"10rem\"}},[_v(\"404\")])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027p\u0027,{staticStyle:{\"font-size\":\"1.5rem\"}},[_v(\"File not found\"),_c(\u0027br\u0027),_v(\"Click \"),_c(\u0027a\u0027,{attrs:{\"href\":\"/\"}},[_v(\"here\")]),_v(\" to go back to the home page.\")])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/Home.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027p\u0027,[_v(\"Welcome to the test-deploy wiki!\")])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [];"},{"lineNumber":7,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":6}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/Page-1.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"page-1\"}},[_v(\"Page 1\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#page-1\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":10,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":9}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/_Footer.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027p\u0027,[_v(\"Custom footer.\")])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [];"},{"lineNumber":7,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":6}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/_Sidebar.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027ul\u0027,[_c(\u0027li\u0027,[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,[_v(\"[[Page-1]]\")])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":10,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":9}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/about.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0),_v(\" \"),_m(1)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"about\"}},[_v(\"About\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#about\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027p\u0027,[_v(\"Welcome to your \"),_c(\u0027strong\u0027,[_v(\"About Us\")]),_v(\" page.\")])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/contents/topic1.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_m(0),_v(\" \"),_m(1)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"topic-1\"}},[_v(\"Topic 1\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#topic-1\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027blockquote\u0027,[_c(\u0027p\u0027,[_v(\"More content to be added\")])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/contents/topic2.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027box\u0027,[_c(\u0027span\u0027,{staticClass:\"fas fa-tools\"}),_c(\u0027span\u0027,[_v(\" This is a placeholder page\")])])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [];"},{"lineNumber":7,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":6}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/contents/topic3a.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027box\u0027,[_c(\u0027span\u0027,{staticClass:\"fas fa-tools\"}),_c(\u0027span\u0027,[_v(\" This is a placeholder page\")])])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [];"},{"lineNumber":7,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":6}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/contents/topic3b.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027box\u0027,[_c(\u0027span\u0027,{staticClass:\"fas fa-tools\"}),_c(\u0027span\u0027,[_v(\" This is a placeholder page\")])])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [];"},{"lineNumber":7,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":6}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/index.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Home]]\")]),_v(\" \"),_c(\u0027li\u0027,{staticClass:\"site-nav-custom-list-item site-nav-list-item-0\"},[_v(\"[[Page-1]]\")])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027p\u0027,[_v(\"Welcome to the test-deploy wiki!\")])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_c(\u0027footer\u0027,[_v(\"\\nCustom footer.\\n\")])])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [];"},{"lineNumber":7,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":6}},{"path":"packages/cli/test/functional/test_site_convert/test_basic_convert/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/404.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027p\u0027),_m(0),_v(\" \"),_m(1),_c(\u0027p\u0027)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(2)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027p\u0027,{staticStyle:{\"font-size\":\"10rem\"}},[_v(\"404\")])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027p\u0027,{staticStyle:{\"font-size\":\"1.5rem\"}},[_v(\"File not found\"),_c(\u0027br\u0027),_v(\"Click \"),_c(\u0027a\u0027,{attrs:{\"href\":\"/\"}},[_v(\"here\")]),_v(\" to go back to the home page.\")])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":13,"author":{"gitId":"-"},"content":") {"},{"lineNumber":14,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":16,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":15}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/Home.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027p\u0027,[_v(\"Welcome to the test-deploy wiki!\")])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(0)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":10,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":9}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/Page-1.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(1)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"page-1\"}},[_v(\"Page 1\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#page-1\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/README.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0),_v(\" \"),_c(\u0027p\u0027,[_v(\"Test readme file\")])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(1)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"readme\"}},[_v(\"Readme\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#readme\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/about.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0),_v(\" \"),_m(1)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(2)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"about\"}},[_v(\"About\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#about\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027p\u0027,[_v(\"Welcome to your \"),_c(\u0027strong\u0027,[_v(\"About Us\")]),_v(\" page.\")])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":13,"author":{"gitId":"-"},"content":") {"},{"lineNumber":14,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":16,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":15}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/contents/topic1.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_m(0),_v(\" \"),_m(1)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(2)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"topic-1\"}},[_v(\"Topic 1\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#topic-1\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027blockquote\u0027,[_c(\u0027p\u0027,[_v(\"More content to be added\")])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":13,"author":{"gitId":"-"},"content":") {"},{"lineNumber":14,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":16,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":15}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/contents/topic2.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027box\u0027,[_c(\u0027span\u0027,{staticClass:\"fas fa-tools\"}),_c(\u0027span\u0027,[_v(\" This is a placeholder page\")])])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(0)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":10,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":9}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/contents/topic3a.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027box\u0027,[_c(\u0027span\u0027,{staticClass:\"fas fa-tools\"}),_c(\u0027span\u0027,[_v(\" This is a placeholder page\")])])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(0)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":10,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":9}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/contents/topic3b.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_c(\u0027br\u0027),_v(\" \"),_c(\u0027box\u0027,[_c(\u0027span\u0027,{staticClass:\"fas fa-tools\"}),_c(\u0027span\u0027,[_v(\" This is a placeholder page\")])])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(0)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":10,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":9}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/index.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0),_v(\" \"),_c(\u0027p\u0027,[_v(\"Test readme file\")])],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(1)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"readme\"}},[_v(\"Readme\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#readme\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/test_folder/extra_1.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(1)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"sample-content-in-another-folder-which-is-not-named-content\"}},[_v(\"Sample content in another folder which is not named content\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#sample-content-in-another-folder-which-is-not-named-content\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/test_folder/extra_2.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(1)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"sample-content-in-another-folder-which-is-not-named-content\"}},[_v(\"Sample content in another folder which is not named content\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#sample-content-in-another-folder-which-is-not-named-content\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_convert/test_navigation_convert/expected/test_folder/extra_3.page-vue-render.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":""},{"lineNumber":2,"author":{"gitId":"-"},"content":" var pageVueRenderFn \u003d function anonymous("},{"lineNumber":3,"author":{"gitId":"-"},"content":") {"},{"lineNumber":4,"author":{"gitId":"jingting1412"},"content":"with(this){return _c(\u0027div\u0027,{attrs:{\"id\":\"app\"}},[_c(\u0027header\u0027,{attrs:{\"sticky\":\"\"}},[_c(\u0027navbar\u0027,{attrs:{\"placement\":\"top\",\"type\":\"dark\"},scopedSlots:_u([{key:\"brand\",fn:function(){return [_c(\u0027a\u0027,{staticClass:\"navbar-brand\",attrs:{\"href\":\"/index.html\",\"title\":\"Home\"}},[_c(\u0027i\u0027,{staticClass:\"fa-solid fa-house\"})])]},proxy:true},{key:\"right\",fn:function(){return [_c(\u0027li\u0027,[_c(\u0027form\u0027,{staticClass:\"navbar-form\"},[_c(\u0027searchbar\u0027,{attrs:{\"data\":searchData,\"placeholder\":\"Search\",\"on-hit\":searchCallback,\"menu-align-right\":\"\"}})],1)])]},proxy:true}])},[_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/index.html\"}},[_v(\"HOME\")])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027a\u0027,{staticClass:\"nav-link\",attrs:{\"href\":\"/about.html\"}},[_v(\"ABOUT\")])])])],1),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"flex-body\"}},[_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"site-nav\",\"tag-name\":\"nav\",\"to\":\"site-nav\"}},[_c(\u0027div\u0027,{staticClass:\"site-nav-top\"},[_c(\u0027div\u0027,{staticClass:\"fw-bold mb-2\",staticStyle:{\"font-size\":\"1.25rem\"}},[_v(\"Contents\")])]),_v(\" \"),_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"},[_c(\u0027site-nav\u0027,[_c(\u0027overlay-source\u0027,{staticClass:\"site-nav-list site-nav-list-root\",attrs:{\"tag-name\":\"ul\",\"to\":\"mb-site-nav\"}},[_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/404.html\"}},[_v(\"404\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Home.html\"}},[_v(\"Home\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/Page-1.html\"}},[_v(\"Page 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/README.html\"}},[_v(\"README\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic1.html\"}},[_v(\"Topic 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic2.html\"}},[_v(\"Topic 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3a.html\"}},[_v(\"Topic 3 A\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/contents/topic3b.html\"}},[_v(\"Topic 3 B\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/index.html\"}},[_v(\"Index\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_1.html\"}},[_v(\"Extra 1\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_2.html\"}},[_v(\"Extra 2\")])])]),_v(\" \"),_c(\u0027li\u0027,[_c(\u0027div\u0027,{staticClass:\"site-nav-default-list-item site-nav-list-item-0\",attrs:{\"onclick\":\"handleSiteNavClick(this)\"}},[_c(\u0027a\u0027,{attrs:{\"href\":\"/test_folder/extra_3.html\"}},[_v(\"Extra 3\")])])])])],1)],1)]),_v(\" \"),_c(\u0027div\u0027,{attrs:{\"id\":\"content-wrapper\"}},[_c(\u0027breadcrumb\u0027),_v(\" \"),_m(0)],1),_v(\" \"),_c(\u0027overlay-source\u0027,{attrs:{\"id\":\"page-nav\",\"tag-name\":\"nav\",\"to\":\"page-nav\"}},[_c(\u0027div\u0027,{staticClass:\"nav-component slim-scroll\"})]),_v(\" \"),_c(\u0027scroll-top-button\u0027)],1),_v(\" \"),_m(1)])}"},{"lineNumber":5,"author":{"gitId":"-"},"content":"};"},{"lineNumber":6,"author":{"gitId":"-"},"content":" var pageVueStaticRenderFns \u003d [function anonymous("},{"lineNumber":7,"author":{"gitId":"-"},"content":") {"},{"lineNumber":8,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027h1\u0027,{attrs:{\"id\":\"sample-content-in-another-folder-which-is-not-named-content\"}},[_v(\"Sample content in another folder which is not named content\"),_c(\u0027a\u0027,{staticClass:\"fa fa-anchor\",attrs:{\"href\":\"#sample-content-in-another-folder-which-is-not-named-content\",\"onclick\":\"event.stopPropagation()\"}})])}"},{"lineNumber":9,"author":{"gitId":"-"},"content":"},function anonymous("},{"lineNumber":10,"author":{"gitId":"-"},"content":") {"},{"lineNumber":11,"author":{"gitId":"-"},"content":"with(this){return _c(\u0027footer\u0027,[_c(\u0027div\u0027,{staticClass:\"text-center\"},[_c(\u0027small\u0027,[_v(\"[Generated by \"),_c(\u0027a\u0027,{attrs:{\"href\":\"https://markbind.org/\"}},[_v(\"MarkBind 5.3.0\")]),_v(\"]\")])])])}"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}];"},{"lineNumber":13,"author":{"gitId":"-"},"content":" "}],"authorContributionMap":{"jingting1412":1,"-":12}},{"path":"packages/cli/test/functional/test_site_special_tags/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/cli/test/functional/test_site_templates/test_default/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/cli/test/functional/test_site_templates/test_minimal/expected/markbind/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/core-web/asset/css/codeblock-dark.min.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute,.hljs-builtin-name{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}"},{"lineNumber":2,"author":{"gitId":"Tim-Siu"},"content":"/* MarkBind-customized styles */.hljs span.highlighted{background:#000000}.hljs.inline{background:#444}.hljs:not(.inline){border:1px solid #1e1e1e}.code-block-heading{background:#3f3f3f;color:#dcdcdc}button.function-btn{background-color:#2b2b2b}"}],"authorContributionMap":{"-":1,"Tim-Siu":1}},{"path":"packages/core-web/src/print.js","fileType":"js","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"// This file manipulates the content of the printed page by defining print event listeners."},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"const PAGE_NAV_ID \u003d \u0027mb-page-nav\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"const PAGE_NAV_CLONE_CLASS \u003d \u0027page-nav-clone\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"const PAGE_NAV_PRINT_CONTAINER \u003d \u0027page-nav-print\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Remove the active style to prevent item highlighting."},{"lineNumber":9,"author":{"gitId":"-"},"content":" * @param {HTMLElement} node"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */"},{"lineNumber":11,"author":{"gitId":"-"},"content":"function removeActiveStyle(container) {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" const activeElements \u003d container.querySelectorAll(\u0027a.active\u0027);"},{"lineNumber":13,"author":{"gitId":"-"},"content":" activeElements.forEach((activeElement) \u003d\u003e {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" activeElement.classList.remove(\u0027active\u0027);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" });"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Create deep copies of the page navigation."},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param {HTMLElement} node"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @returns {HTMLElement} node"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */"},{"lineNumber":23,"author":{"gitId":"-"},"content":"function clonePageNav(node) {"},{"lineNumber":24,"author":{"gitId":"-"},"content":" const pageNav \u003d node.cloneNode(true);"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" pageNav.removeAttribute(\u0027id\u0027); // avoid duplicate"},{"lineNumber":27,"author":{"gitId":"-"},"content":" removeActiveStyle(pageNav);"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" pageNav.classList.add(PAGE_NAV_CLONE_CLASS);"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" return pageNav;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":"function removePageNavPrint() {"},{"lineNumber":35,"author":{"gitId":"-"},"content":" const tocElements \u003d document.querySelectorAll(`.${PAGE_NAV_CLONE_CLASS}`);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" tocElements.forEach((tocElement) \u003d\u003e {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" tocElement.remove();"},{"lineNumber":38,"author":{"gitId":"-"},"content":" });"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":"// Insert page navigation into the \u003cpage-nav-print\u003e containers."},{"lineNumber":42,"author":{"gitId":"-"},"content":"window.addEventListener(\u0027beforeprint\u0027, () \u003d\u003e {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" const pageNav \u003d document.querySelector(`#${PAGE_NAV_ID}`);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" const pageNavPrintContainers \u003d document.querySelectorAll(`.${PAGE_NAV_PRINT_CONTAINER}`);"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (pageNav \u0026\u0026 pageNavPrintContainers.length \u003e\u003d 1) {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" removePageNavPrint(); // remove any existing clones"},{"lineNumber":48,"author":{"gitId":"-"},"content":" pageNavPrintContainers.forEach((container) \u003d\u003e {"},{"lineNumber":49,"author":{"gitId":"-"},"content":" container.appendChild(clonePageNav(pageNav));"},{"lineNumber":50,"author":{"gitId":"-"},"content":" });"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }"},{"lineNumber":52,"author":{"gitId":"-"},"content":"});"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":"// Remove page navigation clones."},{"lineNumber":55,"author":{"gitId":"-"},"content":"window.addEventListener(\u0027afterprint\u0027, () \u003d\u003e {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removePageNavPrint();"},{"lineNumber":57,"author":{"gitId":"-"},"content":"});"},{"lineNumber":58,"author":{"gitId":"Tim-Siu"},"content":""},{"lineNumber":59,"author":{"gitId":"Tim-Siu"},"content":"// Check for wrapping in code blocks and adds line numbers if necessary"},{"lineNumber":60,"author":{"gitId":"Tim-Siu"},"content":"function checkForWrappingAndAddLineNumbers() {"},{"lineNumber":61,"author":{"gitId":"Tim-Siu"},"content":" document.querySelectorAll(\u0027pre \u003e code.hljs\u0027).forEach((block) \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"Tim-Siu"},"content":" // Check if any line within the block is wrapped"},{"lineNumber":63,"author":{"gitId":"Tim-Siu"},"content":" const isWrapped \u003d Array.from(block.querySelectorAll(\u0027span\u0027))"},{"lineNumber":64,"author":{"gitId":"Tim-Siu"},"content":" .some(line \u003d\u003e line.scrollWidth \u003e line.clientWidth);"},{"lineNumber":65,"author":{"gitId":"Tim-Siu"},"content":""},{"lineNumber":66,"author":{"gitId":"Tim-Siu"},"content":" if (isWrapped) {"},{"lineNumber":67,"author":{"gitId":"Tim-Siu"},"content":" // Add .line-numbers class to enable line numbering for wrapped lines"},{"lineNumber":68,"author":{"gitId":"Tim-Siu"},"content":" block.classList.add(\u0027line-numbers-print\u0027);"},{"lineNumber":69,"author":{"gitId":"Tim-Siu"},"content":" }"},{"lineNumber":70,"author":{"gitId":"Tim-Siu"},"content":" });"},{"lineNumber":71,"author":{"gitId":"Tim-Siu"},"content":"}"},{"lineNumber":72,"author":{"gitId":"Tim-Siu"},"content":""},{"lineNumber":73,"author":{"gitId":"Tim-Siu"},"content":"window.addEventListener(\u0027beforeprint\u0027, () \u003d\u003e {"},{"lineNumber":74,"author":{"gitId":"Tim-Siu"},"content":" checkForWrappingAndAddLineNumbers();"},{"lineNumber":75,"author":{"gitId":"Tim-Siu"},"content":"});"}],"authorContributionMap":{"-":57,"Tim-Siu":18}},{"path":"packages/core-web/src/styles/markbind.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":":root {"},{"lineNumber":2,"author":{"gitId":"-"},"content":" --sticky-header-height: 0;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"a {"},{"lineNumber":6,"author":{"gitId":"-"},"content":" text-decoration: none;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"blockquote {"},{"lineNumber":10,"author":{"gitId":"-"},"content":" border-left: 0.25em solid #dfe2e5;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" color: #6a737d;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0 1rem;"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"code {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" background: #f8f8f8;"},{"lineNumber":17,"author":{"gitId":"-"},"content":" border-radius: 3px;"},{"lineNumber":18,"author":{"gitId":"-"},"content":" padding: 0.2em 0.4em;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" word-break: normal;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":"mark code {"},{"lineNumber":23,"author":{"gitId":"-"},"content":" background: #ffffffd4;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":"pre.hljs \u003e code {"},{"lineNumber":27,"author":{"gitId":"-"},"content":" background: none;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":"pre \u003e code.hljs {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" -webkit-background-clip: padding-box; /* for Safari */"},{"lineNumber":32,"author":{"gitId":"-"},"content":" background-clip: padding-box; /* for IE9+, Firefox 4+, Opera, Chrome */"},{"lineNumber":33,"author":{"gitId":"-"},"content":" border-radius: 5px;"},{"lineNumber":34,"author":{"gitId":"-"},"content":" counter-reset: line;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"pre \u003e code.hljs[heading] {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" border-top-right-radius: 0;"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":".code-block {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" position: relative;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":".code-block-heading {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" border-radius: 6px 6px 0 0;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" float: right;"},{"lineNumber":49,"author":{"gitId":"-"},"content":" font-size: 85%;"},{"lineNumber":50,"author":{"gitId":"-"},"content":" line-height: 1;"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-top: 5px;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" max-width: 85%;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;"},{"lineNumber":54,"author":{"gitId":"-"},"content":" padding: 0.25em 0.4em;"},{"lineNumber":55,"author":{"gitId":"-"},"content":" text-align: right;"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":".inline-markdown-heading {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" line-height: 1.5;"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":".code-block-content {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" clear: both;"},{"lineNumber":64,"author":{"gitId":"-"},"content":" display: block;"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}"},{"lineNumber":66,"author":{"gitId":"-"},"content":""},{"lineNumber":67,"author":{"gitId":"-"},"content":"/* switch to light style on print view */"},{"lineNumber":68,"author":{"gitId":"-"},"content":"@media print {"},{"lineNumber":69,"author":{"gitId":"Tim-Siu"},"content":" pre \u003e code.hljs {"},{"lineNumber":70,"author":{"gitId":"Tim-Siu"},"content":" white-space: pre-wrap;"},{"lineNumber":71,"author":{"gitId":"Tim-Siu"},"content":" word-wrap: break-word;"},{"lineNumber":72,"author":{"gitId":"Tim-Siu"},"content":" word-break: break-all;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" code.hljs.inline {"},{"lineNumber":76,"author":{"gitId":"Tim-Siu"},"content":" background: ghostwhite;"},{"lineNumber":77,"author":{"gitId":"Tim-Siu"},"content":" color: #333;"},{"lineNumber":78,"author":{"gitId":"-"},"content":" border: 0.5px solid #d4d4d4;"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }"},{"lineNumber":80,"author":{"gitId":"-"},"content":""},{"lineNumber":81,"author":{"gitId":"-"},"content":" code span.highlighted {"},{"lineNumber":82,"author":{"gitId":"-"},"content":" background: lavender;"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }"},{"lineNumber":84,"author":{"gitId":"Tim-Siu"},"content":""},{"lineNumber":85,"author":{"gitId":"Tim-Siu"},"content":" .hljs:not(.inline).line-numbers-print \u003e span {"},{"lineNumber":86,"author":{"gitId":"Tim-Siu"},"content":" padding: 0 0.5em 0 3.5em;"},{"lineNumber":87,"author":{"gitId":"Tim-Siu"},"content":" position: relative;"},{"lineNumber":88,"author":{"gitId":"Tim-Siu"},"content":" }"},{"lineNumber":89,"author":{"gitId":"Tim-Siu"},"content":""},{"lineNumber":90,"author":{"gitId":"Tim-Siu"},"content":" /* display line numbers beside each span */"},{"lineNumber":91,"author":{"gitId":"Tim-Siu"},"content":" .hljs:not(.inline).line-numbers-print \u003e span::before {"},{"lineNumber":92,"author":{"gitId":"Tim-Siu"},"content":" border-right: 1px solid #ddd;"},{"lineNumber":93,"author":{"gitId":"Tim-Siu"},"content":" display: inline-block;"},{"lineNumber":94,"author":{"gitId":"Tim-Siu"},"content":" color: #888;"},{"lineNumber":95,"author":{"gitId":"Tim-Siu"},"content":" content: counter(line);"},{"lineNumber":96,"author":{"gitId":"Tim-Siu"},"content":" counter-increment: line;"},{"lineNumber":97,"author":{"gitId":"Tim-Siu"},"content":" left: 0;"},{"lineNumber":98,"author":{"gitId":"Tim-Siu"},"content":" margin-right: 0.5em;"},{"lineNumber":99,"author":{"gitId":"Tim-Siu"},"content":" padding-right: 0.5em;"},{"lineNumber":100,"author":{"gitId":"Tim-Siu"},"content":" position: absolute;"},{"lineNumber":101,"author":{"gitId":"Tim-Siu"},"content":" text-align: right;"},{"lineNumber":102,"author":{"gitId":"Tim-Siu"},"content":" top: 0;"},{"lineNumber":103,"author":{"gitId":"Tim-Siu"},"content":" width: 3em;"},{"lineNumber":104,"author":{"gitId":"Tim-Siu"},"content":" height: 100%;"},{"lineNumber":105,"author":{"gitId":"Tim-Siu"},"content":" }"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}"},{"lineNumber":107,"author":{"gitId":"-"},"content":""},{"lineNumber":108,"author":{"gitId":"-"},"content":"kbd {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" background-color: #fafbfc;"},{"lineNumber":110,"author":{"gitId":"-"},"content":" border: 1px solid #c6cbd1;"},{"lineNumber":111,"author":{"gitId":"-"},"content":" border-bottom-color: #959da5;"},{"lineNumber":112,"author":{"gitId":"-"},"content":" box-shadow: inset 0 -1px 0 #959da5;"},{"lineNumber":113,"author":{"gitId":"-"},"content":" color: #444d56;"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}"},{"lineNumber":115,"author":{"gitId":"-"},"content":""},{"lineNumber":116,"author":{"gitId":"-"},"content":".btn:active,"},{"lineNumber":117,"author":{"gitId":"-"},"content":".btn:focus {"},{"lineNumber":118,"author":{"gitId":"-"},"content":" box-shadow: none !important;"},{"lineNumber":119,"author":{"gitId":"-"},"content":" outline: none !important;"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}"},{"lineNumber":121,"author":{"gitId":"-"},"content":""},{"lineNumber":122,"author":{"gitId":"-"},"content":"code.hljs.inline {"},{"lineNumber":123,"author":{"gitId":"-"},"content":" display: initial;"},{"lineNumber":124,"author":{"gitId":"-"},"content":" padding: 0.2em 0.4em;"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}"},{"lineNumber":126,"author":{"gitId":"-"},"content":""},{"lineNumber":127,"author":{"gitId":"-"},"content":".markbind-table {"},{"lineNumber":128,"author":{"gitId":"-"},"content":" width: auto;"},{"lineNumber":129,"author":{"gitId":"-"},"content":"}"},{"lineNumber":130,"author":{"gitId":"-"},"content":""},{"lineNumber":131,"author":{"gitId":"-"},"content":".radio-list-item,"},{"lineNumber":132,"author":{"gitId":"-"},"content":".task-list-item {"},{"lineNumber":133,"author":{"gitId":"-"},"content":" list-style-type: none;"},{"lineNumber":134,"author":{"gitId":"-"},"content":" margin: 0 0 0 -1.2em;"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}"},{"lineNumber":136,"author":{"gitId":"-"},"content":""},{"lineNumber":137,"author":{"gitId":"-"},"content":".radio-list-item label {"},{"lineNumber":138,"author":{"gitId":"-"},"content":" font-weight: inherit;"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}"},{"lineNumber":140,"author":{"gitId":"-"},"content":""},{"lineNumber":141,"author":{"gitId":"-"},"content":".table-striped \u003e thead,"},{"lineNumber":142,"author":{"gitId":"-"},"content":".table-striped \u003e tbody \u003e tr:nth-of-type(even) {"},{"lineNumber":143,"author":{"gitId":"-"},"content":" background-color: #fff;"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Holy Grail Layout"},{"lineNumber":148,"author":{"gitId":"-"},"content":" *"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * This section covers the common styles used within Header, Footer and Side Navigation bars"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */"},{"lineNumber":151,"author":{"gitId":"-"},"content":""},{"lineNumber":152,"author":{"gitId":"-"},"content":"/* Header */"},{"lineNumber":153,"author":{"gitId":"-"},"content":""},{"lineNumber":154,"author":{"gitId":"-"},"content":"header[sticky] {"},{"lineNumber":155,"author":{"gitId":"-"},"content":" position: sticky;"},{"lineNumber":156,"author":{"gitId":"-"},"content":" top: 0;"},{"lineNumber":157,"author":{"gitId":"-"},"content":" transition: transform 0.3s ease-in-out;"},{"lineNumber":158,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":159,"author":{"gitId":"-"},"content":" z-index: 1001;"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":"header[sticky].hide-header {"},{"lineNumber":163,"author":{"gitId":"-"},"content":" transform: translateY(calc(-1 * var(--sticky-header-height)));"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}"},{"lineNumber":165,"author":{"gitId":"-"},"content":""},{"lineNumber":166,"author":{"gitId":"-"},"content":"span.anchor {"},{"lineNumber":167,"author":{"gitId":"-"},"content":" position: relative;"},{"lineNumber":168,"author":{"gitId":"-"},"content":" top: calc(-1 * var(--sticky-header-height) - 1rem);"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}"},{"lineNumber":170,"author":{"gitId":"-"},"content":""},{"lineNumber":171,"author":{"gitId":"-"},"content":"/* #app is treated as the main container */"},{"lineNumber":172,"author":{"gitId":"-"},"content":"#app {"},{"lineNumber":173,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":174,"author":{"gitId":"-"},"content":" flex-direction: column;"},{"lineNumber":175,"author":{"gitId":"-"},"content":" min-height: 100vh;"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}"},{"lineNumber":177,"author":{"gitId":"-"},"content":""},{"lineNumber":178,"author":{"gitId":"-"},"content":"/* Footer */"},{"lineNumber":179,"author":{"gitId":"-"},"content":"footer {"},{"lineNumber":180,"author":{"gitId":"-"},"content":" background-color: #f5f5f5;"},{"lineNumber":181,"author":{"gitId":"-"},"content":" color: dimgrey;"},{"lineNumber":182,"author":{"gitId":"-"},"content":" padding: 10px 0;"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}"},{"lineNumber":184,"author":{"gitId":"-"},"content":""},{"lineNumber":185,"author":{"gitId":"-"},"content":"/* TODO move this back to markdown-it-attr if bundling is implemented */"},{"lineNumber":186,"author":{"gitId":"-"},"content":".dimmed {"},{"lineNumber":187,"author":{"gitId":"-"},"content":" color: #777;"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}"},{"lineNumber":189,"author":{"gitId":"-"},"content":""},{"lineNumber":190,"author":{"gitId":"-"},"content":".large {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" font-size: 125%;"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}"},{"lineNumber":193,"author":{"gitId":"-"},"content":""},{"lineNumber":194,"author":{"gitId":"-"},"content":".small {"},{"lineNumber":195,"author":{"gitId":"-"},"content":" font-size: 80%;"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}"},{"lineNumber":197,"author":{"gitId":"-"},"content":""},{"lineNumber":198,"author":{"gitId":"-"},"content":".underline {"},{"lineNumber":199,"author":{"gitId":"-"},"content":" text-decoration: underline;"},{"lineNumber":200,"author":{"gitId":"-"},"content":"}"},{"lineNumber":201,"author":{"gitId":"-"},"content":""},{"lineNumber":202,"author":{"gitId":"-"},"content":".mkb-text-red {"},{"lineNumber":203,"author":{"gitId":"-"},"content":" color: red !important;"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}"},{"lineNumber":205,"author":{"gitId":"-"},"content":""},{"lineNumber":206,"author":{"gitId":"-"},"content":".mkb-text-green {"},{"lineNumber":207,"author":{"gitId":"-"},"content":" color: green !important;"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}"},{"lineNumber":209,"author":{"gitId":"-"},"content":""},{"lineNumber":210,"author":{"gitId":"-"},"content":".mkb-text-blue {"},{"lineNumber":211,"author":{"gitId":"-"},"content":" color: blue !important;"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}"},{"lineNumber":213,"author":{"gitId":"-"},"content":""},{"lineNumber":214,"author":{"gitId":"-"},"content":".mkb-text-cyan {"},{"lineNumber":215,"author":{"gitId":"-"},"content":" color: cyan !important;"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}"},{"lineNumber":217,"author":{"gitId":"-"},"content":""},{"lineNumber":218,"author":{"gitId":"-"},"content":".mkb-text-magenta {"},{"lineNumber":219,"author":{"gitId":"-"},"content":" color: magenta !important;"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}"},{"lineNumber":221,"author":{"gitId":"-"},"content":""},{"lineNumber":222,"author":{"gitId":"-"},"content":".mkb-text-yellow {"},{"lineNumber":223,"author":{"gitId":"-"},"content":" color: yellow !important;"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}"},{"lineNumber":225,"author":{"gitId":"-"},"content":""},{"lineNumber":226,"author":{"gitId":"-"},"content":".mkb-text-black {"},{"lineNumber":227,"author":{"gitId":"-"},"content":" color: black !important;"},{"lineNumber":228,"author":{"gitId":"-"},"content":"}"},{"lineNumber":229,"author":{"gitId":"-"},"content":""},{"lineNumber":230,"author":{"gitId":"-"},"content":".mkb-text-white {"},{"lineNumber":231,"author":{"gitId":"-"},"content":" color: white !important;"},{"lineNumber":232,"author":{"gitId":"-"},"content":"}"},{"lineNumber":233,"author":{"gitId":"-"},"content":""},{"lineNumber":234,"author":{"gitId":"-"},"content":"/* Bootstrap small(sm) responsive breakpoint */"},{"lineNumber":235,"author":{"gitId":"-"},"content":"@media (max-width: 767.98px) {"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .dropdown-menu \u003e li \u003e a {"},{"lineNumber":237,"author":{"gitId":"-"},"content":" white-space: normal;"},{"lineNumber":238,"author":{"gitId":"-"},"content":" }"},{"lineNumber":239,"author":{"gitId":"-"},"content":""},{"lineNumber":240,"author":{"gitId":"-"},"content":" .navbar-nav .open .dropdown-menu {"},{"lineNumber":241,"author":{"gitId":"-"},"content":" background-color: #fff;"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }"},{"lineNumber":243,"author":{"gitId":"-"},"content":"}"},{"lineNumber":244,"author":{"gitId":"-"},"content":""},{"lineNumber":245,"author":{"gitId":"-"},"content":"/* Footnote anchor */"},{"lineNumber":246,"author":{"gitId":"-"},"content":""},{"lineNumber":247,"author":{"gitId":"-"},"content":"li.footnote-item:target {"},{"lineNumber":248,"author":{"gitId":"-"},"content":" background-color: #eee;"},{"lineNumber":249,"author":{"gitId":"-"},"content":"}"},{"lineNumber":250,"author":{"gitId":"-"},"content":""},{"lineNumber":251,"author":{"gitId":"-"},"content":".hljs:not(.inline) \u003e span {"},{"lineNumber":252,"author":{"gitId":"-"},"content":" display: block;"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}"},{"lineNumber":254,"author":{"gitId":"-"},"content":""},{"lineNumber":255,"author":{"gitId":"-"},"content":".hljs:not(.inline).line-numbers \u003e span {"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: 0 0.5em 0 3.5em;"},{"lineNumber":257,"author":{"gitId":"-"},"content":" position: relative;"},{"lineNumber":258,"author":{"gitId":"-"},"content":"}"},{"lineNumber":259,"author":{"gitId":"-"},"content":""},{"lineNumber":260,"author":{"gitId":"-"},"content":"/* display line numbers beside each span */"},{"lineNumber":261,"author":{"gitId":"-"},"content":".hljs:not(.inline).line-numbers \u003e span::before {"},{"lineNumber":262,"author":{"gitId":"-"},"content":" border-right: 1px solid #ddd;"},{"lineNumber":263,"author":{"gitId":"-"},"content":" display: inline-block;"},{"lineNumber":264,"author":{"gitId":"-"},"content":" color: #888;"},{"lineNumber":265,"author":{"gitId":"-"},"content":" content: counter(line);"},{"lineNumber":266,"author":{"gitId":"-"},"content":" counter-increment: line;"},{"lineNumber":267,"author":{"gitId":"-"},"content":" left: 0;"},{"lineNumber":268,"author":{"gitId":"-"},"content":" margin-right: 0.5em;"},{"lineNumber":269,"author":{"gitId":"-"},"content":" padding-right: 0.5em;"},{"lineNumber":270,"author":{"gitId":"-"},"content":" position: absolute;"},{"lineNumber":271,"author":{"gitId":"-"},"content":" text-align: right;"},{"lineNumber":272,"author":{"gitId":"-"},"content":" top: 0;"},{"lineNumber":273,"author":{"gitId":"-"},"content":" width: 3em;"},{"lineNumber":274,"author":{"gitId":"-"},"content":" height: 100%;"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}"},{"lineNumber":276,"author":{"gitId":"-"},"content":""},{"lineNumber":277,"author":{"gitId":"-"},"content":"/* styles for triggers and tooltips */"},{"lineNumber":278,"author":{"gitId":"-"},"content":".trigger {"},{"lineNumber":279,"author":{"gitId":"-"},"content":" border-bottom: 1px dotted currentColor;"},{"lineNumber":280,"author":{"gitId":"-"},"content":"}"},{"lineNumber":281,"author":{"gitId":"-"},"content":""},{"lineNumber":282,"author":{"gitId":"-"},"content":".trigger-click {"},{"lineNumber":283,"author":{"gitId":"-"},"content":" cursor: pointer;"},{"lineNumber":284,"author":{"gitId":"-"},"content":" border-bottom: 1px dashed currentColor;"},{"lineNumber":285,"author":{"gitId":"-"},"content":"}"},{"lineNumber":286,"author":{"gitId":"-"},"content":""},{"lineNumber":287,"author":{"gitId":"-"},"content":".trigger-click:focus {"},{"lineNumber":288,"author":{"gitId":"-"},"content":" outline: none;"},{"lineNumber":289,"author":{"gitId":"-"},"content":"}"},{"lineNumber":290,"author":{"gitId":"-"},"content":""},{"lineNumber":291,"author":{"gitId":"-"},"content":"/* \"Copy\" and \"wrap text\" code block buttons */"},{"lineNumber":292,"author":{"gitId":"-"},"content":"pre {"},{"lineNumber":293,"author":{"gitId":"-"},"content":" position: relative;"},{"lineNumber":294,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":295,"author":{"gitId":"-"},"content":"}"},{"lineNumber":296,"author":{"gitId":"-"},"content":""},{"lineNumber":297,"author":{"gitId":"-"},"content":"button.function-btn {"},{"lineNumber":298,"author":{"gitId":"-"},"content":" border: 1px solid #d7dadc;"},{"lineNumber":299,"author":{"gitId":"-"},"content":" border-radius: 5px;"},{"lineNumber":300,"author":{"gitId":"-"},"content":" color: darkgray;"},{"lineNumber":301,"author":{"gitId":"-"},"content":" cursor: pointer;"},{"lineNumber":302,"author":{"gitId":"-"},"content":" display: none;"},{"lineNumber":303,"author":{"gitId":"-"},"content":" margin: 0.17rem;"},{"lineNumber":304,"author":{"gitId":"-"},"content":" padding: 0.35rem;"},{"lineNumber":305,"author":{"gitId":"-"},"content":" position: absolute;"},{"lineNumber":306,"author":{"gitId":"-"},"content":" right: 0;"},{"lineNumber":307,"author":{"gitId":"-"},"content":" text-align: center;"},{"lineNumber":308,"author":{"gitId":"-"},"content":" white-space: nowrap;"},{"lineNumber":309,"author":{"gitId":"-"},"content":"}"},{"lineNumber":310,"author":{"gitId":"-"},"content":""},{"lineNumber":311,"author":{"gitId":"-"},"content":"button.function-btn + button.function-btn {"},{"lineNumber":312,"author":{"gitId":"-"},"content":" right: 36px;"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}"},{"lineNumber":314,"author":{"gitId":"-"},"content":""},{"lineNumber":315,"author":{"gitId":"-"},"content":"pre:hover \u003e .function-btn-container \u003e button.function-btn {"},{"lineNumber":316,"author":{"gitId":"-"},"content":" display: block;"},{"lineNumber":317,"author":{"gitId":"-"},"content":"}"},{"lineNumber":318,"author":{"gitId":"-"},"content":""},{"lineNumber":319,"author":{"gitId":"-"},"content":".function-btn:hover {"},{"lineNumber":320,"author":{"gitId":"-"},"content":" transition: all 0.5s ease;"},{"lineNumber":321,"author":{"gitId":"-"},"content":" color: gray;"},{"lineNumber":322,"author":{"gitId":"-"},"content":"}"},{"lineNumber":323,"author":{"gitId":"-"},"content":""},{"lineNumber":324,"author":{"gitId":"-"},"content":".function-btn-body {"},{"lineNumber":325,"author":{"gitId":"-"},"content":" align-items: center;"},{"lineNumber":326,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":327,"author":{"gitId":"-"},"content":"}"},{"lineNumber":328,"author":{"gitId":"-"},"content":""},{"lineNumber":329,"author":{"gitId":"-"},"content":".function-btn svg {"},{"lineNumber":330,"author":{"gitId":"-"},"content":" fill: currentColor;"},{"lineNumber":331,"author":{"gitId":"-"},"content":"}"},{"lineNumber":332,"author":{"gitId":"-"},"content":""},{"lineNumber":333,"author":{"gitId":"-"},"content":"/* Wrap class used for \"wrap text\" button. */"},{"lineNumber":334,"author":{"gitId":"-"},"content":"code.wrap {"},{"lineNumber":335,"author":{"gitId":"-"},"content":" white-space: pre-wrap;"},{"lineNumber":336,"author":{"gitId":"-"},"content":" word-wrap: break-word;"},{"lineNumber":337,"author":{"gitId":"Tim-Siu"},"content":" word-break: break-all;"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}"},{"lineNumber":339,"author":{"gitId":"-"},"content":""},{"lineNumber":340,"author":{"gitId":"-"},"content":"/* Octicon sizing */"},{"lineNumber":341,"author":{"gitId":"-"},"content":".octicon {"},{"lineNumber":342,"author":{"gitId":"-"},"content":" height: 1em;"},{"lineNumber":343,"author":{"gitId":"-"},"content":" width: 1em;"},{"lineNumber":344,"author":{"gitId":"-"},"content":"}"},{"lineNumber":345,"author":{"gitId":"-"},"content":""},{"lineNumber":346,"author":{"gitId":"-"},"content":"/* styles for \u003chr\u003e */"},{"lineNumber":347,"author":{"gitId":"-"},"content":"hr {"},{"lineNumber":348,"author":{"gitId":"-"},"content":" border-top: solid 1px rgb(0, 0, 0, 0.1);"},{"lineNumber":349,"author":{"gitId":"-"},"content":" background-color: transparent;"},{"lineNumber":350,"author":{"gitId":"-"},"content":" opacity: 1;"},{"lineNumber":351,"author":{"gitId":"-"},"content":"}"},{"lineNumber":352,"author":{"gitId":"-"},"content":""},{"lineNumber":353,"author":{"gitId":"-"},"content":"hr.dotted {"},{"lineNumber":354,"author":{"gitId":"-"},"content":" border-top-width: 0.1rem;"},{"lineNumber":355,"author":{"gitId":"-"},"content":" border-top-style: dotted;"},{"lineNumber":356,"author":{"gitId":"-"},"content":"}"},{"lineNumber":357,"author":{"gitId":"-"},"content":""},{"lineNumber":358,"author":{"gitId":"-"},"content":"hr.double {"},{"lineNumber":359,"author":{"gitId":"-"},"content":" border-top-width: 0.2rem;"},{"lineNumber":360,"author":{"gitId":"-"},"content":" border-top-style: double;"},{"lineNumber":361,"author":{"gitId":"-"},"content":"}"},{"lineNumber":362,"author":{"gitId":"-"},"content":""},{"lineNumber":363,"author":{"gitId":"-"},"content":"hr.dashed {"},{"lineNumber":364,"author":{"gitId":"-"},"content":" border-top-width: 0.1rem;"},{"lineNumber":365,"author":{"gitId":"-"},"content":" border-top-style: dashed;"},{"lineNumber":366,"author":{"gitId":"-"},"content":"}"},{"lineNumber":367,"author":{"gitId":"-"},"content":""},{"lineNumber":368,"author":{"gitId":"-"},"content":"hr.thick {"},{"lineNumber":369,"author":{"gitId":"-"},"content":" border-top-width: 0.15rem;"},{"lineNumber":370,"author":{"gitId":"-"},"content":"}"},{"lineNumber":371,"author":{"gitId":"-"},"content":""},{"lineNumber":372,"author":{"gitId":"-"},"content":"hr.thick-1 {"},{"lineNumber":373,"author":{"gitId":"-"},"content":" border-top-width: 0.25rem;"},{"lineNumber":374,"author":{"gitId":"-"},"content":"}"},{"lineNumber":375,"author":{"gitId":"-"},"content":""},{"lineNumber":376,"author":{"gitId":"-"},"content":"hr.thick-2 {"},{"lineNumber":377,"author":{"gitId":"-"},"content":" border-top-width: 0.5rem;"},{"lineNumber":378,"author":{"gitId":"-"},"content":"}"},{"lineNumber":379,"author":{"gitId":"-"},"content":""},{"lineNumber":380,"author":{"gitId":"-"},"content":"hr.thick-3 {"},{"lineNumber":381,"author":{"gitId":"-"},"content":" border-top-width: 0.75rem;"},{"lineNumber":382,"author":{"gitId":"-"},"content":"}"},{"lineNumber":383,"author":{"gitId":"-"},"content":""},{"lineNumber":384,"author":{"gitId":"-"},"content":"ol,"},{"lineNumber":385,"author":{"gitId":"-"},"content":"ul {"},{"lineNumber":386,"author":{"gitId":"-"},"content":" padding-left: 1.5rem;"},{"lineNumber":387,"author":{"gitId":"-"},"content":"}"},{"lineNumber":388,"author":{"gitId":"-"},"content":""},{"lineNumber":389,"author":{"gitId":"-"},"content":"h1,"},{"lineNumber":390,"author":{"gitId":"-"},"content":"h2,"},{"lineNumber":391,"author":{"gitId":"-"},"content":"h3,"},{"lineNumber":392,"author":{"gitId":"-"},"content":"h4,"},{"lineNumber":393,"author":{"gitId":"-"},"content":"h5,"},{"lineNumber":394,"author":{"gitId":"-"},"content":"h6 {"},{"lineNumber":395,"author":{"gitId":"-"},"content":" margin-bottom: 1rem;"},{"lineNumber":396,"author":{"gitId":"-"},"content":" scroll-margin-top: var(--sticky-header-height);"},{"lineNumber":397,"author":{"gitId":"-"},"content":"}"},{"lineNumber":398,"author":{"gitId":"-"},"content":""},{"lineNumber":399,"author":{"gitId":"-"},"content":".block-embed {"},{"lineNumber":400,"author":{"gitId":"-"},"content":" overflow-x: auto;"},{"lineNumber":401,"author":{"gitId":"-"},"content":" position: relative;"},{"lineNumber":402,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":403,"author":{"gitId":"-"},"content":"}"},{"lineNumber":404,"author":{"gitId":"-"},"content":""},{"lineNumber":405,"author":{"gitId":"-"},"content":".block-embed iframe {"},{"lineNumber":406,"author":{"gitId":"-"},"content":" position: absolute;"},{"lineNumber":407,"author":{"gitId":"-"},"content":" top: 0;"},{"lineNumber":408,"author":{"gitId":"-"},"content":" left: 0;"},{"lineNumber":409,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":410,"author":{"gitId":"-"},"content":" height: 100%;"},{"lineNumber":411,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"-":382,"Tim-Siu":29}},{"path":"packages/core/src/Site/siteConvertLayout.njk","fileType":"njk","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{% raw %}{{baseUrl}}{% endraw %}/stylesheets/main.css\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar placement\u003d\"top\" type\u003d\"dark\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{% raw %}{{baseUrl}}{% endraw %}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003e"},{"lineNumber":8,"author":{"gitId":"jingting1412"},"content":" \u003ci class\u003d\"fa-solid fa-house\"\u003e\u003c/i\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003c/a\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{% raw %}{{baseUrl}}{% endraw %}/index.html\" class\u003d\"nav-link\"\u003eHOME\u003c/a\u003e\u003c/li\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{% raw %}{{baseUrl}}{% endraw %}/about.html\" class\u003d\"nav-link\"\u003eABOUT\u003c/a\u003e\u003c/li\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/form\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/li\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003c/header\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eContents\u003c/div\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":"{{ siteNav }}"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/nav\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cbreadcrumb /\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" {% raw %}{{ content }}{% endraw %}"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/nav\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003cfooter\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":"{%- set defaultFooter -%}"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003csmall\u003e[Generated by {% raw %}{{MarkBind}}{% endraw %}]\u003c/small\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":"{%- endset -%}"},{"lineNumber":50,"author":{"gitId":"-"},"content":"{{ footer or defaultFooter }}"},{"lineNumber":51,"author":{"gitId":"-"},"content":"\u003c/footer\u003e"}],"authorContributionMap":{"jingting1412":1,"-":50}},{"path":"scripts/process_message.py","fileType":"py","lines":[{"lineNumber":1,"author":{"gitId":"KevinEyo1"},"content":"import json"},{"lineNumber":2,"author":{"gitId":"KevinEyo1"},"content":"import re"},{"lineNumber":3,"author":{"gitId":"KevinEyo1"},"content":"import sys"},{"lineNumber":4,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":5,"author":{"gitId":"KevinEyo1"},"content":"markdown_content \u003d sys.argv[1]"},{"lineNumber":6,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":7,"author":{"gitId":"KevinEyo1"},"content":"# Preprocessing the markdown content"},{"lineNumber":8,"author":{"gitId":"KevinEyo1"},"content":"markdown_content \u003d markdown_content.replace(\u0027`\u0027, \u0027\\\\`\u0027)"},{"lineNumber":9,"author":{"gitId":"KevinEyo1"},"content":"markdown_content \u003d markdown_content.replace(\u0027(\u0027, \u0027\\\\(\u0027).replace(\u0027)\u0027, \u0027\\\\)\u0027)"},{"lineNumber":10,"author":{"gitId":"KevinEyo1"},"content":"markdown_content \u003d re.sub(r\u0027\u003c!--.*?--\u003e\u0027, \u0027\u0027, markdown_content, flags\u003dre.DOTALL) # Remove HTML comments"},{"lineNumber":11,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":12,"author":{"gitId":"KevinEyo1"},"content":"print(markdown_content)"},{"lineNumber":13,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":14,"author":{"gitId":"KevinEyo1"},"content":""},{"lineNumber":15,"author":{"gitId":"KevinEyo1"},"content":""}],"authorContributionMap":{"KevinEyo1":15}}] diff --git a/markbind_markbind_master/commits.json b/markbind_markbind_master/commits.json index 029530d..ae9449a 100644 --- a/markbind_markbind_master/commits.json +++ b/markbind_markbind_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"xenosf":[],"sopa301":[],"mingyuanc":[],"jingting1412":[{"date":"2024-01-25","commitResults":[{"hash":"613461c0ed23970046e1b17a2099ac5b2df71200","isMergeCommit":false,"messageTitle":"Replacing default icon for conversion (#2389)","messageBody":"Change default favicon for conversions","fileTypesAndContributionMap":{"js":{"insertions":24,"deletions":24},"njk":{"insertions":1,"deletions":1}}}]}],"KevinEyo1":[{"date":"2024-02-24","commitResults":[{"hash":"8bac97a3f0143e39c601e34a4761a4a0669eba97","isMergeCommit":false,"messageTitle":"GitHub Actions: add check for empty commit message","messageBody":"There is no checking of proposed commit message presence.\r\n\r\nPR authors may forget to include proposed commit message.\r\n\r\nAdding a check using GitHub Actions will help remind and ensure\r\nthat authors don\u0027t miss out on filling in the commit message.\r\n\r\nLet\u0027s add a job to the a new workflow, pr-message-reminder.yml\r\nfile to help automate checking and reminding of filling in the\r\nproposed commit message for each PR.\r\n\r\nThis approach automates the process, without having to have\r\nother users check and remind PR authors themselves. Adding the\r\nnew job to a new workflow will allow greater control of job triggers\r\nwhile maintaining clean code.","fileTypesAndContributionMap":{"yml":{"insertions":39,"deletions":0},"py":{"insertions":15,"deletions":0}}}]}],"LamJiuFong":[{"date":"2024-02-17","commitResults":[{"hash":"2647090c14283e8f108f478495c5cba4514023c4","isMergeCommit":false,"messageTitle":"Allow `markbind serve` to specify custom host #2382 (#2395)","messageBody":"Allow markbind serve to specify custom host\r\n\r\nCo-authored-by: Jiu Fong Lam \u003c\u003e","fileTypesAndContributionMap":{"md":{"insertions":5,"deletions":3},"js":{"insertions":48,"deletions":8}}}]}],"yiwen101":[{"date":"2024-02-12","commitResults":[{"hash":"7d9cf5a1aff00079400f020a71ad03332dc6d8f8","isMergeCommit":false,"messageTitle":"Add documentation on troubleshooting rendering markdown","messageBody":"* Update trouble shooting\r\n\r\n* Update code examples in affected presentation components\r\n\r\n* Update message for presentation component\r\n\r\n* Revert unrelated changes\r\n\r\n* Fix links\r\n\r\n* Update docs/userGuide/components/presentation.md\r\n\r\nCo-authored-by: Chan Yu Cheng \u003c77204346+yucheng11122017@users.noreply.github.com\u003e\r\n\r\n* Revert distracting changes made by formatter\r\n\r\n* Revert distracting changes by formatter2\r\n\r\n* Migrate to codeAndOutput\r\n\r\n* Updade doc\r\n\r\n* Update presentation.md\r\n\r\n* Update ug\r\n\r\n* Clean formatting error\r\n\r\n* Proof read\r\n\r\n* Improve formatting\r\n\r\n* Improve format\r\n\r\n* Improve format\r\n\r\n* Update troubleshooting.md\r\n\r\n* Update troubleshooting.md\r\n\r\n---------\r\n\r\nCo-authored-by: Chan Yu Cheng \u003c77204346+yucheng11122017@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"md":{"insertions":81,"deletions":10}}}]},{"date":"2024-02-25","commitResults":[{"hash":"ef502dbf57d5b798ec535c4d4a62f62b5dd2588f","isMergeCommit":false,"messageTitle":" Fix external styles and script not hoisted by externals (#2414)","messageBody":"Also add warning in documentation that styles in hoisted\r\nexternal will also affect the rest of the page","fileTypesAndContributionMap":{"md":{"insertions":27,"deletions":0},"json":{"insertions":13,"deletions":0},"js":{"insertions":16,"deletions":0}}}]}],"jonasongg":[],"domoberzin":[],"asdfghjkxd":[],"yuanxi1":[],"supermii2":[],"marquestye":[],"nknguyenhc":[],"Arif-Khalid":[],"NereusWB922":[],"dishenggg":[],"MadLamprey":[],"Tim-Siu":[{"date":"2024-01-28","commitResults":[{"hash":"25326afde09843a79c4c6efb8bf0d8733844d415","isMergeCommit":false,"messageTitle":"Correct broken UG external link (#2392)","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":2,"deletions":2}}}]},{"date":"2024-02-01","commitResults":[{"hash":"67ae4b134ce35eacad680850b7233e39a516b71e","isMergeCommit":false,"messageTitle":"Use a more noticeable color for highlight words in fenced code under dark theme","messageBody":"","fileTypesAndContributionMap":{"css":{"insertions":8,"deletions":8}}}]}]},"authorFileTypeContributionMap":{"xenosf":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"sopa301":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"mingyuanc":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"jingting1412":{"java":0,"js":24,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":1,"py":0,"vue":0,"yml":0},"KevinEyo1":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":15,"vue":0,"yml":39},"LamJiuFong":{"java":0,"js":48,"css":0,"json":0,"md":5,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"yiwen101":{"java":0,"js":16,"css":0,"json":13,"md":108,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"jonasongg":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"domoberzin":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"asdfghjkxd":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"yuanxi1":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"supermii2":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"marquestye":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"nknguyenhc":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"Arif-Khalid":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"NereusWB922":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"dishenggg":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"MadLamprey":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"Tim-Siu":{"java":0,"js":0,"css":8,"json":0,"md":1,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0}},"authorContributionVariance":{"xenosf":0.0,"sopa301":0.0,"mingyuanc":0.0,"jingting1412":28.40535,"KevinEyo1":33.13199,"LamJiuFong":46.53931,"yiwen101":128.37491,"jonasongg":0.0,"domoberzin":0.0,"asdfghjkxd":0.0,"yuanxi1":0.0,"supermii2":0.0,"marquestye":0.0,"nknguyenhc":0.0,"Arif-Khalid":0.0,"NereusWB922":0.0,"dishenggg":0.0,"MadLamprey":0.0,"Tim-Siu":3.0735922},"authorDisplayNameMap":{"xenosf":"XENO..NONG","sopa301":"POON..RYAN","mingyuanc":"CHIN..YUAN","jingting1412":"WANG..TING","KevinEyo1":"EYO ..EVIN","LamJiuFong":"LAM ..FONG","yiwen101":"WANG..IWEN","jonasongg":"JONA.. WEI","domoberzin":"DOMI.. GIN","asdfghjkxd":"GEOR.. YAO","yuanxi1":"ZHU ..ANXI","supermii2":"ALVI..S NG","marquestye":"TYE ..QUES","nknguyenhc":"NGUY..UYEN","Arif-Khalid":"ARIF..ALID","NereusWB922":"NERE.. BIN","dishenggg":"YEO ..HENG","MadLamprey":"MISR..ITYA","Tim-Siu":"XU S..UYAO"}} +{"authorDailyContributionsMap":{"xenosf":[],"sopa301":[],"mingyuanc":[],"jingting1412":[{"date":"2024-01-25","commitResults":[{"hash":"613461c0ed23970046e1b17a2099ac5b2df71200","isMergeCommit":false,"messageTitle":"Replacing default icon for conversion (#2389)","messageBody":"Change default favicon for conversions","fileTypesAndContributionMap":{"js":{"insertions":24,"deletions":24},"njk":{"insertions":1,"deletions":1}}}]}],"KevinEyo1":[{"date":"2024-02-24","commitResults":[{"hash":"8bac97a3f0143e39c601e34a4761a4a0669eba97","isMergeCommit":false,"messageTitle":"GitHub Actions: add check for empty commit message","messageBody":"There is no checking of proposed commit message presence.\r\n\r\nPR authors may forget to include proposed commit message.\r\n\r\nAdding a check using GitHub Actions will help remind and ensure\r\nthat authors don\u0027t miss out on filling in the commit message.\r\n\r\nLet\u0027s add a job to the a new workflow, pr-message-reminder.yml\r\nfile to help automate checking and reminding of filling in the\r\nproposed commit message for each PR.\r\n\r\nThis approach automates the process, without having to have\r\nother users check and remind PR authors themselves. Adding the\r\nnew job to a new workflow will allow greater control of job triggers\r\nwhile maintaining clean code.","fileTypesAndContributionMap":{"yml":{"insertions":39,"deletions":0},"py":{"insertions":15,"deletions":0}}}]}],"LamJiuFong":[{"date":"2024-02-17","commitResults":[{"hash":"2647090c14283e8f108f478495c5cba4514023c4","isMergeCommit":false,"messageTitle":"Allow `markbind serve` to specify custom host #2382 (#2395)","messageBody":"Allow markbind serve to specify custom host\r\n\r\nCo-authored-by: Jiu Fong Lam \u003c\u003e","fileTypesAndContributionMap":{"md":{"insertions":5,"deletions":3},"js":{"insertions":48,"deletions":8}}}]}],"yiwen101":[{"date":"2024-02-12","commitResults":[{"hash":"7d9cf5a1aff00079400f020a71ad03332dc6d8f8","isMergeCommit":false,"messageTitle":"Add documentation on troubleshooting rendering markdown","messageBody":"* Update trouble shooting\r\n\r\n* Update code examples in affected presentation components\r\n\r\n* Update message for presentation component\r\n\r\n* Revert unrelated changes\r\n\r\n* Fix links\r\n\r\n* Update docs/userGuide/components/presentation.md\r\n\r\nCo-authored-by: Chan Yu Cheng \u003c77204346+yucheng11122017@users.noreply.github.com\u003e\r\n\r\n* Revert distracting changes made by formatter\r\n\r\n* Revert distracting changes by formatter2\r\n\r\n* Migrate to codeAndOutput\r\n\r\n* Updade doc\r\n\r\n* Update presentation.md\r\n\r\n* Update ug\r\n\r\n* Clean formatting error\r\n\r\n* Proof read\r\n\r\n* Improve formatting\r\n\r\n* Improve format\r\n\r\n* Improve format\r\n\r\n* Update troubleshooting.md\r\n\r\n* Update troubleshooting.md\r\n\r\n---------\r\n\r\nCo-authored-by: Chan Yu Cheng \u003c77204346+yucheng11122017@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"md":{"insertions":81,"deletions":10}}}]},{"date":"2024-02-25","commitResults":[{"hash":"ef502dbf57d5b798ec535c4d4a62f62b5dd2588f","isMergeCommit":false,"messageTitle":" Fix external styles and script not hoisted by externals (#2414)","messageBody":"Also add warning in documentation that styles in hoisted\r\nexternal will also affect the rest of the page","fileTypesAndContributionMap":{"md":{"insertions":27,"deletions":0},"json":{"insertions":13,"deletions":0},"js":{"insertions":16,"deletions":0}}}]}],"jonasongg":[],"domoberzin":[],"asdfghjkxd":[],"yuanxi1":[],"supermii2":[],"marquestye":[],"nknguyenhc":[],"Arif-Khalid":[],"NereusWB922":[],"dishenggg":[],"MadLamprey":[],"Tim-Siu":[{"date":"2024-01-28","commitResults":[{"hash":"25326afde09843a79c4c6efb8bf0d8733844d415","isMergeCommit":false,"messageTitle":"Correct broken UG external link (#2392)","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":2,"deletions":2}}}]},{"date":"2024-02-01","commitResults":[{"hash":"67ae4b134ce35eacad680850b7233e39a516b71e","isMergeCommit":false,"messageTitle":"Use a more noticeable color for highlight words in fenced code under dark theme","messageBody":"","fileTypesAndContributionMap":{"css":{"insertions":8,"deletions":8}}}]},{"date":"2024-02-28","commitResults":[{"hash":"990d6136d1103ceae3005f1fe72be920cc7a6448","isMergeCommit":false,"messageTitle":"Automatically enforce soft-wrapping and add line-numbers when code is cut off for printing","messageBody":"","fileTypesAndContributionMap":{"css":{"insertions":29,"deletions":4},"md":{"insertions":10,"deletions":0},"js":{"insertions":18,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"xenosf":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"sopa301":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"mingyuanc":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"jingting1412":{"java":0,"js":24,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":1,"py":0,"vue":0,"yml":0},"KevinEyo1":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":15,"vue":0,"yml":39},"LamJiuFong":{"java":0,"js":48,"css":0,"json":0,"md":5,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"yiwen101":{"java":0,"js":16,"css":0,"json":13,"md":108,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"jonasongg":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"domoberzin":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"asdfghjkxd":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"yuanxi1":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"supermii2":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"marquestye":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"nknguyenhc":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"Arif-Khalid":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"NereusWB922":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"dishenggg":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"MadLamprey":{"java":0,"js":0,"css":0,"json":0,"md":0,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0},"Tim-Siu":{"java":0,"js":18,"css":37,"json":0,"md":11,"mbd":0,"mbdf":0,"njk":0,"py":0,"vue":0,"yml":0}},"authorContributionVariance":{"xenosf":0.0,"sopa301":0.0,"mingyuanc":0.0,"jingting1412":27.469116,"KevinEyo1":32.040005,"LamJiuFong":45.005424,"yiwen101":124.187805,"jonasongg":0.0,"domoberzin":0.0,"asdfghjkxd":0.0,"yuanxi1":0.0,"supermii2":0.0,"marquestye":0.0,"nknguyenhc":0.0,"Arif-Khalid":0.0,"NereusWB922":0.0,"dishenggg":0.0,"MadLamprey":0.0,"Tim-Siu":43.556664},"authorDisplayNameMap":{"xenosf":"XENO..NONG","sopa301":"POON..RYAN","mingyuanc":"CHIN..YUAN","jingting1412":"WANG..TING","KevinEyo1":"EYO ..EVIN","LamJiuFong":"LAM ..FONG","yiwen101":"WANG..IWEN","jonasongg":"JONA.. WEI","domoberzin":"DOMI.. GIN","asdfghjkxd":"GEOR.. YAO","yuanxi1":"ZHU ..ANXI","supermii2":"ALVI..S NG","marquestye":"TYE ..QUES","nknguyenhc":"NGUY..UYEN","Arif-Khalid":"ARIF..ALID","NereusWB922":"NERE.. BIN","dishenggg":"YEO ..HENG","MadLamprey":"MISR..ITYA","Tim-Siu":"XU S..UYAO"}} diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index 3083ad8..bf95427 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,1546 +1,1546 @@ -Feb 28, 2024 12:02:17 AM reposense.system.LogsManager addFileHandler +Feb 29, 2024 12:02:09 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Feb 28, 2024 12:02:18 AM reposense.parser.CsvParser validateHeader +Feb 29, 2024 12:02:09 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, repo-config.csv, and recognized columns: Ignore Standalone Config, Repository's Location, Branch, Shallow Cloning, File formats, Ignore Glob List, Ignore Authors List, Find Previous Authors, Ignore Commits List -Feb 28, 2024 12:02:18 AM reposense.parser.CsvParser validateHeader +Feb 29, 2024 12:02:09 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, author-config.csv, and recognized columns: Author's Emails, Repository's Location, Author's GitHub ID, Branch, Author's Display Name, Ignore Glob List, Author's Git Author Name -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias marquestye found. The alias will belong to the last author - marquestye -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias marquestye found. The alias will belong to the last author - marquestye -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias marquestye found. The alias will belong to the last author - marquestye -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias marquestye found. The alias will belong to the last author - marquestye -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias marquestye found. The alias will belong to the last author - marquestye -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias marquestye found. The alias will belong to the last author - marquestye -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias arif-khalid found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias arif-khalid found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias arif-khalid found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias arif-khalid found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias arif-khalid found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias arif-khalid found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kevineyo1 found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kevineyo1 found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kevineyo1 found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kevineyo1 found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kevineyo1 found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kevineyo1 found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias domoberzin found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias domoberzin found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias domoberzin found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias domoberzin found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias domoberzin found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias domoberzin found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yuanxi1 found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yuanxi1 found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yuanxi1 found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yuanxi1 found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yuanxi1 found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yuanxi1 found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias dishenggg found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias dishenggg found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias dishenggg found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias dishenggg found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias dishenggg found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias dishenggg found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias supermii2 found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias supermii2 found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias supermii2 found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias supermii2 found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias supermii2 found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias supermii2 found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jonasongg found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jonasongg found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jonasongg found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jonasongg found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jonasongg found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jonasongg found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nereuswb922 found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nereuswb922 found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nereuswb922 found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nereuswb922 found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nereuswb922 found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nereuswb922 found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lamjiufong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lamjiufong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lamjiufong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lamjiufong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lamjiufong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lamjiufong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yiwen101 found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yiwen101 found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yiwen101 found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yiwen101 found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yiwen101 found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yiwen101 found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sopa301 found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sopa301 found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sopa301 found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sopa301 found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sopa301 found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sopa301 found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyuanc found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyuanc found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyuanc found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyuanc found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyuanc found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyuanc found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nknguyenhc found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nknguyenhc found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nknguyenhc found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nknguyenhc found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nknguyenhc found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nknguyenhc found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jingting1412 found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jingting1412 found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jingting1412 found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jingting1412 found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jingting1412 found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jingting1412 found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tim-siu found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tim-siu found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tim-siu found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tim-siu found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tim-siu found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tim-siu found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias marquestye found. The alias will belong to the last author - marquestye -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias arif-khalid found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kevineyo1 found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias domoberzin found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yuanxi1 found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias dishenggg found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias supermii2 found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jonasongg found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nereuswb922 found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lamjiufong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yiwen101 found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sopa301 found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyuanc found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nknguyenhc found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jingting1412 found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tim-siu found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias marquestye found. The alias will belong to the last author - marquestye -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias arif-khalid found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kevineyo1 found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias domoberzin found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yuanxi1 found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias dishenggg found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias supermii2 found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jonasongg found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nereuswb922 found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lamjiufong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yiwen101 found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sopa301 found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyuanc found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nknguyenhc found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jingting1412 found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tim-siu found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias marquestye found. The alias will belong to the last author - marquestye -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias arif-khalid found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kevineyo1 found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias domoberzin found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yuanxi1 found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias dishenggg found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias supermii2 found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jonasongg found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nereuswb922 found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lamjiufong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yiwen101 found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sopa301 found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyuanc found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nknguyenhc found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jingting1412 found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tim-siu found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias marquestye found. The alias will belong to the last author - marquestye -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias arif-khalid found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kevineyo1 found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias domoberzin found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yuanxi1 found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias dishenggg found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias supermii2 found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jonasongg found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nereuswb922 found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lamjiufong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yiwen101 found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sopa301 found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyuanc found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nknguyenhc found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jingting1412 found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tim-siu found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias marquestye found. The alias will belong to the last author - marquestye -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias arif-khalid found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kevineyo1 found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias domoberzin found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yuanxi1 found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias dishenggg found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias supermii2 found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jonasongg found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nereuswb922 found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lamjiufong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yiwen101 found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sopa301 found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyuanc found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nknguyenhc found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jingting1412 found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tim-siu found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias marquestye found. The alias will belong to the last author - marquestye -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias arif-khalid found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Arif-Khalid -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kevineyo1 found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - KevinEyo1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias domoberzin found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - domoberzin -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yuanxi1 found. The alias will belong to the last author - yuanxi1 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias dishenggg found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - dishenggg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - asdfghjkxd -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias supermii2 found. The alias will belong to the last author - supermii2 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jonasongg found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jonasongg -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nereuswb922 found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - NereusWB922 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lamjiufong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - LamJiuFong -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - xenosf -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yiwen101 found. The alias will belong to the last author - yiwen101 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sopa301 found. The alias will belong to the last author - sopa301 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyuanc found. The alias will belong to the last author - mingyuanc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nknguyenhc found. The alias will belong to the last author - nknguyenhc -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jingting1412 found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - jingting1412 -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tim-siu found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - Tim-Siu -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sean leong found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jiachen found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 29, 2024 12:02:09 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias lzq found. The alias will belong to the last author - MadLamprey -Feb 28, 2024 12:02:18 AM reposense.git.GitConfig getGlobalGitLfsConfig +Feb 29, 2024 12:02:09 AM reposense.git.GitConfig getGlobalGitLfsConfig WARNING: Could not get global git lfs config java.lang.RuntimeException: reposense.system.CommandRunnerProcessException: Error returned from command git config --global --list on path . : fatal: unable to read config file '/home/runner/.gitconfig': No such file or directory @@ -1556,117 +1556,117 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Feb 28, 2024 12:02:19 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/CATcher-org/WATcher.git... -Feb 28, 2024 12:02:19 AM reposense.report.RepoCloner spawnCloneProcess +Feb 29, 2024 12:02:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/markbind/markbind.git... -Feb 28, 2024 12:02:19 AM reposense.report.RepoCloner spawnCloneProcess +Feb 29, 2024 12:02:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/reposense/reposense.git... -Feb 28, 2024 12:02:19 AM reposense.report.RepoCloner spawnCloneProcess +Feb 29, 2024 12:02:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TEAMMATES/teammates.git... -Feb 28, 2024 12:02:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/markbind/markbind.git to complete... -Feb 28, 2024 12:02:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/CATcher-org/WATcher.git to complete... -Feb 28, 2024 12:02:19 AM reposense.report.RepoCloner waitForCloneProcess +Feb 29, 2024 12:02:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/CATcher-org/WATcher.git... +Feb 29, 2024 12:02:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/reposense/reposense.git to complete... -Feb 28, 2024 12:02:19 AM reposense.report.RepoCloner waitForCloneProcess +Feb 29, 2024 12:02:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TEAMMATES/teammates.git to complete... -Feb 28, 2024 12:02:19 AM reposense.report.RepoCloner waitForCloneProcess +Feb 29, 2024 12:02:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/CATcher-org/WATcher.git to complete... +Feb 29, 2024 12:02:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/markbind/markbind.git to complete... +Feb 29, 2024 12:02:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/CATcher-org/WATcher.git completed! -Feb 28, 2024 12:02:19 AM reposense.report.RepoCloner spawnCloneProcess +Feb 29, 2024 12:02:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/CATcher-org/CATcher.git... -Feb 28, 2024 12:02:19 AM reposense.report.ReportGenerator analyzeRepos +Feb 29, 2024 12:02:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [1/6] Analyzing https://github.com/CATcher-org/WATcher.git (main)... -Feb 28, 2024 12:02:19 AM reposense.report.RepoCloner waitForCloneProcess +Feb 29, 2024 12:02:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/CATcher-org/CATcher.git to complete... -Feb 28, 2024 12:02:19 AM reposense.report.ReportGenerator updateRepoConfig +Feb 29, 2024 12:02:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/CATcher-org/WATcher.git (main) does not contain a standalone config file. -Feb 28, 2024 12:02:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 29, 2024 12:02:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/CATcher-org/WATcher.git (main)... -Feb 28, 2024 12:02:21 AM reposense.report.RepoCloner waitForCloneProcess +Feb 29, 2024 12:02:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/CATcher-org/CATcher.git completed! -Feb 28, 2024 12:02:21 AM reposense.report.RepoCloner spawnCloneProcess +Feb 29, 2024 12:02:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/se-edu/addressbook-level3.git... -Feb 28, 2024 12:02:21 AM reposense.report.ReportGenerator analyzeRepos +Feb 29, 2024 12:02:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [2/6] Analyzing https://github.com/CATcher-org/CATcher.git (master)... -Feb 28, 2024 12:02:21 AM reposense.report.RepoCloner waitForCloneProcess +Feb 29, 2024 12:02:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/se-edu/addressbook-level3.git to complete... -Feb 28, 2024 12:02:21 AM reposense.report.ReportGenerator updateRepoConfig +Feb 29, 2024 12:02:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/CATcher-org/CATcher.git (master) does not contain a standalone config file. -Feb 28, 2024 12:02:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 29, 2024 12:02:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/CATcher-org/CATcher.git (master)... -Feb 28, 2024 12:02:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 29, 2024 12:02:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/CATcher-org/WATcher.git (main)... -Feb 28, 2024 12:02:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 29, 2024 12:02:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/CATcher-org/WATcher.git (main)... -Feb 28, 2024 12:02:23 AM reposense.report.RepoCloner waitForCloneProcess +Feb 29, 2024 12:02:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/CATcher-org/WATcher.git (main) completed! +Feb 29, 2024 12:02:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/se-edu/addressbook-level3.git completed! -Feb 28, 2024 12:02:23 AM reposense.report.ReportGenerator analyzeRepos +Feb 29, 2024 12:02:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [3/6] Analyzing https://github.com/se-edu/addressbook-level3.git (master)... -Feb 28, 2024 12:02:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/CATcher-org/WATcher.git (main) completed! -Feb 28, 2024 12:02:23 AM reposense.report.ReportGenerator updateRepoConfig +Feb 29, 2024 12:02:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/CATcher-org/CATcher.git (master)... +Feb 29, 2024 12:02:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/se-edu/addressbook-level3.git (master) does not contain a standalone config file. -Feb 28, 2024 12:02:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 29, 2024 12:02:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/se-edu/addressbook-level3.git (master)... -Feb 28, 2024 12:02:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/CATcher-org/CATcher.git (master)... -Feb 28, 2024 12:02:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 29, 2024 12:02:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/markbind/markbind.git completed! +Feb 29, 2024 12:02:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/se-edu/addressbook-level3.git (master)... -Feb 28, 2024 12:02:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 29, 2024 12:02:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [4/6] Analyzing https://github.com/markbind/markbind.git (master)... +Feb 29, 2024 12:02:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/CATcher-org/CATcher.git (master)... -Feb 28, 2024 12:02:24 AM reposense.report.ReportGenerator analyzeRepo +Feb 29, 2024 12:02:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/CATcher-org/CATcher.git (master) completed! -Feb 28, 2024 12:02:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/markbind/markbind.git completed! -Feb 28, 2024 12:02:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 29, 2024 12:02:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/se-edu/addressbook-level3.git (master)... -Feb 28, 2024 12:02:24 AM reposense.report.ReportGenerator analyzeRepo +Feb 29, 2024 12:02:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/se-edu/addressbook-level3.git (master) completed! -Feb 28, 2024 12:02:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [4/6] Analyzing https://github.com/markbind/markbind.git (master)... -Feb 28, 2024 12:02:24 AM reposense.report.ReportGenerator updateRepoConfig +Feb 29, 2024 12:02:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/markbind/markbind.git (master) does not contain a standalone config file. -Feb 28, 2024 12:02:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 29, 2024 12:02:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/markbind/markbind.git (master)... -Feb 28, 2024 12:02:27 AM reposense.report.RepoCloner waitForCloneProcess +Feb 29, 2024 12:02:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/reposense/reposense.git completed! -Feb 28, 2024 12:02:27 AM reposense.report.ReportGenerator analyzeRepos +Feb 29, 2024 12:02:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [5/6] Analyzing https://github.com/reposense/reposense.git (master)... -Feb 28, 2024 12:02:28 AM reposense.report.ReportGenerator updateRepoConfig +Feb 29, 2024 12:02:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: Ignoring standalone config file in https://github.com/reposense/reposense.git (master). -Feb 28, 2024 12:02:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 29, 2024 12:02:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/reposense/reposense.git (master)... -Feb 28, 2024 12:02:28 AM reposense.authorship.FileInfoExtractor generateFileInfo -WARNING: File "frontend/package-lock.json" has 1156545B size. The file size limit is set at 500000B. Exact line diffs will be excluded from report... -Feb 28, 2024 12:02:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 29, 2024 12:02:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/markbind/markbind.git (master)... -Feb 28, 2024 12:02:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 29, 2024 12:02:19 AM reposense.authorship.FileInfoExtractor generateFileInfo +WARNING: File "frontend/package-lock.json" has 1156545B size. The file size limit is set at 500000B. Exact line diffs will be excluded from report... +Feb 29, 2024 12:02:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/markbind/markbind.git (master)... -Feb 28, 2024 12:02:28 AM reposense.report.ReportGenerator analyzeRepo +Feb 29, 2024 12:02:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/markbind/markbind.git (master) completed! -Feb 28, 2024 12:02:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 29, 2024 12:02:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/reposense/reposense.git (master)... -Feb 28, 2024 12:02:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 29, 2024 12:02:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/reposense/reposense.git (master)... -Feb 28, 2024 12:02:32 AM reposense.report.ReportGenerator analyzeRepo +Feb 29, 2024 12:02:24 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/reposense/reposense.git (master) completed! -Feb 28, 2024 12:02:37 AM reposense.report.RepoCloner waitForCloneProcess +Feb 29, 2024 12:02:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TEAMMATES/teammates.git completed! -Feb 28, 2024 12:02:37 AM reposense.report.ReportGenerator analyzeRepos +Feb 29, 2024 12:02:28 AM reposense.report.ReportGenerator analyzeRepos INFO: [6/6] Analyzing https://github.com/TEAMMATES/teammates.git (master)... -Feb 28, 2024 12:02:37 AM reposense.report.ReportGenerator updateRepoConfig +Feb 29, 2024 12:02:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TEAMMATES/teammates.git (master) does not contain a standalone config file. -Feb 28, 2024 12:02:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 29, 2024 12:02:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TEAMMATES/teammates.git (master)... -Feb 28, 2024 12:03:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 29, 2024 12:03:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/TEAMMATES/teammates.git (master)... -Feb 28, 2024 12:03:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 29, 2024 12:03:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/TEAMMATES/teammates.git (master)... -Feb 28, 2024 12:03:11 AM reposense.report.ReportGenerator analyzeRepo +Feb 29, 2024 12:03:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/TEAMMATES/teammates.git (master) completed! -Feb 28, 2024 12:03:11 AM reposense.report.ReportGenerator generateReposReport +Feb 29, 2024 12:03:02 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/2024-dashboard/2024-dashboard/reposense-report -Feb 28, 2024 12:03:11 AM reposense.RepoSense main -INFO: Elapsed processing time: 54.26 second(s) +Feb 29, 2024 12:03:02 AM reposense.RepoSense main +INFO: Elapsed processing time: 52.80 second(s) diff --git a/summary.json b/summary.json index 00705fd..29ded5a 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"5cd529fb46","reportGeneratedTime":"Wed Feb 28 08:02:18 2024 UTC+08:00","reportGenerationTime":" 54.09 second(s)","zoneId":"UTC+08:00","reportTitle":"RepoSense Report","repos":[{"location":{"location":"https://github.com/markbind/markbind.git","repoName":"markbind","organization":"markbind","domainName":"github"},"branch":"master","displayName":"markbind/markbind[master]","outputFolderName":"markbind_markbind_master"},{"location":{"location":"https://github.com/reposense/reposense.git","repoName":"reposense","organization":"reposense","domainName":"github"},"branch":"master","displayName":"reposense/reposense[master]","outputFolderName":"reposense_reposense_master"},{"location":{"location":"https://github.com/se-edu/addressbook-level3.git","repoName":"addressbook-level3","organization":"se-edu","domainName":"github"},"branch":"master","displayName":"se-edu/addressbook-level3[master]","outputFolderName":"se-edu_addressbook-level3_master"},{"location":{"location":"https://github.com/TEAMMATES/teammates.git","repoName":"teammates","organization":"TEAMMATES","domainName":"github"},"branch":"master","displayName":"TEAMMATES/teammates[master]","outputFolderName":"TEAMMATES_teammates_master"},{"location":{"location":"https://github.com/CATcher-org/CATcher.git","repoName":"CATcher","organization":"CATcher-org","domainName":"github"},"branch":"master","displayName":"CATcher-org/CATcher[master]","outputFolderName":"CATcher-org_CATcher_master"},{"location":{"location":"https://github.com/CATcher-org/WATcher.git","repoName":"WATcher","organization":"CATcher-org","domainName":"github"},"branch":"main","displayName":"CATcher-org/WATcher[main]","outputFolderName":"CATcher-org_WATcher_main"}],"errorSet":[],"sinceDate":"2023-12-01","untilDate":"2024-02-28","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}} +{"repoSenseVersion":"5cd529fb46","reportGeneratedTime":"Thu Feb 29 08:02:09 2024 UTC+08:00","reportGenerationTime":" 52.71 second(s)","zoneId":"UTC+08:00","reportTitle":"RepoSense Report","repos":[{"location":{"location":"https://github.com/markbind/markbind.git","repoName":"markbind","organization":"markbind","domainName":"github"},"branch":"master","displayName":"markbind/markbind[master]","outputFolderName":"markbind_markbind_master"},{"location":{"location":"https://github.com/reposense/reposense.git","repoName":"reposense","organization":"reposense","domainName":"github"},"branch":"master","displayName":"reposense/reposense[master]","outputFolderName":"reposense_reposense_master"},{"location":{"location":"https://github.com/se-edu/addressbook-level3.git","repoName":"addressbook-level3","organization":"se-edu","domainName":"github"},"branch":"master","displayName":"se-edu/addressbook-level3[master]","outputFolderName":"se-edu_addressbook-level3_master"},{"location":{"location":"https://github.com/TEAMMATES/teammates.git","repoName":"teammates","organization":"TEAMMATES","domainName":"github"},"branch":"master","displayName":"TEAMMATES/teammates[master]","outputFolderName":"TEAMMATES_teammates_master"},{"location":{"location":"https://github.com/CATcher-org/CATcher.git","repoName":"CATcher","organization":"CATcher-org","domainName":"github"},"branch":"master","displayName":"CATcher-org/CATcher[master]","outputFolderName":"CATcher-org_CATcher_master"},{"location":{"location":"https://github.com/CATcher-org/WATcher.git","repoName":"WATcher","organization":"CATcher-org","domainName":"github"},"branch":"main","displayName":"CATcher-org/WATcher[main]","outputFolderName":"CATcher-org_WATcher_main"}],"errorSet":[],"sinceDate":"2023-12-01","untilDate":"2024-02-29","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}}