Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 6x 6x 6x 6x 6x 6x 6x 6x 78x 78x 78x 78x 78x 78x 78x 78x 485x 485x 78x 78x 78x 78x 78x | import momentLib from 'moment';
import type { MomentContent, MomentProps, MomentSettings } from '../types';
import { getDatetime } from '../utils';
import { applyContentFilter } from './applyContentFilter';
import { applyDateAdjustments } from './applyDateAdjustments';
import { formatDurationContent } from './formatDurationContent';
import { contentRenderers } from './registry';
import { renderDefault } from './renderDefault';
import type { ContentContext } from './types';
/**
* Returns the rendered content from the given props.
*/
export function getContent(
props: MomentProps,
settings: MomentSettings
): MomentContent {
const datetime = getDatetime(props, settings);
applyDateAdjustments(props, datetime);
const format = props.format || settings.format || undefined;
const fromNowPeriod = Boolean(props.fromNowDuring)
&& -datetime.diff(momentLib()) < (props.fromNowDuring as number);
const ctx: ContentContext = { props, datetime, format, fromNowPeriod, settings };
const customRenderers = props.renderers ?? settings.renderers ?? [];
const allRenderers = [...customRenderers, ...contentRenderers];
let content: MomentContent | undefined;
for (const render of allRenderers) {
const result = render(ctx);
if (result !== undefined) {
content = result;
break;
}
}
const resolved = content ?? renderDefault(ctx) ?? datetime.toString();
content = formatDurationContent(ctx, resolved);
return applyContentFilter(props, content, settings);
}
|