mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-22 10:21:36 +03:00
cc2e20a486
refs https://github.com/TryGhost/Ghost/issues/9724 - add `registerComponent` hook to cards so that `{{koenig-editor}}` can fetch properties from card components directly - add word count and reading time utilities - add throttled word count update routine to `{{koenig-editor}}` that walks all sections and counts text words or fetches word/image counts from card components - add `wordCountDidChange` hook to `{{koenig-editor}}` so that word count + reading time can be exposed - modify editor controller to update it's own word count property when koenig triggers it's action - modified the editor template to show reading time + word count next to the post status
22 lines
653 B
JavaScript
22 lines
653 B
JavaScript
export default function readingTime({wordCount, imageCount}) {
|
|
let wordsPerMinute = 275;
|
|
let wordsPerSecond = wordsPerMinute / 60;
|
|
let minute = '1 min read';
|
|
let minutes = '% min read';
|
|
|
|
let readingTimeSeconds = wordCount / wordsPerSecond;
|
|
|
|
for (var i = 12; i > 12 - imageCount; i -= 1) {
|
|
// add 12 seconds for the first image, 11 for the second, etc. limiting at 3
|
|
readingTimeSeconds += Math.max(i, 3);
|
|
}
|
|
|
|
let readingTimeMinutes = Math.round(readingTimeSeconds / 60);
|
|
|
|
if (readingTimeMinutes < 1) {
|
|
return minute;
|
|
} else {
|
|
return minutes.replace('%', readingTimeMinutes);
|
|
}
|
|
}
|