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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | 1x 1x 1x 178x 178x 178x 178x 178x 178x 177x 177x 177x 45x 132x 178x 108x 70x 178x | import { updateCache } from '../../corePlugin/cache/updateCache';
import {
contentModelToDom,
createModelToDomContext,
createModelToDomContextWithConfig,
} from 'roosterjs-content-model-dom';
import type { SetContentModel } from 'roosterjs-content-model-types';
/**
* @internal
* Set content with content model
* @param core The editor core object
* @param model The content model to set
* @param option Additional options to customize the behavior of Content Model to DOM conversion
* @param onNodeCreated An optional callback that will be called when a DOM node is created
* @param isInitializing True means editor is being initialized then it will save modification nodes onto
* lifecycleState instead of triggering events, false means other cases
*/
export const setContentModel: SetContentModel = (
core,
model,
option,
onNodeCreated,
isInitializing
) => {
const editorContext = core.api.createEditorContext(core, true /*saveIndex*/);
const modelToDomContext = option
? createModelToDomContext(
editorContext,
core.environment.modelToDomSettings.builtIn,
core.environment.modelToDomSettings.customized,
option
)
: createModelToDomContextWithConfig(
core.environment.modelToDomSettings.calculated,
editorContext
);
modelToDomContext.onNodeCreated = onNodeCreated;
core.onFixUpModel?.(model);
const selection = contentModelToDom(
core.logicalRoot.ownerDocument,
core.logicalRoot,
model,
modelToDomContext
);
if (!core.lifecycle.shadowEditFragment) {
// Clear pending mutations since we will use our latest model object to replace existing cache
core.cache.textMutationObserver?.flushMutations(true /*ignoreMutations*/);
updateCache(core.cache, model, selection);
if (!option?.ignoreSelection && selection) {
core.api.setDOMSelection(core, selection);
} else {
core.selection.selection = selection;
}
}
if (isInitializing) {
// When initialize, we should not trigger event until all plugins are initialized, so put these node in lifecycle state temporarily
core.lifecycle.rewriteFromModel = modelToDomContext.rewriteFromModel;
} else {
// Otherwise, trigger RewriteFromModel event immediately
core.api.triggerEvent(
core,
{
eventType: 'rewriteFromModel',
...modelToDomContext.rewriteFromModel,
},
true /*broadcast*/
);
}
return selection;
};
|