Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export const setContentModel: SetContentModel = (
core.onFixUpModel?.(model);

const selection = contentModelToDom(
core.logicalRoot.ownerDocument.implementation.createHTMLDocument(),
core.logicalRoot.ownerDocument,
core.logicalRoot,
model,
modelToDomContext
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ import * as updateCache from '../../../lib/corePlugin/cache/updateCache';
import { ContentModelDocument, EditorCore, ModelToDomContext } from 'roosterjs-content-model-types';
import { setContentModel } from '../../../lib/coreApi/setContentModel/setContentModel';

const mockedDoc = 'DOCUMENT' as any;
const mockedModel = 'MODEL' as any;
const mockedEditorContext = 'EDITORCONTEXT' as any;
const mockedContext = { name: 'CONTEXT', rewriteFromModel: {} } as any;
const mockedDiv = { ownerDocument: mockedDoc } as any;
const mockedConfig = 'CONFIG' as any;

describe('setContentModel', () => {
Expand All @@ -20,19 +22,8 @@ describe('setContentModel', () => {
let flushMutationsSpy: jasmine.Spy;
let updateCacheSpy: jasmine.Spy;
let triggerEventSpy: jasmine.Spy;
let mockedDiv: HTMLElement;
let doc: Document;

beforeEach(() => {
doc = document.implementation.createHTMLDocument('test');

mockedDiv = {
ownerDocument: {
implementation: {
createHTMLDocument: () => doc,
},
},
} as any;
contentModelToDomSpy = spyOn(contentModelToDom, 'contentModelToDom');
createEditorContext = jasmine
.createSpy('createEditorContext')
Expand Down Expand Up @@ -88,7 +79,7 @@ describe('setContentModel', () => {
mockedEditorContext
);
expect(contentModelToDomSpy).toHaveBeenCalledWith(
jasmine.anything(),
mockedDoc,
mockedDiv,
mockedModel,
mockedContext
Expand All @@ -112,7 +103,7 @@ describe('setContentModel', () => {
mockedEditorContext
);
expect(contentModelToDomSpy).toHaveBeenCalledWith(
doc,
mockedDoc,
mockedDiv,
mockedModel,
mockedContext
Expand Down Expand Up @@ -142,7 +133,7 @@ describe('setContentModel', () => {
additionalOption
);
expect(contentModelToDomSpy).toHaveBeenCalledWith(
doc,
mockedDoc,
mockedDiv,
mockedModel,
mockedContext
Expand All @@ -167,7 +158,7 @@ describe('setContentModel', () => {
mockedEditorContext
);
expect(contentModelToDomSpy).toHaveBeenCalledWith(
doc,
mockedDoc,
mockedDiv,
mockedModel,
mockedContext
Expand Down Expand Up @@ -199,7 +190,7 @@ describe('setContentModel', () => {
}
);
expect(contentModelToDomSpy).toHaveBeenCalledWith(
doc,
mockedDoc,
mockedDiv,
mockedModel,
mockedContext
Expand Down Expand Up @@ -233,7 +224,7 @@ describe('setContentModel', () => {
}
);
expect(contentModelToDomSpy).toHaveBeenCalledWith(
doc,
mockedDoc,
mockedDiv,
mockedModel,
mockedContext
Expand Down Expand Up @@ -262,7 +253,7 @@ describe('setContentModel', () => {
}
);
expect(contentModelToDomSpy).toHaveBeenCalledWith(
doc,
mockedDoc,
mockedDiv,
mockedModel,
mockedContext
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,11 @@ export const handleParagraph: ContentModelBlockHandler<ContentModelParagraph> =
...paragraph.segmentFormat,
}
: {};
const prevRefNode = refNode?.previousSibling;

container = doc.createElement(paragraph.decorator?.tagName || DefaultParagraphTag);

parent.insertBefore(container, refNode);

context.regularSelection.current = {
block: needParagraphWrapper ? container : container.parentNode,
segment: null,
Expand Down Expand Up @@ -107,14 +108,7 @@ export const handleParagraph: ContentModelBlockHandler<ContentModelParagraph> =
// since this paragraph it is implicit. In that case container.nextSibling will become original
// inline entity's next sibling. So reset refNode to its real next sibling (after change) here
// to make sure the value is correct.
refNode =
prevRefNode === undefined // When refNode is not passed in
? null
: prevRefNode === null // When refNode is the first child of parent
? parent.firstChild
: prevRefNode.nextSibling; // Normal case

parent.insertBefore(container, refNode);
refNode = container.nextSibling;

if (container) {
context.onNodeCreated?.(paragraph, container);
Expand Down
Loading