fulan-editor
Version:
An open source react editor based on draft-Js and ant design, good support HTML, markdown and Draft Raw format.
37 lines (33 loc) • 1.13 kB
JavaScript
/* @flow */
type Attributes = {[key: string]: string};
type StyleDescr = {[key: string]: number | string};
type RenderConfig = {
element?: string;
attributes?: Attributes;
style?: StyleDescr;
};
type StyleMap = {[styleName: string]: RenderConfig};
type StyleOrder = Array<string>;
type OrderedStyleMap = [StyleMap, StyleOrder];
function combineOrderedStyles(
customMap: ?StyleMap,
defaults: OrderedStyleMap
): OrderedStyleMap {
if (customMap == null) {
return defaults;
}
let [defaultStyleMap, defaultStyleOrder] = defaults;
let styleMap = Object.assign({},defaultStyleMap);//{...defaultStyleMap}
let styleOrder = [...defaultStyleOrder];
for (let styleName of Object.keys(customMap)) {
if (defaultStyleMap.hasOwnProperty(styleName)) {
let defaultStyles = defaultStyleMap[styleName];
styleMap[styleName] =Object.assign({},defaultStyles,customMap[styleName]);// {...defaultStyles, ...customMap[styleName]};
} else {
styleMap[styleName] = customMap[styleName];
styleOrder.push(styleName);
}
}
return [styleMap, styleOrder];
}
export default combineOrderedStyles;