mirror of
https://github.com/discourse/discourse.git
synced 2025-05-25 19:29:34 +08:00
PERF: reduces rendering time of local-dates (#13931)
- prefers insertAdjacentHTML over innerHTML as it's much faster in this case (about 5x) - memoizes tz.guess() - memoizes list of timezones - inlines template - applies main element class in one pass All in all for a very edge case of about 80 dates it should be faster of about 15/20ms.
This commit is contained in:
@ -1,5 +1,7 @@
|
||||
import { parseBBCodeTag } from "pretty-text/engines/discourse-markdown/bbcode-block";
|
||||
|
||||
const timezoneNames = moment.tz.names();
|
||||
|
||||
function addLocalDate(buffer, matches, state) {
|
||||
let token;
|
||||
|
||||
@ -77,7 +79,7 @@ function addLocalDate(buffer, matches, state) {
|
||||
|
||||
if (
|
||||
config.displayedTimezone &&
|
||||
moment.tz.names().includes(config.displayedTimezone)
|
||||
timezoneNames.includes(config.displayedTimezone)
|
||||
) {
|
||||
token.attrs.push([
|
||||
"data-displayed-timezone",
|
||||
@ -87,7 +89,7 @@ function addLocalDate(buffer, matches, state) {
|
||||
|
||||
if (config.timezones) {
|
||||
const timezones = config.timezones.split("|").filter((timezone) => {
|
||||
return moment.tz.names().includes(timezone);
|
||||
return timezoneNames.includes(timezone);
|
||||
});
|
||||
|
||||
token.attrs.push([
|
||||
@ -96,7 +98,7 @@ function addLocalDate(buffer, matches, state) {
|
||||
]);
|
||||
}
|
||||
|
||||
if (config.timezone && moment.tz.names().includes(config.timezone)) {
|
||||
if (config.timezone && timezoneNames.includes(config.timezone)) {
|
||||
token.attrs.push([
|
||||
"data-timezone",
|
||||
state.md.utils.escapeHtml(config.timezone),
|
||||
|
Reference in New Issue
Block a user