@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
55 lines (50 loc) • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = TimeToRead;
var _data = require("@wordpress/data");
var _i18n = require("@wordpress/i18n");
var _wordcount = require("@wordpress/wordcount");
var _element = require("@wordpress/element");
var _store = require("../../store");
var _jsxRuntime = require("react/jsx-runtime");
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Average reading rate - based on average taken from
* https://irisreading.com/average-reading-speed-in-various-languages/
* (Characters/minute used for Chinese rather than words).
*
* @type {number} A rough estimate of the average reading rate across multiple languages.
*/const AVERAGE_READING_RATE = 189;
/**
* Component for showing Time To Read in Content.
*
* @return {JSX.Element} The rendered TimeToRead component.
*/
function TimeToRead() {
const content = (0, _data.useSelect)(select => select(_store.store).getEditedPostAttribute('content'), []);
/*
* translators: If your word count is based on single characters (e.g. East Asian characters),
* enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'.
* Do not translate into your own language.
*/
const wordCountType = (0, _i18n._x)('words', 'Word count type. Do not translate!');
const minutesToRead = Math.round((0, _wordcount.count)(content, wordCountType) / AVERAGE_READING_RATE);
const minutesToReadString = minutesToRead === 0 ? (0, _element.createInterpolateElement)((0, _i18n.__)('<span>< 1</span> minute'), {
span: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {})
}) : (0, _element.createInterpolateElement)((0, _i18n.sprintf)( /* translators: %s is the number of minutes the post will take to read. */
(0, _i18n._n)('<span>%d</span> minute', '<span>%d</span> minutes', minutesToRead), minutesToRead), {
span: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {})
});
return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
className: "time-to-read",
children: minutesToReadString
});
}
//# sourceMappingURL=index.js.map