Ghost/ghost/admin/lib/koenig-editor/addon/utils/reading-time.js
Kevin Ansfield cc2e20a486 Koenig - Added reading time and word count display
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
2018-07-20 15:53:21 +01:00

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);
}
}