schlechtenburg/packages/rich-text/lib/concat.ts

33 lines
949 B
TypeScript
Raw Normal View History

2024-10-08 07:15:26 +00:00
import { normaliseFormats } from './normalise-formats';
import { create } from './create';
import { RichTextValue } from './types';
/**
* Concats a pair of rich text values. Not that this mutates `a` and does NOT
* normalise formats!
*
* @param {Object} a Value to mutate.
* @param {Object} b Value to add read from.
*
* @return {Object} `a`, mutated.
*/
export function mergePair( a: RichTextValue, b: RichTextValue ): RichTextValue {
a.formats = a.formats.concat( b.formats );
a.replacements = a.replacements.concat( b.replacements );
a.text += b.text;
return a;
}
/**
* Combine all Rich Text values into one. This is similar to
* `String.prototype.concat`.
*
* @param {...RichTextValue} values Objects to combine.
*
* @return {RichTextValue} A new value combining all given records.
*/
export function concat( ...values: RichTextValue[] ): RichTextValue {
return normaliseFormats( values.reduce( mergePair, create() ) );
}