Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
BryanValverdeU committed Jan 8, 2024
1 parent 9ccf2f7 commit 6228d4b
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type { ContentModelSegmentFormat, FormatParser } from 'roosterjs-content-model-types';

const VAR_PREFIX = 'var(';

/**
* @internal
*/
export const pasteTextColorFormatParser: FormatParser<ContentModelSegmentFormat> = (
format,
element,
context,
defaultStyle
): void => {
if (!element.style.color.startsWith(VAR_PREFIX)) {
context.defaultFormatParsers.textColor?.(format, element, context, defaultStyle);
}
};
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { getSegmentTextFormat } from '../../publicApi/domUtils/getSegmentTextFor
import { getSelectedSegments } from '../../publicApi/selection/collectSelections';
import { mergeModel } from '../../publicApi/model/mergeModel';
import { pasteDisplayFormatParser } from '../../override/pasteDisplayFormatParser';
import { pasteTextColorFormatParser } from '../../override/pasteTextColorFormatParser';
import { pasteTextProcessor } from '../../override/pasteTextProcessor';
import { PasteType } from 'roosterjs-editor-types';
import type { MergeModelOption } from '../../publicApi/model/mergeModel';
Expand Down Expand Up @@ -53,6 +54,7 @@ export function mergePasteContent(
},
formatParserOverride: {
display: pasteDisplayFormatParser,
textColor: pasteTextColorFormatParser,
},
additionalFormatParsers: {
container: [containerWidthFormatParser],
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import { pasteTextColorFormatParser } from '../../lib/override/pasteTextColorFormatParser';

describe('pasteTextColorFormatParser', () => {
it('Do not handle', () => {
const element = document.createElement('div');
element.style.color = 'var(--variable)';
const format = {};
const textColorSpy = jasmine.createSpy('defaultTextColorParser');

pasteTextColorFormatParser(
format,
element,
<any>{
defaultFormatParsers: {
textColor: textColorSpy,
},
},
<any>{}
);

expect(textColorSpy).not.toHaveBeenCalled();
});

it('Handle, name based color', () => {
const element = document.createElement('div');
element.style.color = 'white';
const format = {};
const textColorSpy = jasmine.createSpy('defaultTextColorParser');

pasteTextColorFormatParser(
format,
element,
<any>{
defaultFormatParsers: {
textColor: textColorSpy,
},
},
<any>{}
);

expect(textColorSpy).toHaveBeenCalled();
});

it('Handle, rgb color', () => {
const element = document.createElement('div');
element.style.color = 'rgb(77,77,77)';
const format = {};
const textColorSpy = jasmine.createSpy('defaultTextColorParser');

pasteTextColorFormatParser(
format,
element,
<any>{
defaultFormatParsers: {
textColor: textColorSpy,
},
},
<any>{}
);

expect(textColorSpy).toHaveBeenCalled();
});

it('Handle, rgb color', () => {
const element = document.createElement('div');
element.style.color = '#FFF';
const format = {};
const textColorSpy = jasmine.createSpy('defaultTextColorParser');

pasteTextColorFormatParser(
format,
element,
<any>{
defaultFormatParsers: {
textColor: textColorSpy,
},
},
<any>{}
);

expect(textColorSpy).toHaveBeenCalled();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { containerWidthFormatParser } from '../../../lib/override/containerWidth
import { createContentModelDocument } from 'roosterjs-content-model-dom';
import { mergePasteContent } from '../../../lib/utils/paste/mergePasteContent';
import { pasteDisplayFormatParser } from '../../../lib/override/pasteDisplayFormatParser';
import { pasteTextColorFormatParser } from '../../../lib/override/pasteTextColorFormatParser';
import { pasteTextProcessor } from '../../../lib/override/pasteTextProcessor';
import { PasteType } from 'roosterjs-editor-types';
import {
Expand Down Expand Up @@ -391,6 +392,7 @@ describe('mergePasteContent', () => {
},
formatParserOverride: {
display: pasteDisplayFormatParser,
textColor: pasteTextColorFormatParser,
},
additionalFormatParsers: {
container: [containerWidthFormatParser],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,6 @@ export const defaultFormatKeysPerCategory: {
'margin',
'size',
'tableLayout',
'textColor',
],
tableBorder: ['borderBox', 'tableSpacing'],
tableCellBorder: ['borderBox'],
Expand Down

0 comments on commit 6228d4b

Please sign in to comment.