54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const immutable_1 = __importDefault(require("immutable"));
|
|
const encodeNavigation_1 = __importDefault(require("./encodeNavigation"));
|
|
/**
|
|
page.progress is a deprecated property from GitBook v2
|
|
*/
|
|
function encodeProgress(output, page) {
|
|
const current = page.getPath();
|
|
const navigation = immutable_1.default.Map((0, encodeNavigation_1.default)(output));
|
|
const n = navigation.size;
|
|
let percent = 0, prevPercent = 0, currentChapter = null;
|
|
let done = true;
|
|
const chapters = navigation
|
|
.map((nav, chapterPath) => {
|
|
nav.path = chapterPath;
|
|
return nav;
|
|
})
|
|
.valueSeq()
|
|
.sortBy((nav) => {
|
|
return nav.index;
|
|
})
|
|
.map((nav, i) => {
|
|
// Calcul percent
|
|
nav.percent = (i * 100) / Math.max(n - 1, 1);
|
|
// Is it done
|
|
nav.done = done;
|
|
if (nav.path == current) {
|
|
currentChapter = nav;
|
|
percent = nav.percent;
|
|
done = false;
|
|
}
|
|
else if (done) {
|
|
prevPercent = nav.percent;
|
|
}
|
|
return nav;
|
|
})
|
|
.toJS();
|
|
return {
|
|
// Previous percent
|
|
prevPercent: prevPercent,
|
|
// Current percent
|
|
percent: percent,
|
|
// List of chapter with progress
|
|
chapters: chapters,
|
|
// Current chapter
|
|
current: currentChapter
|
|
};
|
|
}
|
|
exports.default = encodeProgress;
|