From 0e7b3e464116707db7485e77afa02e15ae7faed3 Mon Sep 17 00:00:00 2001 From: JiuqingSong Date: Tue, 16 Apr 2024 17:41:56 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=2074bc8?= =?UTF-8?q?638c28d60e8941c45b51c1bdb5308aaf357=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- coverage/index.html | 359 +- coverage/lcov.info | 12523 ++++++++-------- coverage/roosterjs-color-utils/lib/index.html | 2 +- .../roosterjs-color-utils/lib/index.ts.html | 4 +- .../lib/utils/getDarkColor.ts.html | 2 +- .../lib/utils/index.html | 2 +- .../lib/index.html | 2 +- .../lib/index.ts.html | 4 +- .../lib/modelApi/block/index.html | 2 +- .../modelApi/block/setModelAlignment.ts.html | 2 +- .../modelApi/block/setModelDirection.ts.html | 2 +- .../block/setModelIndentation.ts.html | 2 +- .../block/toggleModelBlockQuote.ts.html | 2 +- .../modelApi/common/clearModelFormat.ts.html | 2 +- .../lib/modelApi/common/index.html | 2 +- .../common/reducedModelChildProcessor.ts.html | 2 +- .../lib/modelApi/common/wrapBlock.ts.html | 2 +- .../lib/modelApi/entity/index.html | 2 +- .../modelApi/entity/insertEntityModel.ts.html | 2 +- .../image/applyImageBorderFormat.ts.html | 2 +- .../lib/modelApi/image/index.html | 2 +- .../lib/modelApi/link/index.html | 2 +- .../lib/modelApi/link/matchLink.ts.html | 2 +- .../list/findListItemsInSameThread.ts.html | 2 +- .../lib/modelApi/list/index.html | 2 +- .../lib/modelApi/list/setListType.ts.html | 2 +- .../list/setModelListStartNumber.ts.html | 2 +- .../modelApi/list/setModelListStyle.ts.html | 2 +- .../selection/adjustSegmentSelection.ts.html | 2 +- .../adjustTrailingSpaceSelection.ts.html | 2 +- .../selection/adjustWordSelection.ts.html | 2 +- .../selection/collapseTableSelection.ts.html | 2 +- .../lib/modelApi/selection/index.html | 2 +- .../lib/modelApi/table/alignTable.ts.html | 2 +- .../lib/modelApi/table/alignTableCell.ts.html | 2 +- .../lib/modelApi/table/canMergeCells.ts.html | 2 +- .../modelApi/table/clearSelectedCells.ts.html | 2 +- .../table/createTableStructure.ts.html | 2 +- .../lib/modelApi/table/deleteTable.ts.html | 2 +- .../modelApi/table/deleteTableColumn.ts.html | 2 +- .../lib/modelApi/table/deleteTableRow.ts.html | 2 +- .../ensureFocusableParagraphForTable.ts.html | 2 +- .../lib/modelApi/table/index.html | 2 +- .../modelApi/table/insertTableColumn.ts.html | 2 +- .../lib/modelApi/table/insertTableRow.ts.html | 2 +- .../modelApi/table/mergeTableCells.ts.html | 2 +- .../modelApi/table/mergeTableColumn.ts.html | 2 +- .../lib/modelApi/table/mergeTableRow.ts.html | 2 +- .../table/splitTableCellHorizontally.ts.html | 2 +- .../table/splitTableCellVertically.ts.html | 2 +- .../lib/publicApi/block/index.html | 2 +- .../lib/publicApi/block/setAlignment.ts.html | 2 +- .../lib/publicApi/block/setDirection.ts.html | 2 +- .../publicApi/block/setHeadingLevel.ts.html | 2 +- .../publicApi/block/setIndentation.ts.html | 2 +- .../block/setParagraphMargin.ts.html | 2 +- .../lib/publicApi/block/setSpacing.ts.html | 2 +- .../publicApi/block/toggleBlockQuote.ts.html | 2 +- .../lib/publicApi/entity/index.html | 2 +- .../lib/publicApi/entity/insertEntity.ts.html | 2 +- .../lib/publicApi/format/clearFormat.ts.html | 2 +- .../publicApi/format/getFormatState.ts.html | 2 +- .../lib/publicApi/format/index.html | 2 +- .../image/adjustImageSelection.ts.html | 2 +- .../lib/publicApi/image/changeImage.ts.html | 2 +- .../lib/publicApi/image/index.html | 2 +- .../lib/publicApi/image/insertImage.ts.html | 2 +- .../publicApi/image/setImageAltText.ts.html | 2 +- .../publicApi/image/setImageBorder.ts.html | 2 +- .../publicApi/image/setImageBoxShadow.ts.html | 2 +- .../link/adjustLinkSelection.ts.html | 2 +- .../lib/publicApi/link/index.html | 2 +- .../lib/publicApi/link/insertLink.ts.html | 2 +- .../lib/publicApi/link/removeLink.ts.html | 2 +- .../lib/publicApi/list/index.html | 2 +- .../publicApi/list/setListStartNumber.ts.html | 2 +- .../lib/publicApi/list/setListStyle.ts.html | 2 +- .../lib/publicApi/list/toggleBullet.ts.html | 2 +- .../publicApi/list/toggleNumbering.ts.html | 2 +- .../segment/applySegmentFormat.ts.html | 2 +- .../segment/changeCapitalization.ts.html | 2 +- .../publicApi/segment/changeFontSize.ts.html | 2 +- .../lib/publicApi/segment/index.html | 2 +- .../segment/setBackgroundColor.ts.html | 2 +- .../lib/publicApi/segment/setFontName.ts.html | 2 +- .../lib/publicApi/segment/setFontSize.ts.html | 2 +- .../publicApi/segment/setTextColor.ts.html | 2 +- .../lib/publicApi/segment/toggleBold.ts.html | 2 +- .../lib/publicApi/segment/toggleCode.ts.html | 2 +- .../publicApi/segment/toggleItalic.ts.html | 2 +- .../segment/toggleStrikethrough.ts.html | 2 +- .../publicApi/segment/toggleSubscript.ts.html | 2 +- .../segment/toggleSuperscript.ts.html | 2 +- .../publicApi/segment/toggleUnderline.ts.html | 2 +- .../table/applyTableBorderFormat.ts.html | 2 +- .../lib/publicApi/table/editTable.ts.html | 2 +- .../lib/publicApi/table/formatTable.ts.html | 2 +- .../lib/publicApi/table/index.html | 2 +- .../lib/publicApi/table/insertTable.ts.html | 2 +- .../publicApi/table/setTableCellShade.ts.html | 2 +- .../utils/formatImageWithContentModel.ts.html | 2 +- .../formatInsertPointWithContentModel.ts.html | 2 +- .../formatParagraphWithContentModel.ts.html | 2 +- .../formatSegmentWithContentModel.ts.html | 2 +- .../utils/formatTableWithContentModel.ts.html | 2 +- ...atTextSegmentBeforeSelectionMarker.ts.html | 44 +- .../lib/publicApi/utils/index.html | 14 +- .../convertInlineCss.ts.html | 2 +- ...eateDomToModelContextForSanitizing.ts.html | 2 +- .../createModelFromHtml.ts.html | 2 +- .../command/createModelFromHtml/index.html | 2 +- .../sanitizeElement.ts.html | 2 +- .../exportContent/exportContent.ts.html | 2 +- .../lib/command/exportContent/index.html | 2 +- .../command/paste/createPasteFragment.ts.html | 2 +- .../generatePasteOptionFromPlugins.ts.html | 2 +- .../lib/command/paste/index.html | 2 +- .../command/paste/mergePasteContent.ts.html | 2 +- .../lib/command/paste/paste.ts.html | 2 +- .../command/paste/retrieveHtmlInfo.ts.html | 2 +- .../lib/command/redo/index.html | 2 +- .../lib/command/redo/redo.ts.html | 2 +- .../lib/command/undo/index.html | 2 +- .../lib/command/undo/undo.ts.html | 2 +- .../addUndoSnapshot/addUndoSnapshot.ts.html | 2 +- .../createSnapshotSelection.ts.html | 6 +- .../coreApi/addUndoSnapshot/getPath.ts.html | 20 +- .../lib/coreApi/addUndoSnapshot/index.html | 2 +- .../attachDomEvent/attachDomEvent.ts.html | 8 +- .../lib/coreApi/attachDomEvent/index.html | 2 +- .../lib/coreApi/coreApiMap.ts.html | 2 +- .../createContentModel.ts.html | 2 +- .../lib/coreApi/createContentModel/index.html | 2 +- .../createEditorContext.ts.html | 40 +- .../getRootComputedStyleForContext.ts.html | 2 +- .../coreApi/createEditorContext/index.html | 22 +- .../lib/coreApi/focus/focus.ts.html | 2 +- .../lib/coreApi/focus/index.html | 2 +- .../formatContentModel.ts.html | 2 +- .../lib/coreApi/formatContentModel/index.html | 2 +- .../getDOMSelection/getDOMSelection.ts.html | 14 +- .../lib/coreApi/getDOMSelection/index.html | 2 +- .../getVisibleViewport.ts.html | 2 +- .../lib/coreApi/getVisibleViewport/index.html | 2 +- .../lib/coreApi/index.html | 2 +- .../getPositionFromPath.ts.html | 2 +- .../coreApi/restoreUndoSnapshot/index.html | 2 +- .../restoreSnapshotColors.ts.html | 2 +- .../restoreSnapshotHTML.ts.html | 2 +- .../restoreSnapshotLogicalRoot.ts.html | 2 +- .../restoreSnapshotSelection.ts.html | 2 +- .../restoreUndoSnapshot.ts.html | 2 +- .../lib/coreApi/setContentModel/index.html | 2 +- .../setContentModel/setContentModel.ts.html | 2 +- .../addRangeToSelection.ts.html | 18 +- .../findLastedCoInMergedCell.ts.html | 2 +- .../findTableCellElement.ts.html | 2 +- .../lib/coreApi/setDOMSelection/index.html | 2 +- .../setDOMSelection/setDOMSelection.ts.html | 32 +- .../setEditorStyle/ensureUniqueId.ts.html | 2 +- .../lib/coreApi/setEditorStyle/index.html | 2 +- .../setEditorStyle/setEditorStyle.ts.html | 12 +- .../lib/coreApi/setLogicalRoot/index.html | 2 +- .../setLogicalRoot/setLogicalRoot.ts.html | 2 +- .../lib/coreApi/switchShadowEdit/index.html | 2 +- .../switchShadowEdit/switchShadowEdit.ts.html | 2 +- .../lib/coreApi/triggerEvent/index.html | 2 +- .../coreApi/triggerEvent/triggerEvent.ts.html | 10 +- .../lib/corePlugin/cache/CachePlugin.ts.html | 40 +- .../corePlugin/cache/areSameSelection.ts.html | 8 +- .../corePlugin/cache/domIndexerImpl.ts.html | 44 +- .../lib/corePlugin/cache/index.html | 14 +- .../cache/textMutationObserver.ts.html | 2 +- .../cache/updateCachedSelection.ts.html | 2 +- .../contextMenu/ContextMenuPlugin.ts.html | 2 +- .../lib/corePlugin/contextMenu/index.html | 2 +- .../copyPaste/CopyPastePlugin.ts.html | 2 +- .../copyPaste/deleteEmptyList.ts.html | 2 +- .../lib/corePlugin/copyPaste/index.html | 2 +- .../createEditorCorePlugins.ts.html | 2 +- .../domEvent/DOMEventPlugin.ts.html | 2 +- .../lib/corePlugin/domEvent/index.html | 2 +- .../corePlugin/entity/EntityPlugin.ts.html | 6 +- .../entity/entityDelimiterUtils.ts.html | 2 +- .../corePlugin/entity/findAllEntities.ts.html | 2 +- .../lib/corePlugin/entity/index.html | 2 +- .../corePlugin/format/FormatPlugin.ts.html | 6 +- .../format/applyDefaultFormat.ts.html | 2 +- .../format/applyPendingFormat.ts.html | 2 +- .../lib/corePlugin/format/index.html | 2 +- .../lib/corePlugin/index.html | 2 +- .../lifecycle/LifecyclePlugin.ts.html | 4 +- .../lib/corePlugin/lifecycle/index.html | 2 +- .../selection/SelectionPlugin.ts.html | 48 +- .../selection/findCoordinate.ts.html | 2 +- .../lib/corePlugin/selection/index.html | 28 +- .../isSingleImageInSelection.ts.html | 2 +- .../corePlugin/selection/normalizePos.ts.html | 2 +- .../undo/SnapshotsManagerImpl.ts.html | 2 +- .../lib/corePlugin/undo/UndoPlugin.ts.html | 6 +- .../lib/corePlugin/undo/index.html | 2 +- .../lib/editor/Editor.ts.html | 22 +- .../lib/editor/core/DOMHelperImpl.ts.html | 52 +- .../editor/core/DarkColorHandlerImpl.ts.html | 2 +- .../lib/editor/core/createEditorCore.ts.html | 2 +- .../core/createEditorDefaultSettings.ts.html | 2 +- .../lib/editor/core/index.html | 22 +- .../lib/editor/index.html | 2 +- .../lib/index.html | 2 +- .../lib/index.ts.html | 2 +- .../containerSizeFormatParser.ts.html | 2 +- .../lib/override/index.html | 2 +- .../lib/override/listMetadataApplier.ts.html | 2 +- .../pasteCopyBlockEntityParser.ts.html | 2 +- .../override/pasteDisplayFormatParser.ts.html | 2 +- .../lib/override/pasteEntityProcessor.ts.html | 2 +- .../override/pasteGeneralProcessor.ts.html | 2 +- .../lib/override/pasteTextProcessor.ts.html | 2 +- .../lib/override/tablePreProcessor.ts.html | 2 +- .../defaultContentModelFormatMap.ts.html | 2 +- .../lib/config/defaultHTMLStyleMap.ts.html | 2 +- .../lib/config/index.html | 2 +- .../lib/constants/BulletListType.ts.html | 2 +- .../lib/constants/ChangeSource.ts.html | 2 +- .../lib/constants/NumberingListType.ts.html | 2 +- .../lib/constants/OrderedListStyleMap.ts.html | 2 +- .../lib/constants/TableBorderFormat.ts.html | 2 +- .../constants/UnorderedListStyleMap.ts.html | 2 +- .../lib/constants/index.html | 2 +- .../context/createDomToModelContext.ts.html | 2 +- .../context/defaultProcessors.ts.html | 2 +- .../lib/domToModel/context/index.html | 2 +- .../lib/domToModel/domToContentModel.ts.html | 2 +- .../lib/domToModel/index.html | 2 +- .../processors/blockProcessor.ts.html | 2 +- .../domToModel/processors/brProcessor.ts.html | 2 +- .../processors/childProcessor.ts.html | 2 +- .../processors/codeProcessor.ts.html | 2 +- .../processors/delimiterProcessor.ts.html | 2 +- .../processors/elementProcessor.ts.html | 2 +- .../processors/entityProcessor.ts.html | 2 +- .../processors/fontProcessor.ts.html | 2 +- .../formatContainerProcessor.ts.html | 2 +- .../processors/generalProcessor.ts.html | 2 +- .../processors/headingProcessor.ts.html | 2 +- .../domToModel/processors/hrProcessor.ts.html | 2 +- .../processors/imageProcessor.ts.html | 2 +- .../lib/domToModel/processors/index.html | 2 +- .../processors/knownElementProcessor.ts.html | 2 +- .../processors/linkProcessor.ts.html | 2 +- .../processors/listItemProcessor.ts.html | 2 +- .../processors/listProcessor.ts.html | 2 +- .../domToModel/processors/pProcessor.ts.html | 2 +- .../processors/tableProcessor.ts.html | 2 +- .../processors/textProcessor.ts.html | 2 +- .../textWithSelectionProcessor.ts.html | 2 +- .../utils/addSelectionMarker.ts.html | 2 +- .../domToModel/utils/areSameFormats.ts.html | 2 +- .../utils/buildSelectionMarker.ts.html | 2 +- .../utils/getBoundingClientRect.ts.html | 2 +- .../domToModel/utils/getDefaultStyle.ts.html | 2 +- .../utils/getRegularSelectionOffsets.ts.html | 2 +- .../lib/domToModel/utils/index.html | 2 +- .../domToModel/utils/isBlockElement.ts.html | 2 +- .../lib/domToModel/utils/parseFormat.ts.html | 2 +- .../lib/domToModel/utils/stackFormat.ts.html | 2 +- .../lib/domUtils/entityUtils.ts.html | 2 +- .../domUtils/event/cacheGetEventData.ts.html | 2 +- .../lib/domUtils/event/eventUtils.ts.html | 4 +- .../event/extractClipboardItems.ts.html | 2 +- .../lib/domUtils/event/index.html | 2 +- .../lib/domUtils/getObjectKeys.ts.html | 2 +- .../lib/domUtils/index.html | 2 +- .../lib/domUtils/isElementOfType.ts.html | 4 +- .../lib/domUtils/isNodeOfType.ts.html | 4 +- .../domUtils/isWhiteSpacePreserved.ts.html | 2 +- .../lib/domUtils/moveChildNodes.ts.html | 2 +- .../lib/domUtils/normalizeRect.ts.html | 2 +- .../lib/domUtils/readFile.ts.html | 2 +- .../lib/domUtils/reuseCachedElement.ts.html | 2 +- .../selection/getSelectionRootNode.ts.html | 2 +- .../lib/domUtils/selection/index.html | 2 +- .../lib/domUtils/stringUtil.ts.html | 2 +- .../lib/domUtils/style/borderValues.ts.html | 2 +- .../lib/domUtils/style/index.html | 2 +- .../lib/domUtils/style/isBold.ts.html | 2 +- .../lib/domUtils/style/transformColor.ts.html | 2 +- .../lib/domUtils/table/index.html | 2 +- .../domUtils/table/parseTableCells.ts.html | 2 +- .../lib/domUtils/toArray.ts.html | 2 +- .../lib/domUtils/unwrap.ts.html | 2 +- .../lib/domUtils/wrap.ts.html | 2 +- .../block/directionFormatHandler.ts.html | 2 +- .../block/displayFormatHandler.ts.html | 2 +- .../block/htmlAlignFormatHandler.ts.html | 2 +- .../lib/formatHandlers/block/index.html | 2 +- .../block/lineHeightFormatHandler.ts.html | 2 +- .../block/marginFormatHandler.ts.html | 2 +- .../block/paddingFormatHandler.ts.html | 2 +- .../block/textAlignFormatHandler.ts.html | 2 +- .../block/textIndentFormatHandler.ts.html | 2 +- .../block/whiteSpaceFormatHandler.ts.html | 2 +- .../backgroundColorFormatHandler.ts.html | 2 +- .../common/borderBoxFormatHandler.ts.html | 2 +- .../common/borderFormatHandler.ts.html | 8 +- .../common/boxShadowFormatHandler.ts.html | 2 +- .../common/datasetFormatHandler.ts.html | 2 +- .../common/floatFormatHandler.ts.html | 2 +- .../common/idFormatHandler.ts.html | 2 +- .../lib/formatHandlers/common/index.html | 10 +- .../common/sizeFormatHandler.ts.html | 2 +- .../common/verticalAlignFormatHandler.ts.html | 2 +- .../common/wordBreakFormatHandler.ts.html | 2 +- .../defaultFormatHandlers.ts.html | 2 +- .../entity/entityFormatHandler.ts.html | 2 +- .../lib/formatHandlers/entity/index.html | 2 +- .../lib/formatHandlers/index.html | 2 +- .../lib/formatHandlers/list/index.html | 2 +- .../list/listItemThreadFormatHandler.ts.html | 2 +- .../list/listLevelThreadFormatHandler.ts.html | 2 +- .../list/listStyleFormatHandler.ts.html | 2 +- .../segment/boldFormatHandler.ts.html | 2 +- .../segment/fontFamilyFormatHandler.ts.html | 2 +- .../segment/fontSizeFormatHandler.ts.html | 2 +- .../lib/formatHandlers/segment/index.html | 2 +- .../segment/italicFormatHandler.ts.html | 2 +- .../letterSpacingFormatHandler.ts.html | 2 +- .../segment/linkFormatHandler.ts.html | 2 +- .../segment/strikeFormatHandler.ts.html | 2 +- .../superOrSubScriptFormatHandler.ts.html | 2 +- .../segment/textColorFormatHandler.ts.html | 2 +- .../segment/underlineFormatHandler.ts.html | 2 +- .../lib/formatHandlers/table/index.html | 2 +- .../table/tableLayoutFormatHandler.ts.html | 2 +- .../table/tableSpacingFormatHandler.ts.html | 2 +- .../textColorOnTableCellFormatHandler.ts.html | 2 +- .../lib/formatHandlers/utils/color.ts.html | 2 +- .../lib/formatHandlers/utils/dir.ts.html | 2 +- .../lib/formatHandlers/utils/index.html | 2 +- .../utils/parseValueWithUnit.ts.html | 2 +- .../utils/shouldSetValue.ts.html | 2 +- .../lib/index.html | 2 +- .../lib/index.ts.html | 14 +- .../lib/modelApi/block/index.html | 2 +- .../block/setParagraphNotImplicit.ts.html | 2 +- .../lib/modelApi/common/addBlock.ts.html | 2 +- .../lib/modelApi/common/addDecorators.ts.html | 2 +- .../lib/modelApi/common/addSegment.ts.html | 2 +- .../modelApi/common/addTextSegment.ts.html | 2 +- .../modelApi/common/ensureParagraph.ts.html | 2 +- .../lib/modelApi/common/hasSpacesOnly.ts.html | 2 +- .../lib/modelApi/common/index.html | 2 +- .../lib/modelApi/common/isEmpty.ts.html | 2 +- .../common/normalizeContentModel.ts.html | 2 +- .../common/normalizeParagraph.ts.html | 2 +- .../modelApi/common/normalizeSegment.ts.html | 2 +- .../lib/modelApi/common/unwrapBlock.ts.html | 2 +- .../lib/modelApi/creators/createBr.ts.html | 2 +- .../createContentModelDocument.ts.html | 2 +- .../modelApi/creators/createDivider.ts.html | 2 +- .../creators/createEmptyModel.ts.html | 2 +- .../modelApi/creators/createEntity.ts.html | 2 +- .../creators/createFormatContainer.ts.html | 2 +- .../creators/createGeneralBlock.ts.html | 2 +- .../creators/createGeneralSegment.ts.html | 2 +- .../lib/modelApi/creators/createImage.ts.html | 2 +- .../modelApi/creators/createListItem.ts.html | 2 +- .../modelApi/creators/createListLevel.ts.html | 2 +- .../modelApi/creators/createParagraph.ts.html | 2 +- .../creators/createParagraphDecorator.ts.html | 2 +- .../creators/createSelectionMarker.ts.html | 2 +- .../lib/modelApi/creators/createTable.ts.html | 2 +- .../modelApi/creators/createTableCell.ts.html | 2 +- .../lib/modelApi/creators/createText.ts.html | 10 +- .../lib/modelApi/creators/index.html | 2 +- .../modelApi/editing/applyTableFormat.ts.html | 2 +- .../lib/modelApi/editing/cloneModel.ts.html | 2 +- .../lib/modelApi/editing/deleteBlock.ts.html | 2 +- .../editing/deleteExpandedSelection.ts.html | 2 +- .../modelApi/editing/deleteSegment.ts.html | 2 +- .../modelApi/editing/deleteSelection.ts.html | 2 +- .../modelApi/editing/deleteSingleChar.ts.html | 2 +- .../getClosestAncestorBlockGroupIndex.ts.html | 2 +- .../getListStyleTypeFromString.ts.html | 2 +- .../editing/getSegmentTextFormat.ts.html | 2 +- .../lib/modelApi/editing/index.html | 2 +- .../lib/modelApi/editing/mergeModel.ts.html | 2 +- .../modelApi/editing/normalizeTable.ts.html | 2 +- .../editing/retrieveModelFormatState.ts.html | 2 +- .../setTableCellBackgroundColor.ts.html | 2 +- .../metadata/definitionCreators.ts.html | 2 +- .../lib/modelApi/metadata/index.html | 2 +- .../metadata/updateImageMetadata.ts.html | 2 +- .../metadata/updateListMetadata.ts.html | 26 +- .../modelApi/metadata/updateMetadata.ts.html | 2 +- .../metadata/updateTableCellMetadata.ts.html | 2 +- .../metadata/updateTableMetadata.ts.html | 2 +- .../lib/modelApi/metadata/validate.ts.html | 2 +- .../selection/collectSelections.ts.html | 2 +- .../selection/getSelectedCells.ts.html | 2 +- .../selection/hasSelectionInBlock.ts.html | 2 +- .../hasSelectionInBlockGroup.ts.html | 2 +- .../selection/hasSelectionInSegment.ts.html | 2 +- .../lib/modelApi/selection/index.html | 2 +- .../selection/iterateSelections.ts.html | 2 +- .../modelApi/selection/setSelection.ts.html | 58 +- .../lib/modelApi/typeCheck/index.html | 2 +- .../typeCheck/isBlockGroupOfType.ts.html | 2 +- .../typeCheck/isGeneralSegment.ts.html | 4 +- .../lib/modelToDom/contentModelToDom.ts.html | 2 +- .../context/createModelToDomContext.ts.html | 2 +- .../defaultContentModelHandlers.ts.html | 2 +- .../lib/modelToDom/context/index.html | 2 +- .../modelToDom/handlers/handleBlock.ts.html | 2 +- .../handlers/handleBlockGroupChildren.ts.html | 2 +- .../lib/modelToDom/handlers/handleBr.ts.html | 2 +- .../modelToDom/handlers/handleDivider.ts.html | 2 +- .../modelToDom/handlers/handleEntity.ts.html | 2 +- .../handlers/handleFormatContainer.ts.html | 2 +- .../handlers/handleGeneralModel.ts.html | 2 +- .../modelToDom/handlers/handleImage.ts.html | 2 +- .../modelToDom/handlers/handleList.ts.html | 2 +- .../handlers/handleListItem.ts.html | 2 +- .../handlers/handleParagraph.ts.html | 2 +- .../modelToDom/handlers/handleSegment.ts.html | 2 +- .../handlers/handleSegmentDecorator.ts.html | 2 +- .../modelToDom/handlers/handleTable.ts.html | 2 +- .../modelToDom/handlers/handleText.ts.html | 2 +- .../lib/modelToDom/handlers/index.html | 2 +- .../lib/modelToDom/index.html | 2 +- .../lib/modelToDom/optimizers/index.html | 2 +- .../modelToDom/optimizers/mergeNode.ts.html | 2 +- .../modelToDom/optimizers/optimize.ts.html | 2 +- .../optimizers/removeUnnecessarySpan.ts.html | 2 +- .../lib/modelToDom/utils/applyFormat.ts.html | 2 +- .../modelToDom/utils/applyMetadata.ts.html | 2 +- .../utils/handleSegmentCommon.ts.html | 2 +- .../lib/modelToDom/utils/index.html | 2 +- .../lib/modelToDom/utils/stackFormat.ts.html | 2 +- .../modelToText/contentModelToText.ts.html | 2 +- .../lib/modelToText/index.html | 2 +- .../lib/autoFormat/AutoFormatPlugin.ts.html | 2 +- .../lib/autoFormat/hyphen/index.html | 2 +- .../autoFormat/hyphen/transformHyphen.ts.html | 2 +- .../lib/autoFormat/index.html | 2 +- .../lib/autoFormat/link/createLink.ts.html | 2 +- .../link/createLinkAfterSpace.ts.html | 2 +- .../lib/autoFormat/link/index.html | 2 +- .../lib/autoFormat/link/unlink.ts.html | 2 +- .../list/convertAlphaToDecimals.ts.html | 2 +- .../lib/autoFormat/list/getIndex.ts.html | 2 +- .../autoFormat/list/getListTypeStyle.ts.html | 2 +- .../list/getNumberingListStyle.ts.html | 2 +- .../lib/autoFormat/list/index.html | 2 +- .../list/keyboardListTrigger.ts.html | 2 +- .../ContextMenuPluginBase.ts.html | 2 +- .../lib/contextMenuBase/index.html | 2 +- .../lib/edit/EditPlugin.ts.html | 2 +- .../deleteAllSegmentBefore.ts.html | 2 +- .../deleteCollapsedSelection.ts.html | 2 +- .../edit/deleteSteps/deleteEmptyQuote.ts.html | 2 +- .../lib/edit/deleteSteps/deleteList.ts.html | 2 +- .../deleteSteps/deleteWordSelection.ts.html | 2 +- .../lib/edit/deleteSteps/index.html | 2 +- .../edit/handleKeyboardEventCommon.ts.html | 2 +- .../lib/edit/index.html | 2 +- .../edit/inputSteps/handleEnterOnList.ts.html | 2 +- .../lib/edit/inputSteps/index.html | 2 +- .../lib/edit/keyboardDelete.ts.html | 2 +- .../lib/edit/keyboardInput.ts.html | 2 +- .../lib/edit/keyboardTab.ts.html | 2 +- .../lib/edit/tabUtils/handleTabOnList.ts.html | 2 +- .../tabUtils/handleTabOnParagraph.ts.html | 2 +- .../edit/tabUtils/handleTabOnTable.ts.html | 2 +- .../tabUtils/handleTabOnTableCell.ts.html | 2 +- .../lib/edit/tabUtils/index.html | 2 +- .../edit/utils/getLeafSiblingBlock.ts.html | 2 +- .../lib/edit/utils/index.html | 2 +- .../lib/hyperlink/HyperlinkPlugin.ts.html | 2 +- .../lib/hyperlink/index.html | 2 +- .../lib/index.html | 18 +- .../lib/index.ts.html | 27 +- .../lib/markdown/MarkdownPlugin.ts.html | 2 +- .../lib/markdown/index.html | 2 +- .../lib/markdown/utils/index.html | 2 +- .../lib/markdown/utils/setFormat.ts.html | 2 +- .../lib/paste/Excel/index.html | 2 +- .../processPastedContentFromExcel.ts.html | 2 +- .../lib/paste/PastePlugin.ts.html | 6 +- .../lib/paste/PowerPoint/index.html | 2 +- ...processPastedContentFromPowerPoint.ts.html | 2 +- .../lib/paste/WacComponents/constants.ts.html | 2 +- .../lib/paste/WacComponents/index.html | 2 +- .../processPastedContentWacComponents.ts.html | 2 +- .../WordDesktop/getStyleMetadata.ts.html | 2 +- .../lib/paste/WordDesktop/index.html | 2 +- ...rocessPastedContentFromWordDesktop.ts.html | 2 +- .../WordDesktop/processWordComments.ts.html | 2 +- .../WordDesktop/processWordLists.ts.html | 2 +- .../removeNegativeTextIndentParser.ts.html | 2 +- .../lib/paste/index.html | 2 +- .../pasteSourceValidations/constants.ts.html | 2 +- .../documentContainWacElements.ts.html | 2 +- .../getPasteSource.ts.html | 2 +- .../paste/pasteSourceValidations/index.html | 2 +- .../isExcelDesktopDocument.ts.html | 2 +- .../isExcelOnlineDocument.ts.html | 2 +- .../isGoogleSheetDocument.ts.html | 2 +- .../isPowerPointDesktopDocument.ts.html | 2 +- .../isWordDesktopDocument.ts.html | 2 +- .../shouldConvertToSingleImage.ts.html | 2 +- .../lib/paste/utils/addParser.ts.html | 2 +- .../paste/utils/deprecatedColorParser.ts.html | 2 +- .../lib/paste/utils/getStyles.ts.html | 2 +- .../lib/paste/utils/index.html | 2 +- .../lib/paste/utils/linkParser.ts.html | 2 +- .../lib/paste/utils/setProcessor.ts.html | 2 +- .../lib/picker/PickerHelperImpl.ts.html | 296 + .../lib/picker/PickerPlugin.ts.html | 839 ++ .../lib/picker/getQueryString.ts.html | 224 + .../lib/picker/index.html | 141 + .../CreateElement/createElement.ts.html | 2 +- .../lib/pluginUtils/CreateElement/index.html | 2 +- .../DragAndDrop/DragAndDropHelper.ts.html | 2 +- .../lib/pluginUtils/DragAndDrop/index.html | 2 +- .../Rect/getDOMInsertPointRect.ts.html | 269 + .../Rect/getIntersectedRect.ts.html | 2 +- .../lib/pluginUtils/Rect/index.html | 35 +- .../lib/pluginUtils/index.html | 2 +- .../lib/pluginUtils/splitTextSegment.ts.html | 22 +- .../lib/shortcut/ShortcutPlugin.ts.html | 2 +- .../lib/shortcut/index.html | 2 +- .../lib/shortcut/shortcuts.ts.html | 2 +- .../lib/shortcut/utils/index.html | 2 +- .../setShortcutIndentationCommand.ts.html | 2 +- .../lib/tableEdit/TableEditPlugin.ts.html | 4 +- .../lib/tableEdit/editors/TableEditor.ts.html | 2 +- .../editors/features/CellResizer.ts.html | 2 +- .../editors/features/TableEditFeature.ts.html | 2 +- .../editors/features/TableInserter.ts.html | 2 +- .../editors/features/TableMover.ts.html | 2 +- .../editors/features/TableResizer.ts.html | 2 +- .../lib/tableEdit/editors/features/index.html | 2 +- .../lib/tableEdit/editors/index.html | 2 +- .../lib/tableEdit/index.html | 2 +- .../lib/watermark/WatermarkPlugin.ts.html | 2 +- .../lib/watermark/index.html | 2 +- .../lib/watermark/isModelEmptyFast.ts.html | 2 +- .../lib/index.html | 2 +- .../lib/index.ts.html | 2 +- .../lib/corePlugins/BridgePlugin.ts.html | 2 +- .../lib/corePlugins/EditPlugin.ts.html | 2 +- .../lib/corePlugins/index.html | 2 +- .../lib/editor/DarkColorHandlerImpl.ts.html | 2 +- .../lib/editor/EditorAdapter.ts.html | 2 +- .../lib/editor/IgnoredPluginNames.ts.html | 2 +- .../lib/editor/index.html | 2 +- .../lib/editor/utils/buildRangeEx.ts.html | 2 +- .../editor/utils/createTableRanges.ts.html | 2 +- .../lib/editor/utils/eventConverter.ts.html | 2 +- .../lib/editor/utils/index.html | 2 +- .../lib/editor/utils/insertNode.ts.html | 2 +- .../editor/utils/selectionConverter.ts.html | 2 +- .../lib/format/changeCapitalization.ts.html | 104 +- .../lib/format/changeFontSize.ts.html | 2 +- .../lib/format/clearBlockFormat.ts.html | 4 +- .../lib/format/clearFormat.ts.html | 268 +- .../lib/format/createLink.ts.html | 2 +- .../lib/format/getFormatState.ts.html | 2 +- .../lib/format/index.html | 86 +- .../lib/format/insertEntity.ts.html | 2 +- .../lib/format/insertImage.ts.html | 2 +- .../lib/format/removeLink.ts.html | 2 +- .../lib/format/replaceWithNode.ts.html | 2 +- .../lib/format/rotateElement.ts.html | 2 +- .../lib/format/setAlignment.ts.html | 42 +- .../lib/format/setBackgroundColor.ts.html | 2 +- .../lib/format/setDirection.ts.html | 2 +- .../lib/format/setFontName.ts.html | 6 +- .../lib/format/setFontSize.ts.html | 16 +- .../lib/format/setHeadingLevel.ts.html | 2 +- .../lib/format/setImageAltText.ts.html | 2 +- .../lib/format/setIndentation.ts.html | 36 +- .../format/setOrderedListNumbering.ts.html | 2 +- .../lib/format/setTextColor.ts.html | 2 +- .../lib/format/toggleBlockQuote.ts.html | 10 +- .../lib/format/toggleBold.ts.html | 4 +- .../lib/format/toggleBullet.ts.html | 2 +- .../lib/format/toggleCodeBlock.ts.html | 2 +- .../lib/format/toggleItalic.ts.html | 4 +- .../lib/format/toggleNumbering.ts.html | 2 +- .../lib/format/toggleStrikethrough.ts.html | 2 +- .../lib/format/toggleSubscript.ts.html | 2 +- .../lib/format/toggleSuperscript.ts.html | 2 +- .../lib/format/toggleUnderline.ts.html | 4 +- coverage/roosterjs-editor-api/lib/index.html | 2 +- .../roosterjs-editor-api/lib/index.ts.html | 4 +- .../lib/table/applyCellShading.ts.html | 2 +- .../lib/table/editTable.ts.html | 2 +- .../lib/table/formatTable.ts.html | 2 +- .../roosterjs-editor-api/lib/table/index.html | 2 +- .../lib/table/insertTable.ts.html | 2 +- .../lib/utils/applyInlineStyle.ts.html | 40 +- .../lib/utils/applyListItemWrap.ts.html | 50 +- .../lib/utils/blockFormat.ts.html | 24 +- .../lib/utils/blockWrap.ts.html | 22 +- .../lib/utils/collapseSelectedBlocks.ts.html | 2 +- .../lib/utils/commitListChains.ts.html | 4 +- .../lib/utils/execCommand.ts.html | 56 +- .../lib/utils/formatUndoSnapshot.ts.html | 4 +- .../roosterjs-editor-api/lib/utils/index.html | 62 +- .../lib/utils/normalizeBlockquote.ts.html | 32 +- .../lib/utils/toggleListType.ts.html | 2 +- .../lib/coreApi/addUndoSnapshot.ts.html | 58 +- .../lib/coreApi/attachDomEvent.ts.html | 42 +- .../lib/coreApi/coreApiMap.ts.html | 2 +- .../lib/coreApi/createPasteFragment.ts.html | 10 +- .../lib/coreApi/ensureTypeInContainer.ts.html | 24 +- .../lib/coreApi/focus.ts.html | 20 +- .../lib/coreApi/getContent.ts.html | 40 +- .../coreApi/getPendableFormatState.ts.html | 2 +- .../lib/coreApi/getSelectionRange.ts.html | 24 +- .../lib/coreApi/getSelectionRangeEx.ts.html | 28 +- .../coreApi/getStyleBasedFormatState.ts.html | 2 +- .../lib/coreApi/hasFocus.ts.html | 6 +- .../lib/coreApi/index.html | 54 +- .../lib/coreApi/insertNode.ts.html | 136 +- .../lib/coreApi/restoreUndoSnapshot.ts.html | 2 +- .../lib/coreApi/select.ts.html | 80 +- .../lib/coreApi/selectImage.ts.html | 14 +- .../lib/coreApi/selectRange.ts.html | 20 +- .../lib/coreApi/selectTable.ts.html | 16 +- .../lib/coreApi/setContent.ts.html | 50 +- .../lib/coreApi/switchShadowEdit.ts.html | 2 +- .../lib/coreApi/transformColor.ts.html | 34 +- .../lib/coreApi/triggerEvent.ts.html | 16 +- .../lib/coreApi/utils/addUniqueId.ts.html | 2 +- .../lib/coreApi/utils/index.html | 2 +- .../lib/corePlugins/CopyPastePlugin.ts.html | 28 +- .../lib/corePlugins/DOMEventPlugin.ts.html | 120 +- .../lib/corePlugins/EditPlugin.ts.html | 28 +- .../lib/corePlugins/EntityPlugin.ts.html | 78 +- .../lib/corePlugins/ImageSelection.ts.html | 14 +- .../lib/corePlugins/LifecyclePlugin.ts.html | 84 +- .../lib/corePlugins/MouseUpPlugin.ts.html | 24 +- .../corePlugins/NormalizeTablePlugin.ts.html | 72 +- .../PendingFormatStatePlugin.ts.html | 30 +- .../corePlugins/TypeInContainerPlugin.ts.html | 12 +- .../lib/corePlugins/UndoPlugin.ts.html | 84 +- .../lib/corePlugins/createCorePlugins.ts.html | 8 +- .../lib/corePlugins/index.html | 38 +- .../utils/forEachSelectedCell.ts.html | 2 +- .../lib/corePlugins/utils/index.html | 2 +- .../utils/inlineEntityOnPluginEvent.ts.html | 36 +- .../utils/removeCellsOutsideSelection.ts.html | 2 +- .../lib/editor/DarkColorHandlerImpl.ts.html | 56 +- .../lib/editor/Editor.ts.html | 6 +- .../lib/editor/EditorBase.ts.html | 254 +- .../lib/editor/createEditorCore.ts.html | 30 +- .../lib/editor/index.html | 36 +- .../lib/editor/isFeatureEnabled.ts.html | 2 +- coverage/roosterjs-editor-core/lib/index.html | 2 +- .../roosterjs-editor-core/lib/index.ts.html | 4 +- .../blockElements/NodeBlockElement.ts.html | 16 +- .../StartEndBlockElement.ts.html | 22 +- .../getBlockElementAtNode.ts.html | 82 +- .../getFirstLastBlockElement.ts.html | 10 +- .../lib/blockElements/index.html | 2 +- .../clipboard/extractClipboardEvent.ts.html | 2 +- .../clipboard/extractClipboardItems.ts.html | 2 +- .../extractClipboardItemsForIE.ts.html | 2 +- .../lib/clipboard/getPasteType.ts.html | 2 +- .../lib/clipboard/handleImagePaste.ts.html | 10 +- .../lib/clipboard/handleTextPaste.ts.html | 2 +- .../lib/clipboard/index.html | 2 +- .../retrieveMetadataFromClipboard.ts.html | 60 +- .../clipboard/sanitizePasteContent.ts.html | 2 +- .../lib/contentTraverser/BodyScoper.ts.html | 10 +- .../contentTraverser/ContentTraverser.ts.html | 106 +- .../PositionContentSearcher.ts.html | 78 +- .../SelectionBlockScoper.ts.html | 40 +- .../contentTraverser/SelectionScoper.ts.html | 62 +- .../lib/contentTraverser/index.html | 46 +- .../lib/delimiter/addDelimiters.ts.html | 2 +- .../delimiter/getDelimiterFromElement.ts.html | 2 +- .../lib/delimiter/index.html | 2 +- .../lib/edit/adjustInsertPosition.ts.html | 128 +- .../lib/edit/deleteSelectedContent.ts.html | 2 +- .../lib/edit/getTextContent.ts.html | 2 +- .../roosterjs-editor-dom/lib/edit/index.html | 36 +- .../lib/entity/commitEntity.ts.html | 2 +- .../lib/entity/entityPlaceholderUtils.ts.html | 42 +- .../lib/entity/getEntityFromElement.ts.html | 2 +- .../lib/entity/getEntitySelector.ts.html | 8 +- .../lib/entity/index.html | 2 +- .../lib/event/cacheGetEventData.ts.html | 12 +- .../lib/event/clearEventDataCache.ts.html | 2 +- .../roosterjs-editor-dom/lib/event/index.html | 2 +- .../lib/event/isCharacterValue.ts.html | 2 +- .../lib/event/isCtrlOrMetaPressed.ts.html | 6 +- .../lib/event/isModifierKey.ts.html | 2 +- .../lib/htmlSanitizer/HtmlSanitizer.ts.html | 170 +- .../chainSanitizerCallback.ts.html | 6 +- .../lib/htmlSanitizer/cloneObject.ts.html | 6 +- .../createDefaultHtmlSanitizerOptions.ts.html | 2 +- .../htmlSanitizer/getAllowedValues.ts.html | 2 +- .../getInheritableStyles.ts.html | 14 +- .../getPredefinedCssForElement.ts.html | 6 +- .../lib/htmlSanitizer/index.html | 2 +- .../htmlSanitizer/processCssVariable.ts.html | 4 +- coverage/roosterjs-editor-dom/lib/index.html | 10 +- .../roosterjs-editor-dom/lib/index.ts.html | 124 +- .../inlineElements/EmptyInlineElement.ts.html | 6 +- .../inlineElements/ImageInlineElement.ts.html | 4 +- .../inlineElements/LinkInlineElement.ts.html | 4 +- .../inlineElements/NodeInlineElement.ts.html | 24 +- .../PartialInlineElement.ts.html | 28 +- .../lib/inlineElements/applyTextStyle.ts.html | 64 +- .../getFirstLastInlineElement.ts.html | 6 +- .../getInlineElementAtNode.ts.html | 30 +- .../getInlineElementBeforeAfter.ts.html | 34 +- .../lib/inlineElements/index.html | 2 +- .../lib/jsUtils/arrayPush.ts.html | 4 +- .../lib/jsUtils/getObjectKeys.ts.html | 4 +- .../lib/jsUtils/index.html | 2 +- .../lib/jsUtils/toArray.ts.html | 4 +- .../lib/list/VList.ts.html | 82 +- .../lib/list/VListChain.ts.html | 74 +- .../lib/list/VListItem.ts.html | 80 +- .../lib/list/convertDecimalsToAlpha.ts.html | 2 +- .../lib/list/convertDecimalsToRomans.ts.html | 2 +- .../lib/list/createVListFromRegion.ts.html | 18 +- .../lib/list/getListTypeFromNode.ts.html | 10 +- .../lib/list/getRootListNode.ts.html | 14 +- .../roosterjs-editor-dom/lib/list/index.html | 10 +- .../lib/list/setBulletListMarkers.ts.html | 2 +- .../lib/list/setListItemStyle.ts.html | 72 +- .../lib/list/setNumberingListMarkers.ts.html | 2 +- .../lib/metadata/definitionCreators.ts.html | 2 +- .../lib/metadata/index.html | 2 +- .../lib/metadata/metadata.ts.html | 28 +- .../lib/metadata/validate.ts.html | 34 +- .../pasteSourceValidations/constants.ts.html | 2 +- .../documentContainWacElements.ts.html | 6 +- .../getPasteSource.ts.html | 16 +- .../lib/pasteSourceValidations/index.html | 2 +- .../isExcelDesktopDocument.ts.html | 6 +- .../isExcelOnlineDocument.ts.html | 6 +- .../isGoogleSheetDocument.ts.html | 6 +- .../isPowerPointDesktopDocument.ts.html | 4 +- .../isWordDesktopDocument.ts.html | 6 +- .../shouldConvertToSingleImage.ts.html | 6 +- .../lib/region/collapseNodesInRegion.ts.html | 18 +- .../lib/region/getRegionsFromRange.ts.html | 70 +- .../getSelectedBlockElementsInRegion.ts.html | 46 +- .../region/getSelectionRangeInRegion.ts.html | 34 +- .../lib/region/index.html | 2 +- .../lib/region/isNodeInRegion.ts.html | 4 +- .../lib/region/mergeBlocksInRegion.ts.html | 2 +- .../lib/selection/Position.ts.html | 90 +- .../lib/selection/addRangeToSelection.ts.html | 22 +- .../lib/selection/createRange.ts.html | 66 +- .../getHtmlWithSelectionPath.ts.html | 2 +- .../lib/selection/getPositionRect.ts.html | 2 +- .../lib/selection/getSelectionPath.ts.html | 62 +- .../lib/selection/index.html | 2 +- .../selection/isPositionAtBeginningOf.ts.html | 24 +- .../setHtmlWithSelectionPath.ts.html | 22 +- .../lib/snapshots/addSnapshot.ts.html | 38 +- .../snapshots/canMoveCurrentSnapshot.ts.html | 6 +- .../lib/snapshots/canUndoAutoComplete.ts.html | 4 +- .../clearProceedingSnapshots.ts.html | 8 +- .../lib/snapshots/createSnapshots.ts.html | 4 +- .../lib/snapshots/index.html | 2 +- .../lib/snapshots/moveCurrentSnapshot.ts.html | 2 +- .../lib/style/getStyles.ts.html | 20 +- .../roosterjs-editor-dom/lib/style/index.html | 2 +- .../lib/style/removeGlobalCssStyle.ts.html | 6 +- .../style/removeImportantStyleRule.ts.html | 2 +- .../lib/style/setGlobalCssStyles.ts.html | 2 +- .../lib/style/setStyles.ts.html | 22 +- .../lib/table/VTable.ts.html | 338 +- .../lib/table/applyTableFormat.ts.html | 2 +- .../lib/table/cloneCellStyles.ts.html | 2 +- .../roosterjs-editor-dom/lib/table/index.html | 40 +- .../lib/table/isWholeTableSelected.ts.html | 2 +- .../lib/table/pasteTable.ts.html | 2 +- .../lib/table/tableCellInfo.ts.html | 8 +- .../lib/table/tableFormatInfo.ts.html | 4 +- .../lib/utils/Browser.ts.html | 4 +- .../lib/utils/applyFormat.ts.html | 50 +- .../lib/utils/changeElementTag.ts.html | 26 +- .../lib/utils/collapseNodes.ts.html | 34 +- .../lib/utils/contains.ts.html | 32 +- .../lib/utils/createElement.ts.html | 38 +- .../utils/findClosestElementAncestor.ts.html | 14 +- .../lib/utils/fromHtml.ts.html | 2 +- .../lib/utils/getComputedStyles.ts.html | 32 +- .../lib/utils/getInnerHTML.ts.html | 2 +- .../lib/utils/getIntersectedRect.ts.html | 2 +- .../lib/utils/getLeafNode.ts.html | 16 +- .../lib/utils/getLeafSibling.ts.html | 46 +- .../lib/utils/getPendableFormatState.ts.html | 2 +- .../lib/utils/getTagOfNode.ts.html | 4 +- .../roosterjs-editor-dom/lib/utils/index.html | 30 +- .../lib/utils/isBlockElement.ts.html | 6 +- .../lib/utils/isNodeAfter.ts.html | 4 +- .../lib/utils/isNodeEmpty.ts.html | 24 +- .../lib/utils/isVoidHtmlElement.ts.html | 4 +- .../lib/utils/matchLink.ts.html | 2 +- .../lib/utils/matchesSelector.ts.html | 2 +- .../lib/utils/moveChildNodes.ts.html | 12 +- .../lib/utils/normalizeRect.ts.html | 2 +- .../lib/utils/parseColor.ts.html | 2 +- .../lib/utils/queryElements.ts.html | 48 +- .../lib/utils/readFile.ts.html | 2 +- .../lib/utils/safeInstanceOf.ts.html | 22 +- .../lib/utils/setColor.ts.html | 18 +- .../lib/utils/shouldSkipNode.ts.html | 32 +- .../lib/utils/splitParentNode.ts.html | 44 +- .../lib/utils/splitTextNode.ts.html | 2 +- .../lib/utils/unwrap.ts.html | 14 +- .../lib/utils/wrap.ts.html | 32 +- .../lib/Announce.ts.html | 2 +- .../lib/AutoFormat.ts.html | 2 +- .../lib/ContentEdit.ts.html | 2 +- .../lib/ContextMenu.ts.html | 2 +- .../lib/CustomReplace.ts.html | 2 +- .../lib/CutPasteListChain.ts.html | 2 +- .../lib/HyperLink.ts.html | 2 +- .../lib/ImageEdit.ts.html | 2 +- .../lib/ImageResize.ts.html | 2 +- .../lib/Paste.ts.html | 2 +- .../lib/Picker.ts.html | 2 +- .../lib/TableCellSelection.ts.html | 2 +- .../lib/TableResize.ts.html | 2 +- .../lib/Watermark.ts.html | 2 +- .../roosterjs-editor-plugins/lib/index.html | 2 +- .../lib/index.ts.html | 2 +- .../lib/pluginUtils/DragAndDropHelper.ts.html | 2 +- .../getAnnounceDataForList.ts.html | 2 +- .../lib/pluginUtils/announceData/index.html | 2 +- .../lib/pluginUtils/index.html | 2 +- .../plugins/Announce/AnnouncePlugin.ts.html | 2 +- .../features/AnnounceFeatures.ts.html | 2 +- .../features/announceNewListItem.ts.html | 2 +- .../announceWarningOnLastTableCell.ts.html | 2 +- .../lib/plugins/Announce/features/index.html | 2 +- .../lib/plugins/Announce/index.html | 2 +- .../lib/plugins/Announce/index.ts.html | 2 +- .../lib/plugins/AutoFormat/AutoFormat.ts.html | 2 +- .../lib/plugins/AutoFormat/index.html | 2 +- .../lib/plugins/AutoFormat/index.ts.html | 2 +- .../plugins/ContentEdit/ContentEdit.ts.html | 2 +- .../features/autoLinkFeatures.ts.html | 2 +- .../ContentEdit/features/codeFeatures.ts.html | 2 +- .../features/cursorFeatures.ts.html | 52 +- .../features/entityFeatures.ts.html | 2 +- .../plugins/ContentEdit/features/index.html | 62 +- .../ContentEdit/features/listFeatures.ts.html | 2 +- .../features/markdownFeatures.ts.html | 2 +- .../features/quoteFeatures.ts.html | 2 +- .../features/shortcutFeatures.ts.html | 2 +- .../features/structuredNodeFeatures.ts.html | 2 +- .../features/tableFeatures.ts.html | 2 +- .../ContentEdit/features/textFeatures.ts.html | 208 +- .../ContentEdit/getAllFeatures.ts.html | 2 +- .../lib/plugins/ContentEdit/index.html | 2 +- .../lib/plugins/ContentEdit/index.ts.html | 2 +- .../utils/convertAlphaToDecimals.ts.html | 2 +- .../utils/getAutoBulletListStyle.ts.html | 2 +- .../utils/getAutoNumberingListStyle.ts.html | 2 +- .../lib/plugins/ContentEdit/utils/index.html | 2 +- .../plugins/ContextMenu/ContextMenu.ts.html | 2 +- .../lib/plugins/ContextMenu/index.html | 2 +- .../lib/plugins/ContextMenu/index.ts.html | 2 +- .../CustomReplace/CustomReplace.ts.html | 2 +- .../lib/plugins/CustomReplace/index.html | 2 +- .../lib/plugins/CustomReplace/index.ts.html | 2 +- .../CutPasteListChain.ts.html | 2 +- .../lib/plugins/CutPasteListChain/index.html | 2 +- .../plugins/CutPasteListChain/index.ts.html | 2 +- .../lib/plugins/HyperLink/HyperLink.ts.html | 2 +- .../lib/plugins/HyperLink/index.html | 2 +- .../lib/plugins/HyperLink/index.ts.html | 2 +- .../lib/plugins/ImageEdit/ImageEdit.ts.html | 72 +- .../ImageEdit/api/canRegenerateImage.ts.html | 2 +- .../lib/plugins/ImageEdit/api/index.html | 2 +- .../plugins/ImageEdit/api/isResizedTo.ts.html | 2 +- .../plugins/ImageEdit/api/resetImage.ts.html | 2 +- .../ImageEdit/api/resizeByPercentage.ts.html | 2 +- .../ImageEdit/constants/constants.ts.html | 2 +- .../plugins/ImageEdit/constants/index.html | 2 +- .../editInfoUtils/applyChange.ts.html | 70 +- .../editInfoUtils/checkEditInfoState.ts.html | 20 +- .../ImageEdit/editInfoUtils/editInfo.ts.html | 16 +- .../editInfoUtils/generateDataURL.ts.html | 34 +- .../getGeneratedImageSize.ts.html | 18 +- .../editInfoUtils/getLastZIndex.ts.html | 2 +- .../getTargetSizeByPercentage.ts.html | 10 +- .../ImageEdit/editInfoUtils/index.html | 30 +- .../ImageEdit/imageEditors/Cropper.ts.html | 2 +- .../ImageEdit/imageEditors/Resizer.ts.html | 2 +- .../ImageEdit/imageEditors/Rotator.ts.html | 2 +- .../plugins/ImageEdit/imageEditors/index.html | 2 +- .../lib/plugins/ImageEdit/index.html | 28 +- .../lib/plugins/ImageEdit/index.ts.html | 2 +- .../plugins/ImageResize/ImageResize.ts.html | 2 +- .../lib/plugins/ImageResize/index.html | 2 +- .../lib/plugins/ImageResize/index.ts.html | 2 +- .../lib/plugins/Paste/Paste.ts.html | 24 +- .../convertPastedContentForLI.ts.html | 2 +- .../plugins/Paste/commonConverter/index.html | 2 +- .../convertPastedContentFromExcel.ts.html | 2 +- .../plugins/Paste/excelConverter/index.html | 2 +- .../convertPasteContentForSingleImage.ts.html | 2 +- .../plugins/Paste/imageConverter/index.html | 2 +- .../lib/plugins/Paste/index.html | 2 +- .../lib/plugins/Paste/index.ts.html | 2 +- .../Paste/lineMerge/handleLineMerge.ts.html | 2 +- .../lib/plugins/Paste/lineMerge/index.html | 2 +- .../ListItemBlock.ts.html | 2 +- ...nvertPastedContentFromOfficeOnline.ts.html | 2 +- ...convertPastedContentFromWordOnline.ts.html | 2 +- .../Paste/officeOnlineConverter/index.html | 2 +- ...convertPastedContentFromPowerPoint.ts.html | 2 +- .../lib/plugins/Paste/pptConverter/index.html | 2 +- .../deprecatedColorList.ts.html | 2 +- .../index.html | 2 +- ...anitizeHtmlColorsFromPastedContent.ts.html | 6 +- .../plugins/Paste/sanitizeLinks/index.html | 2 +- .../Paste/sanitizeLinks/sanitizeLinks.ts.html | 4 +- .../Paste/wordConverter/LevelLists.ts.html | 4 +- .../WordConverterArguments.ts.html | 4 +- .../wordConverter/WordCustomData.ts.html | 4 +- .../wordConverter/commentsRemoval.ts.html | 12 +- .../convertPastedContentFromWord.ts.html | 54 +- .../wordConverter/converterUtils.ts.html | 32 +- .../plugins/Paste/wordConverter/index.html | 30 +- .../Paste/wordConverter/wordConverter.ts.html | 4 +- .../lib/plugins/Picker/PickerPlugin.ts.html | 2 +- .../lib/plugins/Picker/index.html | 2 +- .../lib/plugins/Picker/index.ts.html | 2 +- .../TableCellSelection.ts.html | 2 +- .../TableCellSelection/constants.ts.html | 2 +- .../features/DeleteTableContents.ts.html | 2 +- .../TableCellSelection/features/index.html | 2 +- .../lib/plugins/TableCellSelection/index.html | 2 +- .../plugins/TableCellSelection/index.ts.html | 2 +- .../keyUtils/handleKeyDownEvent.ts.html | 2 +- .../keyUtils/handleKeyUpEvent.ts.html | 2 +- .../TableCellSelection/keyUtils/index.html | 2 +- .../mouseUtils/handleMouseDownEvent.ts.html | 2 +- .../mouseUtils/handleScrollEvent.ts.html | 2 +- .../TableCellSelection/mouseUtils/index.html | 2 +- .../utils/clearState.ts.html | 2 +- .../utils/getCellAtCursor.ts.html | 2 +- .../utils/getCellCoordinates.ts.html | 2 +- .../utils/getTableAtCursor.ts.html | 2 +- .../TableCellSelection/utils/index.html | 2 +- .../TableCellSelection/utils/isAfter.ts.html | 2 +- .../utils/normalizeTableSelection.ts.html | 2 +- .../utils/prepareSelection.ts.html | 2 +- .../utils/restoreSelection.ts.html | 2 +- .../utils/selectTable.ts.html | 2 +- .../TableCellSelection/utils/setData.ts.html | 2 +- .../utils/updateSelection.ts.html | 2 +- .../plugins/TableResize/TableResize.ts.html | 2 +- .../TableResize/editors/CellResizer.ts.html | 2 +- .../TableResize/editors/TableEditor.ts.html | 2 +- .../editors/TableEditorFeature.ts.html | 2 +- .../TableResize/editors/TableInserter.ts.html | 2 +- .../TableResize/editors/TableResizer.ts.html | 2 +- .../TableResize/editors/TableSelector.ts.html | 2 +- .../plugins/TableResize/editors/index.html | 2 +- .../lib/plugins/TableResize/index.html | 2 +- .../lib/plugins/TableResize/index.ts.html | 2 +- .../lib/plugins/Watermark/Watermark.ts.html | 2 +- .../lib/plugins/Watermark/index.html | 2 +- .../lib/plugins/Watermark/index.ts.html | 2 +- coverage/roosterjs/lib/createEditor.ts.html | 2 +- coverage/roosterjs/lib/index.html | 2 +- coverage/roosterjs/lib/index.ts.html | 2 +- demo.js | 2 +- demo.js.map | 2 +- docs/assets/js/search.js | 2 +- .../roosterjs_content_model_core.editor.html | 60 +- ...ontent_model_plugins.autoformatplugin.html | 28 +- ...t_model_plugins.contextmenupluginbase.html | 28 +- ...erjs_content_model_plugins.editplugin.html | 26 +- ...content_model_plugins.hyperlinkplugin.html | 30 +- ..._content_model_plugins.markdownplugin.html | 28 +- ...rjs_content_model_plugins.pasteplugin.html | 28 +- ...js_content_model_plugins.pickerplugin.html | 535 + ..._content_model_plugins.shortcutplugin.html | 30 +- ...content_model_plugins.tableeditplugin.html | 30 +- ...content_model_plugins.watermarkplugin.html | 32 +- ...oosterjs_editor_adapter.editoradapter.html | 160 +- .../classes/roosterjs_editor_core.editor.html | 130 +- .../roosterjs_editor_core.editorbase.html | 130 +- ...roosterjs_editor_dom.contenttraverser.html | 18 +- .../roosterjs_editor_dom.htmlsanitizer.html | 12 +- ...osterjs_editor_dom.imageinlineelement.html | 20 +- ...oosterjs_editor_dom.linkinlineelement.html | 20 +- ...oosterjs_editor_dom.nodeinlineelement.html | 20 +- ...terjs_editor_dom.partialinlineelement.html | 26 +- .../roosterjs_editor_dom.position.html | 26 +- ...js_editor_dom.positioncontentsearcher.html | 16 +- docs/classes/roosterjs_editor_dom.vlist.html | 32 +- .../roosterjs_editor_dom.vlistchain.html | 8 +- .../roosterjs_editor_dom.vlistitem.html | 36 +- docs/classes/roosterjs_editor_dom.vtable.html | 38 +- .../roosterjs_editor_plugins.announce.html | 14 +- .../roosterjs_editor_plugins.autoformat.html | 8 +- .../roosterjs_editor_plugins.contentedit.html | 8 +- .../roosterjs_editor_plugins.contextmenu.html | 10 +- ...oosterjs_editor_plugins.customreplace.html | 12 +- ...erjs_editor_plugins.cutpastelistchain.html | 8 +- .../roosterjs_editor_plugins.hyperlink.html | 14 +- .../roosterjs_editor_plugins.imageedit.html | 26 +- .../roosterjs_editor_plugins.imageresize.html | 30 +- .../roosterjs_editor_plugins.paste.html | 10 +- ...roosterjs_editor_plugins.pickerplugin.html | 12 +- ...rjs_editor_plugins.tablecellselection.html | 10 +- .../roosterjs_editor_plugins.tableresize.html | 12 +- .../roosterjs_editor_plugins.watermark.html | 12 +- .../roosterjs_editor_types.alignment.html | 6 +- ...roosterjs_editor_types.bulletlisttype.html | 22 +- ...roosterjs_editor_types.capitalization.html | 8 +- .../roosterjs_editor_types.changesource.html | 26 +- ...oosterjs_editor_types.clearformatmode.html | 6 +- ..._editor_types.colortransformdirection.html | 4 +- ...oosterjs_editor_types.contentposition.html | 12 +- .../roosterjs_editor_types.contenttype.html | 4 +- ...sterjs_editor_types.contenttypeprefix.html | 4 +- ...rjs_editor_types.darkmodedatasetnames.html | 8 +- ...roosterjs_editor_types.definitiontype.html | 12 +- ...osterjs_editor_types.delimiterclasses.html | 4 +- .../roosterjs_editor_types.direction.html | 4 +- ...oosterjs_editor_types.documentcommand.html | 94 +- ...osterjs_editor_types.documentposition.html | 12 +- .../roosterjs_editor_types.entityclasses.html | 8 +- ...oosterjs_editor_types.entityoperation.html | 24 +- ...rjs_editor_types.experimentalfeatures.html | 60 +- ...roosterjs_editor_types.fontsizechange.html | 4 +- ...roosterjs_editor_types.getcontentmode.html | 10 +- ...terjs_editor_types.imageeditoperation.html | 16 +- .../roosterjs_editor_types.indentation.html | 4 +- docs/enums/roosterjs_editor_types.keys.html | 74 +- ...rjs_editor_types.knownannouncestrings.html | 6 +- ...tor_types.knowncreateelementdataindex.html | 26 +- ...rjs_editor_types.knownpastesourcetype.html | 16 +- .../roosterjs_editor_types.listtype.html | 6 +- .../roosterjs_editor_types.nodetype.html | 16 +- ...sterjs_editor_types.numberinglisttype.html | 44 +- .../roosterjs_editor_types.pastetype.html | 8 +- ...oosterjs_editor_types.plugineventtype.html | 48 +- .../roosterjs_editor_types.positiontype.html | 8 +- .../roosterjs_editor_types.queryscope.html | 6 +- .../roosterjs_editor_types.regiontype.html | 2 +- ...erjs_editor_types.selectionrangetypes.html | 6 +- ...sterjs_editor_types.tableborderformat.html | 18 +- ...roosterjs_editor_types.tableoperation.html | 46 +- .../roosterjs_react.knownribbonbuttonkey.html | 64 +- docs/enums/roosterjs_react.updatemode.html | 12 +- ...tent_model_plugins.contextmenuoptions.html | 24 +- ...content_model_plugins.markdownoptions.html | 26 +- ...s_content_model_plugins.pickerhandler.html | 563 + ...js_content_model_plugins.pickerhelper.html | 421 + ...content_model_plugins.shortcutcommand.html | 24 +- ...t_model_plugins.shortcutkeydefinition.html | 24 +- ...erjs_content_model_types.announcedata.html | 6 +- ...s_content_model_types.arraydefinition.html | 12 +- ...ontent_model_types.baseplugindomevent.html | 6 +- ...s_content_model_types.basepluginevent.html | 4 +- ...ontent_model_types.beforecutcopyevent.html | 12 +- ...ontent_model_types.beforedisposeevent.html | 4 +- ...odel_types.beforekeyboardeditingevent.html | 6 +- ..._content_model_types.beforepasteevent.html | 20 +- ...ent_model_types.beforesetcontentevent.html | 6 +- ...content_model_types.booleandefinition.html | 8 +- .../roosterjs_content_model_types.border.html | 6 +- ..._content_model_types.cachepluginstate.html | 8 +- ...rjs_content_model_types.changedentity.html | 6 +- ...rjs_content_model_types.clipboarddata.html | 24 +- ...content_model_types.clonemodeloptions.html | 2 +- .../roosterjs_content_model_types.colors.html | 4 +- ...ntent_model_types.compositionendevent.html | 6 +- ...ntent_model_types.contentchangedevent.html | 20 +- ...ent_model_types.contentmodelblockbase.html | 4 +- ...odel_types.contentmodelblockgroupbase.html | 4 +- ...odel_types.contentmodelblockwithcache.html | 2 +- ...js_content_model_types.contentmodelbr.html | 10 +- ..._content_model_types.contentmodelcode.html | 2 +- ...ntent_model_types.contentmodeldivider.html | 12 +- ...tent_model_types.contentmodeldocument.html | 6 +- ...ontent_model_types.contentmodelentity.html | 16 +- ...del_types.contentmodelformatcontainer.html | 14 +- ...ent_model_types.contentmodelformatmap.html | 50 +- ...t_model_types.contentmodelformatstate.html | 68 +- ..._model_types.contentmodelgeneralblock.html | 12 +- ...odel_types.contentmodelgeneralsegment.html | 18 +- ...content_model_types.contentmodelimage.html | 20 +- ..._content_model_types.contentmodellink.html | 4 +- ...tent_model_types.contentmodellistitem.html | 12 +- ...ent_model_types.contentmodellistlevel.html | 6 +- ...ent_model_types.contentmodelparagraph.html | 14 +- ..._types.contentmodelparagraphdecorator.html | 4 +- ...t_model_types.contentmodelsegmentbase.html | 10 +- ...del_types.contentmodelselectionmarker.html | 10 +- ...tent_model_types.contentmodelsettings.html | 6 +- ...content_model_types.contentmodeltable.html | 12 +- ...ent_model_types.contentmodeltablecell.html | 18 +- ...tent_model_types.contentmodeltablerow.html | 8 +- ..._content_model_types.contentmodeltext.html | 12 +- ...t_model_types.contentmodelwithdataset.html | 2 +- ...nt_model_types.contentmodelwithformat.html | 2 +- ..._content_model_types.contextmenuevent.html | 8 +- ...nt_model_types.contextmenupluginstate.html | 2 +- ...ntent_model_types.contextmenuprovider.html | 12 +- ...tent_model_types.copypastepluginstate.html | 6 +- ...sterjs_content_model_types.coreapimap.html | 30 +- ..._content_model_types.darkcolorhandler.html | 10 +- ...js_content_model_types.definitionbase.html | 6 +- ...rjs_content_model_types.deletedentity.html | 4 +- ...nt_model_types.deleteselectioncontext.html | 10 +- ...ent_model_types.deleteselectionresult.html | 4 +- ...ntent_model_types.domeventpluginstate.html | 10 +- ...js_content_model_types.domeventrecord.html | 4 +- ...osterjs_content_model_types.domhelper.html | 48 +- ...sterjs_content_model_types.domindexer.html | 8 +- ...js_content_model_types.dominsertpoint.html | 4 +- ...content_model_types.domtomodelcontext.html | 44 +- ...odel_types.domtomodeldecoratorcontext.html | 6 +- ...t_model_types.domtomodelformatcontext.html | 6 +- ...tent_model_types.domtomodellistformat.html | 6 +- ..._content_model_types.domtomodeloption.html | 6 +- ..._types.domtomodeloptionforcreatemodel.html | 8 +- ...l_types.domtomodeloptionforsanitizing.html | 14 +- ...odel_types.domtomodelselectioncontext.html | 4 +- ...ontent_model_types.domtomodelsettings.html | 8 +- ...s_content_model_types.edgelinkpreview.html | 10 +- ...js_content_model_types.editimageevent.html | 12 +- ...rjs_content_model_types.editorcontext.html | 20 +- ...sterjs_content_model_types.editorcore.html | 20 +- ...content_model_types.editorcoreplugins.html | 18 +- ...content_model_types.editorenvironment.html | 12 +- ..._content_model_types.editorinputevent.html | 6 +- ...rjs_content_model_types.editoroptions.html | 36 +- ...erjs_content_model_types.editorplugin.html | 11 +- ..._content_model_types.editorreadyevent.html | 4 +- ...tent_model_types.entershadoweditevent.html | 4 +- .../roosterjs_content_model_types.entity.html | 8 +- ...tent_model_types.entityoperationevent.html | 14 +- ...content_model_types.entitypluginstate.html | 2 +- ...terjs_content_model_types.entitystate.html | 6 +- ...odel_types.extractcontentwithdomevent.html | 6 +- ...model_types.formatcontentmodelcontext.html | 18 +- ...model_types.formatcontentmodeloptions.html | 12 +- ...tent_model_types.formathandlertypemap.html | 72 +- ...content_model_types.formatpluginstate.html | 4 +- ...roosterjs_content_model_types.ieditor.html | 56 +- ...terjs_content_model_types.imageeditor.html | 10 +- ..._content_model_types.imageformatstate.html | 10 +- ...js_content_model_types.imageselection.html | 4 +- ...nt_model_types.imagesnapshotselection.html | 4 +- ...ntent_model_types.insertentityoptions.html | 10 +- ...terjs_content_model_types.insertpoint.html | 8 +- ...t_model_types.iterateselectionsoption.html | 6 +- ...erjs_content_model_types.keydownevent.html | 8 +- ...rjs_content_model_types.keypressevent.html | 6 +- ...sterjs_content_model_types.keyupevent.html | 6 +- ...s_content_model_types.knownentityitem.html | 6 +- ...tent_model_types.leaveshadoweditevent.html | 4 +- ...tent_model_types.lifecyclepluginstate.html | 6 +- ...oosterjs_content_model_types.linkdata.html | 6 +- ...t_model_types.logicalrootchangedevent.html | 6 +- ..._content_model_types.mergemodeloption.html | 6 +- ...s_content_model_types.metadataapplier.html | 4 +- ...l_types.modeltodomblockandsegmentnode.html | 4 +- ...content_model_types.modeltodomcontext.html | 42 +- ...t_model_types.modeltodomformatcontext.html | 4 +- ...ent_model_types.modeltodomlistcontext.html | 4 +- ...t_model_types.modeltodomliststackitem.html | 8 +- ..._content_model_types.modeltodomoption.html | 10 +- ...odel_types.modeltodomregularselection.html | 6 +- ...odel_types.modeltodomselectioncontext.html | 6 +- ...ontent_model_types.modeltodomsettings.html | 12 +- ...js_content_model_types.mousedownevent.html | 6 +- ...erjs_content_model_types.mouseupevent.html | 8 +- ...terjs_content_model_types.nodetypemap.html | 16 +- ..._content_model_types.numberdefinition.html | 12 +- ..._content_model_types.objectdefinition.html | 8 +- ...rjs_content_model_types.pendingformat.html | 4 +- ...s_content_model_types.pluginwithstate.html | 12 +- ...js_content_model_types.rangeselection.html | 6 +- ...nt_model_types.rangeselectionforcache.html | 8 +- ...nt_model_types.rangesnapshotselection.html | 8 +- .../roosterjs_content_model_types.rect.html | 8 +- ...terjs_content_model_types.scrollevent.html | 8 +- ...sterjs_content_model_types.selectable.html | 2 +- ...rjs_content_model_types.selectionbase.html | 2 +- ...ent_model_types.selectionchangedevent.html | 6 +- ...tent_model_types.selectionpluginstate.html | 10 +- ...oosterjs_content_model_types.snapshot.html | 10 +- ...osterjs_content_model_types.snapshots.html | 12 +- ...ent_model_types.snapshotselectionbase.html | 2 +- ..._content_model_types.snapshotsmanager.html | 12 +- ..._content_model_types.stringdefinition.html | 8 +- ...ntent_model_types.tablecellcoordinate.html | 4 +- ...js_content_model_types.tableselection.html | 12 +- ...ent_model_types.tableselectioncontext.html | 8 +- ...model_types.tableselectioncoordinates.html | 8 +- ...ontent_model_types.tableselectioninfo.html | 10 +- ...nt_model_types.tablesnapshotselection.html | 12 +- ...tent_model_types.textmutationobserver.html | 6 +- ...s_content_model_types.undopluginstate.html | 10 +- ...del_types.validdeleteselectioncontext.html | 10 +- ..._content_model_types.zoomchangedevent.html | 6 +- ...ditor_adapter.beforepasteadapterevent.html | 22 +- ...s_editor_adapter.editoradapteroptions.html | 42 +- ...sterjs_editor_plugins.announcefeature.html | 4 +- ...rjs_editor_plugins.contextmenuoptions.html | 6 +- ...rjs_editor_plugins.onshowresizehandle.html | 2 +- .../roosterjs_editor_types.announcedata.html | 6 +- ...oosterjs_editor_types.arraydefinition.html | 12 +- ..._editor_types.autolinkfeaturesettings.html | 4 +- ...oosterjs_editor_types.basepluginevent.html | 4 +- ...terjs_editor_types.beforecutcopyevent.html | 12 +- ...s_editor_types.beforecutcopyeventdata.html | 8 +- ...terjs_editor_types.beforedisposeevent.html | 4 +- ...ditor_types.beforekeyboardeditingdata.html | 2 +- ...itor_types.beforekeyboardeditingevent.html | 6 +- ...osterjs_editor_types.beforepasteevent.html | 18 +- ...rjs_editor_types.beforepasteeventdata.html | 14 +- ...js_editor_types.beforesetcontentevent.html | 6 +- ...ditor_types.beforesetcontenteventdata.html | 2 +- .../roosterjs_editor_types.blockelement.html | 14 +- ...sterjs_editor_types.booleandefinition.html | 8 +- .../roosterjs_editor_types.browserinfo.html | 24 +- ...terjs_editor_types.buildineditfeature.html | 10 +- .../roosterjs_editor_types.clipboarddata.html | 24 +- ...erjs_editor_types.codefeaturesettings.html | 4 +- ...osterjs_editor_types.colorkeyandvalue.html | 6 +- ...or_types.compatiblebeforecutcopyevent.html | 12 +- ...or_types.compatiblebeforedisposeevent.html | 4 +- ....compatiblebeforekeyboardeditingevent.html | 6 +- ...itor_types.compatiblebeforepasteevent.html | 18 +- ...types.compatiblebeforesetcontentevent.html | 6 +- ...r_types.compatiblecontentchangedevent.html | 10 +- ...editor_types.compatibleeditimageevent.html | 12 +- ...itor_types.compatibleeditorreadyevent.html | 4 +- ..._types.compatibleentershadoweditevent.html | 8 +- ..._types.compatibleentityoperationevent.html | 16 +- ....compatibleextractcontentwithdomevent.html | 6 +- ..._types.compatibleleaveshadoweditevent.html | 4 +- ...patiblependingformatstatechangedevent.html | 8 +- ...ypes.compatibleplugincompositionevent.html | 6 +- ...ypes.compatibleplugincontextmenuevent.html | 8 +- ...itor_types.compatibleplugininputevent.html | 6 +- ...or_types.compatiblepluginkeydownevent.html | 8 +- ...r_types.compatiblepluginkeypressevent.html | 6 +- ...itor_types.compatiblepluginkeyupevent.html | 6 +- ..._types.compatiblepluginmousedownevent.html | 6 +- ...or_types.compatiblepluginmouseupevent.html | 8 +- ...tor_types.compatiblepluginscrollevent.html | 8 +- ...types.compatibleselectionchangedevent.html | 6 +- ...itor_types.compatiblezoomchangedevent.html | 8 +- ...terjs_editor_types.contentchangeddata.html | 6 +- ...erjs_editor_types.contentchangedevent.html | 10 +- ..._editor_types.contentchangedeventdata.html | 6 +- ...itor_types.contenteditfeaturesettings.html | 80 +- ...erjs_editor_types.contentmetadatabase.html | 4 +- ...erjs_editor_types.contextmenuprovider.html | 12 +- .../roosterjs_editor_types.coordinates.html | 4 +- ...rjs_editor_types.copypastepluginstate.html | 2 +- .../roosterjs_editor_types.coreapimap.html | 42 +- .../roosterjs_editor_types.coreplugins.html | 24 +- ...sterjs_editor_types.createelementdata.html | 14 +- ...js_editor_types.cursorfeaturesettings.html | 2 +- .../roosterjs_editor_types.customdata.html | 4 +- ...erjs_editor_types.customizedefinition.html | 8 +- ...sterjs_editor_types.customreplacement.html | 8 +- ...osterjs_editor_types.darkcolorhandler.html | 12 +- .../roosterjs_editor_types.defaultformat.html | 18 +- ...roosterjs_editor_types.definitionbase.html | 6 +- ...js_editor_types.domeventhandlerobject.html | 4 +- ...erjs_editor_types.domeventpluginstate.html | 16 +- ...oosterjs_editor_types.edgelinkpreview.html | 10 +- ...roosterjs_editor_types.editimageevent.html | 12 +- ...terjs_editor_types.editimageeventdata.html | 8 +- .../roosterjs_editor_types.editorcore.html | 22 +- .../roosterjs_editor_types.editoroptions.html | 42 +- .../roosterjs_editor_types.editorplugin.html | 10 +- ...osterjs_editor_types.editorreadyevent.html | 4 +- ...oosterjs_editor_types.editorundostate.html | 4 +- ...oosterjs_editor_types.editpluginstate.html | 2 +- ..._editor_types.elementbasedformatstate.html | 28 +- ...rjs_editor_types.entershadoweditevent.html | 8 +- ...editor_types.entershadowediteventdata.html | 4 +- .../roosterjs_editor_types.entity.html | 8 +- ...js_editor_types.entityfeaturesettings.html | 14 +- ...rjs_editor_types.entityoperationevent.html | 16 +- ...editor_types.entityoperationeventdata.html | 12 +- ...sterjs_editor_types.entitypluginstate.html | 8 +- .../roosterjs_editor_types.entitystate.html | 6 +- ...tor_types.extractclipboardeventoption.html | 8 +- ...pes.extractclipboarditemsforieoptions.html | 4 +- ...tor_types.extractclipboarditemsoption.html | 4 +- ...itor_types.extractcontentwithdomevent.html | 6 +- ..._types.extractcontentwithdomeventdata.html | 2 +- .../roosterjs_editor_types.formatstate.html | 72 +- ...ditor_types.genericcontenteditfeature.html | 8 +- ...rjs_editor_types.htmlsanitizeroptions.html | 22 +- ...sterjs_editor_types.icontenttraverser.html | 12 +- .../roosterjs_editor_types.ieditor.html | 152 +- ...rjs_editor_types.imagecontentmetadata.html | 6 +- ...osterjs_editor_types.imageeditoptions.html | 24 +- ...erjs_editor_types.imageselectionrange.html | 8 +- .../roosterjs_editor_types.inlineelement.html | 18 +- ...osterjs_editor_types.insertoptionbase.html | 8 +- ...sterjs_editor_types.insertoptionbasic.html | 10 +- ...sterjs_editor_types.insertoptionrange.html | 12 +- ...editor_types.ipositioncontentsearcher.html | 14 +- ...oosterjs_editor_types.knownentityitem.html | 6 +- ...rjs_editor_types.leaveshadoweditevent.html | 4 +- ...rjs_editor_types.lifecyclepluginstate.html | 22 +- .../roosterjs_editor_types.linkdata.html | 6 +- ...erjs_editor_types.listfeaturesettings.html | 26 +- ..._editor_types.markdownfeaturesettings.html | 8 +- ...rjs_editor_types.modeindependentcolor.html | 4 +- .../roosterjs_editor_types.nodeposition.html | 16 +- ...js_editor_types.normalcontentmetadata.html | 8 +- ...rjs_editor_types.normalselectionrange.html | 6 +- ...osterjs_editor_types.numberdefinition.html | 12 +- ...osterjs_editor_types.objectdefinition.html | 8 +- ...erjs_editor_types.pendableformatstate.html | 12 +- ..._types.pendingformatstatechangedevent.html | 8 +- ...r_types.pendingformatstatepluginstate.html | 6 +- ...terjs_editor_types.pickerdataprovider.html | 22 +- ...erjs_editor_types.pickerpluginoptions.html | 14 +- ...s_editor_types.plugincompositionevent.html | 6 +- ...s_editor_types.plugincontextmenuevent.html | 8 +- ...itor_types.plugincontextmenueventdata.html | 2 +- ...terjs_editor_types.plugindomeventbase.html | 6 +- ...osterjs_editor_types.plugininputevent.html | 6 +- ...terjs_editor_types.pluginkeydownevent.html | 8 +- ...s_editor_types.pluginkeydowneventdata.html | 2 +- ...erjs_editor_types.pluginkeypressevent.html | 6 +- ...osterjs_editor_types.pluginkeyupevent.html | 6 +- ...rjs_editor_types.pluginmousedownevent.html | 6 +- ...terjs_editor_types.pluginmouseupevent.html | 8 +- ...s_editor_types.pluginmouseupeventdata.html | 2 +- ...sterjs_editor_types.pluginscrollevent.html | 8 +- ...js_editor_types.pluginscrolleventdata.html | 2 +- ...oosterjs_editor_types.pluginwithstate.html | 12 +- ...rjs_editor_types.quotefeaturesettings.html | 4 +- .../roosterjs_editor_types.rect.html | 8 +- .../roosterjs_editor_types.region.html | 12 +- .../roosterjs_editor_types.regionbase.html | 8 +- ...erjs_editor_types.sanitizehtmloptions.html | 26 +- ...js_editor_types.selectionchangedevent.html | 6 +- ...ditor_types.selectionchangedeventdata.html | 2 +- .../roosterjs_editor_types.selectionpath.html | 4 +- ...rjs_editor_types.selectionrangeexbase.html | 6 +- ..._editor_types.shortcutfeaturesettings.html | 2 +- .../roosterjs_editor_types.snapshot.html | 8 +- .../roosterjs_editor_types.snapshots.html | 10 +- ...osterjs_editor_types.stringdefinition.html | 8 +- ...r_types.structurednodefeaturesettings.html | 2 +- ...js_editor_types.stylebasedformatstate.html | 24 +- ...rjs_editor_types.tablecontentmetadata.html | 10 +- ...rjs_editor_types.tablefeaturesettings.html | 8 +- .../roosterjs_editor_types.tableformat.html | 26 +- ...roosterjs_editor_types.tableselection.html | 4 +- ...erjs_editor_types.tableselectionrange.html | 12 +- .../roosterjs_editor_types.targetwindow.html | 186 +- ...osterjs_editor_types.targetwindowbase.html | 180 +- ...erjs_editor_types.textfeaturesettings.html | 6 +- ...oosterjs_editor_types.undopluginstate.html | 10 +- ...rjs_editor_types.undosnapshotsservice.html | 10 +- .../roosterjs_editor_types.vcell.html | 10 +- ...osterjs_editor_types.zoomchangedevent.html | 8 +- ...rjs_editor_types.zoomchangedeventdata.html | 4 +- .../roosterjs_react.contextmenuitem.html | 20 +- .../roosterjs_react.dialogitem.html | 8 +- .../roosterjs_react.reacteditorplugin.html | 12 +- .../roosterjs_react.ribbonbutton.html | 18 +- .../roosterjs_react.ribbonbuttondropdown.html | 12 +- .../roosterjs_react.ribbonplugin.html | 20 +- .../roosterjs_react.ribbonpluginoptions.html | 2 +- .../roosterjs_react.ribbonprops.html | 6 +- .../roosterjs_react.roosterprops.html | 46 +- .../roosterjs_react.uiutilities.html | 4 +- .../roosterjs_react.updatecontentplugin.html | 12 +- docs/modules/roosterjs.html | 2 +- docs/modules/roosterjs_color_utils.html | 2 +- docs/modules/roosterjs_content_model_api.html | 122 +- .../modules/roosterjs_content_model_core.html | 10 +- docs/modules/roosterjs_content_model_dom.html | 258 +- .../roosterjs_content_model_plugins.html | 133 +- .../roosterjs_content_model_types.html | 304 +- docs/modules/roosterjs_editor_adapter.html | 2 +- docs/modules/roosterjs_editor_api.html | 86 +- docs/modules/roosterjs_editor_core.html | 4 +- docs/modules/roosterjs_editor_dom.html | 278 +- docs/modules/roosterjs_editor_plugins.html | 16 +- docs/modules/roosterjs_editor_types.html | 118 +- docs/modules/roosterjs_react.html | 144 +- rooster-min.js | 2 +- rooster-min.js.map | 2 +- 1411 files changed, 18450 insertions(+), 14280 deletions(-) create mode 100644 coverage/roosterjs-content-model-plugins/lib/picker/PickerHelperImpl.ts.html create mode 100644 coverage/roosterjs-content-model-plugins/lib/picker/PickerPlugin.ts.html create mode 100644 coverage/roosterjs-content-model-plugins/lib/picker/getQueryString.ts.html create mode 100644 coverage/roosterjs-content-model-plugins/lib/picker/index.html create mode 100644 coverage/roosterjs-content-model-plugins/lib/pluginUtils/Rect/getDOMInsertPointRect.ts.html create mode 100644 docs/classes/roosterjs_content_model_plugins.pickerplugin.html create mode 100644 docs/interfaces/roosterjs_content_model_plugins.pickerhandler.html create mode 100644 docs/interfaces/roosterjs_content_model_plugins.pickerhelper.html diff --git a/coverage/index.html b/coverage/index.html index 6c91499e3a0..e24d2366745 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -23,30 +23,30 @@

All files

- 87.54% + 88.12% Statements - 19710/22515 + 19998/22694
- 75.09% + 75.62% Branches - 14318/19068 + 14542/19231
- 84.82% + 85.31% Functions - 3335/3932 + 3373/3954
- 87.25% + 87.84% Lines - 18558/21270 + 18832/21440
@@ -359,17 +359,17 @@

All files

roosterjs-content-model-api/lib/publicApi/utils - +
- 99.38% - 159/160 + 99.39% + 162/163 92.23% 95/103 100% 24/24 - 99.29% - 140/141 + 99.31% + 143/144 @@ -528,13 +528,13 @@

All files

100% - 16/16 - 93.75% - 30/32 + 14/14 100% - 3/3 + 20/20 100% - 15/15 + 2/2 + 100% + 13/13 @@ -724,8 +724,8 @@

All files

95.61% 196/205 - 85.56% - 160/187 + 84.49% + 158/187 96.77% 30/31 95.38% @@ -824,17 +824,17 @@

All files

roosterjs-content-model-core/lib/corePlugin/selection - -
+ +
- 97.16% - 342/352 - 83.76% - 361/431 + 96.88% + 341/352 + 83.53% + 360/431 97.44% 38/39 - 97.01% - 325/335 + 96.72% + 324/335 @@ -873,13 +873,13 @@

All files

100% - 85/85 - 96.51% - 83/86 + 89/89 + 94.68% + 89/94 100% - 28/28 + 29/29 100% - 83/83 + 87/87 @@ -1114,8 +1114,8 @@

All files

99.12% 113/114 - 95.5% - 106/111 + 94.59% + 105/111 100% 26/26 99.12% @@ -1398,13 +1398,13 @@

All files

100% - 33/33 + 37/37 100% 0/0 - 13.04% - 3/23 + 12% + 3/25 100% - 24/24 + 26/26 @@ -1707,6 +1707,21 @@

All files

39/41 + + roosterjs-content-model-plugins/lib/picker + +
+ + 95.68% + 133/139 + 83.69% + 118/141 + 89.47% + 17/19 + 95.45% + 126/132 + + roosterjs-content-model-plugins/lib/pluginUtils @@ -1753,18 +1768,18 @@

All files

- roosterjs-content-model-plugins/lib/pluginUtils/Rect - -
+ roosterjs-content-model-plugins/lib/pluginUtils/Rect + +
- 100% - 12/12 - 66.67% - 4/6 - 100% - 7/7 - 100% - 12/12 + 32.56% + 14/43 + 12.5% + 4/32 + 87.5% + 7/8 + 32.56% + 14/43 @@ -1934,17 +1949,17 @@

All files

roosterjs-editor-api/lib/format - -
+ +
- 64.03% - 404/631 - 46.28% - 218/471 - 66.67% - 76/114 - 63.64% - 392/616 + 71.47% + 451/631 + 55.41% + 261/471 + 74.56% + 85/114 + 71.1% + 438/616 @@ -1964,17 +1979,17 @@

All files

roosterjs-editor-api/lib/utils - -
+ +
- 88.27% - 158/179 - 70.32% - 109/155 - 87.5% - 28/32 - 88.64% - 156/176 + 93.3% + 167/179 + 74.19% + 115/155 + 96.88% + 31/32 + 93.75% + 165/176 @@ -1994,17 +2009,17 @@

All files

roosterjs-editor-core/lib/coreApi - -
+ +
- 94.58% - 681/720 - 85.93% - 629/732 - 93% - 93/100 - 94.56% - 643/680 + 95.83% + 690/720 + 86.61% + 634/732 + 94% + 94/100 + 95.88% + 652/680 @@ -2024,17 +2039,17 @@

All files

roosterjs-editor-core/lib/corePlugins - +
- 86.24% - 702/814 - 70.92% - 578/815 - 87.13% - 149/171 - 85.93% - 684/796 + 86% + 700/814 + 70.43% + 574/815 + 86.55% + 148/171 + 85.68% + 682/796 @@ -2054,17 +2069,17 @@

All files

roosterjs-editor-core/lib/editor - +
- 83.62% - 337/403 - 69.94% - 221/316 - 81% - 81/100 - 82.77% - 317/383 + 83.87% + 338/403 + 69.62% + 220/316 + 82% + 82/100 + 83.03% + 318/383 @@ -2076,8 +2091,8 @@

All files

246/246 100% 0/0 - 73.13% - 98/134 + 74.63% + 100/134 100% 132/132 @@ -2114,17 +2129,17 @@

All files

roosterjs-editor-dom/lib/contentTraverser - -
+ +
- 95.67% - 243/254 - 87.36% - 159/182 + 96.46% + 245/254 + 88.46% + 161/182 97.87% 46/47 - 95.93% - 236/246 + 96.75% + 238/246 @@ -2144,17 +2159,17 @@

All files

roosterjs-editor-dom/lib/edit - -
+ +
- 72.77% - 139/191 - 54.17% - 91/168 - 84.21% - 16/19 - 72.19% - 135/187 + 73.3% + 140/191 + 60.12% + 101/168 + 89.47% + 17/19 + 72.73% + 136/187 @@ -2239,8 +2254,8 @@

All files

94.44% 560/593 - 83.33% - 355/426 + 83.8% + 357/426 91.58% 87/95 95.02% @@ -2339,32 +2354,32 @@

All files

roosterjs-editor-dom/lib/table - -
+ +
- 70.65% - 443/627 - 59.57% - 336/564 - 88.46% - 69/78 - 70.79% - 412/582 + 75.92% + 476/627 + 63.48% + 358/564 + 89.74% + 70/78 + 76.12% + 443/582 roosterjs-editor-dom/lib/utils - +
- 95.6% - 500/523 - 89.08% - 465/522 + 95.79% + 501/523 + 89.27% + 466/522 98.61% 71/72 - 95.45% - 483/506 + 95.65% + 484/506 @@ -2474,17 +2489,17 @@

All files

roosterjs-editor-plugins/lib/plugins/ContentEdit/features - -
+ +
- 68.87% - 542/787 - 58.18% - 480/825 - 66.87% - 109/163 - 68.46% - 523/764 + 75.22% + 592/787 + 61.94% + 511/825 + 71.17% + 116/163 + 74.74% + 571/764 @@ -2564,17 +2579,17 @@

All files

roosterjs-editor-plugins/lib/plugins/ImageEdit - -
+ +
- 90.1% - 273/303 + 89.44% + 271/303 70.92% 178/251 - 82.98% - 39/47 - 89.51% - 256/286 + 78.72% + 37/47 + 88.81% + 254/286 @@ -2609,17 +2624,17 @@

All files

roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils - -
+ +
- 94.83% - 110/116 - 80.56% - 58/72 + 93.97% + 109/116 + 76.39% + 55/72 88.89% 16/18 - 94.59% - 105/111 + 93.69% + 104/111 @@ -2789,17 +2804,17 @@

All files

roosterjs-editor-plugins/lib/plugins/Paste/wordConverter - -
+ +
- 88.28% - 256/290 + 87.24% + 253/290 66.67% 186/279 - 97.3% - 36/37 - 88.42% - 252/285 + 94.59% + 35/37 + 87.37% + 249/285 @@ -2960,7 +2975,7 @@

All files

diff --git a/coverage/lcov.info b/coverage/lcov.info index 7cdda1b0711..c31529a85a9 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -3,8 +3,8 @@ SF:packages/roosterjs-color-utils/lib/index.ts FN:1,(anonymous_0) FNF:1 FNH:1 -FNDA:16,(anonymous_0) -DA:1,17 +FNDA:12,(anonymous_0) +DA:1,13 LF:1 LH:1 BRF:0 @@ -144,7 +144,7 @@ FNDA:2,(anonymous_45) FNDA:0,(anonymous_46) FNDA:0,(anonymous_47) FNDA:0,(anonymous_48) -FNDA:38,(anonymous_49) +FNDA:99,(anonymous_49) FNDA:5,(anonymous_50) FNDA:5,(anonymous_51) FNDA:2,(anonymous_52) @@ -200,7 +200,7 @@ DA:47,3 DA:48,1 DA:49,1 DA:50,1 -DA:51,39 +DA:51,100 DA:53,6 DA:54,6 DA:55,3 @@ -4583,39 +4583,42 @@ BRH:7 end_of_record TN: SF:packages/roosterjs-content-model-api/lib/publicApi/utils/formatTextSegmentBeforeSelectionMarker.ts -FN:16,formatTextSegmentBeforeSelectionMarker -FN:26,(anonymous_1) +FN:18,formatTextSegmentBeforeSelectionMarker +FN:31,(anonymous_1) FNF:2 FNH:2 FNDA:34,formatTextSegmentBeforeSelectionMarker FNDA:34,(anonymous_1) DA:1,1 -DA:16,1 -DA:26,34 -DA:27,34 +DA:18,1 +DA:29,34 +DA:31,34 DA:32,34 -DA:33,31 -DA:34,31 -DA:35,31 -DA:36,31 -DA:37,30 -DA:38,30 -DA:39,29 -DA:43,5 -LF:13 -LH:13 -BRDA:32,0,0,31 -BRDA:32,0,1,3 -BRDA:32,1,0,34 -BRDA:32,1,1,31 -BRDA:36,2,0,30 -BRDA:36,2,1,1 -BRDA:36,3,0,31 -BRDA:36,3,1,31 -BRDA:38,4,0,29 -BRDA:38,4,1,1 -BRDA:38,5,0,30 -BRDA:38,5,1,30 +DA:37,34 +DA:38,31 +DA:39,31 +DA:40,31 +DA:41,31 +DA:42,30 +DA:43,30 +DA:44,29 +DA:46,29 +DA:51,5 +DA:54,34 +LF:16 +LH:16 +BRDA:37,0,0,31 +BRDA:37,0,1,3 +BRDA:37,1,0,34 +BRDA:37,1,1,31 +BRDA:41,2,0,30 +BRDA:41,2,1,1 +BRDA:41,3,0,31 +BRDA:41,3,1,31 +BRDA:43,4,0,29 +BRDA:43,4,1,1 +BRDA:43,5,0,30 +BRDA:43,5,1,30 BRF:12 BRH:12 end_of_record @@ -5380,9 +5383,9 @@ DA:66,29 DA:76,166 DA:77,166 DA:79,166 -DA:80,474 +DA:80,475 DA:81,41 -DA:84,474 +DA:84,475 DA:87,166 DA:91,41 DA:92,41 @@ -5434,12 +5437,12 @@ BRDA:38,7,0,29 BRDA:38,7,1,166 BRDA:38,8,0,195 BRDA:38,8,1,166 -BRDA:79,9,0,640 -BRDA:79,9,1,603 +BRDA:79,9,0,641 +BRDA:79,9,1,604 BRDA:80,10,0,41 -BRDA:80,10,1,433 -BRDA:80,11,0,474 -BRDA:80,11,1,453 +BRDA:80,10,1,434 +BRDA:80,11,0,475 +BRDA:80,11,1,454 BRDA:81,12,0,41 BRDA:81,12,1,25 BRDA:95,13,0,91 @@ -5482,18 +5485,18 @@ DA:33,38 DA:35,284 DA:36,284 DA:39,322 -DA:40,894 -DA:41,894 -DA:43,894 -DA:44,136 +DA:40,896 +DA:41,896 +DA:43,896 +DA:44,134 DA:45,22 DA:46,2 DA:49,20 -DA:51,114 -DA:54,134 -DA:57,894 -DA:58,894 -DA:59,894 +DA:51,112 +DA:54,132 +DA:57,896 +DA:58,896 +DA:59,896 DA:62,322 LF:27 LH:26 @@ -5511,18 +5514,18 @@ BRDA:29,5,0,0 BRDA:29,5,1,5 BRDA:29,6,0,5 BRDA:29,6,1,5 -BRDA:60,7,0,894 -BRDA:60,7,1,894 -BRDA:43,8,0,894 +BRDA:60,7,0,896 +BRDA:60,7,1,896 +BRDA:43,8,0,896 BRDA:43,8,1,1 BRDA:43,9,0,0 -BRDA:43,9,1,894 -BRDA:43,10,0,894 -BRDA:43,10,1,894 +BRDA:43,9,1,896 +BRDA:43,10,0,896 +BRDA:43,10,1,896 BRDA:43,11,0,1030 -BRDA:43,11,1,977 +BRDA:43,11,1,979 BRDA:44,12,0,22 -BRDA:44,12,1,114 +BRDA:44,12,1,112 BRDA:45,13,0,2 BRDA:45,13,1,20 BRDA:45,14,0,22 @@ -5531,12 +5534,12 @@ BRDA:45,15,0,0 BRDA:45,15,1,22 BRDA:45,16,0,22 BRDA:45,16,1,22 -BRDA:59,17,0,894 +BRDA:59,17,0,896 BRDA:59,17,1,64 BRDA:59,18,0,0 -BRDA:59,18,1,894 -BRDA:59,19,0,894 -BRDA:59,19,1,894 +BRDA:59,18,1,896 +BRDA:59,19,0,896 +BRDA:59,19,1,896 BRF:40 BRH:34 end_of_record @@ -5552,7 +5555,7 @@ FNF:6 FNH:6 FNDA:210,(anonymous_0) FNDA:784,(anonymous_1) -FNDA:56,(anonymous_2) +FNDA:8,(anonymous_2) FNDA:512,(anonymous_3) FNDA:140,(anonymous_4) FNDA:512,(anonymous_5) @@ -5562,9 +5565,9 @@ DA:13,210 DA:14,784 DA:15,784 DA:16,784 -DA:17,56 -DA:18,55 -DA:21,56 +DA:17,8 +DA:18,7 +DA:21,8 DA:22,2 DA:33,784 DA:35,784 @@ -5574,10 +5577,10 @@ LF:14 LH:14 BRDA:13,0,0,210 BRDA:13,0,1,1 -BRDA:17,1,0,55 +BRDA:17,1,0,7 BRDA:17,1,1,1 BRDA:21,2,0,2 -BRDA:21,2,1,54 +BRDA:21,2,1,6 BRF:6 BRH:6 end_of_record @@ -5644,23 +5647,19 @@ end_of_record TN: SF:packages/roosterjs-content-model-core/lib/coreApi/createEditorContext/createEditorContext.ts FN:8,(anonymous_0) -FN:30,checkRootRtl -FNF:2 -FNH:2 +FNF:1 +FNH:1 FNDA:180,(anonymous_0) -FNDA:180,checkRootRtl DA:1,1 DA:8,1 DA:9,1080 DA:11,180 DA:13,180 DA:25,180 -DA:27,180 -DA:31,180 -DA:33,180 -DA:34,1 -LF:10 -LH:10 +DA:26,1 +DA:29,180 +LF:8 +LH:8 BRDA:11,0,0,180 BRDA:11,0,1,155 BRDA:16,1,0,11 @@ -5669,22 +5668,10 @@ BRDA:16,2,0,180 BRDA:16,2,1,16 BRDA:20,3,0,154 BRDA:20,3,1,26 -BRDA:31,4,0,0 -BRDA:31,4,1,180 -BRDA:31,5,0,180 -BRDA:31,5,1,180 -BRDA:31,6,0,0 -BRDA:31,6,1,180 -BRDA:31,7,0,180 -BRDA:31,7,1,180 -BRDA:33,8,0,1 -BRDA:33,8,1,179 -BRDA:33,9,0,5 -BRDA:33,9,1,175 -BRDA:33,10,0,180 -BRDA:33,10,1,180 -BRF:22 -BRH:20 +BRDA:25,4,0,1 +BRDA:25,4,1,179 +BRF:10 +BRH:10 end_of_record TN: SF:packages/roosterjs-content-model-core/lib/coreApi/createEditorContext/getRootComputedStyleForContext.ts @@ -5699,14 +5686,14 @@ DA:12,211 DA:13,211 LF:5 LH:5 -BRDA:12,0,0,3 -BRDA:12,0,1,208 +BRDA:12,0,0,10 +BRDA:12,0,1,201 BRDA:12,1,0,211 BRDA:12,1,1,208 BRDA:13,2,0,211 BRDA:13,2,1,10 -BRDA:13,3,0,8 -BRDA:13,3,1,203 +BRDA:13,3,0,10 +BRDA:13,3,1,201 BRDA:13,4,0,211 BRDA:13,4,1,211 BRF:10 @@ -5875,40 +5862,40 @@ FN:6,(anonymous_0) FN:18,getNewSelection FNF:2 FNH:2 -FNDA:422,(anonymous_0) -FNDA:210,getNewSelection +FNDA:394,(anonymous_0) +FNDA:182,getNewSelection DA:6,1 -DA:7,422 +DA:7,394 DA:8,1 -DA:10,421 -DA:12,421 -DA:19,210 -DA:20,210 -DA:22,210 +DA:10,393 +DA:12,393 +DA:19,182 +DA:20,182 +DA:22,182 LF:8 LH:8 BRDA:7,0,0,1 -BRDA:7,0,1,421 +BRDA:7,0,1,393 BRDA:13,1,0,211 -BRDA:13,1,1,210 -BRDA:12,2,0,421 +BRDA:13,1,1,182 +BRDA:12,2,0,393 BRDA:12,2,1,213 BRDA:12,2,2,188 BRDA:19,3,0,0 -BRDA:19,3,1,210 -BRDA:19,4,0,210 -BRDA:19,4,1,210 -BRDA:20,5,0,205 -BRDA:20,5,1,5 -BRDA:20,6,0,210 -BRDA:20,6,1,210 -BRDA:23,7,0,160 -BRDA:23,7,1,50 -BRDA:22,8,0,210 -BRDA:22,8,1,210 -BRDA:22,8,2,205 -BRDA:27,9,0,160 -BRDA:27,9,1,157 +BRDA:19,3,1,182 +BRDA:19,4,0,182 +BRDA:19,4,1,182 +BRDA:20,5,0,181 +BRDA:20,5,1,1 +BRDA:20,6,0,182 +BRDA:20,6,1,182 +BRDA:23,7,0,136 +BRDA:23,7,1,46 +BRDA:22,8,0,182 +BRDA:22,8,1,182 +BRDA:22,8,2,181 +BRDA:27,9,0,136 +BRDA:27,9,1,133 BRF:22 BRH:21 end_of_record @@ -6268,37 +6255,37 @@ SF:packages/roosterjs-content-model-core/lib/coreApi/setDOMSelection/addRangeToS FN:4,addRangeToSelection FNF:1 FNH:1 -FNDA:66,addRangeToSelection -DA:4,75 -DA:5,66 -DA:7,66 -DA:8,66 -DA:9,66 +FNDA:63,addRangeToSelection +DA:4,72 +DA:5,63 +DA:7,63 +DA:8,63 +DA:9,63 DA:16,7 -DA:18,59 -DA:20,59 -DA:21,59 +DA:18,56 +DA:20,56 +DA:21,56 DA:23,0 LF:10 LH:9 BRDA:4,0,0,9 -BRDA:4,0,1,57 +BRDA:4,0,1,54 BRDA:5,1,0,0 -BRDA:5,1,1,66 -BRDA:5,2,0,66 -BRDA:5,2,1,66 -BRDA:7,3,0,66 +BRDA:5,1,1,63 +BRDA:5,2,0,63 +BRDA:5,2,1,63 +BRDA:7,3,0,63 BRDA:7,3,1,0 -BRDA:8,4,0,66 -BRDA:8,4,1,65 +BRDA:8,4,0,63 +BRDA:8,4,1,63 BRDA:9,5,0,7 -BRDA:9,5,1,59 -BRDA:10,6,0,66 -BRDA:10,6,1,65 +BRDA:9,5,1,56 +BRDA:10,6,0,63 +BRDA:10,6,1,63 BRDA:10,6,2,9 BRDA:10,6,3,9 BRDA:10,6,4,7 -BRDA:20,7,0,59 +BRDA:20,7,0,56 BRDA:20,7,1,0 BRF:19 BRH:16 @@ -6411,7 +6398,7 @@ FN:183,(anonymous_5) FN:213,setRangeSelection FNF:7 FNH:7 -FNDA:96,(anonymous_0) +FNDA:93,(anonymous_0) FNDA:16,handleTableSelected FNDA:23,(anonymous_2) FNDA:19,(anonymous_3) @@ -6434,14 +6421,14 @@ DA:20,1 DA:21,1 DA:22,1 DA:27,1 -DA:30,96 -DA:32,96 -DA:34,96 -DA:35,96 -DA:36,96 -DA:37,96 -DA:39,96 -DA:40,96 +DA:30,93 +DA:32,93 +DA:34,93 +DA:35,93 +DA:36,93 +DA:37,93 +DA:39,93 +DA:40,93 DA:42,4 DA:44,4 DA:45,4 @@ -6466,15 +6453,15 @@ DA:114,19 DA:116,19 DA:117,19 DA:124,19 -DA:126,60 -DA:128,60 -DA:129,60 +DA:126,57 +DA:128,57 +DA:129,57 DA:132,12 DA:133,12 -DA:136,96 -DA:139,95 -DA:140,68 -DA:145,68 +DA:136,93 +DA:139,92 +DA:140,65 +DA:145,65 DA:156,16 DA:160,16 DA:161,16 @@ -6510,12 +6497,12 @@ LF:88 LH:87 BRDA:41,0,0,4 BRDA:41,0,1,20 -BRDA:41,0,2,60 +BRDA:41,0,2,57 BRDA:41,0,3,12 BRDA:40,1,0,12 -BRDA:40,1,1,84 -BRDA:40,2,0,96 -BRDA:40,2,1,84 +BRDA:40,1,1,81 +BRDA:40,2,0,93 +BRDA:40,2,1,81 BRDA:49,3,0,4 BRDA:49,3,1,3 BRDA:75,4,0,20 @@ -6552,9 +6539,9 @@ BRDA:116,17,0,19 BRDA:116,17,1,0 BRDA:119,18,0,19 BRDA:119,18,1,0 -BRDA:128,19,0,57 +BRDA:128,19,0,54 BRDA:128,19,1,3 -BRDA:139,20,0,68 +BRDA:139,20,0,65 BRDA:139,20,1,27 BRDA:165,21,0,23 BRDA:165,21,1,0 @@ -6626,7 +6613,7 @@ FN:55,buildSelectors FN:61,(anonymous_3) FNF:4 FNH:4 -FNDA:247,(anonymous_0) +FNDA:238,(anonymous_0) FNDA:25,(anonymous_1) FNDA:11,buildSelectors FNDA:25,(anonymous_3) @@ -6634,16 +6621,16 @@ DA:1,1 DA:4,1 DA:5,1 DA:10,1 -DA:15,493 -DA:17,247 -DA:19,247 +DA:15,475 +DA:17,238 +DA:19,238 DA:20,22 DA:22,22 DA:23,22 DA:25,22 DA:26,22 -DA:29,247 -DA:31,247 +DA:29,238 +DA:31,238 DA:32,54 DA:33,20 DA:36,54 @@ -6666,18 +6653,18 @@ DA:74,11 DA:76,11 LF:34 LH:34 -BRDA:15,0,0,246 +BRDA:15,0,0,237 BRDA:15,0,1,1 BRDA:19,1,0,22 -BRDA:19,1,1,225 -BRDA:19,2,0,247 -BRDA:19,2,1,215 -BRDA:29,3,0,193 +BRDA:19,1,1,216 +BRDA:19,2,0,238 +BRDA:19,2,1,206 +BRDA:29,3,0,184 BRDA:29,3,1,54 -BRDA:29,4,0,247 -BRDA:29,4,1,247 +BRDA:29,4,0,238 +BRDA:29,4,1,238 BRDA:31,5,0,54 -BRDA:31,5,1,193 +BRDA:31,5,1,184 BRDA:36,6,0,23 BRDA:36,6,1,31 BRDA:39,7,0,11 @@ -6773,31 +6760,31 @@ FN:28,(anonymous_2) FN:36,handledExclusively FNF:4 FNH:4 -FNDA:226,(anonymous_0) +FNDA:223,(anonymous_0) FNDA:15,(anonymous_1) -FNDA:2185,(anonymous_2) +FNDA:2155,(anonymous_2) FNDA:15,handledExclusively DA:8,1 DA:22,1 -DA:23,226 +DA:23,223 DA:26,15 -DA:28,224 -DA:29,2185 -DA:30,1524 +DA:28,221 +DA:29,2155 +DA:30,1503 DA:37,15 DA:38,1 DA:39,1 DA:42,14 LF:11 LH:11 -BRDA:23,0,0,224 +BRDA:23,0,0,221 BRDA:23,0,1,2 -BRDA:24,1,0,226 +BRDA:24,1,0,223 BRDA:24,1,1,2 -BRDA:24,1,2,225 +BRDA:24,1,2,222 BRDA:24,1,3,6 -BRDA:29,2,0,1524 -BRDA:29,2,1,661 +BRDA:29,2,0,1503 +BRDA:29,2,1,652 BRDA:37,3,0,1 BRDA:37,3,1,14 BRDA:37,4,0,15 @@ -6850,14 +6837,14 @@ FNH:11 FNDA:1,(anonymous_0) FNDA:78,CachePlugin FNDA:96,(anonymous_2) -FNDA:9455,(anonymous_3) +FNDA:27433,(anonymous_3) FNDA:0,(anonymous_4) FNDA:77,(anonymous_5) FNDA:60,(anonymous_6) FNDA:77,(anonymous_7) -FNDA:231,(anonymous_8) -FNDA:141,(anonymous_9) -FNDA:51,(anonymous_10) +FNDA:228,(anonymous_8) +FNDA:138,(anonymous_9) +FNDA:48,(anonymous_10) FNDA:78,createCachePlugin DA:1,1 DA:2,1 @@ -6881,14 +6868,14 @@ DA:66,60 DA:73,1 DA:74,77 DA:83,1 -DA:84,231 +DA:84,228 DA:85,0 -DA:88,231 +DA:88,228 DA:91,6 DA:93,6 DA:95,6 -DA:98,51 -DA:99,51 +DA:98,48 +DA:99,48 DA:102,96 DA:104,48 DA:105,37 @@ -6901,21 +6888,21 @@ DA:117,96 DA:118,0 DA:120,96 DA:125,78 -DA:126,9455 +DA:126,27433 DA:127,0 DA:131,1 -DA:132,141 -DA:133,140 -DA:134,140 +DA:132,138 +DA:133,137 +DA:134,137 DA:138,1 -DA:139,51 -DA:140,51 -DA:142,51 -DA:143,51 -DA:145,51 -DA:150,51 -DA:151,29 -DA:156,28 +DA:139,48 +DA:140,48 +DA:142,48 +DA:143,48 +DA:145,48 +DA:150,48 +DA:151,26 +DA:156,25 DA:158,1 DA:161,22 DA:164,1 @@ -6928,11 +6915,11 @@ BRDA:116,0,1,0 BRDA:117,1,0,0 BRDA:117,1,1,96 BRDA:126,2,0,0 -BRDA:126,2,1,9455 +BRDA:126,2,1,27433 BRDA:126,3,0,0 -BRDA:126,3,1,9455 -BRDA:126,4,0,9455 -BRDA:126,4,1,9455 +BRDA:126,3,1,27433 +BRDA:126,4,0,27433 +BRDA:126,4,1,27433 BRDA:27,5,0,23 BRDA:27,5,1,55 BRDA:51,6,0,23 @@ -6946,10 +6933,10 @@ BRDA:60,9,1,60 BRDA:62,10,0,60 BRDA:62,10,1,0 BRDA:84,11,0,0 -BRDA:84,11,1,231 +BRDA:84,11,1,228 BRDA:89,12,0,5 BRDA:89,12,1,6 -BRDA:89,12,2,51 +BRDA:89,12,2,48 BRDA:89,12,3,48 BRDA:91,13,0,6 BRDA:91,13,1,0 @@ -6957,53 +6944,53 @@ BRDA:104,14,0,37 BRDA:104,14,1,11 BRDA:104,15,0,48 BRDA:104,15,1,47 -BRDA:132,16,0,140 +BRDA:132,16,0,137 BRDA:132,16,1,1 BRDA:132,17,0,0 -BRDA:132,17,1,141 -BRDA:132,18,0,141 -BRDA:132,18,1,141 -BRDA:142,19,0,51 -BRDA:142,19,1,2 -BRDA:145,20,0,51 -BRDA:145,20,1,51 -BRDA:145,20,2,28 -BRDA:145,20,3,26 -BRDA:150,21,0,29 +BRDA:132,17,1,138 +BRDA:132,18,0,138 +BRDA:132,18,1,138 +BRDA:142,19,0,48 +BRDA:142,19,1,0 +BRDA:145,20,0,48 +BRDA:145,20,1,48 +BRDA:145,20,2,25 +BRDA:145,20,3,25 +BRDA:150,21,0,26 BRDA:150,21,1,22 -BRDA:151,22,0,28 +BRDA:151,22,0,25 BRDA:151,22,1,1 -BRDA:152,23,0,29 -BRDA:152,23,1,14 -BRDA:152,23,2,12 +BRDA:152,23,0,26 +BRDA:152,23,1,11 +BRDA:152,23,2,11 BRDA:154,24,0,0 -BRDA:154,24,1,12 -BRDA:154,25,0,12 -BRDA:154,25,1,12 +BRDA:154,24,1,11 +BRDA:154,25,0,11 +BRDA:154,25,1,11 BRF:57 -BRH:48 +BRH:47 end_of_record TN: SF:packages/roosterjs-content-model-core/lib/corePlugin/cache/areSameSelection.ts FN:7,areSameSelection FNF:1 FNH:1 -FNDA:43,areSameSelection +FNDA:42,areSameSelection DA:7,1 -DA:8,43 +DA:8,42 DA:9,2 -DA:12,41 +DA:12,40 DA:14,2 DA:17,8 -DA:28,31 +DA:28,30 LF:7 LH:7 BRDA:8,0,0,2 -BRDA:8,0,1,41 +BRDA:8,0,1,40 BRDA:13,1,0,2 BRDA:13,1,1,8 -BRDA:13,1,2,29 -BRDA:13,1,3,31 +BRDA:13,1,2,28 +BRDA:13,1,3,30 BRDA:14,2,0,2 BRDA:14,2,1,2 BRDA:18,3,0,8 @@ -7012,8 +6999,8 @@ BRDA:18,3,2,5 BRDA:18,3,3,4 BRDA:18,3,4,3 BRDA:18,3,5,2 -BRDA:29,4,0,31 -BRDA:29,4,1,27 +BRDA:29,4,0,30 +BRDA:29,4,1,26 BRDA:29,4,2,25 BRDA:29,4,3,24 BRDA:29,4,4,23 @@ -7033,18 +7020,18 @@ FN:175,insertMarker FN:194,reconcileTextSelection FNF:9 FNH:9 -FNDA:31,isIndexedSegment +FNDA:30,isIndexedSegment FNDA:355,onSegment FNDA:333,onParagraph FNDA:34,onTable -FNDA:21,reconcileSelection -FNDA:4,isCollapsed -FNDA:9,reconcileNodeSelection -FNDA:3,insertMarker +FNDA:20,reconcileSelection +FNDA:3,isCollapsed +FNDA:8,reconcileNodeSelection +FNDA:2,insertMarker FNDA:9,reconcileTextSelection DA:1,1 -DA:40,31 -DA:42,31 +DA:40,30 +DA:42,30 DA:55,355 DA:56,355 DA:63,333 @@ -7062,18 +7049,18 @@ DA:82,61 DA:84,0 DA:90,34 DA:91,34 -DA:99,21 -DA:100,4 +DA:99,20 +DA:100,3 DA:105,2 DA:106,2 -DA:109,2 -DA:113,21 +DA:109,1 +DA:113,20 DA:117,11 -DA:120,9 -DA:121,9 -DA:128,45 -DA:130,9 -DA:131,5 +DA:120,8 +DA:121,8 +DA:128,40 +DA:130,8 +DA:131,4 DA:132,4 DA:136,2 DA:141,2 @@ -7084,21 +7071,21 @@ DA:146,2 DA:148,0 DA:153,0 DA:156,1 -DA:160,8 -DA:162,4 -DA:166,9 +DA:160,6 +DA:162,3 +DA:166,8 DA:167,6 -DA:168,3 -DA:169,3 +DA:168,2 +DA:169,2 DA:171,0 -DA:178,3 +DA:178,2 DA:179,2 DA:180,2 DA:182,2 DA:184,2 DA:185,2 DA:187,2 -DA:191,3 +DA:191,2 DA:199,9 DA:200,9 DA:201,9 @@ -7144,10 +7131,10 @@ DA:285,1 LF:99 LH:94 BRDA:40,0,0,29 -BRDA:40,0,1,2 -BRDA:40,1,0,31 -BRDA:40,1,1,31 -BRDA:43,2,0,31 +BRDA:40,0,1,1 +BRDA:40,1,0,30 +BRDA:40,1,1,30 +BRDA:43,2,0,30 BRDA:43,2,1,29 BRDA:43,2,2,29 BRDA:43,2,3,29 @@ -7163,21 +7150,21 @@ BRDA:74,7,0,9 BRDA:74,7,1,9 BRDA:79,8,0,61 BRDA:79,8,1,0 -BRDA:99,9,0,4 +BRDA:99,9,0,3 BRDA:99,9,1,17 BRDA:100,10,0,2 -BRDA:100,10,1,2 -BRDA:101,11,0,4 -BRDA:101,11,1,4 -BRDA:101,11,2,3 +BRDA:100,10,1,1 +BRDA:101,11,0,3 +BRDA:101,11,1,3 +BRDA:101,11,2,2 BRDA:105,12,0,2 BRDA:105,12,1,0 BRDA:114,13,0,1 BRDA:114,13,1,11 -BRDA:114,13,2,9 -BRDA:121,14,0,9 +BRDA:114,13,2,8 +BRDA:121,14,0,8 BRDA:121,14,1,0 -BRDA:130,15,0,5 +BRDA:130,15,0,4 BRDA:130,15,1,4 BRDA:132,16,0,2 BRDA:132,16,1,2 @@ -7189,18 +7176,18 @@ BRDA:144,19,0,2 BRDA:144,19,1,0 BRDA:144,20,0,2 BRDA:144,20,1,2 -BRDA:162,21,0,4 -BRDA:162,21,1,4 +BRDA:162,21,0,3 +BRDA:162,21,1,3 BRDA:166,22,0,6 -BRDA:166,22,1,3 +BRDA:166,22,1,2 BRDA:167,23,0,5 BRDA:167,23,1,1 -BRDA:168,24,0,3 +BRDA:168,24,0,2 BRDA:168,24,1,0 BRDA:178,25,0,2 -BRDA:178,25,1,1 -BRDA:178,26,0,3 -BRDA:178,26,1,3 +BRDA:178,25,1,0 +BRDA:178,26,0,2 +BRDA:178,26,1,2 BRDA:182,27,0,2 BRDA:182,27,1,0 BRDA:184,28,0,2 @@ -7241,7 +7228,7 @@ BRDA:257,44,1,1 BRDA:264,45,0,10 BRDA:264,45,1,3 BRF:97 -BRH:79 +BRH:78 end_of_record TN: SF:packages/roosterjs-content-model-core/lib/corePlugin/cache/textMutationObserver.ts @@ -8061,7 +8048,7 @@ FNDA:0,(anonymous_2) FNDA:81,(anonymous_3) FNDA:46,(anonymous_4) FNDA:75,(anonymous_5) -FNDA:236,(anonymous_6) +FNDA:233,(anonymous_6) FNDA:4,(anonymous_7) FNDA:119,(anonymous_8) FNDA:11,(anonymous_9) @@ -8092,8 +8079,8 @@ DA:65,46 DA:71,1 DA:72,75 DA:79,1 -DA:80,236 -DA:81,236 +DA:80,233 +DA:81,233 DA:83,4 DA:84,4 DA:86,53 @@ -8182,7 +8169,7 @@ DA:292,1 DA:293,81 LF:105 LH:100 -BRDA:80,0,0,236 +BRDA:80,0,0,233 BRDA:80,0,1,0 BRDA:82,1,0,4 BRDA:82,1,1,53 @@ -8748,7 +8735,7 @@ FNDA:0,(anonymous_3) FNDA:78,(anonymous_4) FNDA:53,(anonymous_5) FNDA:70,(anonymous_6) -FNDA:237,(anonymous_7) +FNDA:234,(anonymous_7) FNDA:2,(anonymous_8) FNDA:31,(anonymous_9) FNDA:45,(anonymous_10) @@ -8778,9 +8765,9 @@ DA:87,53 DA:93,1 DA:94,70 DA:103,1 -DA:104,237 +DA:104,234 DA:105,0 -DA:108,237 +DA:108,234 DA:110,1 DA:112,1 DA:115,1 @@ -8839,7 +8826,7 @@ LH:76 BRDA:58,0,0,25 BRDA:58,0,1,291 BRDA:104,1,0,0 -BRDA:104,1,1,237 +BRDA:104,1,1,234 BRDA:109,2,0,1 BRDA:109,2,1,1 BRDA:109,2,2,13 @@ -9075,7 +9062,7 @@ FNDA:71,(anonymous_7) FNDA:51,(anonymous_8) FNDA:19,(anonymous_9) FNDA:69,(anonymous_10) -FNDA:222,(anonymous_11) +FNDA:219,(anonymous_11) FNDA:71,(anonymous_12) FNDA:72,createLifecyclePlugin DA:1,1 @@ -9118,7 +9105,7 @@ DA:97,51 DA:103,1 DA:104,69 DA:111,1 -DA:112,222 +DA:112,219 DA:117,2 DA:121,1 DA:122,71 @@ -9150,8 +9137,8 @@ BRDA:87,7,1,19 BRDA:91,8,0,48 BRDA:91,8,1,3 BRDA:112,9,0,2 -BRDA:112,9,1,220 -BRDA:113,10,0,222 +BRDA:112,9,1,217 +BRDA:113,10,0,219 BRDA:113,10,1,48 BRDA:113,10,2,46 BRDA:122,11,0,71 @@ -9199,14 +9186,14 @@ FNDA:119,SelectionPlugin FNDA:6,(anonymous_2) FNDA:2,(anonymous_3) FNDA:2,(anonymous_4) -FNDA:30,(anonymous_5) -FNDA:27,(anonymous_6) -FNDA:9465,(anonymous_7) +FNDA:8,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:27443,(anonymous_7) FNDA:0,(anonymous_8) FNDA:119,(anonymous_9) FNDA:55,(anonymous_10) FNDA:106,(anonymous_11) -FNDA:259,(anonymous_12) +FNDA:256,(anonymous_12) FNDA:14,(anonymous_13) FNDA:3,(anonymous_14) FNDA:3,(anonymous_15) @@ -9221,7 +9208,7 @@ FNDA:7,(anonymous_23) FNDA:7,(anonymous_24) FNDA:32,(anonymous_25) FNDA:9,(anonymous_26) -FNDA:31,(anonymous_27) +FNDA:28,(anonymous_27) FNDA:60,(anonymous_28) FNDA:3,(anonymous_29) FNDA:119,createSelectionPlugin @@ -9268,9 +9255,9 @@ DA:89,55 DA:92,1 DA:93,106 DA:96,1 -DA:97,259 +DA:97,256 DA:98,0 -DA:101,259 +DA:101,256 DA:103,14 DA:104,14 DA:107,3 @@ -9459,22 +9446,22 @@ DA:512,0 DA:517,0 DA:519,0 DA:522,119 -DA:523,30 -DA:524,4 -DA:527,30 -DA:529,24 -DA:532,30 +DA:523,8 +DA:524,1 +DA:527,8 +DA:529,5 +DA:532,8 DA:533,1 DA:534,1 DA:535,1 DA:539,119 -DA:540,27 -DA:541,27 -DA:542,25 -DA:544,27 -DA:545,27 +DA:540,1 +DA:541,1 +DA:542,0 +DA:544,1 +DA:545,1 DA:549,119 -DA:550,9465 +DA:550,27443 DA:551,8 DA:554,8 DA:556,8 @@ -9503,8 +9490,8 @@ DA:613,8 DA:625,8 DA:629,1 DA:632,1 -DA:636,31 -DA:637,31 +DA:636,28 +DA:637,28 DA:640,1 DA:641,60 DA:642,1 @@ -9518,7 +9505,7 @@ DA:661,1 DA:668,1 DA:671,119 LF:292 -LH:282 +LH:281 BRDA:184,0,0,6 BRDA:184,0,1,0 BRDA:184,1,0,6 @@ -9565,34 +9552,34 @@ BRDA:512,20,1,0 BRDA:513,21,0,0 BRDA:513,21,1,0 BRDA:513,21,2,0 -BRDA:523,22,0,4 -BRDA:523,22,1,26 -BRDA:523,23,0,30 -BRDA:523,23,1,5 -BRDA:527,24,0,24 -BRDA:527,24,1,6 -BRDA:527,25,0,30 -BRDA:527,25,1,24 -BRDA:527,26,0,4 -BRDA:527,26,1,26 -BRDA:527,27,0,30 -BRDA:527,27,1,26 +BRDA:523,22,0,1 +BRDA:523,22,1,7 +BRDA:523,23,0,8 +BRDA:523,23,1,2 +BRDA:527,24,0,5 +BRDA:527,24,1,3 +BRDA:527,25,0,8 +BRDA:527,25,1,5 +BRDA:527,26,0,1 +BRDA:527,26,1,7 +BRDA:527,27,0,8 +BRDA:527,27,1,7 BRDA:532,28,0,1 -BRDA:532,28,1,29 -BRDA:532,29,0,30 +BRDA:532,28,1,7 +BRDA:532,29,0,8 BRDA:532,29,1,1 -BRDA:540,30,0,27 +BRDA:540,30,0,1 BRDA:540,30,1,0 -BRDA:541,31,0,25 -BRDA:541,31,1,2 +BRDA:541,31,0,0 +BRDA:541,31,1,1 BRDA:550,32,0,8 -BRDA:550,32,1,9457 -BRDA:550,33,0,9465 +BRDA:550,32,1,27435 +BRDA:550,33,0,27443 BRDA:550,33,1,9 BRDA:550,34,0,0 -BRDA:550,34,1,9465 -BRDA:550,35,0,9465 -BRDA:550,35,1,9465 +BRDA:550,34,1,27443 +BRDA:550,35,0,27443 +BRDA:550,35,1,27443 BRDA:556,36,0,2 BRDA:556,36,1,6 BRDA:556,37,0,8 @@ -9624,7 +9611,7 @@ BRDA:81,49,1,55 BRDA:83,50,0,55 BRDA:83,50,1,0 BRDA:97,51,0,0 -BRDA:97,51,1,259 +BRDA:97,51,1,256 BRDA:102,52,0,14 BRDA:102,52,1,3 BRDA:102,52,2,21 @@ -9883,9 +9870,9 @@ BRDA:610,168,0,9 BRDA:610,168,1,4 BRDA:610,168,2,2 BRDA:636,169,0,0 -BRDA:636,169,1,31 -BRDA:636,170,0,31 -BRDA:636,170,1,31 +BRDA:636,169,1,28 +BRDA:636,170,0,28 +BRDA:636,170,1,28 BRDA:641,171,0,1 BRDA:641,171,1,59 BRDA:648,172,0,2 @@ -9893,7 +9880,7 @@ BRDA:648,172,1,1 BRDA:650,173,0,1 BRDA:650,173,1,1 BRF:373 -BRH:310 +BRH:309 end_of_record TN: SF:packages/roosterjs-content-model-core/lib/corePlugin/selection/findCoordinate.ts @@ -10217,7 +10204,7 @@ FNDA:97,(anonymous_3) FNDA:80,(anonymous_4) FNDA:102,(anonymous_5) FNDA:11,(anonymous_6) -FNDA:243,(anonymous_7) +FNDA:240,(anonymous_7) FNDA:7,(anonymous_8) FNDA:6,(anonymous_9) FNDA:2,(anonymous_10) @@ -10247,9 +10234,9 @@ DA:64,102 DA:71,1 DA:72,11 DA:85,1 -DA:86,243 +DA:86,240 DA:87,0 -DA:90,243 +DA:90,240 DA:92,66 DA:93,66 DA:94,66 @@ -10330,7 +10317,7 @@ BRDA:73,0,2,7 BRDA:73,0,3,6 BRDA:73,0,4,5 BRDA:86,1,0,0 -BRDA:86,1,1,243 +BRDA:86,1,1,240 BRDA:91,2,0,66 BRDA:91,2,1,7 BRDA:91,2,2,6 @@ -10459,8 +10446,8 @@ FNDA:67,(anonymous_4) FNDA:19,(anonymous_5) FNDA:50,(anonymous_6) FNDA:149,(anonymous_7) -FNDA:112,(anonymous_8) -FNDA:30,(anonymous_9) +FNDA:84,(anonymous_8) +FNDA:27,(anonymous_9) FNDA:0,(anonymous_10) FNDA:112,(anonymous_11) FNDA:114,(anonymous_12) @@ -10469,21 +10456,21 @@ FNDA:85,(anonymous_14) FNDA:2,(anonymous_15) FNDA:459,(anonymous_16) FNDA:42,(anonymous_17) -FNDA:18912,(anonymous_18) +FNDA:54868,(anonymous_18) FNDA:128,(anonymous_19) FNDA:295,(anonymous_20) FNDA:2,(anonymous_21) FNDA:17,(anonymous_22) FNDA:4,(anonymous_23) -FNDA:138,(anonymous_24) +FNDA:135,(anonymous_24) FNDA:2,(anonymous_25) FNDA:2,(anonymous_26) FNDA:76,(anonymous_27) FNDA:29,(anonymous_28) -FNDA:79,(anonymous_29) +FNDA:55,(anonymous_29) FNDA:61,(anonymous_30) FNDA:1,(anonymous_31) -FNDA:21304,(anonymous_32) +FNDA:57202,(anonymous_32) DA:1,1 DA:2,1 DA:39,1 @@ -10514,11 +10501,11 @@ DA:126,2 DA:135,1 DA:136,149 DA:142,1 -DA:143,112 -DA:145,111 +DA:143,84 +DA:145,83 DA:152,1 -DA:153,30 -DA:155,29 +DA:153,27 +DA:155,26 DA:162,1 DA:163,0 DA:165,0 @@ -10541,8 +10528,8 @@ DA:235,1 DA:236,42 DA:237,39 DA:244,1 -DA:245,18912 -DA:246,18911 +DA:245,54868 +DA:246,54867 DA:258,1 DA:261,129 DA:263,128 @@ -10564,7 +10551,7 @@ DA:307,2 DA:314,2 DA:316,2 DA:332,1 -DA:333,138 +DA:333,135 DA:344,1 DA:345,2 DA:346,1 @@ -10576,16 +10563,16 @@ DA:361,76 DA:370,1 DA:371,29 DA:377,1 -DA:378,79 +DA:378,55 DA:384,1 DA:385,61 DA:395,1 DA:400,1 DA:402,1 DA:409,1 -DA:410,21304 +DA:410,57202 DA:411,26 -DA:413,21278 +DA:413,57176 DA:416,87 DA:417,112 DA:418,109 @@ -10639,7 +10626,7 @@ BRDA:310,17,1,1 BRDA:321,18,0,1 BRDA:321,18,1,1 BRDA:410,19,0,26 -BRDA:410,19,1,21278 +BRDA:410,19,1,57176 BRF:41 BRH:40 end_of_record @@ -10656,11 +10643,12 @@ FN:36,(anonymous_7) FN:40,(anonymous_8) FN:44,(anonymous_9) FN:59,(anonymous_10) -FN:68,createDOMHelper -FNF:12 -FNH:12 +FN:67,(anonymous_11) +FN:78,createDOMHelper +FNF:13 +FNH:13 FNDA:1,(anonymous_0) -FNDA:103,DOMHelperImpl +FNDA:105,DOMHelperImpl FNDA:299,(anonymous_2) FNDA:1,(anonymous_3) FNDA:78,(anonymous_4) @@ -10669,11 +10657,12 @@ FNDA:2,(anonymous_6) FNDA:1,(anonymous_7) FNDA:7,(anonymous_8) FNDA:85,(anonymous_9) -FNDA:19336,(anonymous_10) -FNDA:103,createDOMHelper +FNDA:55289,(anonymous_10) +FNDA:175,(anonymous_11) +FNDA:105,createDOMHelper DA:1,1 DA:4,1 -DA:5,103 +DA:5,105 DA:7,1 DA:8,299 DA:11,1 @@ -10697,13 +10686,17 @@ DA:45,85 DA:48,85 DA:52,85 DA:59,1 -DA:60,19336 -DA:61,19336 -DA:63,1 -DA:68,1 -DA:69,103 -LF:31 -LH:31 +DA:60,55289 +DA:61,55289 +DA:67,1 +DA:68,175 +DA:69,175 +DA:71,175 +DA:73,1 +DA:78,1 +DA:79,105 +LF:35 +LH:35 BRDA:12,0,0,1 BRDA:12,0,1,0 BRDA:20,1,0,255 @@ -10731,10 +10724,18 @@ BRDA:55,11,1,9 BRDA:52,12,0,85 BRDA:52,12,1,77 BRDA:52,12,2,77 -BRDA:61,13,0,19336 -BRDA:61,13,1,19335 -BRF:29 -BRH:26 +BRDA:61,13,0,55289 +BRDA:61,13,1,55288 +BRDA:69,14,0,0 +BRDA:69,14,1,175 +BRDA:69,15,0,175 +BRDA:69,15,1,175 +BRDA:71,16,0,0 +BRDA:71,16,1,175 +BRDA:71,17,0,175 +BRDA:71,17,1,175 +BRF:37 +BRH:32 end_of_record TN: SF:packages/roosterjs-content-model-core/lib/editor/core/DarkColorHandlerImpl.ts @@ -10863,7 +10864,7 @@ BRDA:58,13,1,68 BRDA:58,14,0,70 BRDA:58,14,1,70 BRDA:66,15,0,70 -BRDA:66,15,1,66 +BRDA:66,15,1,3 BRDA:66,15,2,2 BRDA:77,16,0,2 BRDA:77,16,1,68 @@ -11375,8 +11376,8 @@ FNDA:6,(anonymous_11) FNDA:221,(anonymous_12) FNDA:0,(anonymous_13) FNDA:23,(anonymous_14) -FNDA:2328,(anonymous_15) -FNDA:677,(anonymous_16) +FNDA:2325,(anonymous_15) +FNDA:678,(anonymous_16) FNDA:809,(anonymous_17) FNDA:467,(anonymous_18) FNDA:123,(anonymous_19) @@ -11399,7 +11400,7 @@ FNDA:806,(anonymous_35) FNDA:235,(anonymous_36) FNDA:217,(anonymous_37) FNDA:904,(anonymous_38) -FNDA:706,(anonymous_39) +FNDA:710,(anonymous_39) FNDA:44,(anonymous_40) FNDA:785,(anonymous_41) FNDA:3,(anonymous_42) @@ -11437,7 +11438,7 @@ FNDA:7,(anonymous_73) FNDA:28,(anonymous_74) FNDA:23,(anonymous_75) FNDA:25,(anonymous_76) -FNDA:18,(anonymous_77) +FNDA:20,(anonymous_77) FNDA:0,(anonymous_78) FNDA:28,(anonymous_79) FNDA:187,(anonymous_80) @@ -11461,9 +11462,9 @@ FNDA:124,(anonymous_97) FNDA:66,(anonymous_98) FNDA:0,(anonymous_99) FNDA:12,(anonymous_100) -FNDA:141,(anonymous_101) +FNDA:140,(anonymous_101) FNDA:74,(anonymous_102) -FNDA:34,(anonymous_103) +FNDA:35,(anonymous_103) FNDA:194,(anonymous_104) FNDA:17,(anonymous_105) FNDA:10,(anonymous_106) @@ -11479,7 +11480,7 @@ FNDA:74,(anonymous_115) FNDA:1,(anonymous_116) FNDA:73,(anonymous_117) FNDA:2,(anonymous_118) -FNDA:370,(anonymous_119) +FNDA:373,(anonymous_119) FNDA:44,(anonymous_120) FNDA:131,(anonymous_121) FNDA:0,(anonymous_122) @@ -11500,8 +11501,8 @@ DA:14,14 DA:15,7 DA:16,222 DA:18,24 -DA:19,2329 -DA:20,678 +DA:19,2326 +DA:20,679 DA:21,810 DA:22,468 DA:23,124 @@ -11524,7 +11525,7 @@ DA:41,807 DA:42,236 DA:43,218 DA:44,905 -DA:45,707 +DA:45,711 DA:46,45 DA:47,786 DA:48,4 @@ -11581,9 +11582,9 @@ DA:110,125 DA:111,67 DA:112,1 DA:113,13 -DA:114,142 +DA:114,141 DA:116,75 -DA:117,35 +DA:117,36 DA:118,195 DA:119,18 DA:120,11 @@ -11597,7 +11598,7 @@ DA:128,2 DA:129,75 DA:130,2 DA:131,74 -DA:133,371 +DA:133,374 DA:134,45 DA:135,132 DA:136,1 @@ -13424,19 +13425,19 @@ SF:packages/roosterjs-content-model-dom/lib/domUtils/isElementOfType.ts FN:7,isElementOfType FNF:1 FNH:1 -FNDA:2893,isElementOfType +FNDA:2894,isElementOfType DA:7,1 -DA:11,2893 +DA:11,2894 LF:2 LH:2 BRDA:11,0,0,0 -BRDA:11,0,1,2893 -BRDA:11,1,0,2893 -BRDA:11,1,1,2893 +BRDA:11,0,1,2894 +BRDA:11,1,0,2894 +BRDA:11,1,1,2894 BRDA:11,2,0,0 -BRDA:11,2,1,2893 -BRDA:11,3,0,2893 -BRDA:11,3,1,2893 +BRDA:11,2,1,2894 +BRDA:11,3,0,2894 +BRDA:11,3,1,2894 BRF:8 BRH:6 end_of_record @@ -13445,13 +13446,13 @@ SF:packages/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts FN:8,isNodeOfType FNF:1 FNH:1 -FNDA:10850,isNodeOfType +FNDA:10847,isNodeOfType DA:8,1 -DA:12,10850 +DA:12,10847 LF:2 LH:2 -BRDA:12,0,0,10850 -BRDA:12,0,1,10764 +BRDA:12,0,0,10847 +BRDA:12,0,1,10761 BRF:2 BRH:2 end_of_record @@ -13724,7 +13725,7 @@ FNF:3 FNH:3 FNDA:44,isModifierKey FNDA:19,isCharacterValue -FNDA:18,isCursorMovingKey +FNDA:20,isCursorMovingKey DA:1,1 DA:2,1 DA:3,1 @@ -13737,7 +13738,7 @@ DA:25,44 DA:35,1 DA:36,19 DA:44,1 -DA:45,18 +DA:45,20 LF:13 LH:13 BRDA:21,0,0,44 @@ -14544,8 +14545,8 @@ BRDA:45,3,0,248 BRDA:45,3,1,2980 BRDA:45,4,0,3228 BRDA:45,4,1,248 -BRDA:46,5,0,16 -BRDA:46,5,1,232 +BRDA:46,5,0,0 +BRDA:46,5,1,248 BRDA:52,6,0,2 BRDA:52,6,1,805 BRDA:58,7,0,4 @@ -14555,7 +14556,7 @@ BRDA:68,8,1,7256 BRDA:73,9,0,1 BRDA:73,9,1,923 BRF:20 -BRH:18 +BRH:17 end_of_record TN: SF:packages/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts @@ -16691,23 +16692,23 @@ SF:packages/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts FN:16,createText FNF:1 FNH:1 -FNDA:1706,createText +FNDA:1710,createText DA:1,1 DA:16,1 -DA:22,1706 -DA:28,1706 +DA:22,1710 +DA:28,1710 DA:29,8 -DA:32,1706 +DA:32,1710 DA:33,3 -DA:36,1706 +DA:36,1710 LF:8 LH:8 -BRDA:25,0,0,1067 +BRDA:25,0,0,1071 BRDA:25,0,1,639 BRDA:28,1,0,8 -BRDA:28,1,1,1698 +BRDA:28,1,1,1702 BRDA:32,2,0,3 -BRDA:32,2,1,1703 +BRDA:32,2,1,1707 BRF:6 BRH:6 end_of_record @@ -18569,7 +18570,7 @@ BRH:0 end_of_record TN: SF:packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateListMetadata.ts -FN:39,updateListMetadata +FN:45,updateListMetadata FNF:1 FNH:1 FNDA:81,updateListMetadata @@ -18577,9 +18578,9 @@ DA:1,1 DA:2,1 DA:3,1 DA:4,1 -DA:14,1 -DA:39,1 -DA:43,81 +DA:18,1 +DA:45,1 +DA:49,81 LF:7 LH:7 BRF:0 @@ -19268,32 +19269,32 @@ FN:181,setIsSelected FN:191,handleSelection FNF:16 FNH:16 -FNDA:163,setSelection -FNDA:187,setSelectionToBlockGroup -FNDA:187,(anonymous_2) -FNDA:185,(anonymous_3) -FNDA:185,setSelectionToBlock +FNDA:162,setSelection +FNDA:186,setSelectionToBlockGroup +FNDA:186,(anonymous_2) +FNDA:184,(anonymous_3) +FNDA:184,setSelectionToBlock FNDA:15,(anonymous_5) -FNDA:279,(anonymous_6) -FNDA:279,(anonymous_7) +FNDA:277,(anonymous_6) +FNDA:277,(anonymous_7) FNDA:10,setSelectionToTable FNDA:1,(anonymous_9) FNDA:1,(anonymous_10) FNDA:13,findCell FNDA:15,(anonymous_12) -FNDA:279,setSelectionToSegment -FNDA:216,setIsSelected -FNDA:481,handleSelection +FNDA:277,setSelectionToSegment +FNDA:215,setIsSelected +FNDA:478,handleSelection DA:1,1 DA:17,1 -DA:18,163 -DA:27,187 -DA:28,187 +DA:18,162 +DA:27,186 +DA:28,186 DA:29,2 -DA:32,187 -DA:33,185 -DA:36,187 -DA:46,185 +DA:32,186 +DA:33,184 +DA:36,186 +DA:46,184 DA:48,0 DA:51,10 DA:55,15 @@ -19301,15 +19302,15 @@ DA:56,15 DA:57,2 DA:59,13 DA:62,15 -DA:66,134 -DA:68,134 -DA:69,279 -DA:75,279 -DA:87,134 -DA:88,40 -DA:90,40 -DA:91,40 -DA:95,134 +DA:66,133 +DA:68,133 +DA:69,277 +DA:75,277 +DA:87,133 +DA:88,39 +DA:90,39 +DA:91,39 +DA:95,133 DA:98,26 DA:108,10 DA:109,10 @@ -19330,41 +19331,41 @@ DA:138,13 DA:139,13 DA:140,15 DA:143,13 -DA:154,279 -DA:156,93 -DA:160,40 -DA:162,93 +DA:154,277 +DA:156,92 +DA:160,39 +DA:162,92 DA:165,3 DA:167,3 DA:172,8 DA:173,8 DA:174,8 -DA:176,175 -DA:177,175 -DA:182,216 +DA:176,174 +DA:177,174 +DA:182,215 DA:183,72 -DA:185,144 -DA:188,216 -DA:198,481 -DA:199,481 -DA:200,481 +DA:185,143 +DA:188,215 +DA:198,478 +DA:199,478 +DA:200,478 LF:64 LH:63 -BRDA:18,0,0,163 -BRDA:18,0,1,73 -BRDA:18,1,0,163 -BRDA:18,1,1,87 +BRDA:18,0,0,162 +BRDA:18,0,1,72 +BRDA:18,1,0,162 +BRDA:18,1,1,86 BRDA:28,2,0,2 -BRDA:28,2,1,185 +BRDA:28,2,1,184 BRDA:47,3,0,0 BRDA:47,3,1,10 BRDA:47,3,2,9 BRDA:47,3,3,15 -BRDA:47,3,4,134 +BRDA:47,3,4,133 BRDA:47,3,5,26 BRDA:56,4,0,2 BRDA:56,4,1,13 -BRDA:90,5,0,40 +BRDA:90,5,0,39 BRDA:90,5,1,0 BRDA:109,6,0,3 BRDA:109,6,1,7 @@ -19378,13 +19379,13 @@ BRDA:121,9,0,21 BRDA:121,9,1,7 BRDA:140,10,0,11 BRDA:140,10,1,2 -BRDA:155,11,0,93 +BRDA:155,11,0,92 BRDA:155,11,1,3 BRDA:155,11,2,8 -BRDA:155,11,3,175 -BRDA:156,12,0,40 +BRDA:155,11,3,174 +BRDA:156,12,0,39 BRDA:156,12,1,53 -BRDA:156,13,0,93 +BRDA:156,13,0,92 BRDA:156,13,1,57 BRDA:156,13,2,6 BRDA:168,14,0,2 @@ -19395,10 +19396,10 @@ BRDA:173,16,0,8 BRDA:173,16,1,4 BRDA:173,16,2,3 BRDA:182,17,0,72 -BRDA:182,17,1,144 -BRDA:198,18,0,481 -BRDA:198,18,1,441 -BRDA:200,19,0,481 +BRDA:182,17,1,143 +BRDA:198,18,0,478 +BRDA:198,18,1,438 +BRDA:200,19,0,478 BRDA:200,19,1,125 BRDA:200,19,2,113 BRF:51 @@ -19427,12 +19428,12 @@ SF:packages/roosterjs-content-model-dom/lib/modelApi/typeCheck/isGeneralSegment. FN:10,isGeneralSegment FNF:1 FNH:1 -FNDA:225,isGeneralSegment +FNDA:224,isGeneralSegment DA:10,1 -DA:13,225 +DA:13,224 LF:2 LH:2 -BRDA:14,0,0,225 +BRDA:14,0,0,224 BRDA:14,0,1,14 BRF:2 BRH:2 @@ -20863,7 +20864,9 @@ FN:24,(anonymous_19) FN:25,(anonymous_20) FN:27,(anonymous_21) FN:28,(anonymous_22) -FNF:23 +FN:30,(anonymous_23) +FN:34,(anonymous_24) +FNF:25 FNH:3 FNDA:0,(anonymous_0) FNDA:3,(anonymous_1) @@ -20888,6 +20891,8 @@ FNDA:0,(anonymous_19) FNDA:0,(anonymous_20) FNDA:0,(anonymous_21) FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) DA:1,1 DA:2,4 DA:3,4 @@ -20912,8 +20917,10 @@ DA:24,1 DA:25,1 DA:27,1 DA:28,1 -LF:24 -LH:24 +DA:30,1 +DA:34,1 +LF:26 +LH:26 BRF:0 BRH:0 end_of_record @@ -23411,7 +23418,7 @@ FNDA:35,PastePlugin FNDA:0,(anonymous_2) FNDA:33,(anonymous_3) FNDA:14,(anonymous_4) -FNDA:103,(anonymous_5) +FNDA:102,(anonymous_5) FNDA:0,(anonymous_6) FNDA:30,tableBorderParser FNDA:120,(anonymous_8) @@ -23435,8 +23442,8 @@ DA:52,33 DA:60,1 DA:61,14 DA:70,1 -DA:71,103 -DA:72,79 +DA:71,102 +DA:72,78 DA:75,24 DA:76,0 DA:79,24 @@ -23472,10 +23479,10 @@ DA:153,0 DA:159,0 LF:55 LH:48 -BRDA:71,0,0,79 +BRDA:71,0,0,78 BRDA:71,0,1,24 -BRDA:71,1,0,103 -BRDA:71,1,1,103 +BRDA:71,1,0,102 +BRDA:71,1,1,102 BRDA:75,2,0,0 BRDA:75,2,1,24 BRDA:83,3,0,2 @@ -24588,32 +24595,370 @@ BRF:2 BRH:2 end_of_record TN: +SF:packages/roosterjs-content-model-plugins/lib/picker/PickerHelperImpl.ts +FN:16,(anonymous_0) +FN:19,PickerHelperImpl +FN:32,(anonymous_2) +FN:41,(anonymous_3) +FN:51,(anonymous_4) +FN:66,(anonymous_5) +FNF:6 +FNH:6 +FNDA:1,(anonymous_0) +FNDA:64,PickerHelperImpl +FNDA:2,(anonymous_2) +FNDA:2,(anonymous_3) +FNDA:1,(anonymous_4) +FNDA:7,(anonymous_5) +DA:1,1 +DA:2,1 +DA:3,1 +DA:16,1 +DA:17,64 +DA:20,64 +DA:21,64 +DA:22,64 +DA:32,2 +DA:37,2 +DA:39,2 +DA:42,2 +DA:43,2 +DA:50,2 +DA:51,1 +DA:52,1 +DA:53,1 +DA:54,1 +DA:56,1 +DA:66,1 +DA:67,7 +DA:68,6 +DA:69,6 +DA:72,1 +LF:24 +LH:24 +BRDA:50,0,0,1 +BRDA:50,0,1,1 +BRDA:67,1,0,6 +BRDA:67,1,1,1 +BRDA:69,2,0,1 +BRDA:69,2,1,5 +BRDA:69,3,0,6 +BRDA:69,3,1,6 +BRF:8 +BRH:8 +end_of_record +TN: +SF:packages/roosterjs-content-model-plugins/lib/picker/PickerPlugin.ts +FN:22,(anonymous_0) +FN:32,PickerPlugin +FN:37,(anonymous_2) +FN:45,(anonymous_3) +FN:54,(anonymous_4) +FN:67,(anonymous_5) +FN:82,(anonymous_6) +FN:120,(anonymous_7) +FN:192,(anonymous_8) +FN:194,(anonymous_9) +FN:222,(anonymous_10) +FN:224,(anonymous_11) +FNF:12 +FNH:10 +FNDA:1,(anonymous_0) +FNDA:59,PickerPlugin +FNDA:0,(anonymous_2) +FNDA:59,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:3,(anonymous_5) +FNDA:117,(anonymous_6) +FNDA:52,(anonymous_7) +FNDA:2,(anonymous_8) +FNDA:2,(anonymous_9) +FNDA:57,(anonymous_10) +FNDA:57,(anonymous_11) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:22,1 +DA:23,59 +DA:24,59 +DA:25,59 +DA:32,59 +DA:37,1 +DA:38,0 +DA:45,1 +DA:46,59 +DA:47,59 +DA:48,59 +DA:54,1 +DA:55,0 +DA:56,0 +DA:67,1 +DA:68,3 +DA:82,1 +DA:83,117 +DA:84,0 +DA:87,117 +DA:89,4 +DA:90,3 +DA:91,2 +DA:93,1 +DA:96,4 +DA:99,53 +DA:100,52 +DA:102,53 +DA:105,58 +DA:106,1 +DA:108,57 +DA:110,58 +DA:113,2 +DA:114,1 +DA:116,2 +DA:120,1 +DA:121,52 +DA:124,10 +DA:125,8 +DA:127,8 +DA:128,4 +DA:131,8 +DA:134,10 +DA:135,10 +DA:139,10 +DA:141,10 +DA:142,6 +DA:154,10 +DA:155,10 +DA:158,10 +DA:162,10 +DA:163,10 +DA:166,20 +DA:167,20 +DA:177,20 +DA:178,20 +DA:180,1 +DA:181,1 +DA:182,1 +DA:186,1 +DA:187,1 +DA:188,1 +DA:192,2 +DA:193,2 +DA:195,2 +DA:200,2 +DA:202,2 +DA:209,2 +DA:210,2 +DA:212,0 +DA:215,2 +DA:218,0 +DA:222,57 +DA:223,57 +DA:224,57 +DA:225,57 +DA:226,57 +DA:228,57 +DA:233,57 +DA:235,57 +DA:242,57 +DA:243,57 +DA:244,57 +DA:249,57 +DA:253,1 +LF:89 +LH:83 +BRDA:69,0,0,3 +BRDA:69,0,1,2 +BRDA:69,0,2,2 +BRDA:69,0,3,1 +BRDA:69,0,4,1 +BRDA:69,0,5,1 +BRDA:69,1,0,0 +BRDA:69,1,1,3 +BRDA:69,2,0,3 +BRDA:69,2,1,3 +BRDA:83,3,0,0 +BRDA:83,3,1,117 +BRDA:88,4,0,4 +BRDA:88,4,1,53 +BRDA:88,4,2,58 +BRDA:88,4,3,2 +BRDA:89,5,0,3 +BRDA:89,5,1,1 +BRDA:90,6,0,2 +BRDA:90,6,1,1 +BRDA:99,7,0,52 +BRDA:99,7,1,1 +BRDA:105,8,0,1 +BRDA:105,8,1,57 +BRDA:113,9,0,1 +BRDA:113,9,1,1 +BRDA:122,10,0,5 +BRDA:122,10,1,10 +BRDA:122,10,2,5 +BRDA:122,10,3,10 +BRDA:122,10,4,5 +BRDA:122,10,5,10 +BRDA:122,10,6,10 +BRDA:122,10,7,20 +BRDA:122,10,8,1 +BRDA:122,10,9,1 +BRDA:122,10,10,1 +BRDA:124,11,0,8 +BRDA:124,11,1,2 +BRDA:124,12,0,10 +BRDA:124,12,1,6 +BRDA:127,13,0,4 +BRDA:127,13,1,4 +BRDA:131,14,0,0 +BRDA:131,14,1,8 +BRDA:131,15,0,8 +BRDA:131,15,1,8 +BRDA:131,16,0,4 +BRDA:131,16,1,4 +BRDA:141,17,0,6 +BRDA:141,17,1,4 +BRDA:142,18,0,0 +BRDA:142,18,1,6 +BRDA:142,19,0,6 +BRDA:142,19,1,6 +BRDA:144,20,0,4 +BRDA:144,20,1,2 +BRDA:145,21,0,2 +BRDA:145,21,1,2 +BRDA:148,22,0,1 +BRDA:148,22,1,1 +BRDA:158,23,0,0 +BRDA:158,23,1,10 +BRDA:158,24,0,10 +BRDA:158,24,1,10 +BRDA:159,25,0,5 +BRDA:159,25,1,5 +BRDA:166,26,0,0 +BRDA:166,26,1,20 +BRDA:167,27,0,0 +BRDA:167,27,1,20 +BRDA:167,28,0,20 +BRDA:167,28,1,20 +BRDA:169,29,0,10 +BRDA:169,29,1,10 +BRDA:170,30,0,5 +BRDA:170,30,1,5 +BRDA:173,31,0,5 +BRDA:173,31,1,5 +BRDA:186,32,0,0 +BRDA:186,32,1,1 +BRDA:186,33,0,1 +BRDA:186,33,1,1 +BRDA:193,34,0,0 +BRDA:193,34,1,2 +BRDA:202,35,0,2 +BRDA:202,35,1,0 +BRDA:203,36,0,2 +BRDA:203,36,1,2 +BRDA:203,36,2,2 +BRDA:203,36,3,0 +BRDA:203,36,4,0 +BRDA:210,37,0,0 +BRDA:210,37,1,2 +BRDA:210,38,0,2 +BRDA:210,38,1,2 +BRDA:223,39,0,57 +BRDA:223,39,1,0 +BRDA:223,40,0,57 +BRDA:223,40,1,57 +BRDA:225,41,0,57 +BRDA:225,41,1,0 +BRDA:228,42,0,57 +BRDA:228,42,1,0 +BRDA:229,43,0,57 +BRDA:229,43,1,0 +BRDA:229,43,2,0 +BRDA:236,44,0,57 +BRDA:236,44,1,0 +BRDA:235,45,0,57 +BRDA:235,45,1,57 +BRDA:235,46,0,0 +BRDA:235,46,1,57 +BRDA:235,47,0,57 +BRDA:235,47,1,57 +BRDA:242,48,0,57 +BRDA:242,48,1,0 +BRF:117 +BRH:96 +end_of_record +TN: +SF:packages/roosterjs-content-model-plugins/lib/picker/getQueryString.ts +FN:7,getQueryString +FNF:1 +FNH:1 +FNDA:9,getQueryString +DA:1,1 +DA:7,1 +DA:13,9 +DA:14,9 +DA:16,9 +DA:17,12 +DA:19,12 +DA:20,1 +DA:21,1 +DA:24,11 +DA:26,11 +DA:27,4 +DA:29,4 +DA:35,4 +DA:37,7 +DA:39,7 +DA:43,9 +DA:44,4 +DA:47,9 +LF:19 +LH:19 +BRDA:19,0,0,1 +BRDA:19,0,1,11 +BRDA:26,1,0,4 +BRDA:26,1,1,7 +BRDA:29,2,0,2 +BRDA:29,2,1,2 +BRDA:29,3,0,4 +BRDA:29,3,1,4 +BRDA:31,4,0,2 +BRDA:31,4,1,0 +BRDA:39,5,0,0 +BRDA:39,5,1,7 +BRDA:39,6,0,7 +BRDA:39,6,1,7 +BRDA:43,7,0,4 +BRDA:43,7,1,5 +BRF:16 +BRH:14 +end_of_record +TN: SF:packages/roosterjs-content-model-plugins/lib/pluginUtils/splitTextSegment.ts FN:7,splitTextSegment FN:39,(anonymous_1) FNF:2 FNH:2 -FNDA:25,splitTextSegment -FNDA:48,(anonymous_1) +FNDA:27,splitTextSegment +FNDA:52,(anonymous_1) DA:1,1 DA:7,1 -DA:13,25 -DA:14,25 -DA:15,25 -DA:22,25 -DA:23,25 -DA:24,10 -DA:33,25 +DA:13,27 +DA:14,27 +DA:15,27 +DA:22,27 +DA:23,27 +DA:24,12 +DA:33,27 DA:34,13 -DA:39,48 -DA:40,25 -DA:42,25 +DA:39,52 +DA:40,27 +DA:42,27 LF:13 LH:13 -BRDA:23,0,0,10 +BRDA:23,0,0,12 BRDA:23,0,1,15 BRDA:33,1,0,13 -BRDA:33,1,1,12 +BRDA:33,1,1,14 BRF:4 BRH:4 end_of_record @@ -24809,6 +25154,74 @@ BRF:34 BRH:26 end_of_record TN: +SF:packages/roosterjs-content-model-plugins/lib/pluginUtils/Rect/getDOMInsertPointRect.ts +FN:9,getDOMInsertPointRect +FNF:1 +FNH:0 +FNDA:0,getDOMInsertPointRect +DA:1,1 +DA:9,1 +DA:10,0 +DA:11,0 +DA:13,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:40,0 +DA:41,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:48,0 +DA:49,0 +DA:54,0 +DA:55,0 +DA:57,0 +DA:58,0 +DA:62,0 +LF:31 +LH:2 +BRDA:18,0,0,0 +BRDA:18,0,1,0 +BRDA:24,1,0,0 +BRDA:24,1,1,0 +BRDA:33,2,0,0 +BRDA:33,2,1,0 +BRDA:34,3,0,0 +BRDA:34,3,1,0 +BRDA:34,4,0,0 +BRDA:34,4,1,0 +BRDA:35,5,0,0 +BRDA:35,5,1,0 +BRDA:40,6,0,0 +BRDA:40,6,1,0 +BRDA:46,7,0,0 +BRDA:46,7,1,0 +BRDA:46,8,0,0 +BRDA:46,8,1,0 +BRDA:48,9,0,0 +BRDA:48,9,1,0 +BRDA:54,10,0,0 +BRDA:54,10,1,0 +BRDA:54,11,0,0 +BRDA:54,11,1,0 +BRDA:57,12,0,0 +BRDA:57,12,1,0 +BRF:26 +BRH:0 +end_of_record +TN: SF:packages/roosterjs-content-model-plugins/lib/pluginUtils/Rect/getIntersectedRect.ts FN:29,getIntersectedRect FN:34,(anonymous_1) @@ -25089,7 +25502,7 @@ FNDA:67,(anonymous_4) FNDA:1,(anonymous_5) FNDA:41,(anonymous_6) FNDA:41,(anonymous_7) -FNDA:83,(anonymous_8) +FNDA:81,(anonymous_8) FNDA:45,(anonymous_9) FNDA:44,(anonymous_10) FNDA:23,(anonymous_11) @@ -25124,7 +25537,7 @@ DA:66,41 DA:67,41 DA:68,41 DA:75,1 -DA:76,83 +DA:76,81 DA:81,17 DA:82,17 DA:83,17 @@ -28170,7 +28583,7 @@ FNDA:0,(anonymous_18) FNDA:0,(anonymous_19) FNDA:0,(anonymous_20) FNDA:0,(anonymous_21) -FNDA:6,(anonymous_22) +FNDA:16,(anonymous_22) FNDA:0,(anonymous_23) FNDA:1,(anonymous_24) FNDA:1,(anonymous_25) @@ -28210,7 +28623,7 @@ DA:17,1 DA:18,1 DA:19,1 DA:20,1 -DA:21,7 +DA:21,17 DA:22,1 DA:23,2 DA:24,2 @@ -28240,48 +28653,48 @@ FN:22,(anonymous_1) FN:40,getCapitalizedText FN:68,(anonymous_3) FNF:4 -FNH:0 -FNDA:0,changeCapitalization -FNDA:0,(anonymous_1) -FNDA:0,getCapitalizedText -FNDA:0,(anonymous_3) +FNH:4 +FNDA:20,changeCapitalization +FNDA:24,(anonymous_1) +FNDA:25,getCapitalizedText +FNDA:6,(anonymous_3) DA:1,1 DA:3,1 DA:15,1 -DA:20,0 -DA:23,0 -DA:24,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:32,0 -DA:44,0 +DA:20,20 +DA:23,24 +DA:24,24 +DA:28,24 +DA:29,24 +DA:30,24 +DA:32,1 +DA:44,25 DA:45,0 -DA:47,0 -DA:49,0 -DA:51,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:58,0 -DA:61,0 -DA:67,0 -DA:68,0 -DA:69,0 +DA:47,25 +DA:49,3 +DA:51,14 +DA:53,6 +DA:54,5 +DA:55,14 +DA:58,5 +DA:61,2 +DA:67,2 +DA:68,2 +DA:69,6 DA:72,0 LF:24 -LH:3 -BRDA:28,0,0,0 +LH:22 +BRDA:28,0,0,24 BRDA:28,0,1,0 BRDA:44,1,0,0 -BRDA:44,1,1,0 -BRDA:48,2,0,0 -BRDA:48,2,1,0 -BRDA:48,2,2,0 -BRDA:48,2,3,0 +BRDA:44,1,1,25 +BRDA:48,2,0,3 +BRDA:48,2,1,14 +BRDA:48,2,2,6 +BRDA:48,2,3,2 BRDA:48,2,4,0 BRF:9 -BRH:0 +BRH:6 end_of_record TN: SF:packages/roosterjs-editor-api/lib/format/changeFontSize.ts @@ -28363,10 +28776,10 @@ SF:packages/roosterjs-editor-api/lib/format/clearBlockFormat.ts FN:9,clearBlockFormat FNF:1 FNH:1 -FNDA:14,clearBlockFormat +FNDA:15,clearBlockFormat DA:1,1 DA:9,1 -DA:10,14 +DA:10,15 LF:3 LH:3 BRF:0 @@ -28404,36 +28817,36 @@ FN:315,removeStyles FN:317,(anonymous_28) FN:334,clearFormat FNF:29 -FNH:19 -FNDA:0,isMultiBlockSelection -FNDA:84,clearNodeFormat -FNDA:43,(anonymous_2) -FNDA:18,clearAttribute +FNH:23 +FNDA:12,isMultiBlockSelection +FNDA:228,clearNodeFormat +FNDA:143,(anonymous_2) +FNDA:44,clearAttribute FNDA:4,updateStyles FNDA:5,(anonymous_5) FNDA:4,removeNonBorderStyles FNDA:5,(anonymous_7) FNDA:0,removeNotTableDefaultStyles FNDA:0,(anonymous_9) -FNDA:0,isNodeWholeBlock -FNDA:0,(anonymous_12) -FNDA:0,clearAutoDetectFormat -FNDA:14,clearBlockFormat -FNDA:14,(anonymous_15) -FNDA:15,(anonymous_16) -FNDA:2,clearInlineFormat -FNDA:2,(anonymous_18) +FNDA:6,isNodeWholeBlock +FNDA:4,(anonymous_12) +FNDA:12,clearAutoDetectFormat +FNDA:23,clearBlockFormat +FNDA:23,(anonymous_15) +FNDA:24,(anonymous_16) +FNDA:11,clearInlineFormat +FNDA:11,(anonymous_18) FNDA:0,(anonymous_19) -FNDA:2,setDefaultFontWeight -FNDA:2,(anonymous_21) -FNDA:16,setDefaultFormat -FNDA:2,(anonymous_23) +FNDA:9,setDefaultFontWeight +FNDA:13,(anonymous_21) +FNDA:34,setDefaultFormat +FNDA:4,(anonymous_23) FNDA:0,(anonymous_24) FNDA:0,(anonymous_25) FNDA:0,(anonymous_26) -FNDA:2,removeStyles -FNDA:8,(anonymous_28) -FNDA:16,clearFormat +FNDA:4,removeStyles +FNDA:16,(anonymous_28) +FNDA:38,clearFormat DA:1,1 DA:2,1 DA:3,1 @@ -28450,32 +28863,32 @@ DA:34,1 DA:35,1 DA:38,1 DA:39,1 -DA:46,0 -DA:47,0 -DA:48,0 +DA:46,12 +DA:47,12 +DA:48,12 DA:49,0 -DA:52,0 -DA:55,0 -DA:60,84 -DA:61,84 -DA:62,84 -DA:65,84 -DA:66,84 -DA:67,47 -DA:73,29 -DA:74,6 -DA:76,29 -DA:79,18 -DA:83,84 -DA:87,18 -DA:88,18 -DA:90,18 -DA:91,5 +DA:52,12 +DA:55,12 +DA:60,228 +DA:61,228 +DA:62,228 +DA:65,228 +DA:66,228 +DA:67,144 +DA:73,100 +DA:74,30 +DA:76,100 +DA:79,44 +DA:83,228 +DA:87,44 +DA:88,44 +DA:90,44 +DA:91,7 DA:92,0 -DA:93,5 +DA:93,7 DA:94,0 -DA:95,5 -DA:99,3 +DA:95,7 +DA:99,5 DA:112,4 DA:113,4 DA:115,5 @@ -28489,218 +28902,218 @@ DA:132,0 DA:133,0 DA:134,0 DA:135,0 -DA:146,0 -DA:147,0 -DA:148,0 -DA:149,0 -DA:150,0 -DA:152,0 -DA:153,0 -DA:154,0 -DA:155,0 -DA:158,0 -DA:160,0 -DA:162,0 -DA:172,0 -DA:173,0 -DA:174,0 -DA:175,0 -DA:177,0 -DA:180,0 -DA:181,0 -DA:182,0 -DA:185,0 -DA:194,14 -DA:197,14 -DA:198,15 -DA:199,15 -DA:201,15 +DA:146,6 +DA:147,6 +DA:148,12 +DA:149,4 +DA:150,2 +DA:152,2 +DA:153,2 +DA:154,4 +DA:155,2 +DA:158,2 +DA:160,8 +DA:162,2 +DA:172,12 +DA:173,12 +DA:174,8 +DA:175,8 +DA:177,8 +DA:180,8 +DA:181,4 +DA:182,4 +DA:185,8 +DA:194,23 +DA:197,23 +DA:198,24 +DA:199,24 +DA:201,24 DA:204,4 DA:205,4 DA:206,1 DA:207,1 -DA:211,15 -DA:216,7 -DA:217,7 -DA:220,15 -DA:222,14 -DA:229,2 -DA:230,2 -DA:231,2 -DA:232,2 +DA:211,24 +DA:216,11 +DA:217,11 +DA:220,24 +DA:222,23 +DA:229,11 +DA:230,11 +DA:231,11 +DA:232,11 DA:233,0 -DA:236,2 -DA:238,2 -DA:242,4 -DA:243,2 -DA:246,2 -DA:252,16 -DA:253,16 -DA:254,16 -DA:255,2 -DA:256,2 -DA:257,2 +DA:236,11 +DA:238,11 +DA:242,18 +DA:243,9 +DA:246,13 +DA:252,34 +DA:253,34 +DA:254,34 +DA:255,4 +DA:256,4 +DA:257,4 DA:259,0 DA:260,0 DA:261,0 DA:262,0 DA:263,0 -DA:270,16 -DA:271,2 -DA:272,2 -DA:274,2 -DA:275,2 -DA:277,2 +DA:270,34 +DA:271,14 +DA:272,14 +DA:274,14 +DA:275,14 +DA:277,14 DA:278,0 DA:284,0 DA:285,0 DA:288,0 DA:289,0 DA:291,0 -DA:294,2 +DA:294,14 DA:295,0 DA:296,0 DA:298,0 -DA:301,2 -DA:302,0 -DA:304,2 -DA:306,2 +DA:301,14 +DA:302,5 +DA:304,9 +DA:306,14 DA:307,0 -DA:309,2 +DA:309,14 DA:310,0 -DA:316,2 -DA:317,8 -DA:321,2 +DA:316,4 +DA:317,16 +DA:321,4 DA:322,0 DA:334,1 -DA:336,18 -DA:338,16 -DA:340,2 -DA:341,2 -DA:343,14 -DA:344,14 -DA:346,0 +DA:336,49 +DA:338,38 +DA:340,11 +DA:341,11 +DA:343,15 +DA:344,15 +DA:346,12 LF:146 -LH:93 +LH:121 BRDA:47,0,0,0 -BRDA:47,0,1,0 -BRDA:47,1,0,0 -BRDA:47,1,1,0 +BRDA:47,0,1,12 +BRDA:47,1,0,12 +BRDA:47,1,1,12 BRDA:48,2,0,0 -BRDA:48,2,1,0 +BRDA:48,2,1,12 BRDA:52,3,0,0 -BRDA:52,3,1,0 -BRDA:52,4,0,0 -BRDA:52,4,1,0 -BRDA:66,5,0,47 -BRDA:66,5,1,37 -BRDA:67,6,0,29 -BRDA:67,6,1,18 -BRDA:68,7,0,47 -BRDA:68,7,1,20 -BRDA:68,7,2,8 -BRDA:68,7,3,2 -BRDA:73,8,0,6 -BRDA:73,8,1,23 -BRDA:73,9,0,29 -BRDA:73,9,1,15 +BRDA:52,3,1,12 +BRDA:52,4,0,12 +BRDA:52,4,1,12 +BRDA:66,5,0,144 +BRDA:66,5,1,84 +BRDA:67,6,0,100 +BRDA:67,6,1,44 +BRDA:68,7,0,144 +BRDA:68,7,1,51 +BRDA:68,7,2,17 +BRDA:68,7,3,7 +BRDA:73,8,0,30 +BRDA:73,8,1,70 +BRDA:73,9,0,100 +BRDA:73,9,1,47 BRDA:91,10,0,0 -BRDA:91,10,1,5 -BRDA:91,11,0,5 +BRDA:91,10,1,7 +BRDA:91,11,0,7 BRDA:91,11,1,0 BRDA:93,12,0,0 -BRDA:93,12,1,5 -BRDA:93,13,0,5 +BRDA:93,12,1,7 +BRDA:93,13,0,7 BRDA:93,13,1,0 -BRDA:95,14,0,3 +BRDA:95,14,0,5 BRDA:95,14,1,2 -BRDA:96,15,0,5 -BRDA:96,15,1,3 +BRDA:96,15,0,7 +BRDA:96,15,1,5 BRDA:124,16,0,2 BRDA:124,16,1,3 BRDA:133,17,0,0 BRDA:133,17,1,0 -BRDA:148,18,0,0 -BRDA:148,18,1,0 -BRDA:148,19,0,0 -BRDA:148,19,1,0 -BRDA:149,20,0,0 -BRDA:149,20,1,0 +BRDA:148,18,0,4 +BRDA:148,18,1,8 +BRDA:148,19,0,12 +BRDA:148,19,1,8 +BRDA:149,20,0,2 +BRDA:149,20,1,2 BRDA:153,21,0,0 -BRDA:153,21,1,0 -BRDA:153,22,0,0 -BRDA:153,22,1,0 -BRDA:154,23,0,0 -BRDA:154,23,1,0 -BRDA:154,24,0,0 -BRDA:154,24,1,0 +BRDA:153,21,1,2 +BRDA:153,22,0,2 +BRDA:153,22,1,2 +BRDA:154,23,0,2 +BRDA:154,23,1,2 +BRDA:154,24,0,4 +BRDA:154,24,1,2 BRDA:154,25,0,0 -BRDA:154,25,1,0 -BRDA:154,26,0,0 -BRDA:154,26,1,0 -BRDA:147,27,0,0 -BRDA:147,27,1,0 -BRDA:173,28,0,0 -BRDA:173,28,1,0 +BRDA:154,25,1,2 +BRDA:154,26,0,2 +BRDA:154,26,1,2 +BRDA:147,27,0,14 +BRDA:147,27,1,14 +BRDA:173,28,0,8 +BRDA:173,28,1,4 BRDA:175,29,0,0 -BRDA:175,29,1,0 -BRDA:175,30,0,0 -BRDA:175,30,1,0 -BRDA:177,31,0,0 -BRDA:177,31,1,0 -BRDA:177,31,2,0 -BRDA:180,32,0,0 -BRDA:180,32,1,0 +BRDA:175,29,1,8 +BRDA:175,30,0,8 +BRDA:175,30,1,8 +BRDA:177,31,0,8 +BRDA:177,31,1,6 +BRDA:177,31,2,6 +BRDA:180,32,0,4 +BRDA:180,32,1,4 BRDA:201,33,0,4 -BRDA:201,33,1,11 +BRDA:201,33,1,20 BRDA:205,34,0,1 BRDA:205,34,1,3 -BRDA:212,35,0,22 -BRDA:212,35,1,21 -BRDA:212,35,2,21 -BRDA:217,36,0,7 +BRDA:212,35,0,35 +BRDA:212,35,1,33 +BRDA:212,35,2,33 +BRDA:217,36,0,11 BRDA:217,36,1,0 -BRDA:242,37,0,2 +BRDA:242,37,0,9 BRDA:242,37,1,0 -BRDA:256,38,0,2 +BRDA:256,38,0,4 BRDA:256,38,1,0 BRDA:262,39,0,0 BRDA:262,39,1,0 -BRDA:270,40,0,2 -BRDA:270,40,1,14 -BRDA:271,41,0,2 +BRDA:270,40,0,14 +BRDA:270,40,1,20 +BRDA:271,41,0,14 BRDA:271,41,1,0 -BRDA:274,42,0,2 +BRDA:274,42,0,14 BRDA:274,42,1,0 BRDA:277,43,0,0 -BRDA:277,43,1,2 +BRDA:277,43,1,14 BRDA:285,44,0,0 BRDA:285,44,1,0 BRDA:288,45,0,0 BRDA:288,45,1,0 BRDA:294,46,0,0 -BRDA:294,46,1,2 +BRDA:294,46,1,14 BRDA:295,47,0,0 BRDA:295,47,1,0 -BRDA:301,48,0,0 -BRDA:301,48,1,2 +BRDA:301,48,0,5 +BRDA:301,48,1,9 BRDA:306,49,0,0 -BRDA:306,49,1,2 +BRDA:306,49,1,14 BRDA:309,50,0,0 -BRDA:309,50,1,2 -BRDA:316,51,0,2 +BRDA:309,50,1,14 +BRDA:316,51,0,4 BRDA:316,51,1,0 BRDA:321,52,0,0 -BRDA:321,52,1,2 -BRDA:321,53,0,2 +BRDA:321,52,1,4 +BRDA:321,53,0,4 BRDA:321,53,1,0 -BRDA:336,54,0,2 -BRDA:336,54,1,14 -BRDA:339,55,0,2 -BRDA:339,55,1,14 -BRDA:339,55,2,0 +BRDA:336,54,0,11 +BRDA:336,54,1,27 +BRDA:339,55,0,11 +BRDA:339,55,1,15 +BRDA:339,55,2,12 BRF:117 -BRH:48 +BRH:85 end_of_record TN: SF:packages/roosterjs-editor-api/lib/format/createLink.ts @@ -29187,12 +29600,12 @@ FN:103,isList FN:107,alignList FN:110,(anonymous_7) FNF:8 -FNH:7 +FNH:8 FNDA:12,setAlignment FNDA:12,(anonymous_1) FNDA:3,alignTable FNDA:3,alignText -FNDA:0,(anonymous_4) +FNDA:3,(anonymous_4) FNDA:6,isList FNDA:6,alignList FNDA:6,(anonymous_7) @@ -29230,12 +29643,12 @@ DA:86,1 DA:87,1 DA:89,3 DA:90,3 -DA:91,0 -DA:92,0 +DA:91,3 +DA:92,3 DA:95,3 -DA:96,3 -DA:97,3 -DA:98,3 +DA:96,0 +DA:97,0 +DA:98,0 DA:104,6 DA:108,6 DA:111,6 @@ -29244,7 +29657,7 @@ DA:113,6 DA:114,6 DA:115,6 LF:47 -LH:45 +LH:44 BRDA:32,0,0,12 BRDA:32,0,1,12 BRDA:35,1,0,3 @@ -29264,9 +29677,9 @@ BRDA:82,7,0,1 BRDA:82,7,1,2 BRDA:85,8,0,1 BRDA:85,8,1,1 -BRDA:95,9,0,3 -BRDA:95,9,1,0 -BRDA:97,10,0,3 +BRDA:95,9,0,0 +BRDA:95,9,1,3 +BRDA:97,10,0,0 BRDA:97,10,1,0 BRDA:114,11,0,6 BRDA:114,11,1,0 @@ -29277,7 +29690,7 @@ BRDA:115,13,1,6 BRDA:115,14,0,6 BRDA:115,14,1,6 BRF:31 -BRH:27 +BRH:26 end_of_record TN: SF:packages/roosterjs-editor-api/lib/format/setBackgroundColor.ts @@ -29338,16 +29751,16 @@ FN:10,setFontName FN:16,(anonymous_1) FNF:2 FNH:2 -FNDA:3,setFontName -FNDA:4,(anonymous_1) +FNDA:15,setFontName +FNDA:40,(anonymous_1) DA:1,1 DA:10,1 -DA:13,3 -DA:17,4 +DA:13,15 +DA:17,40 LF:4 LH:4 BRDA:17,0,0,0 -BRDA:17,0,1,4 +BRDA:17,0,1,40 BRF:2 BRH:1 end_of_record @@ -29357,26 +29770,26 @@ FN:11,setFontSize FN:17,(anonymous_1) FNF:2 FNH:2 -FNDA:3,setFontSize -FNDA:4,(anonymous_1) +FNDA:15,setFontSize +FNDA:40,(anonymous_1) DA:1,1 DA:2,1 DA:11,1 -DA:14,3 -DA:18,4 -DA:19,4 -DA:20,4 +DA:14,15 +DA:18,40 +DA:19,40 +DA:20,40 DA:21,0 LF:8 LH:7 BRDA:18,0,0,0 -BRDA:18,0,1,4 +BRDA:18,0,1,40 BRDA:20,1,0,0 -BRDA:20,1,1,4 -BRDA:20,2,0,4 -BRDA:20,2,1,0 +BRDA:20,1,1,40 +BRDA:20,2,0,40 +BRDA:20,2,1,36 BRF:6 -BRH:3 +BRH:4 end_of_record TN: SF:packages/roosterjs-editor-api/lib/format/setHeadingLevel.ts @@ -29467,12 +29880,12 @@ FN:151,isFirstItem FN:158,shouldHandleWithBlockquotes FNF:10 FNH:10 -FNDA:8,setIndentation -FNDA:5,(anonymous_1) -FNDA:9,(anonymous_2) -FNDA:8,(anonymous_3) -FNDA:4,indent -FNDA:2,(anonymous_5) +FNDA:18,setIndentation +FNDA:15,(anonymous_1) +FNDA:19,(anonymous_2) +FNDA:18,(anonymous_3) +FNDA:14,indent +FNDA:13,(anonymous_5) FNDA:5,outdent FNDA:4,(anonymous_7) FNDA:4,isFirstItem @@ -29481,14 +29894,14 @@ DA:1,1 DA:2,1 DA:11,1 DA:35,1 -DA:39,8 -DA:41,8 -DA:44,5 -DA:45,5 -DA:47,5 -DA:48,6 -DA:49,6 -DA:55,6 +DA:39,18 +DA:41,18 +DA:44,15 +DA:45,15 +DA:47,15 +DA:48,17 +DA:49,17 +DA:55,17 DA:56,4 DA:57,0 DA:60,4 @@ -29500,10 +29913,10 @@ DA:74,0 DA:75,0 DA:84,0 DA:90,0 -DA:94,2 -DA:98,9 -DA:101,8 -DA:102,8 +DA:94,13 +DA:98,19 +DA:101,18 +DA:102,18 DA:107,3 DA:108,2 DA:109,2 @@ -29511,11 +29924,11 @@ DA:110,1 DA:112,1 DA:113,1 DA:115,3 -DA:118,5 -DA:124,4 -DA:125,4 -DA:126,4 -DA:127,4 +DA:118,15 +DA:124,14 +DA:125,14 +DA:126,14 +DA:127,14 DA:132,5 DA:133,4 DA:134,4 @@ -29530,10 +29943,10 @@ DA:152,4 DA:163,4 LF:51 LH:45 -BRDA:39,0,0,3 +BRDA:39,0,0,13 BRDA:39,0,1,5 BRDA:55,1,0,4 -BRDA:55,1,1,2 +BRDA:55,1,1,13 BRDA:56,2,0,4 BRDA:56,2,1,0 BRDA:64,3,0,4 @@ -29550,8 +29963,8 @@ BRDA:74,7,1,0 BRDA:76,8,0,0 BRDA:76,8,1,0 BRDA:102,9,0,3 -BRDA:102,9,1,5 -BRDA:103,10,0,8 +BRDA:102,9,1,15 +BRDA:103,10,0,18 BRDA:103,10,1,3 BRDA:103,10,2,3 BRDA:107,11,0,2 @@ -29649,9 +30062,9 @@ FN:27,(anonymous_3) FNF:4 FNH:3 FNDA:0,(anonymous_0) -FNDA:18,toggleBlockQuote -FNDA:20,(anonymous_2) -FNDA:18,(anonymous_3) +FNDA:19,toggleBlockQuote +FNDA:21,(anonymous_2) +FNDA:19,(anonymous_3) DA:1,1 DA:3,1 DA:6,1 @@ -29661,13 +30074,13 @@ DA:9,0 DA:10,0 DA:11,0 DA:20,1 -DA:21,18 -DA:24,20 -DA:25,20 -DA:27,18 +DA:21,19 +DA:24,21 +DA:25,21 +DA:27,19 LF:13 LH:9 -BRDA:25,0,0,20 +BRDA:25,0,0,21 BRDA:25,0,1,0 BRF:2 BRH:1 @@ -29677,10 +30090,10 @@ SF:packages/roosterjs-editor-api/lib/format/toggleBold.ts FN:13,toggleBold FNF:1 FNH:1 -FNDA:2,toggleBold +FNDA:11,toggleBold DA:1,1 DA:13,1 -DA:14,2 +DA:14,11 LF:3 LH:3 BRF:0 @@ -29748,10 +30161,10 @@ SF:packages/roosterjs-editor-api/lib/format/toggleItalic.ts FN:13,toggleItalic FNF:1 FNH:1 -FNDA:2,toggleItalic +FNDA:6,toggleItalic DA:1,1 DA:13,1 -DA:14,2 +DA:14,6 LF:3 LH:3 BRF:0 @@ -29818,10 +30231,10 @@ SF:packages/roosterjs-editor-api/lib/format/toggleUnderline.ts FN:13,toggleUnderline FNF:1 FNH:1 -FNDA:2,toggleUnderline +FNDA:6,toggleUnderline DA:1,1 DA:13,1 -DA:14,2 +DA:14,6 LF:3 LH:3 BRF:0 @@ -30041,19 +30454,19 @@ FN:55,(anonymous_3) FN:63,(anonymous_4) FNF:5 FNH:5 -FNDA:25,applyInlineStyle -FNDA:25,(anonymous_1) -FNDA:12,(anonymous_2) -FNDA:12,(anonymous_3) -FNDA:24,(anonymous_4) +FNDA:76,applyInlineStyle +FNDA:132,(anonymous_1) +FNDA:63,(anonymous_2) +FNDA:63,(anonymous_3) +FNDA:131,(anonymous_4) DA:1,1 DA:2,1 DA:17,1 -DA:22,25 -DA:23,25 -DA:25,25 -DA:26,25 -DA:28,25 +DA:22,76 +DA:23,76 +DA:25,76 +DA:26,132 +DA:28,76 DA:29,13 DA:30,13 DA:32,13 @@ -30062,29 +30475,29 @@ DA:36,1 DA:37,1 DA:39,12 DA:45,12 -DA:50,12 -DA:55,12 -DA:56,12 -DA:57,12 +DA:50,63 +DA:55,63 +DA:56,63 +DA:57,63 DA:58,0 -DA:60,12 -DA:61,12 -DA:62,24 -DA:63,24 -DA:64,24 -DA:65,24 -DA:66,24 -DA:68,24 -DA:72,12 -DA:73,12 +DA:60,63 +DA:61,63 +DA:62,134 +DA:63,134 +DA:64,131 +DA:65,131 +DA:66,131 +DA:68,134 +DA:72,63 +DA:73,63 LF:31 LH:30 -BRDA:26,0,0,25 -BRDA:26,0,1,25 +BRDA:26,0,0,132 +BRDA:26,0,1,132 BRDA:28,1,0,13 -BRDA:28,1,1,12 -BRDA:28,2,0,25 -BRDA:28,2,1,25 +BRDA:28,1,1,63 +BRDA:28,2,0,76 +BRDA:28,2,1,76 BRDA:32,3,0,13 BRDA:32,3,1,1 BRDA:32,3,2,0 @@ -30092,16 +30505,16 @@ BRDA:32,3,3,0 BRDA:35,4,0,1 BRDA:35,4,1,12 BRDA:57,5,0,0 -BRDA:57,5,1,12 -BRDA:60,6,0,12 -BRDA:60,6,1,12 -BRDA:65,7,0,24 -BRDA:65,7,1,12 -BRDA:72,8,0,12 +BRDA:57,5,1,63 +BRDA:60,6,0,63 +BRDA:60,6,1,63 +BRDA:65,7,0,131 +BRDA:65,7,1,63 +BRDA:72,8,0,63 BRDA:72,8,1,0 -BRDA:72,9,0,12 -BRDA:72,9,1,12 -BRDA:72,9,2,12 +BRDA:72,9,0,63 +BRDA:72,9,1,63 +BRDA:72,9,2,63 BRF:23 BRH:19 end_of_record @@ -30112,34 +30525,34 @@ FN:21,(anonymous_1) FN:41,applyStyleToListItems FN:42,(anonymous_3) FNF:4 -FNH:3 -FNDA:9,applyListItemStyleWrap -FNDA:12,(anonymous_1) -FNDA:9,applyStyleToListItems -FNDA:0,(anonymous_3) +FNH:4 +FNDA:40,applyListItemStyleWrap +FNDA:95,(anonymous_1) +FNDA:40,applyStyleToListItems +FNDA:3,(anonymous_3) DA:1,1 DA:2,1 DA:12,1 -DA:18,9 -DA:19,9 -DA:22,12 -DA:24,12 -DA:25,12 -DA:26,0 -DA:32,9 -DA:42,9 -DA:43,0 -DA:44,0 +DA:18,40 +DA:19,40 +DA:22,95 +DA:24,95 +DA:25,95 +DA:26,3 +DA:32,40 +DA:42,40 +DA:43,3 +DA:44,3 LF:13 -LH:10 -BRDA:25,0,0,0 -BRDA:25,0,1,12 -BRDA:25,1,0,12 -BRDA:25,1,1,0 -BRDA:43,2,0,0 +LH:13 +BRDA:25,0,0,3 +BRDA:25,0,1,92 +BRDA:25,1,0,95 +BRDA:25,1,1,3 +BRDA:43,2,0,3 BRDA:43,2,1,0 BRF:6 -BRH:2 +BRH:5 end_of_record TN: SF:packages/roosterjs-editor-api/lib/utils/blockFormat.ts @@ -30148,42 +30561,42 @@ FN:26,(anonymous_1) FN:31,(anonymous_2) FNF:3 FNH:3 -FNDA:51,blockFormat -FNDA:51,(anonymous_1) -FNDA:51,(anonymous_2) +FNDA:71,blockFormat +FNDA:71,(anonymous_1) +FNDA:71,(anonymous_2) DA:1,1 DA:2,1 DA:4,1 DA:10,1 -DA:21,51 -DA:22,51 -DA:24,51 -DA:27,51 -DA:28,45 -DA:29,45 -DA:30,45 -DA:31,51 -DA:32,45 -DA:35,51 -DA:36,48 +DA:21,71 +DA:22,71 +DA:24,71 +DA:27,71 +DA:28,65 +DA:29,65 +DA:30,65 +DA:31,71 +DA:32,65 +DA:35,71 +DA:36,68 DA:38,3 LF:16 LH:16 -BRDA:27,0,0,45 +BRDA:27,0,0,65 BRDA:27,0,1,6 -BRDA:27,1,0,51 -BRDA:27,1,1,26 -BRDA:29,2,0,45 +BRDA:27,1,0,71 +BRDA:27,1,1,37 +BRDA:29,2,0,65 BRDA:29,2,1,0 BRDA:30,3,0,0 -BRDA:30,3,1,45 -BRDA:30,4,0,45 -BRDA:30,4,1,45 -BRDA:35,5,0,48 +BRDA:30,3,1,65 +BRDA:30,4,0,65 +BRDA:30,4,1,65 +BRDA:35,5,0,68 BRDA:35,5,1,3 -BRDA:35,6,0,51 -BRDA:35,6,1,48 -BRDA:35,6,2,48 +BRDA:35,6,0,71 +BRDA:35,6,1,68 +BRDA:35,6,2,68 BRF:15 BRH:13 end_of_record @@ -30194,42 +30607,42 @@ FN:30,(anonymous_1) FN:47,(anonymous_2) FNF:3 FNH:3 -FNDA:18,blockWrap -FNDA:20,(anonymous_1) +FNDA:19,blockWrap +FNDA:21,(anonymous_1) FNDA:4,(anonymous_2) DA:1,1 DA:3,1 DA:22,1 -DA:28,18 -DA:31,20 -DA:32,20 -DA:33,20 -DA:34,20 -DA:35,12 -DA:36,12 +DA:28,19 +DA:31,21 +DA:32,21 +DA:33,21 +DA:34,21 +DA:35,13 +DA:36,13 DA:37,0 -DA:38,12 +DA:38,13 DA:39,0 -DA:43,20 +DA:43,21 DA:47,4 DA:49,0 DA:50,0 -DA:53,20 +DA:53,21 LF:18 LH:14 -BRDA:33,0,0,20 +BRDA:33,0,0,21 BRDA:33,0,1,0 -BRDA:34,1,0,12 +BRDA:34,1,0,13 BRDA:34,1,1,8 BRDA:36,2,0,0 -BRDA:36,2,1,12 +BRDA:36,2,1,13 BRDA:38,3,0,0 -BRDA:38,3,1,12 -BRDA:38,4,0,12 -BRDA:38,4,1,12 -BRDA:44,5,0,20 -BRDA:44,5,1,20 -BRDA:44,5,2,20 +BRDA:38,3,1,13 +BRDA:38,4,0,13 +BRDA:38,4,1,13 +BRDA:44,5,0,21 +BRDA:44,5,1,21 +BRDA:44,5,2,21 BRDA:44,5,3,2 BRDA:50,6,0,0 BRDA:50,6,1,0 @@ -30280,11 +30693,11 @@ FN:11,commitListChains FN:23,(anonymous_1) FNF:2 FNH:2 -FNDA:45,commitListChains +FNDA:65,commitListChains FNDA:9,(anonymous_1) DA:2,1 DA:11,1 -DA:12,45 +DA:12,65 DA:13,8 DA:14,8 DA:15,8 @@ -30298,11 +30711,11 @@ DA:37,1 LF:13 LH:13 BRDA:12,0,0,8 -BRDA:12,0,1,37 +BRDA:12,0,1,57 BRDA:12,1,0,0 -BRDA:12,1,1,45 -BRDA:12,2,0,45 -BRDA:12,2,1,45 +BRDA:12,1,1,65 +BRDA:12,2,0,65 +BRDA:12,2,1,65 BRDA:14,3,0,8 BRDA:14,3,1,8 BRDA:15,4,0,8 @@ -30322,19 +30735,19 @@ FN:33,(anonymous_2) FN:45,(anonymous_3) FN:48,(anonymous_4) FNF:5 -FNH:3 -FNDA:14,execCommand -FNDA:14,(anonymous_1) +FNH:5 +FNDA:40,execCommand +FNDA:40,(anonymous_1) FNDA:84,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) +FNDA:26,(anonymous_3) +FNDA:26,(anonymous_4) DA:1,1 DA:2,1 DA:18,1 -DA:23,14 -DA:25,14 -DA:27,14 -DA:28,14 +DA:23,40 +DA:25,40 +DA:27,40 +DA:28,40 DA:29,14 DA:30,14 DA:31,14 @@ -30343,43 +30756,43 @@ DA:33,84 DA:36,14 DA:37,9 DA:38,9 -DA:43,0 -DA:46,0 -DA:48,0 -DA:49,0 +DA:43,26 +DA:46,26 +DA:48,26 +DA:49,26 DA:50,0 -DA:52,0 -DA:55,0 +DA:52,26 +DA:55,26 DA:56,0 LF:23 -LH:15 +LH:21 BRDA:28,0,0,14 -BRDA:28,0,1,0 -BRDA:28,1,0,14 -BRDA:28,1,1,14 +BRDA:28,0,1,26 +BRDA:28,1,0,40 +BRDA:28,1,1,40 BRDA:36,2,0,9 BRDA:36,2,1,5 BRDA:49,3,0,0 -BRDA:49,3,1,0 +BRDA:49,3,1,26 BRDA:55,4,0,0 -BRDA:55,4,1,0 +BRDA:55,4,1,26 BRF:10 -BRH:5 +BRH:8 end_of_record TN: SF:packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts FN:12,formatUndoSnapshot FNF:1 FNH:1 -FNDA:111,formatUndoSnapshot +FNDA:217,formatUndoSnapshot DA:12,1 -DA:17,111 +DA:17,217 LF:2 LH:2 -BRDA:22,0,0,97 -BRDA:22,0,1,14 -BRDA:21,1,0,111 -BRDA:21,1,1,97 +BRDA:22,0,0,185 +BRDA:22,0,1,32 +BRDA:21,1,0,217 +BRDA:21,1,1,185 BRF:4 BRH:4 end_of_record @@ -30389,47 +30802,47 @@ FN:9,normalizeBlockquote FN:49,isRTL FNF:2 FNH:2 -FNDA:10,normalizeBlockquote -FNDA:7,isRTL +FNDA:21,normalizeBlockquote +FNDA:18,isRTL DA:1,1 DA:9,1 -DA:10,10 -DA:11,10 -DA:13,10 -DA:14,10 +DA:10,21 +DA:11,21 +DA:13,21 +DA:14,21 DA:15,3 -DA:17,7 -DA:19,7 -DA:20,7 -DA:21,1 -DA:23,6 -DA:26,6 -DA:27,6 +DA:17,18 +DA:19,18 +DA:20,18 +DA:21,2 +DA:23,16 +DA:26,16 +DA:27,16 DA:28,2 DA:29,1 DA:30,1 DA:32,1 DA:33,1 -DA:36,4 -DA:37,4 -DA:40,6 -DA:50,7 +DA:36,14 +DA:37,14 +DA:40,16 +DA:50,18 LF:23 LH:23 -BRDA:10,0,0,10 +BRDA:10,0,0,21 BRDA:10,0,1,0 BRDA:14,1,0,3 -BRDA:14,1,1,7 -BRDA:19,2,0,7 +BRDA:14,1,1,18 +BRDA:19,2,0,18 BRDA:19,2,1,0 -BRDA:20,3,0,1 -BRDA:20,3,1,6 +BRDA:20,3,0,2 +BRDA:20,3,1,16 BRDA:27,4,0,2 -BRDA:27,4,1,4 +BRDA:27,4,1,14 BRDA:28,5,0,1 BRDA:28,5,1,1 -BRDA:50,6,0,7 -BRDA:50,6,1,7 +BRDA:50,6,0,18 +BRDA:50,6,1,18 BRF:14 BRH:12 end_of_record @@ -30525,11 +30938,11 @@ FN:4,(anonymous_2) FN:5,(anonymous_3) FNF:4 FNH:1 -FNDA:6489,(anonymous_0) +FNDA:6704,(anonymous_0) FNDA:0,(anonymous_1) FNDA:0,(anonymous_2) FNDA:0,(anonymous_3) -DA:2,6490 +DA:2,6705 DA:3,1 DA:4,1 DA:5,1 @@ -30545,110 +30958,110 @@ FN:86,addUndoSnapshotInternal FN:109,createContentMetadata FNF:3 FNH:3 -FNDA:6764,(anonymous_0) -FNDA:6901,addUndoSnapshotInternal -FNDA:6899,createContentMetadata +FNDA:7096,(anonymous_0) +FNDA:7218,addUndoSnapshotInternal +FNDA:7216,createContentMetadata DA:1,1 DA:26,1 -DA:33,6764 -DA:34,6764 -DA:37,6764 -DA:38,6736 -DA:42,6736 -DA:43,6735 -DA:47,6764 -DA:48,6764 -DA:49,189 -DA:50,189 -DA:55,188 -DA:56,166 -DA:57,166 -DA:61,6764 -DA:62,6736 -DA:66,6763 -DA:67,172 -DA:73,172 -DA:76,6763 +DA:33,7096 +DA:34,7096 +DA:37,7096 +DA:38,7004 +DA:42,7004 +DA:43,7003 +DA:47,7096 +DA:48,7096 +DA:49,302 +DA:50,302 +DA:55,301 +DA:56,215 +DA:57,215 +DA:61,7096 +DA:62,7004 +DA:66,7095 +DA:67,271 +DA:73,271 +DA:76,7095 DA:77,19 DA:79,19 DA:80,19 DA:81,19 -DA:91,6901 -DA:92,6899 -DA:93,6899 -DA:94,6899 -DA:96,6899 -DA:105,6899 -DA:114,6899 +DA:91,7218 +DA:92,7216 +DA:93,7216 +DA:94,7216 +DA:96,7216 +DA:105,7216 +DA:114,7216 DA:116,22 -DA:123,47 -DA:129,6830 +DA:123,17 +DA:129,7177 LF:35 LH:35 -BRDA:37,0,0,6736 -BRDA:37,0,1,28 -BRDA:42,1,0,6735 +BRDA:37,0,0,7004 +BRDA:37,0,1,92 +BRDA:42,1,0,7003 BRDA:42,1,1,1 -BRDA:42,2,0,6736 -BRDA:42,2,1,6556 +BRDA:42,2,0,7004 +BRDA:42,2,1,6770 BRDA:42,2,2,1 -BRDA:42,3,0,6552 +BRDA:42,3,0,6766 BRDA:42,3,1,4 -BRDA:42,4,0,6556 -BRDA:42,4,1,6556 -BRDA:43,5,0,6735 +BRDA:42,4,0,6770 +BRDA:42,4,1,6770 +BRDA:43,5,0,7003 BRDA:43,5,1,0 -BRDA:43,6,0,6735 -BRDA:43,6,1,6735 -BRDA:43,7,0,6640 -BRDA:43,7,1,95 -BRDA:43,8,0,6735 -BRDA:43,8,1,6735 -BRDA:48,9,0,189 -BRDA:48,9,1,6575 -BRDA:51,10,0,189 -BRDA:51,10,1,152 -BRDA:52,11,0,189 -BRDA:52,11,1,152 -BRDA:55,12,0,166 -BRDA:55,12,1,22 -BRDA:56,13,0,165 +BRDA:43,6,0,7003 +BRDA:43,6,1,7003 +BRDA:43,7,0,6866 +BRDA:43,7,1,137 +BRDA:43,8,0,7003 +BRDA:43,8,1,7003 +BRDA:48,9,0,302 +BRDA:48,9,1,6794 +BRDA:51,10,0,302 +BRDA:51,10,1,280 +BRDA:52,11,0,302 +BRDA:52,11,1,280 +BRDA:55,12,0,215 +BRDA:55,12,1,86 +BRDA:56,13,0,214 BRDA:56,13,1,1 -BRDA:56,14,0,166 -BRDA:56,14,1,166 -BRDA:56,15,0,70 -BRDA:56,15,1,96 -BRDA:56,16,0,166 -BRDA:56,16,1,166 -BRDA:61,17,0,6736 -BRDA:61,17,1,28 -BRDA:66,18,0,172 -BRDA:66,18,1,6591 -BRDA:66,19,0,6763 -BRDA:66,19,1,188 +BRDA:56,14,0,215 +BRDA:56,14,1,215 +BRDA:56,15,0,77 +BRDA:56,15,1,138 +BRDA:56,16,0,215 +BRDA:56,16,1,215 +BRDA:61,17,0,7004 +BRDA:61,17,1,92 +BRDA:66,18,0,271 +BRDA:66,18,1,6824 +BRDA:66,19,0,7095 +BRDA:66,19,1,301 BRDA:76,20,0,19 -BRDA:76,20,1,6744 +BRDA:76,20,1,7076 BRDA:79,21,0,19 BRDA:79,21,1,0 -BRDA:91,22,0,6899 +BRDA:91,22,0,7216 BRDA:91,22,1,2 -BRDA:94,23,0,6899 +BRDA:94,23,0,7216 BRDA:94,23,1,0 -BRDA:100,24,0,6899 +BRDA:100,24,0,7216 BRDA:100,24,1,0 BRDA:100,25,0,0 -BRDA:100,25,1,6899 -BRDA:100,26,0,6899 -BRDA:100,26,1,6899 +BRDA:100,25,1,7216 +BRDA:100,26,0,7216 +BRDA:100,26,1,7216 BRDA:115,27,0,22 -BRDA:115,27,1,47 -BRDA:115,27,2,6830 +BRDA:115,27,1,17 +BRDA:115,27,2,7177 BRDA:114,28,0,0 -BRDA:114,28,1,6899 -BRDA:114,29,0,6899 -BRDA:114,29,1,6899 -BRDA:134,30,0,6830 -BRDA:134,30,1,6575 +BRDA:114,28,1,7216 +BRDA:114,29,0,7216 +BRDA:114,29,1,7216 +BRDA:134,30,0,7177 +BRDA:134,30,1,6794 BRF:64 BRH:58 end_of_record @@ -30663,48 +31076,48 @@ FN:47,(anonymous_5) FN:50,extractHandler FNF:7 FNH:7 -FNDA:13097,(anonymous_0) -FNDA:97943,(anonymous_1) -FNDA:683,(anonymous_2) -FNDA:97661,(anonymous_3) -FNDA:13055,(anonymous_4) -FNDA:97661,(anonymous_5) -FNDA:97943,extractHandler +FNDA:13535,(anonymous_0) +FNDA:101228,(anonymous_1) +FNDA:280,(anonymous_2) +FNDA:100766,(anonymous_3) +FNDA:13469,(anonymous_4) +FNDA:100766,(anonymous_5) +FNDA:101228,extractHandler DA:1,1 DA:18,1 -DA:22,13097 -DA:23,97943 -DA:24,97943 -DA:25,97943 -DA:26,683 -DA:27,655 -DA:29,683 -DA:30,41 -DA:41,97943 -DA:43,97943 -DA:44,97661 -DA:47,97661 -DA:51,97943 -DA:56,97943 -DA:57,6529 -DA:58,91414 -DA:59,65319 -DA:60,26095 -DA:61,26095 -DA:63,97943 +DA:22,13535 +DA:23,101228 +DA:24,101228 +DA:25,101228 +DA:26,280 +DA:27,252 +DA:29,280 +DA:30,66 +DA:41,101228 +DA:43,101228 +DA:44,100766 +DA:47,100766 +DA:51,101228 +DA:56,101228 +DA:57,6748 +DA:58,94480 +DA:59,67509 +DA:60,26971 +DA:61,26971 +DA:63,101228 LF:22 LH:22 -BRDA:22,0,0,13097 +BRDA:22,0,0,13535 BRDA:22,0,1,1 -BRDA:26,1,0,655 +BRDA:26,1,0,252 BRDA:26,1,1,28 -BRDA:29,2,0,41 -BRDA:29,2,1,642 -BRDA:56,3,0,6529 -BRDA:56,3,1,91414 -BRDA:58,4,0,65319 -BRDA:58,4,1,26095 -BRDA:60,5,0,26095 +BRDA:29,2,0,66 +BRDA:29,2,1,214 +BRDA:56,3,0,6748 +BRDA:56,3,1,94480 +BRDA:58,4,0,67509 +BRDA:58,4,1,26971 +BRDA:60,5,0,26971 BRDA:60,5,1,0 BRF:12 BRH:11 @@ -30772,10 +31185,10 @@ DA:103,75 DA:104,25 DA:109,25 DA:112,25 -DA:114,2 -DA:115,23 -DA:116,10 -DA:118,10 +DA:114,3 +DA:115,22 +DA:116,9 +DA:118,9 DA:119,0 DA:120,0 DA:122,13 @@ -30793,29 +31206,29 @@ BRDA:39,0,0,0 BRDA:39,0,1,26 BRDA:41,1,0,1 BRDA:41,1,1,25 -BRDA:105,2,0,13 -BRDA:105,2,1,12 -BRDA:112,3,0,2 -BRDA:112,3,1,23 +BRDA:105,2,0,12 +BRDA:105,2,1,13 +BRDA:112,3,0,3 +BRDA:112,3,1,22 BRDA:112,4,0,25 BRDA:112,4,1,3 BRDA:112,4,2,23 BRDA:112,4,3,19 -BRDA:112,4,4,4 -BRDA:115,5,0,10 +BRDA:112,4,4,5 +BRDA:115,5,0,9 BRDA:115,5,1,13 -BRDA:115,6,0,10 +BRDA:115,6,0,9 BRDA:115,6,1,13 -BRDA:115,7,0,23 -BRDA:115,7,1,19 -BRDA:115,7,2,10 +BRDA:115,7,0,22 +BRDA:115,7,1,18 +BRDA:115,7,2,9 BRDA:116,8,0,0 -BRDA:116,8,1,10 -BRDA:116,9,0,10 -BRDA:116,9,1,10 +BRDA:116,8,1,9 +BRDA:116,9,0,9 +BRDA:116,9,1,9 BRDA:118,10,0,0 -BRDA:118,10,1,10 -BRDA:118,11,0,10 +BRDA:118,10,1,9 +BRDA:118,11,0,9 BRDA:118,11,1,0 BRDA:122,12,0,11 BRDA:122,12,1,2 @@ -30830,38 +31243,38 @@ FN:19,(anonymous_0) FN:82,wasNodeJustCreatedByKeyboardEvent FNF:2 FNH:2 -FNDA:6537,(anonymous_0) +FNDA:6756,(anonymous_0) FNDA:3,wasNodeJustCreatedByKeyboardEvent DA:3,1 DA:19,1 -DA:24,6537 -DA:27,6537 +DA:24,6756 +DA:27,6756 DA:28,1 -DA:30,6537 -DA:32,6537 -DA:35,6537 +DA:30,6756 +DA:32,6756 +DA:35,6756 DA:36,11 DA:37,11 DA:38,2 DA:39,2 DA:45,11 DA:47,11 -DA:52,6526 -DA:56,6526 -DA:64,6526 -DA:67,6537 -DA:68,6526 -DA:77,6537 +DA:52,6745 +DA:56,6745 +DA:64,6745 +DA:67,6756 +DA:68,6745 +DA:77,6756 DA:78,5 DA:83,3 LF:22 LH:22 BRDA:27,0,0,1 -BRDA:27,0,1,6536 -BRDA:27,1,0,6537 +BRDA:27,0,1,6755 +BRDA:27,1,0,6756 BRDA:27,1,1,1 BRDA:35,2,0,11 -BRDA:35,2,1,6526 +BRDA:35,2,1,6745 BRDA:37,3,0,2 BRDA:37,3,1,9 BRDA:45,4,0,11 @@ -30871,12 +31284,12 @@ BRDA:47,5,0,4 BRDA:47,5,1,7 BRDA:47,6,0,11 BRDA:47,6,1,11 -BRDA:67,7,0,6526 +BRDA:67,7,0,6745 BRDA:67,7,1,11 -BRDA:67,8,0,6537 -BRDA:67,8,1,6530 +BRDA:67,8,0,6756 +BRDA:67,8,1,6749 BRDA:77,9,0,5 -BRDA:77,9,1,6532 +BRDA:77,9,1,6751 BRDA:84,10,0,3 BRDA:84,10,1,3 BRDA:84,10,2,3 @@ -30888,36 +31301,36 @@ SF:packages/roosterjs-editor-core/lib/coreApi/focus.ts FN:10,(anonymous_0) FNF:1 FNH:1 -FNDA:311,(anonymous_0) +FNDA:440,(anonymous_0) DA:1,1 DA:10,1 -DA:11,311 -DA:12,311 -DA:23,175 -DA:27,174 -DA:28,174 -DA:37,311 -DA:38,311 -DA:42,311 -DA:43,2 +DA:11,440 +DA:12,440 +DA:23,185 +DA:27,184 +DA:28,184 +DA:37,440 +DA:38,440 +DA:42,440 +DA:43,1 LF:11 LH:11 -BRDA:11,0,0,311 +BRDA:11,0,0,440 BRDA:11,0,1,0 -BRDA:12,1,0,175 -BRDA:12,1,1,136 -BRDA:13,2,0,311 -BRDA:13,2,1,136 -BRDA:23,3,0,174 +BRDA:12,1,0,185 +BRDA:12,1,1,255 +BRDA:13,2,0,440 +BRDA:13,2,1,255 +BRDA:23,3,0,184 BRDA:23,3,1,1 -BRDA:24,4,0,175 +BRDA:24,4,0,185 BRDA:24,4,1,2 -BRDA:27,5,0,174 +BRDA:27,5,0,184 BRDA:27,5,1,7 -BRDA:37,6,0,311 +BRDA:37,6,0,440 BRDA:37,6,1,0 -BRDA:42,7,0,2 -BRDA:42,7,1,309 +BRDA:42,7,0,1 +BRDA:42,7,1,439 BRF:16 BRH:14 end_of_record @@ -30927,62 +31340,62 @@ FN:19,(anonymous_0) FN:81,cloneNode FNF:2 FNH:2 -FNDA:128,(anonymous_0) -FNDA:127,cloneNode +FNDA:194,(anonymous_0) +FNDA:193,cloneNode DA:3,1 DA:19,1 -DA:23,128 -DA:24,128 -DA:25,128 -DA:29,128 -DA:31,128 +DA:23,194 +DA:24,194 +DA:25,194 +DA:29,194 +DA:31,194 DA:32,1 -DA:33,127 +DA:33,193 DA:34,0 -DA:36,127 -DA:37,127 -DA:39,127 -DA:40,127 -DA:47,127 -DA:49,127 -DA:59,127 -DA:60,121 -DA:69,121 +DA:36,193 +DA:37,193 +DA:39,193 +DA:40,193 +DA:47,193 +DA:49,193 +DA:59,193 +DA:60,187 +DA:69,187 DA:70,6 DA:72,3 DA:74,3 -DA:78,128 -DA:83,127 +DA:78,194 +DA:83,193 DA:84,2 DA:85,2 -DA:87,125 -DA:90,127 +DA:87,191 +DA:90,193 LF:28 LH:27 -BRDA:29,0,0,128 -BRDA:29,0,1,126 +BRDA:29,0,0,194 +BRDA:29,0,1,192 BRDA:31,1,0,1 -BRDA:31,1,1,127 +BRDA:31,1,1,193 BRDA:33,2,0,0 -BRDA:33,2,1,127 -BRDA:41,3,0,124 +BRDA:33,2,1,193 +BRDA:41,3,0,190 BRDA:41,3,1,3 BRDA:43,4,0,1 BRDA:43,4,1,2 BRDA:45,5,0,2 BRDA:45,5,1,0 -BRDA:47,6,0,127 +BRDA:47,6,0,193 BRDA:47,6,1,3 -BRDA:59,7,0,121 +BRDA:59,7,0,187 BRDA:59,7,1,6 BRDA:70,8,0,3 BRDA:70,8,1,3 -BRDA:78,9,0,128 +BRDA:78,9,0,194 BRDA:78,9,1,0 -BRDA:78,10,0,128 -BRDA:78,10,1,128 +BRDA:78,10,0,194 +BRDA:78,10,1,194 BRDA:83,11,0,2 -BRDA:83,11,1,125 +BRDA:83,11,1,191 BRF:24 BRH:21 end_of_record @@ -31135,46 +31548,46 @@ SF:packages/roosterjs-editor-core/lib/coreApi/getSelectionRange.ts FN:11,(anonymous_0) FNF:1 FNH:1 -FNDA:1047,(anonymous_0) +FNDA:1095,(anonymous_0) DA:1,1 DA:11,1 -DA:15,1047 -DA:17,1047 +DA:15,1095 +DA:17,1095 DA:18,0 DA:26,0 -DA:28,1047 -DA:29,953 -DA:30,953 -DA:31,953 -DA:32,953 -DA:33,942 -DA:38,1047 -DA:39,96 -DA:42,1047 +DA:28,1095 +DA:29,1014 +DA:30,1014 +DA:31,1014 +DA:32,1014 +DA:33,1013 +DA:38,1095 +DA:39,81 +DA:42,1095 LF:15 LH:13 BRDA:17,0,0,0 -BRDA:17,0,1,1047 +BRDA:17,0,1,1095 BRDA:19,1,0,0 BRDA:19,1,1,0 -BRDA:28,2,0,953 -BRDA:28,2,1,94 -BRDA:28,3,0,1047 -BRDA:28,3,1,585 +BRDA:28,2,0,1014 +BRDA:28,2,1,81 +BRDA:28,3,0,1095 +BRDA:28,3,1,816 BRDA:29,4,0,0 -BRDA:29,4,1,953 -BRDA:29,5,0,953 -BRDA:29,5,1,953 -BRDA:30,6,0,953 +BRDA:29,4,1,1014 +BRDA:29,5,0,1014 +BRDA:29,5,1,1014 +BRDA:30,6,0,1014 BRDA:30,6,1,0 -BRDA:30,7,0,953 -BRDA:30,7,1,953 -BRDA:32,8,0,942 -BRDA:32,8,1,11 -BRDA:38,9,0,96 -BRDA:38,9,1,951 -BRDA:38,10,0,1047 -BRDA:38,10,1,105 +BRDA:30,7,0,1014 +BRDA:30,7,1,1014 +BRDA:32,8,0,1013 +BRDA:32,8,1,1 +BRDA:38,9,0,81 +BRDA:38,9,1,1014 +BRDA:38,10,0,1095 +BRDA:38,10,1,82 BRF:22 BRH:17 end_of_record @@ -31188,16 +31601,16 @@ FN:99,checkAllCollapsed FN:100,(anonymous_5) FNF:6 FNH:5 -FNDA:7473,(anonymous_0) +FNDA:7967,(anonymous_0) FNDA:3,(anonymous_1) FNDA:0,(anonymous_2) -FNDA:7307,createNormalSelectionEx -FNDA:7308,checkAllCollapsed -FNDA:603,(anonymous_5) +FNDA:7831,createNormalSelectionEx +FNDA:7832,checkAllCollapsed +FNDA:906,(anonymous_5) DA:1,1 DA:11,1 -DA:12,7473 -DA:13,7473 +DA:12,7967 +DA:13,7967 DA:15,2 DA:16,2 DA:17,2 @@ -31212,23 +31625,23 @@ DA:38,0 DA:40,0 DA:53,1 DA:60,1 -DA:63,7471 -DA:64,732 +DA:63,7965 +DA:64,1035 DA:65,104 -DA:68,628 +DA:68,931 DA:69,30 -DA:72,598 -DA:73,598 -DA:74,598 -DA:75,598 -DA:76,598 -DA:81,6739 -DA:92,7307 -DA:100,7308 +DA:72,901 +DA:73,901 +DA:74,901 +DA:75,901 +DA:76,901 +DA:81,6930 +DA:92,7831 +DA:100,7832 LF:31 LH:28 BRDA:13,0,0,2 -BRDA:13,0,1,7471 +BRDA:13,0,1,7965 BRDA:20,1,0,1 BRDA:20,1,1,1 BRDA:20,2,0,2 @@ -31249,37 +31662,37 @@ BRDA:53,9,0,1 BRDA:53,9,1,1 BRDA:60,10,0,1 BRDA:60,10,1,0 -BRDA:63,11,0,732 -BRDA:63,11,1,6739 +BRDA:63,11,0,1035 +BRDA:63,11,1,6930 BRDA:64,12,0,104 -BRDA:64,12,1,628 +BRDA:64,12,1,931 BRDA:68,13,0,30 -BRDA:68,13,1,598 +BRDA:68,13,1,901 BRDA:72,14,0,0 -BRDA:72,14,1,598 -BRDA:72,15,0,598 -BRDA:72,15,1,598 -BRDA:73,16,0,598 +BRDA:72,14,1,901 +BRDA:72,15,0,901 +BRDA:72,15,1,901 +BRDA:73,16,0,901 BRDA:73,16,1,0 -BRDA:73,17,0,598 -BRDA:73,17,1,598 -BRDA:73,17,2,598 -BRDA:75,18,0,598 +BRDA:73,17,0,901 +BRDA:73,17,1,901 +BRDA:73,17,2,901 +BRDA:75,18,0,901 BRDA:75,18,1,0 -BRDA:83,19,0,31 -BRDA:83,19,1,6708 -BRDA:82,20,0,6739 -BRDA:82,20,1,31 +BRDA:83,19,0,1 +BRDA:83,19,1,6929 +BRDA:82,20,0,6930 +BRDA:82,20,1,1 BRDA:82,21,0,0 -BRDA:82,21,1,6739 -BRDA:82,22,0,6739 +BRDA:82,21,1,6930 +BRDA:82,22,0,6930 BRDA:82,22,1,0 BRDA:85,23,0,1 -BRDA:85,23,1,6707 +BRDA:85,23,1,6928 BRDA:100,24,0,0 -BRDA:100,24,1,603 -BRDA:100,25,0,603 -BRDA:100,25,1,603 +BRDA:100,24,1,906 +BRDA:100,25,0,906 +BRDA:100,25,1,906 BRF:53 BRH:43 end_of_record @@ -31358,15 +31771,15 @@ SF:packages/roosterjs-editor-core/lib/coreApi/hasFocus.ts FN:10,(anonymous_0) FNF:1 FNH:1 -FNDA:9441,(anonymous_0) +FNDA:10556,(anonymous_0) DA:1,1 DA:10,1 -DA:11,9441 -DA:12,9441 +DA:11,10556 +DA:12,10556 LF:4 LH:4 -BRDA:13,0,0,9441 -BRDA:13,0,1,9441 +BRDA:13,0,0,10556 +BRDA:13,0,1,10556 BRF:2 BRH:2 end_of_record @@ -31378,36 +31791,36 @@ FN:84,(anonymous_2) FN:202,adjustInsertPositionRegionRoot FN:226,adjustInsertPositionNewLine FNF:5 -FNH:4 -FNDA:26,getInitialRange -FNDA:6575,(anonymous_1) -FNDA:6574,(anonymous_2) +FNH:5 +FNDA:47,getInitialRange +FNDA:6815,(anonymous_1) +FNDA:6814,(anonymous_2) FNDA:1,adjustInsertPositionRegionRoot -FNDA:0,adjustInsertPositionNewLine +FNDA:5,adjustInsertPositionNewLine DA:15,1 -DA:39,26 -DA:40,26 -DA:41,26 -DA:42,10 -DA:43,10 -DA:44,16 -DA:45,15 -DA:48,26 +DA:39,47 +DA:40,47 +DA:41,47 +DA:42,14 +DA:43,14 +DA:44,33 +DA:45,32 +DA:48,47 DA:57,1 -DA:62,6575 -DA:69,6575 -DA:71,6575 -DA:72,33 -DA:75,6575 +DA:62,6815 +DA:69,6815 +DA:71,6815 +DA:72,46 +DA:75,6815 DA:76,1 DA:77,1 -DA:80,6574 -DA:85,6574 +DA:80,6814 +DA:85,6814 DA:86,0 -DA:88,6574 -DA:91,6545 -DA:92,6545 -DA:94,6545 +DA:88,6814 +DA:91,6764 +DA:92,6764 +DA:94,6764 DA:95,18 DA:96,18 DA:104,5 @@ -31415,37 +31828,37 @@ DA:107,0 DA:108,0 DA:113,5 DA:121,13 -DA:128,6527 -DA:133,6545 +DA:128,6746 +DA:133,6764 DA:134,1 DA:135,1 DA:136,1 -DA:140,6545 +DA:140,6764 DA:144,3 DA:147,3 DA:148,0 DA:150,3 -DA:153,26 -DA:154,26 +DA:153,47 +DA:154,47 DA:155,1 -DA:159,25 -DA:160,12 -DA:163,25 -DA:164,25 -DA:166,25 +DA:159,46 +DA:160,17 +DA:163,46 +DA:164,46 +DA:166,46 DA:167,1 -DA:168,24 -DA:172,0 -DA:174,24 -DA:178,25 -DA:180,25 -DA:181,25 -DA:183,25 -DA:184,23 -DA:189,25 -DA:190,25 -DA:193,25 -DA:199,6574 +DA:168,45 +DA:172,5 +DA:174,40 +DA:178,46 +DA:180,46 +DA:181,46 +DA:183,46 +DA:184,36 +DA:189,46 +DA:190,46 +DA:193,46 +DA:199,6814 DA:203,1 DA:204,1 DA:206,1 @@ -31458,38 +31871,38 @@ DA:214,2 DA:218,1 DA:219,1 DA:223,1 -DA:227,0 -DA:228,0 -DA:229,0 -DA:230,0 -DA:231,0 -DA:232,0 -DA:234,0 +DA:227,5 +DA:228,5 +DA:229,3 +DA:230,3 +DA:231,3 +DA:232,3 +DA:234,5 LF:81 -LH:69 -BRDA:41,0,0,10 -BRDA:41,0,1,16 -BRDA:44,1,0,15 +LH:77 +BRDA:41,0,0,14 +BRDA:41,0,1,33 +BRDA:44,1,0,32 BRDA:44,1,1,1 -BRDA:62,2,0,6575 -BRDA:62,2,1,13 -BRDA:71,3,0,33 -BRDA:71,3,1,6542 +BRDA:62,2,0,6815 +BRDA:62,2,1,17 +BRDA:71,3,0,46 +BRDA:71,3,1,6769 BRDA:75,4,0,1 -BRDA:75,4,1,6574 +BRDA:75,4,1,6814 BRDA:76,5,0,0 BRDA:76,5,1,1 BRDA:76,6,0,1 BRDA:76,6,1,1 BRDA:85,7,0,0 -BRDA:85,7,1,6574 +BRDA:85,7,1,6814 BRDA:89,8,0,15 -BRDA:89,8,1,6545 +BRDA:89,8,1,6764 BRDA:89,8,2,3 -BRDA:89,8,3,10 -BRDA:89,8,4,26 +BRDA:89,8,3,14 +BRDA:89,8,4,47 BRDA:94,9,0,18 -BRDA:94,9,1,6527 +BRDA:94,9,1,6746 BRDA:95,10,0,14 BRDA:95,10,1,4 BRDA:96,11,0,5 @@ -31514,9 +31927,9 @@ BRDA:115,19,1,1 BRDA:123,20,0,10 BRDA:123,20,1,3 BRDA:133,21,0,1 -BRDA:133,21,1,6544 -BRDA:133,22,0,6545 -BRDA:133,22,1,6545 +BRDA:133,21,1,6763 +BRDA:133,22,0,6764 +BRDA:133,22,1,6764 BRDA:134,23,0,0 BRDA:134,23,1,1 BRDA:135,24,0,1 @@ -31529,26 +31942,26 @@ BRDA:147,27,0,3 BRDA:147,27,1,3 BRDA:147,27,2,2 BRDA:154,28,0,1 -BRDA:154,28,1,25 -BRDA:159,29,0,12 -BRDA:159,29,1,13 -BRDA:159,30,0,25 -BRDA:159,30,1,25 +BRDA:154,28,1,46 +BRDA:159,29,0,17 +BRDA:159,29,1,29 +BRDA:159,30,0,46 +BRDA:159,30,1,36 BRDA:166,31,0,1 -BRDA:166,31,1,24 -BRDA:166,32,0,25 -BRDA:166,32,1,1 -BRDA:168,33,0,0 -BRDA:168,33,1,24 -BRDA:169,34,0,24 -BRDA:169,34,1,0 -BRDA:178,35,0,6 -BRDA:178,35,1,19 -BRDA:183,36,0,23 -BRDA:183,36,1,2 -BRDA:183,37,0,25 -BRDA:183,37,1,23 -BRDA:189,38,0,25 +BRDA:166,31,1,45 +BRDA:166,32,0,46 +BRDA:166,32,1,6 +BRDA:168,33,0,5 +BRDA:168,33,1,40 +BRDA:169,34,0,45 +BRDA:169,34,1,5 +BRDA:178,35,0,11 +BRDA:178,35,1,35 +BRDA:183,36,0,36 +BRDA:183,36,1,10 +BRDA:183,37,0,46 +BRDA:183,37,1,36 +BRDA:189,38,0,46 BRDA:189,38,1,0 BRDA:206,39,0,1 BRDA:206,39,1,0 @@ -31562,10 +31975,10 @@ BRDA:212,43,0,3 BRDA:212,43,1,3 BRDA:218,44,0,1 BRDA:218,44,1,0 -BRDA:228,45,0,0 -BRDA:228,45,1,0 +BRDA:228,45,0,3 +BRDA:228,45,1,2 BRF:97 -BRH:74 +BRH:78 end_of_record TN: SF:packages/roosterjs-editor-core/lib/coreApi/restoreUndoSnapshot.ts @@ -31633,36 +32046,36 @@ FN:164,isSelectionPath FN:170,isNodePosition FNF:7 FNH:7 -FNDA:7048,(anonymous_0) -FNDA:7048,buildRangeEx -FNDA:447,applyRangeEx -FNDA:7048,isSelectionRangeEx +FNDA:7357,(anonymous_0) +FNDA:7357,buildRangeEx +FNDA:549,applyRangeEx +FNDA:7357,isSelectionRangeEx FNDA:70,isTableSelectionOrNull -FNDA:202,isSelectionPath -FNDA:202,isNodePosition +FNDA:283,isSelectionPath +FNDA:283,isNodePosition DA:1,1 DA:23,1 -DA:24,7048 -DA:26,7048 -DA:27,447 -DA:31,447 -DA:33,447 -DA:34,447 -DA:36,447 -DA:39,6601 -DA:40,6601 -DA:43,7048 -DA:53,7048 -DA:55,7048 +DA:24,7357 +DA:26,7357 +DA:27,549 +DA:31,549 +DA:33,549 +DA:34,549 +DA:36,549 +DA:39,6808 +DA:40,6808 +DA:43,7357 +DA:53,7357 +DA:55,7357 DA:56,3 -DA:57,7045 +DA:57,7354 DA:58,69 -DA:65,6976 +DA:65,7285 DA:66,56 -DA:73,6920 -DA:88,6920 -DA:97,7048 -DA:101,447 +DA:73,7229 +DA:88,7229 +DA:97,7357 +DA:101,549 DA:103,72 DA:104,72 DA:105,72 @@ -31673,83 +32086,83 @@ DA:115,56 DA:116,56 DA:117,56 DA:119,56 -DA:121,319 -DA:122,319 -DA:124,319 -DA:125,319 -DA:127,0 -DA:129,319 -DA:132,447 -DA:143,7048 -DA:144,7048 +DA:121,421 +DA:122,421 +DA:124,421 +DA:125,419 +DA:127,2 +DA:129,421 +DA:132,549 +DA:143,7357 +DA:144,7357 DA:153,70 DA:155,70 -DA:165,202 -DA:167,202 -DA:171,202 -DA:173,202 +DA:165,283 +DA:167,283 +DA:171,283 +DA:173,283 LF:48 -LH:47 -BRDA:26,0,0,447 -BRDA:26,0,1,6601 +LH:48 +BRDA:26,0,0,549 +BRDA:26,0,1,6808 BRDA:55,1,0,3 -BRDA:55,1,1,7045 +BRDA:55,1,1,7354 BRDA:57,2,0,69 -BRDA:57,2,1,6976 -BRDA:57,3,0,7045 +BRDA:57,2,1,7285 +BRDA:57,3,0,7354 BRDA:57,3,1,70 BRDA:63,4,0,66 BRDA:63,4,1,3 BRDA:63,5,0,69 BRDA:63,5,1,66 BRDA:65,6,0,56 -BRDA:65,6,1,6920 -BRDA:65,7,0,6976 +BRDA:65,6,1,7229 +BRDA:65,7,0,7285 BRDA:65,7,1,58 -BRDA:74,8,0,6601 -BRDA:74,8,1,319 -BRDA:76,9,0,117 -BRDA:76,9,1,202 +BRDA:74,8,0,6808 +BRDA:74,8,1,421 +BRDA:76,9,0,138 +BRDA:76,9,1,283 BRDA:78,10,0,0 -BRDA:78,10,1,202 -BRDA:80,11,0,202 +BRDA:78,10,1,283 +BRDA:80,11,0,283 BRDA:80,11,1,0 -BRDA:79,12,0,202 -BRDA:79,12,1,132 -BRDA:89,13,0,319 -BRDA:89,13,1,6601 +BRDA:79,12,0,283 +BRDA:79,12,1,193 +BRDA:89,13,0,421 +BRDA:89,13,1,6808 BRDA:102,14,0,72 BRDA:102,14,1,56 -BRDA:102,14,2,319 +BRDA:102,14,2,421 BRDA:101,15,0,0 -BRDA:101,15,1,447 -BRDA:101,16,0,447 -BRDA:101,16,1,447 +BRDA:101,15,1,549 +BRDA:101,16,0,549 +BRDA:101,16,1,549 BRDA:103,17,0,72 BRDA:103,17,1,0 BRDA:114,18,0,56 BRDA:114,18,1,0 -BRDA:124,19,0,319 -BRDA:124,19,1,0 -BRDA:145,20,0,7048 -BRDA:145,20,1,447 -BRDA:145,20,2,447 +BRDA:124,19,0,419 +BRDA:124,19,1,2 +BRDA:145,20,0,7357 +BRDA:145,20,1,549 +BRDA:145,20,2,549 BRDA:145,20,3,3 BRDA:156,21,0,70 BRDA:156,21,1,67 BRDA:156,21,2,67 BRDA:156,21,3,66 BRDA:156,21,4,66 -BRDA:167,22,0,202 -BRDA:167,22,1,202 -BRDA:167,22,2,202 +BRDA:167,22,0,283 +BRDA:167,22,1,283 +BRDA:167,22,2,283 BRDA:167,22,3,0 -BRDA:174,23,0,202 -BRDA:174,23,1,202 -BRDA:174,23,2,202 -BRDA:174,23,3,70 +BRDA:174,23,0,283 +BRDA:174,23,1,283 +BRDA:174,23,2,283 +BRDA:174,23,3,90 BRF:58 -BRH:51 +BRH:52 end_of_record TN: SF:packages/roosterjs-editor-core/lib/coreApi/selectImage.ts @@ -31759,10 +32172,10 @@ FN:55,(anonymous_2) FN:62,(anonymous_3) FNF:4 FNH:4 -FNDA:7152,(anonymous_0) +FNDA:7462,(anonymous_0) FNDA:60,(anonymous_1) FNDA:60,(anonymous_2) -FNDA:7152,(anonymous_3) +FNDA:7462,(anonymous_3) DA:1,1 DA:3,1 DA:12,1 @@ -31770,16 +32183,16 @@ DA:13,1 DA:14,1 DA:15,1 DA:23,1 -DA:24,7152 -DA:26,7152 -DA:28,7152 +DA:24,7462 +DA:26,7462 +DA:28,7462 DA:29,60 DA:31,60 DA:32,60 DA:34,60 DA:36,60 DA:38,60 -DA:46,7152 +DA:46,7462 DA:49,1 DA:50,60 DA:51,60 @@ -31789,12 +32202,12 @@ DA:56,60 DA:57,60 DA:59,60 DA:62,1 -DA:63,7152 -DA:64,7152 +DA:63,7462 +DA:64,7462 LF:28 LH:28 BRDA:28,0,0,60 -BRDA:28,0,1,7092 +BRDA:28,0,1,7402 BRDA:57,1,0,60 BRDA:57,1,1,60 BRF:4 @@ -31807,22 +32220,22 @@ FN:48,restorePendingFormatState FN:58,(anonymous_2) FNF:3 FNH:3 -FNDA:762,(anonymous_0) -FNDA:618,restorePendingFormatState +FNDA:894,(anonymous_0) +FNDA:666,restorePendingFormatState FNDA:6,(anonymous_2) DA:1,1 DA:3,1 DA:21,1 -DA:26,762 -DA:27,758 -DA:29,758 -DA:30,56 -DA:33,758 -DA:36,618 -DA:39,758 +DA:26,894 +DA:27,890 +DA:29,890 +DA:30,50 +DA:33,890 +DA:36,666 +DA:39,890 DA:41,4 -DA:53,1854 -DA:55,618 +DA:53,1998 +DA:55,666 DA:56,1 DA:57,1 DA:58,1 @@ -31834,16 +32247,16 @@ DA:70,1 DA:71,1 LF:22 LH:22 -BRDA:26,0,0,758 +BRDA:26,0,0,890 BRDA:26,0,1,4 -BRDA:26,1,0,762 -BRDA:26,1,1,762 -BRDA:29,2,0,56 -BRDA:29,2,1,702 -BRDA:33,3,0,618 -BRDA:33,3,1,140 +BRDA:26,1,0,894 +BRDA:26,1,1,894 +BRDA:29,2,0,50 +BRDA:29,2,1,840 +BRDA:33,3,0,666 +BRDA:33,3,1,224 BRDA:55,4,0,1 -BRDA:55,4,1,617 +BRDA:55,4,1,665 BRDA:59,5,0,1 BRDA:59,5,1,5 BRDA:59,6,0,0 @@ -31879,7 +32292,7 @@ FN:261,isValidCoordinate FN:265,isMergedCell FNF:18 FNH:18 -FNDA:7166,(anonymous_0) +FNDA:7476,(anonymous_0) FNDA:152,(anonymous_1) FNDA:79,buildCss FNDA:24,handleAllTableSelected @@ -31890,10 +32303,10 @@ FNDA:220,(anonymous_7) FNDA:220,(anonymous_8) FNDA:79,select FNDA:85,(anonymous_10) -FNDA:7166,(anonymous_11) +FNDA:7476,(anonymous_11) FNDA:660,generateCssFromCell FNDA:660,removeImportant -FNDA:7166,areValidCoordinates +FNDA:7476,areValidCoordinates FNDA:165,(anonymous_15) FNDA:327,isValidCoordinate FNDA:79,isMergedCell @@ -31905,8 +32318,8 @@ DA:18,1 DA:20,1 DA:21,1 DA:32,1 -DA:37,7166 -DA:39,7166 +DA:37,7476 +DA:39,7476 DA:40,79 DA:41,79 DA:43,79 @@ -31916,7 +32329,7 @@ DA:49,79 DA:50,79 DA:57,79 DA:61,152 -DA:67,7087 +DA:67,7397 DA:75,79 DA:76,79 DA:78,79 @@ -31981,26 +32394,26 @@ DA:207,79 DA:208,85 DA:211,79 DA:214,1 -DA:215,7166 -DA:216,7166 +DA:215,7476 +DA:216,7476 DA:227,660 DA:243,660 DA:244,660 -DA:249,7166 +DA:249,7476 DA:250,86 DA:251,86 DA:252,84 DA:253,165 DA:254,84 -DA:258,7082 +DA:258,7392 DA:262,327 DA:266,79 DA:267,79 LF:99 LH:99 BRDA:39,0,0,79 -BRDA:39,0,1,7087 -BRDA:39,1,0,7166 +BRDA:39,0,1,7397 +BRDA:39,1,0,7476 BRDA:39,1,1,79 BRDA:44,2,0,79 BRDA:44,2,1,0 @@ -32059,7 +32472,7 @@ BRDA:187,27,1,128 BRDA:243,28,0,660 BRDA:243,28,1,0 BRDA:249,29,0,86 -BRDA:249,29,1,7080 +BRDA:249,29,1,7390 BRDA:250,30,0,86 BRDA:250,30,1,0 BRDA:251,31,0,84 @@ -32088,37 +32501,37 @@ FN:25,(anonymous_0) FN:84,selectContentMetadata FNF:2 FNH:2 -FNDA:6930,(anonymous_0) -FNDA:396,selectContentMetadata +FNDA:7227,(anonymous_0) +FNDA:474,selectContentMetadata DA:7,1 DA:25,1 -DA:31,6930 -DA:32,6930 -DA:33,396 -DA:42,396 -DA:43,396 -DA:44,396 -DA:49,396 -DA:51,396 -DA:52,396 -DA:53,396 -DA:54,396 -DA:57,6930 -DA:59,6930 +DA:31,7227 +DA:32,7227 +DA:33,474 +DA:42,474 +DA:43,474 +DA:44,474 +DA:49,474 +DA:51,474 +DA:52,474 +DA:53,474 +DA:54,474 +DA:57,7227 +DA:59,7227 DA:60,5 DA:69,5 -DA:72,6930 -DA:73,390 -DA:85,396 -DA:86,101 -DA:87,101 -DA:88,101 -DA:90,101 -DA:92,100 -DA:93,100 -DA:95,100 -DA:96,100 -DA:97,100 +DA:72,7227 +DA:73,468 +DA:85,474 +DA:86,102 +DA:87,102 +DA:88,102 +DA:90,102 +DA:92,101 +DA:93,101 +DA:95,101 +DA:96,101 +DA:97,101 DA:99,0 DA:104,0 DA:105,0 @@ -32129,41 +32542,41 @@ DA:115,0 DA:117,0 LF:37 LH:29 -BRDA:32,0,0,396 -BRDA:32,0,1,6534 -BRDA:43,1,0,396 +BRDA:32,0,0,474 +BRDA:32,0,1,6753 +BRDA:43,1,0,474 BRDA:43,1,1,17 -BRDA:45,2,0,396 +BRDA:45,2,0,474 BRDA:45,2,1,0 -BRDA:45,3,0,396 -BRDA:45,3,1,396 +BRDA:45,3,0,474 +BRDA:45,3,1,474 BRDA:45,4,0,0 -BRDA:45,4,1,396 -BRDA:45,5,0,396 -BRDA:45,5,1,396 -BRDA:52,6,0,396 -BRDA:52,6,1,393 +BRDA:45,4,1,474 +BRDA:45,5,0,474 +BRDA:45,5,1,474 +BRDA:52,6,0,474 +BRDA:52,6,1,471 BRDA:59,7,0,5 -BRDA:59,7,1,6925 -BRDA:59,8,0,6930 -BRDA:59,8,1,6829 -BRDA:59,8,2,6928 -BRDA:59,8,3,101 +BRDA:59,7,1,7222 +BRDA:59,8,0,7227 +BRDA:59,8,1,7125 +BRDA:59,8,2,7225 +BRDA:59,8,3,102 BRDA:65,9,0,5 BRDA:65,9,1,0 BRDA:67,10,0,2 BRDA:67,10,1,3 BRDA:67,11,0,5 BRDA:67,11,1,5 -BRDA:72,12,0,390 -BRDA:72,12,1,6540 -BRDA:72,13,0,6930 -BRDA:72,13,1,402 -BRDA:85,14,0,101 -BRDA:85,14,1,295 -BRDA:85,15,0,396 -BRDA:85,15,1,396 -BRDA:91,16,0,100 +BRDA:72,12,0,468 +BRDA:72,12,1,6759 +BRDA:72,13,0,7227 +BRDA:72,13,1,480 +BRDA:85,14,0,102 +BRDA:85,14,1,372 +BRDA:85,15,0,474 +BRDA:85,15,1,474 +BRDA:91,16,0,101 BRDA:91,16,1,0 BRDA:91,16,2,0 BRDA:104,17,0,0 @@ -32255,52 +32668,52 @@ FN:45,iterateElements FN:66,isHTMLElement FNF:5 FNH:4 -FNDA:6717,(anonymous_0) +FNDA:7021,(anonymous_0) FNDA:0,(anonymous_1) -FNDA:505,(anonymous_2) -FNDA:904,iterateElements -FNDA:772,isHTMLElement +FNDA:843,(anonymous_2) +FNDA:1459,iterateElements +FNDA:1261,isHTMLElement DA:16,1 -DA:23,13300 -DA:28,13434 -DA:29,6717 -DA:30,6717 -DA:31,140 +DA:23,13843 +DA:28,14042 +DA:29,7021 +DA:30,7021 +DA:31,204 DA:33,0 -DA:36,505 -DA:39,140 -DA:42,6717 -DA:50,904 -DA:51,8 -DA:54,904 -DA:55,764 -DA:56,497 -DA:59,764 -DA:67,772 -DA:68,772 +DA:36,843 +DA:39,204 +DA:42,7021 +DA:50,1459 +DA:51,6 +DA:54,1459 +DA:55,1255 +DA:56,837 +DA:59,1255 +DA:67,1261 +DA:68,1261 LF:18 LH:17 -BRDA:23,0,0,6583 -BRDA:23,0,1,134 -BRDA:30,1,0,140 -BRDA:30,1,1,6577 -BRDA:30,2,0,6717 -BRDA:30,2,1,6715 -BRDA:30,2,2,6575 +BRDA:23,0,0,6822 +BRDA:23,0,1,199 +BRDA:30,1,0,204 +BRDA:30,1,1,6817 +BRDA:30,2,0,7021 +BRDA:30,2,1,7019 +BRDA:30,2,2,6815 BRDA:32,3,0,1 -BRDA:32,3,1,139 -BRDA:42,4,0,141 -BRDA:42,4,1,6576 -BRDA:42,5,0,6717 -BRDA:42,5,1,6576 -BRDA:50,6,0,8 -BRDA:50,6,1,896 -BRDA:50,7,0,904 -BRDA:50,7,1,8 -BRDA:55,8,0,497 -BRDA:55,8,1,267 -BRDA:68,9,0,772 -BRDA:68,9,1,505 +BRDA:32,3,1,203 +BRDA:42,4,0,205 +BRDA:42,4,1,6816 +BRDA:42,5,0,7021 +BRDA:42,5,1,6816 +BRDA:50,6,0,6 +BRDA:50,6,1,1453 +BRDA:50,7,0,1459 +BRDA:50,7,1,6 +BRDA:55,8,0,837 +BRDA:55,8,1,418 +BRDA:68,9,0,1261 +BRDA:68,9,1,843 BRF:21 BRH:21 end_of_record @@ -32312,39 +32725,39 @@ FN:29,(anonymous_2) FN:37,handledExclusively FNF:4 FNH:4 -FNDA:14708,(anonymous_0) -FNDA:5656,(anonymous_1) -FNDA:161465,(anonymous_2) -FNDA:5656,handledExclusively +FNDA:15577,(anonymous_0) +FNDA:6740,(anonymous_1) +FNDA:171001,(anonymous_2) +FNDA:6740,handledExclusively DA:5,1 DA:19,1 -DA:24,14708 -DA:27,5656 -DA:29,14706 -DA:30,161465 -DA:31,132233 -DA:38,5656 +DA:24,15577 +DA:27,6740 +DA:29,15575 +DA:30,171001 +DA:31,140031 +DA:38,6740 DA:39,1 DA:40,1 -DA:43,5655 +DA:43,6739 LF:11 LH:11 -BRDA:24,0,0,14706 +BRDA:24,0,0,15575 BRDA:24,0,1,2 -BRDA:25,1,0,14708 +BRDA:25,1,0,15577 BRDA:25,1,1,2 -BRDA:25,1,2,14707 -BRDA:25,1,3,543 -BRDA:30,2,0,132233 -BRDA:30,2,1,29232 +BRDA:25,1,2,15576 +BRDA:25,1,3,642 +BRDA:30,2,0,140031 +BRDA:30,2,1,30970 BRDA:38,3,0,1 -BRDA:38,3,1,5655 -BRDA:38,4,0,5656 -BRDA:38,4,1,4666 -BRDA:38,5,0,4166 -BRDA:38,5,1,500 -BRDA:38,6,0,4666 -BRDA:38,6,1,4666 +BRDA:38,3,1,6739 +BRDA:38,4,0,6740 +BRDA:38,4,1,5552 +BRDA:38,5,0,4953 +BRDA:38,5,1,599 +BRDA:38,6,0,5552 +BRDA:38,6,1,5552 BRF:16 BRH:16 end_of_record @@ -32413,18 +32826,18 @@ FN:292,(anonymous_25) FNF:26 FNH:18 FNDA:1,(anonymous_0) -FNDA:6718,CopyPastePlugin +FNDA:6945,CopyPastePlugin FNDA:2,(anonymous_2) FNDA:2,(anonymous_3) FNDA:0,(anonymous_4) FNDA:0,(anonymous_5) FNDA:2,(anonymous_6) -FNDA:6531,(anonymous_7) +FNDA:6750,(anonymous_7) FNDA:2,(anonymous_8) FNDA:2,(anonymous_9) FNDA:2,(anonymous_10) -FNDA:6513,(anonymous_11) -FNDA:6708,(anonymous_12) +FNDA:6720,(anonymous_11) +FNDA:6935,(anonymous_12) FNDA:4,(anonymous_13) FNDA:3,(anonymous_14) FNDA:2,(anonymous_15) @@ -32442,25 +32855,25 @@ DA:1,1 DA:2,1 DA:3,1 DA:35,1 -DA:36,6718 -DA:37,6718 -DA:44,6718 -DA:45,6718 +DA:36,6945 +DA:37,6945 +DA:44,6945 +DA:45,6945 DA:53,1 DA:54,2 -DA:61,6531 -DA:62,6531 -DA:63,6531 +DA:61,6750 +DA:62,6750 +DA:63,6750 DA:64,2 DA:65,2 DA:66,2 DA:73,1 -DA:74,6513 -DA:75,6510 -DA:77,6513 -DA:78,6513 +DA:74,6720 +DA:75,6717 +DA:77,6720 +DA:78,6720 DA:84,1 -DA:85,6708 +DA:85,6935 DA:88,4 DA:89,4 DA:90,4 @@ -32492,7 +32905,7 @@ DA:150,2 DA:151,2 DA:152,2 DA:153,2 -DA:162,6718 +DA:162,6945 DA:163,2 DA:164,2 DA:165,2 @@ -32579,9 +32992,9 @@ BRDA:185,6,0,0 BRDA:185,6,1,2 BRDA:185,7,0,2 BRDA:185,7,1,0 -BRDA:46,8,0,6718 -BRDA:46,8,1,6718 -BRDA:74,9,0,6510 +BRDA:46,8,0,6945 +BRDA:46,8,1,6945 +BRDA:74,9,0,6717 BRDA:74,9,1,3 BRDA:89,10,0,4 BRDA:89,10,1,0 @@ -32691,104 +33104,104 @@ FN:194,(anonymous_20) FN:195,(anonymous_21) FN:245,isContextMenuProvider FNF:23 -FNH:17 +FNH:16 FNDA:1,(anonymous_0) -FNDA:6720,DOMEventPlugin +FNDA:6947,DOMEventPlugin FNDA:0,(anonymous_2) FNDA:1,(anonymous_3) FNDA:1,(anonymous_4) FNDA:0,(anonymous_5) -FNDA:311,(anonymous_6) +FNDA:215,(anonymous_6) FNDA:0,(anonymous_7) -FNDA:309,(anonymous_8) +FNDA:0,(anonymous_8) FNDA:0,(anonymous_9) FNDA:2,(anonymous_10) -FNDA:14,(anonymous_11) +FNDA:39,(anonymous_11) FNDA:0,(anonymous_12) FNDA:0,(anonymous_13) FNDA:2,(anonymous_14) -FNDA:6536,(anonymous_15) +FNDA:6755,(anonymous_15) FNDA:1,(anonymous_16) FNDA:1,(anonymous_17) -FNDA:6518,(anonymous_18) -FNDA:6720,(anonymous_19) -FNDA:26144,(anonymous_20) -FNDA:16,(anonymous_21) +FNDA:6725,(anonymous_18) +FNDA:6947,(anonymous_19) +FNDA:27020,(anonymous_20) +FNDA:41,(anonymous_21) FNDA:124,isContextMenuProvider DA:1,1 DA:25,1 -DA:26,6720 -DA:27,6720 -DA:35,6720 -DA:36,6720 +DA:26,6947 +DA:27,6947 +DA:35,6947 +DA:36,6947 DA:51,1 DA:52,2 -DA:59,6536 -DA:60,6536 -DA:62,6536 -DA:64,6536 +DA:59,6755 +DA:60,6755 +DA:62,6755 +DA:64,6755 DA:77,1 DA:79,1 DA:80,1 -DA:97,6536 +DA:97,6755 DA:98,0 -DA:99,6536 +DA:99,6755 DA:103,0 -DA:105,6536 -DA:108,6536 -DA:111,6536 -DA:112,6536 -DA:113,6536 +DA:105,6755 +DA:108,6755 +DA:111,6755 +DA:112,6755 +DA:113,6755 DA:119,1 -DA:120,6518 -DA:121,6518 +DA:120,6725 +DA:121,6725 DA:122,0 -DA:125,6518 -DA:126,6518 -DA:127,6518 -DA:128,6518 -DA:129,6518 -DA:130,6518 +DA:125,6725 +DA:126,6725 +DA:127,6725 +DA:128,6725 +DA:129,6725 +DA:130,6725 DA:136,1 -DA:137,6720 -DA:140,6720 +DA:137,6947 +DA:140,6947 DA:141,0 DA:142,0 DA:144,0 DA:145,0 -DA:148,6720 +DA:148,6947 DA:149,1 DA:150,1 -DA:154,6720 -DA:155,311 -DA:156,228 -DA:157,228 -DA:159,228 +DA:154,6947 +DA:155,215 +DA:156,137 +DA:157,137 +DA:159,137 DA:160,0 -DA:161,228 +DA:161,137 DA:162,0 -DA:163,228 +DA:163,137 DA:164,1 -DA:168,311 -DA:169,311 -DA:173,6720 +DA:168,215 +DA:169,215 +DA:173,6947 DA:176,0 DA:177,0 -DA:181,6720 -DA:182,309 -DA:183,307 -DA:187,6720 +DA:181,6947 +DA:182,0 +DA:183,0 +DA:187,6947 DA:188,0 -DA:194,26144 -DA:195,26144 -DA:196,16 -DA:200,26144 -DA:208,6720 +DA:194,27020 +DA:195,27020 +DA:196,41 +DA:200,27020 +DA:208,6947 DA:209,2 DA:212,1 -DA:216,6720 -DA:217,14 -DA:220,6720 +DA:216,6947 +DA:217,39 +DA:220,6947 DA:221,0 DA:222,0 DA:223,0 @@ -32805,7 +33218,7 @@ DA:238,0 DA:243,1 DA:246,124 LF:89 -LH:64 +LH:62 BRDA:142,0,0,0 BRDA:142,0,1,0 BRDA:142,1,0,0 @@ -32818,33 +33231,33 @@ BRDA:149,4,0,0 BRDA:149,4,1,1 BRDA:149,5,0,1 BRDA:149,5,1,1 -BRDA:155,6,0,228 -BRDA:155,6,1,83 -BRDA:156,7,0,228 -BRDA:156,7,1,228 -BRDA:157,8,0,228 -BRDA:157,8,1,228 +BRDA:155,6,0,137 +BRDA:155,6,1,78 +BRDA:156,7,0,137 +BRDA:156,7,1,137 +BRDA:157,8,0,137 +BRDA:157,8,1,137 BRDA:159,9,0,0 -BRDA:159,9,1,228 -BRDA:159,10,0,228 +BRDA:159,9,1,137 +BRDA:159,10,0,137 BRDA:159,10,1,0 BRDA:160,11,0,0 BRDA:160,11,1,0 BRDA:160,12,0,0 BRDA:160,12,1,0 BRDA:161,13,0,0 -BRDA:161,13,1,228 +BRDA:161,13,1,137 BRDA:162,14,0,0 BRDA:162,14,1,0 BRDA:162,15,0,0 BRDA:162,15,1,0 BRDA:163,16,0,1 -BRDA:163,16,1,227 +BRDA:163,16,1,136 BRDA:164,17,0,0 BRDA:164,17,1,1 BRDA:164,18,0,1 BRDA:164,18,1,1 -BRDA:168,19,0,311 +BRDA:168,19,0,215 BRDA:168,19,1,0 BRDA:176,20,0,0 BRDA:176,20,1,0 @@ -32854,10 +33267,10 @@ BRDA:176,22,0,0 BRDA:176,22,1,0 BRDA:176,23,0,0 BRDA:176,23,1,0 -BRDA:182,24,0,307 -BRDA:182,24,1,2 -BRDA:182,25,0,309 -BRDA:182,25,1,307 +BRDA:182,24,0,0 +BRDA:182,24,1,0 +BRDA:182,25,0,0 +BRDA:182,25,1,0 BRDA:188,26,0,0 BRDA:188,26,1,0 BRDA:188,27,0,0 @@ -32895,66 +33308,66 @@ BRDA:238,42,0,0 BRDA:238,42,1,0 BRDA:238,43,0,0 BRDA:238,43,1,0 -BRDA:38,44,0,6720 -BRDA:38,44,1,6718 -BRDA:42,45,0,6720 -BRDA:42,45,1,214 -BRDA:42,46,0,214 -BRDA:42,46,1,6506 -BRDA:42,47,0,6720 -BRDA:42,47,1,6720 +BRDA:38,44,0,6947 +BRDA:38,44,1,6945 +BRDA:42,45,0,6947 +BRDA:42,45,1,226 +BRDA:42,46,0,226 +BRDA:42,46,1,6721 +BRDA:42,47,0,6947 +BRDA:42,47,1,6947 BRDA:93,48,0,0 -BRDA:93,48,1,6536 +BRDA:93,48,1,6755 BRDA:97,49,0,0 -BRDA:97,49,1,6536 +BRDA:97,49,1,6755 BRDA:99,50,0,0 -BRDA:99,50,1,6536 +BRDA:99,50,1,6755 BRDA:112,51,0,0 -BRDA:112,51,1,6536 -BRDA:112,52,0,6536 -BRDA:112,52,1,6536 +BRDA:112,51,1,6755 +BRDA:112,52,0,6755 +BRDA:112,52,1,6755 BRDA:113,53,0,0 -BRDA:113,53,1,6536 -BRDA:113,54,0,6536 -BRDA:113,54,1,6536 +BRDA:113,53,1,6755 +BRDA:113,54,0,6755 +BRDA:113,54,1,6755 BRDA:120,55,0,0 -BRDA:120,55,1,6518 -BRDA:120,56,0,6518 -BRDA:120,56,1,6518 +BRDA:120,55,1,6725 +BRDA:120,56,0,6725 +BRDA:120,56,1,6725 BRDA:121,57,0,0 -BRDA:121,57,1,6518 -BRDA:121,58,0,6518 -BRDA:121,58,1,6518 +BRDA:121,57,1,6725 +BRDA:121,58,0,6725 +BRDA:121,58,1,6725 BRDA:125,59,0,0 -BRDA:125,59,1,6518 -BRDA:125,60,0,6518 -BRDA:125,60,1,6518 +BRDA:125,59,1,6725 +BRDA:125,60,0,6725 +BRDA:125,60,1,6725 BRDA:125,61,0,0 -BRDA:125,61,1,6518 -BRDA:125,62,0,6518 -BRDA:125,62,1,6518 +BRDA:125,61,1,6725 +BRDA:125,62,0,6725 +BRDA:125,62,1,6725 BRDA:126,63,0,0 -BRDA:126,63,1,6518 -BRDA:126,64,0,6518 -BRDA:126,64,1,6518 +BRDA:126,63,1,6725 +BRDA:126,64,0,6725 +BRDA:126,64,1,6725 BRDA:126,65,0,0 -BRDA:126,65,1,6518 -BRDA:126,66,0,6518 -BRDA:126,66,1,6518 +BRDA:126,65,1,6725 +BRDA:126,66,0,6725 +BRDA:126,66,1,6725 BRDA:128,67,0,0 -BRDA:128,67,1,6518 -BRDA:128,68,0,6518 -BRDA:128,68,1,6518 -BRDA:197,69,0,14 +BRDA:128,67,1,6725 +BRDA:128,68,0,6725 +BRDA:128,68,1,6725 +BRDA:197,69,0,39 BRDA:197,69,1,2 -BRDA:201,70,0,26116 +BRDA:201,70,0,26992 BRDA:201,70,1,28 BRDA:246,71,0,0 BRDA:246,71,1,124 BRDA:246,72,0,124 BRDA:246,72,1,124 BRF:147 -BRH:71 +BRH:67 end_of_record TN: SF:packages/roosterjs-editor-core/lib/corePlugins/EditPlugin.ts @@ -32968,38 +33381,38 @@ FN:62,(anonymous_6) FNF:7 FNH:7 FNDA:1,(anonymous_0) -FNDA:6717,EditPlugin +FNDA:6944,EditPlugin FNDA:2,(anonymous_2) -FNDA:6533,(anonymous_3) -FNDA:6515,(anonymous_4) -FNDA:6717,(anonymous_5) -FNDA:14619,(anonymous_6) +FNDA:6752,(anonymous_3) +FNDA:6722,(anonymous_4) +FNDA:6944,(anonymous_5) +FNDA:15488,(anonymous_6) DA:1,1 DA:15,1 -DA:16,6717 -DA:24,6717 +DA:16,6944 +DA:24,6944 DA:32,1 DA:33,2 DA:40,1 -DA:41,6533 +DA:41,6752 DA:47,1 -DA:48,6515 +DA:48,6722 DA:54,1 -DA:55,6717 +DA:55,6944 DA:62,1 -DA:63,14619 -DA:64,14619 -DA:65,14619 -DA:66,14619 -DA:68,14619 +DA:63,15488 +DA:64,15488 +DA:65,15488 +DA:66,15488 +DA:68,15488 DA:69,22 DA:70,22 DA:72,22 DA:73,22 DA:74,22 -DA:77,14597 -DA:78,529 -DA:81,14619 +DA:77,15466 +DA:78,706 +DA:81,15488 DA:82,9 DA:83,9 DA:88,6 @@ -33010,7 +33423,7 @@ DA:96,1 LF:33 LH:33 BRDA:68,0,0,22 -BRDA:68,0,1,14597 +BRDA:68,0,1,15466 BRDA:70,1,0,0 BRDA:70,1,1,22 BRDA:70,2,0,22 @@ -33021,9 +33434,9 @@ BRDA:75,4,0,22 BRDA:75,4,1,16 BRDA:75,4,2,16 BRDA:75,4,3,3 -BRDA:77,5,0,529 -BRDA:77,5,1,14068 -BRDA:81,6,0,14622 +BRDA:77,5,0,706 +BRDA:77,5,1,14760 +BRDA:81,6,0,15491 BRDA:81,6,1,10 BRDA:81,7,0,0 BRDA:81,7,1,10 @@ -33077,30 +33490,30 @@ FN:390,(anonymous_31) FNF:32 FNH:27 FNDA:1,(anonymous_0) -FNDA:6726,EntityPlugin +FNDA:6953,EntityPlugin FNDA:0,(anonymous_2) FNDA:2,(anonymous_3) -FNDA:6542,(anonymous_4) -FNDA:6524,(anonymous_5) -FNDA:6726,(anonymous_6) -FNDA:14628,(anonymous_7) +FNDA:6761,(anonymous_4) +FNDA:6731,(anonymous_5) +FNDA:6953,(anonymous_6) +FNDA:15497,(anonymous_7) FNDA:3,(anonymous_8) FNDA:24,(anonymous_9) FNDA:17,(anonymous_10) -FNDA:7,(anonymous_11) -FNDA:7063,(anonymous_12) +FNDA:6,(anonymous_11) +FNDA:7459,(anonymous_12) FNDA:12,(anonymous_13) FNDA:19,(anonymous_14) FNDA:13,(anonymous_15) FNDA:3,(anonymous_16) -FNDA:121,(anonymous_17) +FNDA:187,(anonymous_17) FNDA:2,(anonymous_18) -FNDA:4,(anonymous_19) +FNDA:3,(anonymous_19) FNDA:8,(anonymous_20) FNDA:6,(anonymous_21) FNDA:29,(anonymous_22) FNDA:13,(anonymous_23) -FNDA:7063,(anonymous_24) +FNDA:7459,(anonymous_24) FNDA:19,(anonymous_25) FNDA:13,(anonymous_26) FNDA:0,(anonymous_27) @@ -33118,20 +33531,20 @@ DA:47,1 DA:48,1 DA:54,1 DA:65,1 -DA:66,6726 -DA:72,6726 -DA:73,6726 +DA:66,6953 +DA:72,6953 +DA:73,6953 DA:81,1 DA:82,2 DA:89,1 -DA:90,6542 +DA:90,6761 DA:96,1 -DA:97,6524 -DA:98,6524 +DA:97,6731 +DA:98,6731 DA:104,1 -DA:105,6726 +DA:105,6953 DA:112,1 -DA:113,14628 +DA:113,15497 DA:115,24 DA:116,24 DA:118,17 @@ -33139,27 +33552,27 @@ DA:119,17 DA:121,0 DA:122,0 DA:124,0 -DA:126,7 -DA:127,7 -DA:129,537 -DA:130,537 -DA:132,6526 -DA:133,6526 -DA:135,121 -DA:136,121 +DA:126,6 +DA:127,6 +DA:129,714 +DA:130,714 +DA:132,6745 +DA:133,6745 +DA:135,187 +DA:136,187 DA:138,3 DA:139,3 DA:141,3 DA:142,3 -DA:145,14628 -DA:146,14628 +DA:145,15497 +DA:146,15497 DA:150,1 DA:151,3 DA:152,3 DA:154,3 DA:155,0 DA:156,0 -DA:160,6726 +DA:160,6953 DA:161,0 DA:162,0 DA:163,0 @@ -33175,14 +33588,14 @@ DA:191,2 DA:192,2 DA:193,1 DA:198,1 -DA:199,7 -DA:201,7 -DA:202,3 -DA:205,7 -DA:206,7 -DA:210,7063 -DA:211,7063 -DA:213,7063 +DA:199,6 +DA:201,6 +DA:202,2 +DA:205,6 +DA:206,6 +DA:210,7459 +DA:211,7459 +DA:213,7459 DA:214,12 DA:215,12 DA:217,12 @@ -33190,33 +33603,33 @@ DA:218,5 DA:220,5 DA:222,5 DA:227,0 -DA:234,7063 +DA:234,7459 DA:237,19 DA:239,19 -DA:243,7063 +DA:243,7459 DA:244,52 DA:246,13 DA:247,13 DA:248,13 -DA:251,7063 +DA:251,7459 DA:252,0 DA:256,1 DA:257,3 DA:258,0 DA:260,0 DA:261,0 -DA:266,121 -DA:267,121 +DA:266,187 +DA:267,187 DA:268,2 DA:270,2 -DA:274,4 -DA:275,4 -DA:276,4 -DA:277,4 +DA:274,3 +DA:275,3 +DA:276,3 +DA:277,3 DA:278,8 DA:279,6 DA:281,2 -DA:287,4 +DA:287,3 DA:288,2 DA:292,2 DA:293,6 @@ -33232,7 +33645,7 @@ DA:323,13 DA:324,1 DA:327,13 DA:330,1 -DA:331,7063 +DA:331,7459 DA:335,19 DA:339,1 DA:340,13 @@ -33268,15 +33681,15 @@ BRDA:162,3,1,0 BRDA:114,4,0,24 BRDA:114,4,1,17 BRDA:114,4,2,0 -BRDA:114,4,3,7 -BRDA:114,4,4,537 -BRDA:114,4,5,6526 -BRDA:114,4,6,121 +BRDA:114,4,3,6 +BRDA:114,4,4,714 +BRDA:114,4,5,6745 +BRDA:114,4,6,187 BRDA:114,4,7,3 BRDA:114,4,8,3 BRDA:121,5,0,0 BRDA:121,5,1,0 -BRDA:145,6,0,14628 +BRDA:145,6,0,15497 BRDA:145,6,1,0 BRDA:152,7,0,3 BRDA:152,7,1,0 @@ -33307,14 +33720,14 @@ BRDA:192,17,1,1 BRDA:192,18,0,2 BRDA:192,18,1,2 BRDA:199,19,0,0 -BRDA:199,19,1,7 -BRDA:199,20,0,7 -BRDA:199,20,1,7 -BRDA:201,21,0,3 +BRDA:199,19,1,6 +BRDA:199,20,0,6 +BRDA:199,20,1,6 +BRDA:201,21,0,2 BRDA:201,21,1,4 -BRDA:201,22,0,7 -BRDA:201,22,1,7 -BRDA:205,23,0,7 +BRDA:201,22,0,6 +BRDA:201,22,1,6 +BRDA:205,23,0,6 BRDA:205,23,1,0 BRDA:217,24,0,5 BRDA:217,24,1,7 @@ -33327,19 +33740,19 @@ BRDA:223,27,0,5 BRDA:223,27,1,5 BRDA:223,27,2,5 BRDA:235,28,0,0 -BRDA:235,28,1,7063 -BRDA:234,29,0,7063 +BRDA:235,28,1,7459 +BRDA:234,29,0,7459 BRDA:234,29,1,0 -BRDA:234,30,0,6526 -BRDA:234,30,1,537 -BRDA:234,31,0,7063 -BRDA:234,31,1,7063 +BRDA:234,30,0,6745 +BRDA:234,30,1,714 +BRDA:234,31,0,7459 +BRDA:234,31,1,7459 BRDA:239,32,0,19 BRDA:239,32,1,10 BRDA:239,32,2,7 BRDA:251,33,0,0 -BRDA:251,33,1,7063 -BRDA:251,34,0,7063 +BRDA:251,33,1,7459 +BRDA:251,34,0,7459 BRDA:251,34,1,0 BRDA:257,35,0,0 BRDA:257,35,1,3 @@ -33348,15 +33761,15 @@ BRDA:257,36,1,3 BRDA:260,37,0,0 BRDA:260,37,1,0 BRDA:277,38,0,0 -BRDA:277,38,1,4 -BRDA:277,39,0,4 -BRDA:277,39,1,4 +BRDA:277,38,1,3 +BRDA:277,39,0,3 +BRDA:277,39,1,3 BRDA:278,40,0,6 BRDA:278,40,1,2 BRDA:287,41,0,2 -BRDA:287,41,1,2 -BRDA:287,42,0,4 -BRDA:287,42,1,4 +BRDA:287,41,1,1 +BRDA:287,42,0,3 +BRDA:287,42,1,3 BRDA:296,43,0,4 BRDA:296,43,1,2 BRDA:304,44,0,29 @@ -33373,14 +33786,14 @@ BRDA:323,49,0,9 BRDA:323,49,1,4 BRDA:323,50,0,13 BRDA:323,50,1,13 -BRDA:335,51,0,7063 +BRDA:335,51,0,7459 BRDA:335,51,1,0 -BRDA:332,52,0,7063 -BRDA:332,52,1,7063 +BRDA:332,52,0,7459 +BRDA:332,52,1,7459 BRDA:332,53,0,0 -BRDA:332,53,1,7063 -BRDA:332,54,0,7063 -BRDA:332,54,1,7063 +BRDA:332,53,1,7459 +BRDA:332,54,0,7459 +BRDA:332,54,1,7459 BRDA:341,55,0,13 BRDA:341,55,1,3 BRDA:341,56,0,0 @@ -33408,27 +33821,27 @@ FN:34,(anonymous_4) FN:39,(anonymous_5) FNF:5 FNH:5 -FNDA:6718,(anonymous_0) +FNDA:6945,(anonymous_0) FNDA:2,(anonymous_2) -FNDA:6533,(anonymous_3) -FNDA:6515,(anonymous_4) -FNDA:14674,(anonymous_5) +FNDA:6752,(anonymous_3) +FNDA:6722,(anonymous_4) +FNDA:15543,(anonymous_5) DA:2,1 DA:5,1 DA:6,1 DA:7,1 DA:13,1 -DA:14,6717 +DA:14,6944 DA:19,1 DA:20,2 DA:27,1 -DA:28,6533 +DA:28,6752 DA:34,1 -DA:35,6515 -DA:36,6515 +DA:35,6722 +DA:36,6722 DA:39,1 -DA:40,14674 -DA:41,14674 +DA:40,15543 +DA:41,15543 DA:43,24 DA:44,24 DA:50,1 @@ -33461,10 +33874,10 @@ DA:101,1 LF:45 LH:45 BRDA:35,0,0,0 -BRDA:35,0,1,6515 -BRDA:35,1,0,6515 -BRDA:35,1,1,6515 -BRDA:40,2,0,14674 +BRDA:35,0,1,6722 +BRDA:35,1,0,6722 +BRDA:35,1,1,6722 +BRDA:40,2,0,15543 BRDA:40,2,1,0 BRDA:42,3,0,24 BRDA:42,3,1,29 @@ -33530,131 +33943,131 @@ FN:178,(anonymous_12) FNF:13 FNH:12 FNDA:1,(anonymous_0) -FNDA:6712,LifecyclePlugin -FNDA:6526,(anonymous_2) -FNDA:6508,(anonymous_3) +FNDA:6939,LifecyclePlugin +FNDA:6745,(anonymous_2) +FNDA:6715,(anonymous_3) FNDA:0,(anonymous_4) -FNDA:6528,(anonymous_5) -FNDA:6506,(anonymous_6) +FNDA:6747,(anonymous_5) +FNDA:6719,(anonymous_6) FNDA:2,(anonymous_7) -FNDA:6528,(anonymous_8) -FNDA:6510,(anonymous_9) +FNDA:6747,(anonymous_8) +FNDA:6717,(anonymous_9) FNDA:1,(anonymous_10) -FNDA:6710,(anonymous_11) -FNDA:14611,(anonymous_12) +FNDA:6937,(anonymous_11) +FNDA:15480,(anonymous_12) DA:2,1 DA:11,1 DA:13,1 DA:28,1 -DA:29,6712 -DA:32,6712 -DA:33,6712 -DA:41,6712 -DA:42,6712 -DA:45,6712 -DA:46,6706 -DA:47,6526 -DA:48,6526 -DA:50,6706 -DA:51,6508 -DA:52,6508 -DA:55,6712 -DA:58,13056 -DA:59,6528 -DA:60,6528 -DA:61,6528 -DA:69,6528 -DA:79,6712 -DA:80,6712 -DA:82,6712 -DA:83,6531 -DA:84,6506 -DA:88,6506 -DA:91,6531 +DA:29,6939 +DA:32,6939 +DA:33,6939 +DA:41,6939 +DA:42,6939 +DA:45,6939 +DA:46,6933 +DA:47,6745 +DA:48,6745 +DA:50,6933 +DA:51,6715 +DA:52,6715 +DA:55,6939 +DA:58,13494 +DA:59,6747 +DA:60,6747 +DA:61,6747 +DA:69,6747 +DA:79,6939 +DA:80,6939 +DA:82,6939 +DA:83,6750 +DA:84,6719 +DA:88,6719 +DA:91,6750 DA:92,0 DA:96,0 -DA:100,6712 +DA:100,6939 DA:118,1 DA:119,2 DA:126,1 -DA:127,6528 -DA:130,6528 -DA:133,6528 -DA:136,6528 -DA:139,6528 -DA:145,6510 -DA:146,6510 -DA:148,6510 +DA:127,6747 +DA:130,6747 +DA:133,6747 +DA:136,6747 +DA:139,6747 +DA:145,6717 +DA:146,6717 +DA:148,6717 DA:149,1 DA:151,1 DA:152,1 DA:155,1 -DA:158,6510 -DA:159,6508 -DA:160,6508 -DA:161,6508 -DA:164,6510 +DA:158,6717 +DA:159,6715 +DA:160,6715 +DA:161,6715 +DA:164,6717 DA:170,1 -DA:171,6710 +DA:171,6937 DA:178,1 -DA:179,14611 +DA:179,15480 DA:184,0 DA:185,0 DA:188,1 LF:59 LH:55 -BRDA:42,0,0,6712 -BRDA:42,0,1,6709 -BRDA:42,0,2,6699 -BRDA:45,1,0,6706 +BRDA:42,0,0,6939 +BRDA:42,0,1,6936 +BRDA:42,0,2,6926 +BRDA:45,1,0,6933 BRDA:45,1,1,6 BRDA:56,2,0,0 -BRDA:56,2,1,6712 +BRDA:56,2,1,6939 BRDA:60,3,0,0 -BRDA:60,3,1,6528 -BRDA:60,4,0,6528 -BRDA:60,4,1,6528 -BRDA:79,5,0,10 -BRDA:79,5,1,6702 -BRDA:79,6,0,6712 -BRDA:79,6,1,6712 -BRDA:80,7,0,6531 -BRDA:80,7,1,181 -BRDA:82,8,0,6531 -BRDA:82,8,1,181 -BRDA:83,9,0,6506 -BRDA:83,9,1,25 -BRDA:83,10,0,6531 -BRDA:83,10,1,6506 +BRDA:60,3,1,6747 +BRDA:60,4,0,6747 +BRDA:60,4,1,6747 +BRDA:79,5,0,8 +BRDA:79,5,1,6931 +BRDA:79,6,0,6939 +BRDA:79,6,1,6939 +BRDA:80,7,0,6750 +BRDA:80,7,1,189 +BRDA:82,8,0,6750 +BRDA:82,8,1,189 +BRDA:83,9,0,6719 +BRDA:83,9,1,31 +BRDA:83,10,0,6750 +BRDA:83,10,1,6719 BRDA:91,11,0,0 -BRDA:91,11,1,6531 -BRDA:91,12,0,6531 +BRDA:91,11,1,6750 +BRDA:91,12,0,6750 BRDA:91,12,1,0 BRDA:105,13,0,1 -BRDA:105,13,1,6711 -BRDA:105,14,0,6712 -BRDA:105,14,1,6712 -BRDA:106,15,0,6712 -BRDA:106,15,1,320 +BRDA:105,13,1,6938 +BRDA:105,14,0,6939 +BRDA:105,14,1,6939 +BRDA:106,15,0,6939 +BRDA:106,15,1,332 BRDA:133,16,0,2 -BRDA:133,16,1,6526 -BRDA:133,17,0,6528 -BRDA:133,17,1,6526 +BRDA:133,16,1,6745 +BRDA:133,17,0,6747 +BRDA:133,17,1,6745 BRDA:146,18,0,0 -BRDA:146,18,1,6510 -BRDA:146,19,0,6510 -BRDA:146,19,1,6510 +BRDA:146,18,1,6717 +BRDA:146,19,0,6717 +BRDA:146,19,1,6717 BRDA:151,20,0,1 BRDA:151,20,1,0 BRDA:151,21,0,1 BRDA:151,21,1,1 -BRDA:158,22,0,6508 +BRDA:158,22,0,6715 BRDA:158,22,1,2 BRDA:179,23,0,0 -BRDA:179,23,1,14611 -BRDA:180,24,0,14611 -BRDA:180,24,1,528 -BRDA:180,24,2,528 +BRDA:179,23,1,15480 +BRDA:180,24,0,15480 +BRDA:180,24,1,705 +BRDA:180,24,2,705 BRF:52 BRH:45 end_of_record @@ -33669,36 +34082,36 @@ FN:42,(anonymous_6) FN:56,(anonymous_7) FNF:7 FNH:7 -FNDA:6712,(anonymous_0) +FNDA:6939,(anonymous_0) FNDA:24,(anonymous_2) FNDA:1,(anonymous_3) -FNDA:6527,(anonymous_4) -FNDA:6510,(anonymous_5) -FNDA:14614,(anonymous_6) -FNDA:6534,(anonymous_7) -DA:9,6712 -DA:10,6711 -DA:11,6711 -DA:12,6711 -DA:13,6711 +FNDA:6746,(anonymous_4) +FNDA:6717,(anonymous_5) +FNDA:15483,(anonymous_6) +FNDA:6741,(anonymous_7) +DA:9,6939 +DA:10,6938 +DA:11,6938 +DA:12,6938 +DA:13,6938 DA:18,1 DA:19,1 DA:26,1 -DA:27,6527 +DA:27,6746 DA:33,1 -DA:34,6510 -DA:35,6510 +DA:34,6717 +DA:35,6717 DA:42,1 -DA:43,14614 +DA:43,15483 DA:48,31 DA:51,31 DA:52,31 DA:53,31 DA:56,1 -DA:57,6534 +DA:57,6741 DA:58,31 DA:59,31 -DA:63,6711 +DA:63,6938 DA:64,24 DA:65,24 DA:66,24 @@ -33710,14 +34123,14 @@ BRDA:64,0,1,0 BRDA:68,1,0,24 BRDA:68,1,1,8 BRDA:43,2,0,31 -BRDA:43,2,1,14583 -BRDA:44,3,0,14614 -BRDA:44,3,1,14614 +BRDA:43,2,1,15452 +BRDA:44,3,0,15483 +BRDA:44,3,1,15483 BRDA:44,3,2,32 BRDA:57,4,0,31 -BRDA:57,4,1,6503 -BRDA:57,5,0,6534 -BRDA:57,5,1,6534 +BRDA:57,4,1,6710 +BRDA:57,5,0,6741 +BRDA:57,5,1,6741 BRF:13 BRH:12 end_of_record @@ -33737,63 +34150,63 @@ FN:170,normalizeListsForExport FN:171,(anonymous_12) FNF:12 FNH:12 -FNDA:6730,(anonymous_0) +FNDA:6957,(anonymous_0) FNDA:2,(anonymous_2) -FNDA:6545,(anonymous_3) -FNDA:6527,(anonymous_4) -FNDA:14636,(anonymous_5) +FNDA:6764,(anonymous_3) +FNDA:6734,(anonymous_4) +FNDA:15505,(anonymous_5) FNDA:44,(anonymous_6) -FNDA:7114,(anonymous_7) -FNDA:170,normalizeTables -FNDA:176,(anonymous_9) +FNDA:7509,(anonymous_7) +FNDA:179,normalizeTables +FNDA:185,(anonymous_9) FNDA:7,(anonymous_10) -FNDA:120,normalizeListsForExport -FNDA:59,(anonymous_12) +FNDA:186,normalizeListsForExport +FNDA:71,(anonymous_12) DA:2,1 DA:22,1 -DA:23,6729 +DA:23,6956 DA:28,1 DA:29,2 DA:38,1 -DA:39,6545 +DA:39,6764 DA:47,1 -DA:48,6527 +DA:48,6734 DA:57,1 -DA:58,14636 -DA:61,7072 -DA:62,7072 -DA:64,7072 -DA:67,7 -DA:68,7 +DA:58,15505 +DA:61,7468 +DA:62,7468 +DA:64,7468 +DA:67,6 +DA:68,6 DA:71,28 DA:72,28 DA:75,18 DA:76,16 DA:78,18 -DA:81,120 -DA:82,120 +DA:81,186 +DA:82,186 DA:86,1 DA:87,44 DA:89,44 DA:90,35 DA:94,1 -DA:95,7114 -DA:96,170 -DA:97,170 -DA:98,170 -DA:100,170 -DA:102,170 +DA:95,7509 +DA:96,179 +DA:97,179 +DA:98,179 +DA:100,179 +DA:102,179 DA:103,25 DA:109,9 DA:110,16 DA:114,1 DA:119,1 -DA:122,170 -DA:123,170 -DA:124,176 -DA:126,176 -DA:127,243 -DA:128,243 +DA:122,179 +DA:123,179 +DA:124,185 +DA:126,185 +DA:127,261 +DA:128,261 DA:130,43 DA:131,20 DA:132,20 @@ -33801,36 +34214,36 @@ DA:135,43 DA:136,43 DA:137,43 DA:139,43 -DA:141,165 +DA:141,174 DA:142,8 DA:143,8 DA:144,8 DA:145,8 -DA:147,157 -DA:149,165 -DA:151,35 -DA:152,35 -DA:156,176 -DA:157,176 -DA:158,176 +DA:147,166 +DA:149,174 +DA:151,44 +DA:152,44 +DA:156,185 +DA:157,185 +DA:158,185 DA:159,11 DA:160,7 DA:161,2 -DA:167,170 -DA:171,120 -DA:172,59 -DA:174,59 +DA:167,179 +DA:171,186 +DA:172,71 +DA:174,71 DA:175,0 DA:177,0 LF:73 LH:71 -BRDA:59,0,0,6543 -BRDA:59,0,1,7072 -BRDA:59,0,2,7 +BRDA:59,0,0,6762 +BRDA:59,0,1,7468 +BRDA:59,0,2,6 BRDA:59,0,3,28 BRDA:59,0,4,18 -BRDA:59,0,5,120 -BRDA:61,1,0,7072 +BRDA:59,0,5,186 +BRDA:61,1,0,7468 BRDA:61,1,1,0 BRDA:75,2,0,16 BRDA:75,2,1,2 @@ -33840,19 +34253,19 @@ BRDA:87,4,0,44 BRDA:87,4,1,44 BRDA:89,5,0,35 BRDA:89,5,1,9 -BRDA:95,6,0,170 -BRDA:95,6,1,6944 -BRDA:95,7,0,7114 -BRDA:95,7,1,7114 -BRDA:98,8,0,170 -BRDA:98,8,1,138 -BRDA:98,8,2,110 +BRDA:95,6,0,179 +BRDA:95,6,1,7330 +BRDA:95,7,0,7509 +BRDA:95,7,1,7509 +BRDA:98,8,0,179 +BRDA:98,8,1,147 +BRDA:98,8,2,112 BRDA:98,9,0,16 -BRDA:98,9,1,154 -BRDA:98,10,0,170 -BRDA:98,10,1,170 +BRDA:98,9,1,163 +BRDA:98,10,0,179 +BRDA:98,10,1,179 BRDA:102,11,0,25 -BRDA:102,11,1,145 +BRDA:102,11,1,154 BRDA:103,12,0,9 BRDA:103,12,1,16 BRDA:104,13,0,25 @@ -33868,23 +34281,23 @@ BRDA:111,16,1,2 BRDA:111,17,0,16 BRDA:111,17,1,16 BRDA:129,18,0,43 -BRDA:129,18,1,165 -BRDA:129,18,2,35 +BRDA:129,18,1,174 +BRDA:129,18,2,44 BRDA:130,19,0,20 BRDA:130,19,1,23 BRDA:141,20,0,8 -BRDA:141,20,1,157 +BRDA:141,20,1,166 BRDA:143,21,0,0 BRDA:143,21,1,8 BRDA:143,22,0,8 BRDA:143,22,1,8 BRDA:158,23,0,11 -BRDA:158,23,1,165 +BRDA:158,23,1,174 BRDA:160,24,0,2 BRDA:160,24,1,5 BRDA:174,25,0,0 -BRDA:174,25,1,59 -BRDA:174,26,0,59 +BRDA:174,25,1,71 +BRDA:174,26,0,71 BRDA:174,26,1,0 BRF:62 BRH:57 @@ -33904,50 +34317,50 @@ FN:136,(anonymous_9) FNF:10 FNH:10 FNDA:1,(anonymous_0) -FNDA:6716,PendingFormatStatePlugin +FNDA:6943,PendingFormatStatePlugin FNDA:2,(anonymous_2) -FNDA:6532,(anonymous_3) -FNDA:6514,(anonymous_4) -FNDA:6716,(anonymous_5) -FNDA:14618,(anonymous_6) -FNDA:6531,(anonymous_7) +FNDA:6751,(anonymous_3) +FNDA:6721,(anonymous_4) +FNDA:6943,(anonymous_5) +FNDA:15487,(anonymous_6) +FNDA:6738,(anonymous_7) FNDA:42,(anonymous_8) FNDA:12,(anonymous_9) DA:2,1 DA:11,1 DA:17,1 -DA:19,6716 -DA:28,6716 +DA:19,6943 +DA:28,6943 DA:38,1 DA:39,2 DA:46,1 -DA:47,6532 +DA:47,6751 DA:53,1 -DA:54,6514 -DA:55,6514 +DA:54,6721 +DA:55,6721 DA:61,1 -DA:62,6716 +DA:62,6943 DA:69,1 -DA:70,14618 +DA:70,15487 DA:74,22 DA:75,22 DA:76,22 DA:77,22 DA:81,0 DA:84,22 -DA:88,576 -DA:89,576 +DA:88,753 +DA:89,753 DA:95,0 DA:96,0 DA:97,0 DA:103,0 -DA:104,576 +DA:104,753 DA:118,17 -DA:121,576 +DA:121,753 DA:125,1 -DA:126,6531 -DA:127,6531 -DA:128,6531 +DA:126,6738 +DA:127,6738 +DA:128,6738 DA:131,1 DA:132,42 DA:133,42 @@ -33976,28 +34389,28 @@ LH:53 BRDA:71,0,0,22 BRDA:71,0,1,17 BRDA:71,0,2,46 -BRDA:71,0,3,576 +BRDA:71,0,3,753 BRDA:74,1,0,22 BRDA:74,1,1,0 BRDA:78,2,0,12 BRDA:78,2,1,10 BRDA:89,3,0,0 -BRDA:89,3,1,576 -BRDA:90,4,0,576 -BRDA:90,4,1,576 +BRDA:89,3,1,753 +BRDA:90,4,0,753 +BRDA:90,4,1,753 BRDA:90,4,2,17 BRDA:90,4,3,0 BRDA:104,5,0,17 -BRDA:104,5,1,559 -BRDA:105,6,0,576 +BRDA:104,5,1,736 +BRDA:105,6,0,753 BRDA:105,6,1,17 BRDA:105,6,2,14 -BRDA:105,6,3,562 +BRDA:105,6,3,739 BRDA:105,6,4,20 BRDA:105,6,5,20 -BRDA:105,6,6,559 -BRDA:105,6,7,529 -BRDA:105,6,8,529 +BRDA:105,6,6,736 +BRDA:105,6,7,706 +BRDA:105,6,8,706 BRDA:132,7,0,0 BRDA:132,7,1,42 BRDA:132,8,0,42 @@ -34048,28 +34461,28 @@ FN:56,(anonymous_6) FN:84,(anonymous_7) FNF:7 FNH:6 -FNDA:6714,(anonymous_0) +FNDA:6941,(anonymous_0) FNDA:2,(anonymous_2) -FNDA:6529,(anonymous_3) -FNDA:6506,(anonymous_4) +FNDA:6748,(anonymous_3) +FNDA:6713,(anonymous_4) FNDA:4,(anonymous_5) -FNDA:14616,(anonymous_6) +FNDA:15485,(anonymous_6) FNDA:0,(anonymous_7) DA:3,1 DA:15,1 -DA:16,6713 +DA:16,6940 DA:21,1 DA:22,2 DA:29,1 -DA:30,6529 +DA:30,6748 DA:36,1 -DA:37,6506 +DA:37,6713 DA:40,1 DA:41,4 DA:47,0 DA:49,4 -DA:56,14616 -DA:59,14616 +DA:56,15485 +DA:59,15485 DA:71,5 DA:74,5 DA:77,5 @@ -34093,8 +34506,8 @@ BRDA:42,1,1,4 BRDA:42,1,2,0 BRDA:42,1,3,0 BRDA:59,2,0,5 -BRDA:59,2,1,14611 -BRDA:60,3,0,14616 +BRDA:59,2,1,15480 +BRDA:60,3,0,15485 BRDA:60,3,1,5 BRDA:60,3,2,5 BRDA:62,4,0,5 @@ -34159,27 +34572,27 @@ FN:276,(anonymous_26) FNF:27 FNH:26 FNDA:1,(anonymous_0) -FNDA:6744,UndoPlugin +FNDA:6969,UndoPlugin FNDA:2,(anonymous_2) -FNDA:6557,(anonymous_3) -FNDA:6535,(anonymous_4) -FNDA:6740,(anonymous_5) -FNDA:495,(anonymous_6) -FNDA:14660,(anonymous_7) -FNDA:49,(anonymous_8) +FNDA:6774,(anonymous_3) +FNDA:6740,(anonymous_4) +FNDA:6965,(anonymous_5) +FNDA:594,(anonymous_6) +FNDA:15521,(anonymous_7) +FNDA:41,(anonymous_8) FNDA:7,(anonymous_9) FNDA:1,(anonymous_10) -FNDA:531,(anonymous_11) -FNDA:533,(anonymous_12) -FNDA:7,(anonymous_13) -FNDA:6562,(anonymous_14) -FNDA:6737,createUndoSnapshots -FNDA:13048,(anonymous_16) +FNDA:708,(anonymous_11) +FNDA:710,(anonymous_12) +FNDA:4,(anonymous_13) +FNDA:6775,(anonymous_14) +FNDA:6962,createUndoSnapshots +FNDA:13486,(anonymous_16) FNDA:0,(anonymous_17) -FNDA:6910,(anonymous_18) -FNDA:530,(anonymous_19) -FNDA:14,(anonymous_20) -FNDA:6739,createUndoSnapshotServiceBridge +FNDA:7227,(anonymous_18) +FNDA:707,(anonymous_19) +FNDA:11,(anonymous_20) +FNDA:6964,createUndoSnapshotServiceBridge FNDA:1,(anonymous_22) FNDA:1,(anonymous_23) FNDA:1,(anonymous_24) @@ -34188,51 +34601,51 @@ FNDA:1,(anonymous_26) DA:12,1 DA:24,1 DA:30,1 -DA:31,6744 -DA:32,6744 -DA:40,6744 +DA:31,6969 +DA:32,6969 +DA:40,6969 DA:55,1 DA:56,2 DA:63,1 -DA:64,6557 +DA:64,6774 DA:70,1 -DA:71,6535 +DA:71,6740 DA:77,1 -DA:78,6740 +DA:78,6965 DA:85,1 -DA:86,495 +DA:86,594 DA:98,1 -DA:100,14660 +DA:100,15521 DA:101,0 -DA:104,14660 -DA:106,6527 -DA:107,6527 -DA:110,6525 -DA:112,6527 -DA:114,49 -DA:115,49 +DA:104,15521 +DA:106,6746 +DA:107,6746 +DA:110,6744 +DA:112,6746 +DA:114,41 +DA:115,41 DA:117,7 DA:118,7 DA:120,1 DA:121,1 DA:122,1 -DA:124,531 -DA:125,531 +DA:124,708 +DA:125,708 DA:127,1 DA:128,1 DA:132,1 -DA:136,49 -DA:137,16 +DA:136,41 +DA:137,8 DA:138,1 DA:139,1 DA:140,1 DA:141,1 -DA:142,15 -DA:143,15 -DA:149,15 -DA:155,12 -DA:159,15 -DA:160,15 +DA:142,7 +DA:143,7 +DA:149,7 +DA:155,6 +DA:159,7 +DA:160,7 DA:162,33 DA:164,31 DA:165,19 @@ -34256,27 +34669,27 @@ DA:206,1 DA:209,1 DA:210,1 DA:213,1 -DA:214,531 -DA:222,529 +DA:214,708 +DA:222,706 DA:226,1 -DA:227,533 -DA:228,533 -DA:229,533 +DA:227,710 +DA:228,710 +DA:229,710 DA:232,1 -DA:233,7 -DA:234,7 +DA:233,4 +DA:234,4 DA:241,1 -DA:242,6562 -DA:243,6562 +DA:242,6775 +DA:243,6775 DA:245,1 -DA:248,6737 -DA:250,6737 -DA:251,13048 +DA:248,6962 +DA:250,6962 +DA:251,13486 DA:252,0 -DA:254,6910 -DA:255,530 -DA:256,14 -DA:264,6739 +DA:254,7227 +DA:255,707 +DA:256,11 +DA:264,6964 DA:266,1 DA:268,1 DA:270,1 @@ -34284,53 +34697,53 @@ DA:275,2 DA:276,1 LF:97 LH:92 -BRDA:42,0,0,6744 -BRDA:42,0,1,6739 -BRDA:42,0,2,6737 -BRDA:87,1,0,495 +BRDA:42,0,0,6969 +BRDA:42,0,1,6964 +BRDA:42,0,2,6962 +BRDA:87,1,0,594 BRDA:87,1,1,15 BRDA:87,1,2,0 BRDA:87,1,3,0 BRDA:100,2,0,0 -BRDA:100,2,1,14660 -BRDA:100,3,0,14660 -BRDA:100,3,1,14660 -BRDA:105,4,0,6527 -BRDA:105,4,1,49 +BRDA:100,2,1,15521 +BRDA:100,3,0,15521 +BRDA:100,3,1,15521 +BRDA:105,4,0,6746 +BRDA:105,4,1,41 BRDA:105,4,2,7 BRDA:105,4,3,1 -BRDA:105,4,4,531 +BRDA:105,4,4,708 BRDA:105,4,5,1 -BRDA:107,5,0,6525 +BRDA:107,5,0,6744 BRDA:107,5,1,2 -BRDA:107,6,0,6527 -BRDA:107,6,1,6526 -BRDA:136,7,0,16 +BRDA:107,6,0,6746 +BRDA:107,6,1,6745 +BRDA:136,7,0,8 BRDA:136,7,1,33 -BRDA:136,8,0,49 -BRDA:136,8,1,8 -BRDA:136,8,2,41 +BRDA:136,8,0,41 +BRDA:136,8,1,4 +BRDA:136,8,2,37 BRDA:137,9,0,1 -BRDA:137,9,1,15 -BRDA:137,10,0,16 -BRDA:137,10,1,8 -BRDA:137,10,2,7 +BRDA:137,9,1,7 +BRDA:137,10,0,8 +BRDA:137,10,1,4 +BRDA:137,10,2,4 BRDA:139,11,0,0 BRDA:139,11,1,1 BRDA:139,12,0,1 BRDA:139,12,1,1 -BRDA:142,13,0,15 +BRDA:142,13,0,7 BRDA:142,13,1,0 BRDA:143,14,0,0 -BRDA:143,14,1,15 -BRDA:143,15,0,15 -BRDA:143,15,1,15 -BRDA:149,16,0,12 -BRDA:149,16,1,3 -BRDA:150,17,0,15 -BRDA:150,17,1,15 -BRDA:150,17,2,13 -BRDA:150,17,3,5 +BRDA:143,14,1,7 +BRDA:143,15,0,7 +BRDA:143,15,1,7 +BRDA:149,16,0,6 +BRDA:149,16,1,1 +BRDA:150,17,0,7 +BRDA:150,17,1,7 +BRDA:150,17,2,7 +BRDA:150,17,3,1 BRDA:162,18,0,31 BRDA:162,18,1,2 BRDA:162,19,0,33 @@ -34360,17 +34773,17 @@ BRDA:189,29,0,1 BRDA:189,29,1,3 BRDA:205,30,0,1 BRDA:205,30,1,0 -BRDA:214,31,0,529 +BRDA:214,31,0,706 BRDA:214,31,1,2 -BRDA:216,32,0,531 -BRDA:216,32,1,531 -BRDA:216,32,2,531 -BRDA:216,32,3,531 +BRDA:216,32,0,708 +BRDA:216,32,1,708 +BRDA:216,32,2,708 +BRDA:216,32,3,708 BRDA:233,33,0,0 -BRDA:233,33,1,7 -BRDA:233,34,0,7 -BRDA:233,34,1,7 -BRDA:235,35,0,7 +BRDA:233,33,1,4 +BRDA:233,34,0,4 +BRDA:233,34,1,4 +BRDA:235,35,0,4 BRDA:235,35,1,2 BRDA:235,35,2,2 BRDA:237,36,0,0 @@ -34378,11 +34791,11 @@ BRDA:237,36,1,2 BRDA:237,37,0,2 BRDA:237,37,1,2 BRDA:242,38,0,0 -BRDA:242,38,1,6562 -BRDA:242,39,0,6562 -BRDA:242,39,1,6562 +BRDA:242,38,1,6775 +BRDA:242,39,0,6775 +BRDA:242,39,1,6775 BRDA:265,40,0,2 -BRDA:265,40,1,6737 +BRDA:265,40,1,6962 BRDA:268,41,0,1 BRDA:268,41,1,0 BRDA:272,42,0,1 @@ -34396,8 +34809,8 @@ FN:27,createCorePlugins FN:56,getPluginState FNF:2 FNH:2 -FNDA:6708,createCorePlugins -FNDA:6708,getPluginState +FNDA:6935,createCorePlugins +FNDA:6935,getPluginState DA:1,1 DA:2,1 DA:3,1 @@ -34410,36 +34823,36 @@ DA:9,1 DA:10,1 DA:11,1 DA:27,1 -DA:31,6708 -DA:34,6708 +DA:31,6935 +DA:34,6935 DA:56,1 -DA:57,6708 +DA:57,6935 LF:16 LH:16 -BRDA:31,0,0,6708 -BRDA:31,0,1,6660 -BRDA:35,1,0,6708 -BRDA:35,1,1,6708 -BRDA:36,2,0,6708 -BRDA:36,2,1,6708 -BRDA:37,3,0,6708 -BRDA:37,3,1,6708 -BRDA:40,4,0,6708 -BRDA:40,4,1,6708 -BRDA:41,5,0,6708 -BRDA:41,5,1,6708 -BRDA:42,6,0,6708 -BRDA:42,6,1,6707 -BRDA:43,7,0,6708 -BRDA:43,7,1,6708 -BRDA:44,8,0,6708 -BRDA:44,8,1,6708 -BRDA:45,9,0,6708 -BRDA:45,9,1,6708 -BRDA:46,10,0,6708 -BRDA:46,10,1,6708 -BRDA:47,11,0,6708 -BRDA:47,11,1,6708 +BRDA:31,0,0,6935 +BRDA:31,0,1,6887 +BRDA:35,1,0,6935 +BRDA:35,1,1,6935 +BRDA:36,2,0,6935 +BRDA:36,2,1,6935 +BRDA:37,3,0,6935 +BRDA:37,3,1,6935 +BRDA:40,4,0,6935 +BRDA:40,4,1,6935 +BRDA:41,5,0,6935 +BRDA:41,5,1,6935 +BRDA:42,6,0,6935 +BRDA:42,6,1,6934 +BRDA:43,7,0,6935 +BRDA:43,7,1,6935 +BRDA:44,8,0,6935 +BRDA:44,8,1,6935 +BRDA:45,9,0,6935 +BRDA:45,9,1,6935 +BRDA:46,10,0,6935 +BRDA:46,10,1,6935 +BRDA:47,11,0,6935 +BRDA:47,11,1,6935 BRF:24 BRH:24 end_of_record @@ -34498,17 +34911,17 @@ FN:258,handleKeyDownEvent FN:282,(anonymous_22) FNF:23 FNH:23 -FNDA:14634,inlineEntityOnPluginEvent +FNDA:15503,inlineEntityOnPluginEvent FNDA:8,(anonymous_1) FNDA:2,preventTypeInDelimiter FNDA:4,(anonymous_3) -FNDA:6884,normalizeDelimitersInEditor -FNDA:6896,addDelimitersIfNeeded +FNDA:7181,normalizeDelimitersInEditor +FNDA:7192,addDelimitersIfNeeded FNDA:7,(anonymous_6) FNDA:13,isEntityElement FNDA:8,removeNode FNDA:13,isReadOnly -FNDA:6884,removeInvalidDelimiters +FNDA:7181,removeInvalidDelimiters FNDA:4,(anonymous_11) FNDA:6,removeDelimiterAttr FNDA:6,(anonymous_13) @@ -34526,22 +34939,22 @@ DA:27,1 DA:28,1 DA:29,1 DA:34,1 -DA:35,14634 -DA:37,536 -DA:38,353 -DA:40,536 -DA:42,6531 -DA:43,6531 -DA:46,24 -DA:47,12 -DA:49,12 -DA:50,12 -DA:55,12 -DA:59,124 +DA:35,15503 +DA:37,713 +DA:38,431 +DA:40,713 +DA:42,6750 +DA:43,6750 +DA:46,22 +DA:47,11 +DA:49,11 +DA:50,11 +DA:55,11 +DA:59,190 DA:60,8 DA:61,4 DA:63,4 -DA:66,124 +DA:66,190 DA:69,31 DA:70,31 DA:75,2 @@ -34558,15 +34971,15 @@ DA:93,2 DA:95,2 DA:96,2 DA:108,1 -DA:109,6884 -DA:110,6884 -DA:114,6896 +DA:109,7181 +DA:110,7181 +DA:114,7192 DA:115,7 DA:116,4 DA:122,13 DA:130,8 DA:134,13 -DA:142,6884 +DA:142,7181 DA:143,4 DA:144,4 DA:147,4 @@ -34650,15 +35063,15 @@ DA:287,0 DA:289,6 LF:127 LH:115 -BRDA:36,0,0,536 -BRDA:36,0,1,6531 -BRDA:36,0,2,12 -BRDA:36,0,3,122 -BRDA:36,0,4,124 +BRDA:36,0,0,713 +BRDA:36,0,1,6750 +BRDA:36,0,2,11 +BRDA:36,0,3,188 +BRDA:36,0,4,190 BRDA:36,0,5,31 -BRDA:37,1,0,353 -BRDA:37,1,1,183 -BRDA:49,2,0,12 +BRDA:37,1,0,431 +BRDA:37,1,1,282 +BRDA:49,2,0,11 BRDA:49,2,1,0 BRDA:60,3,0,4 BRDA:60,3,1,4 @@ -34893,16 +35306,16 @@ FNF:12 FNH:12 FNDA:1,(anonymous_0) FNDA:1,(anonymous_1) -FNDA:6749,DarkColorHandlerImpl -FNDA:6899,(anonymous_3) -FNDA:19612,(anonymous_4) -FNDA:6507,(anonymous_5) +FNDA:6974,DarkColorHandlerImpl +FNDA:7216,(anonymous_3) +FNDA:20306,(anonymous_4) +FNDA:6714,(anonymous_5) FNDA:2,(anonymous_6) -FNDA:20654,(anonymous_7) +FNDA:22028,(anonymous_7) FNDA:11,(anonymous_8) FNDA:9,(anonymous_9) -FNDA:515,(anonymous_10) -FNDA:1030,(anonymous_11) +FNDA:853,(anonymous_10) +FNDA:1706,(anonymous_11) DA:1,1 DA:8,1 DA:9,1 @@ -34912,43 +35325,43 @@ DA:12,1 DA:13,1 DA:15,1 DA:29,1 -DA:30,6749 -DA:32,6749 +DA:30,6974 +DA:32,6974 DA:38,1 -DA:39,6899 +DA:39,7216 DA:49,1 -DA:50,19612 -DA:53,19612 -DA:54,19612 -DA:55,19612 -DA:56,19612 -DA:59,19612 +DA:50,20306 +DA:53,20306 +DA:54,20306 +DA:55,20306 +DA:56,20306 +DA:59,20306 DA:60,12 DA:63,12 DA:64,11 DA:66,11 DA:67,11 DA:70,12 -DA:72,19600 -DA:79,6507 -DA:80,6507 -DA:81,6507 +DA:72,20294 +DA:79,6714 +DA:80,6714 +DA:81,6714 DA:91,1 -DA:93,20654 -DA:96,20654 -DA:97,19664 -DA:99,19664 +DA:93,22028 +DA:96,22028 +DA:97,20401 +DA:99,20401 DA:100,10 DA:101,9 DA:102,9 DA:103,9 DA:105,1 -DA:107,19654 +DA:107,20391 DA:111,6 DA:113,6 DA:114,1 -DA:117,19648 -DA:121,20654 +DA:117,20385 +DA:121,22028 DA:128,11 DA:129,11 DA:131,11 @@ -34958,25 +35371,25 @@ DA:135,9 DA:143,6 DA:144,5 DA:148,6 -DA:157,515 -DA:158,515 -DA:159,1030 -DA:165,1030 -DA:166,1030 -DA:168,1030 -DA:169,37 +DA:157,853 +DA:158,853 +DA:159,1706 +DA:165,1706 +DA:166,1706 +DA:168,1706 +DA:169,76 DA:173,1 LF:63 LH:63 BRDA:11,0,0,1 BRDA:11,0,1,1 -BRDA:53,1,0,19612 +BRDA:53,1,0,20306 BRDA:53,1,1,0 -BRDA:55,2,0,19612 -BRDA:55,2,1,19611 +BRDA:55,2,0,20306 +BRDA:55,2,1,20305 BRDA:59,3,0,12 -BRDA:59,3,1,19600 -BRDA:59,4,0,19612 +BRDA:59,3,1,20294 +BRDA:59,4,0,20306 BRDA:59,4,1,13 BRDA:61,5,0,12 BRDA:61,5,1,9 @@ -34984,12 +35397,12 @@ BRDA:63,6,0,11 BRDA:63,6,1,1 BRDA:64,7,0,11 BRDA:64,7,1,7 -BRDA:96,8,0,19664 -BRDA:96,8,1,990 +BRDA:96,8,0,20401 +BRDA:96,8,1,1627 BRDA:97,9,0,10 -BRDA:97,9,1,19654 +BRDA:97,9,1,20391 BRDA:99,10,0,10 -BRDA:99,10,1,19654 +BRDA:99,10,1,20391 BRDA:100,11,0,9 BRDA:100,11,1,1 BRDA:103,12,0,7 @@ -34997,7 +35410,7 @@ BRDA:103,12,1,2 BRDA:103,13,0,9 BRDA:103,13,1,9 BRDA:107,14,0,6 -BRDA:107,14,1,19648 +BRDA:107,14,1,20385 BRDA:111,15,0,6 BRDA:111,15,1,5 BRDA:113,16,0,1 @@ -35010,12 +35423,12 @@ BRDA:136,18,2,5 BRDA:136,18,3,5 BRDA:143,19,0,5 BRDA:143,19,1,1 -BRDA:160,20,0,1030 -BRDA:160,20,1,995 -BRDA:168,21,0,37 -BRDA:168,21,1,993 -BRDA:168,22,0,1030 -BRDA:168,22,1,37 +BRDA:160,20,0,1706 +BRDA:160,20,1,1632 +BRDA:168,21,0,76 +BRDA:168,21,1,1630 +BRDA:168,22,0,1706 +BRDA:168,22,1,76 BRF:48 BRH:47 end_of_record @@ -35026,19 +35439,19 @@ FN:14,Editor FNF:2 FNH:2 FNDA:1,(anonymous_0) -FNDA:6524,Editor +FNDA:6743,Editor DA:1,1 DA:2,1 DA:8,1 -DA:14,6525 -DA:15,6524 +DA:14,6744 +DA:15,6743 DA:17,1 LF:6 LH:6 BRDA:14,0,0,1 -BRDA:14,0,1,6523 -BRDA:15,1,0,6524 -BRDA:15,1,1,6524 +BRDA:14,0,1,6742 +BRDA:15,1,0,6743 +BRDA:15,1,1,6743 BRF:4 BRH:4 end_of_record @@ -35124,59 +35537,59 @@ FN:1003,(anonymous_76) FN:1025,(anonymous_77) FN:1033,(anonymous_78) FNF:79 -FNH:61 +FNH:62 FNDA:1,(anonymous_0) -FNDA:6524,EditorBase -FNDA:71879,(anonymous_2) -FNDA:6506,(anonymous_3) +FNDA:6743,EditorBase +FNDA:74288,(anonymous_2) +FNDA:6713,(anonymous_3) FNDA:13,(anonymous_4) -FNDA:35,(anonymous_5) -FNDA:4,(anonymous_6) +FNDA:47,(anonymous_5) +FNDA:5,(anonymous_6) FNDA:2,(anonymous_7) FNDA:2,(anonymous_8) -FNDA:17,(anonymous_9) -FNDA:466,(anonymous_10) -FNDA:27922,(anonymous_11) -FNDA:63,(anonymous_12) +FNDA:41,(anonymous_9) +FNDA:487,(anonymous_10) +FNDA:29335,(anonymous_11) +FNDA:90,(anonymous_12) FNDA:0,(anonymous_13) FNDA:0,(anonymous_14) -FNDA:120,(anonymous_15) -FNDA:6872,(anonymous_16) -FNDA:3,(anonymous_17) -FNDA:5,(anonymous_18) +FNDA:186,(anonymous_15) +FNDA:7169,(anonymous_16) +FNDA:9,(anonymous_17) +FNDA:11,(anonymous_18) FNDA:0,(anonymous_19) -FNDA:6,(anonymous_20) -FNDA:6,(anonymous_21) -FNDA:511,(anonymous_22) -FNDA:569,(anonymous_23) +FNDA:5,(anonymous_20) +FNDA:5,(anonymous_21) +FNDA:235,(anonymous_22) +FNDA:746,(anonymous_23) FNDA:0,(anonymous_24) FNDA:0,(anonymous_25) -FNDA:271,(anonymous_26) -FNDA:7048,(anonymous_27) -FNDA:237,(anonymous_28) -FNDA:528,(anonymous_29) -FNDA:528,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:99,(anonymous_32) -FNDA:80,(anonymous_33) -FNDA:119,(anonymous_34) -FNDA:13090,(anonymous_35) -FNDA:13141,(anonymous_36) +FNDA:387,(anonymous_26) +FNDA:7357,(anonymous_27) +FNDA:234,(anonymous_28) +FNDA:608,(anonymous_29) +FNDA:608,(anonymous_30) +FNDA:6,(anonymous_31) +FNDA:119,(anonymous_32) +FNDA:100,(anonymous_33) +FNDA:139,(anonymous_34) +FNDA:13528,(anonymous_35) +FNDA:13563,(anonymous_36) FNDA:17,(anonymous_37) FNDA:0,(anonymous_38) FNDA:0,(anonymous_39) -FNDA:6751,(anonymous_40) -FNDA:6524,(anonymous_41) -FNDA:13656,(anonymous_42) +FNDA:7083,(anonymous_40) +FNDA:6743,(anonymous_41) +FNDA:14144,(anonymous_42) FNDA:8,(anonymous_43) FNDA:4,(anonymous_44) -FNDA:14621,(anonymous_45) -FNDA:16,(anonymous_46) +FNDA:15490,(anonymous_45) +FNDA:34,(anonymous_46) FNDA:37,(anonymous_47) -FNDA:22,(anonymous_48) +FNDA:93,(anonymous_48) FNDA:0,(anonymous_49) -FNDA:63,(anonymous_50) -FNDA:62,(anonymous_51) +FNDA:67,(anonymous_50) +FNDA:66,(anonymous_51) FNDA:9,(anonymous_52) FNDA:9,(anonymous_53) FNDA:0,(anonymous_54) @@ -35189,49 +35602,49 @@ FNDA:0,(anonymous_60) FNDA:0,(anonymous_61) FNDA:7,(anonymous_62) FNDA:14,(anonymous_63) -FNDA:6524,(anonymous_64) +FNDA:6743,(anonymous_64) FNDA:0,(anonymous_65) FNDA:81,(anonymous_66) FNDA:1,(anonymous_67) -FNDA:6544,(anonymous_68) +FNDA:6763,(anonymous_68) FNDA:2,(anonymous_69) FNDA:2,(anonymous_70) FNDA:0,(anonymous_71) FNDA:41,(anonymous_72) -FNDA:14,(anonymous_73) +FNDA:13,(anonymous_73) FNDA:0,(anonymous_74) FNDA:188,(anonymous_75) FNDA:0,(anonymous_76) FNDA:43,(anonymous_77) -FNDA:132413,(anonymous_78) +FNDA:138188,(anonymous_78) DA:1,1 DA:43,1 DA:76,1 -DA:78,6524 -DA:87,6524 -DA:93,6524 +DA:78,6743 +DA:87,6743 +DA:93,6743 DA:94,0 -DA:98,6524 -DA:101,71879 -DA:104,6524 +DA:98,6743 +DA:101,74288 +DA:104,6743 DA:112,1 -DA:113,6506 -DA:115,6506 -DA:116,71668 -DA:118,71668 -DA:119,71668 +DA:113,6713 +DA:115,6713 +DA:116,73945 +DA:118,73945 +DA:119,73945 DA:122,1 -DA:126,6506 -DA:128,6506 +DA:126,6713 +DA:128,6713 DA:135,1 DA:136,13 DA:153,1 -DA:154,35 -DA:155,35 +DA:154,47 +DA:155,47 DA:163,1 -DA:165,4 -DA:166,4 -DA:167,4 +DA:165,5 +DA:166,5 +DA:167,5 DA:170,0 DA:180,1 DA:185,2 @@ -35241,72 +35654,72 @@ DA:192,2 DA:196,2 DA:199,0 DA:207,1 -DA:208,17 +DA:208,41 DA:211,1 -DA:212,466 +DA:212,487 DA:213,0 -DA:215,466 +DA:215,487 DA:218,1 -DA:220,55775 -DA:226,27922 -DA:227,27922 -DA:228,27922 -DA:229,27922 -DA:231,27922 -DA:232,27922 -DA:233,63 -DA:234,63 -DA:237,27859 -DA:240,63 +DA:220,58574 +DA:226,29335 +DA:227,29335 +DA:228,29335 +DA:229,29335 +DA:231,29335 +DA:232,29335 +DA:233,90 +DA:234,90 +DA:237,29245 +DA:240,90 DA:254,1 DA:255,0 DA:267,1 DA:268,0 DA:276,1 -DA:277,240 -DA:279,120 -DA:280,120 -DA:288,7220 -DA:289,6872 -DA:290,6872 +DA:277,372 +DA:279,186 +DA:280,186 +DA:288,7595 +DA:289,7169 +DA:290,7169 DA:302,1 -DA:303,3 -DA:304,3 -DA:305,3 -DA:309,3 -DA:314,3 +DA:303,9 +DA:304,9 +DA:305,9 +DA:309,9 +DA:314,9 DA:315,0 -DA:318,3 -DA:319,5 -DA:321,3 +DA:318,9 +DA:319,11 +DA:321,9 DA:328,1 DA:329,0 DA:330,0 DA:331,0 DA:333,0 -DA:344,6 -DA:346,10 -DA:347,10 -DA:348,10 -DA:350,6 -DA:351,6 +DA:344,5 +DA:346,8 +DA:347,8 +DA:348,8 +DA:350,5 +DA:351,5 DA:352,0 -DA:355,6 -DA:357,6 +DA:355,5 +DA:357,5 DA:359,0 -DA:364,6 -DA:365,6 -DA:366,6 -DA:374,6 -DA:375,6 -DA:376,6 -DA:377,6 -DA:393,715 -DA:394,511 -DA:395,511 +DA:364,5 +DA:365,5 +DA:366,5 +DA:374,5 +DA:375,5 +DA:376,5 +DA:377,5 +DA:393,470 +DA:394,235 +DA:395,235 DA:405,1 -DA:406,569 -DA:407,569 +DA:406,746 +DA:407,746 DA:415,1 DA:416,0 DA:417,0 @@ -35314,47 +35727,47 @@ DA:424,1 DA:425,0 DA:426,0 DA:432,1 -DA:433,271 -DA:434,271 +DA:433,387 +DA:434,387 DA:437,1 -DA:443,7048 -DA:445,7048 +DA:443,7357 +DA:445,7357 DA:451,1 -DA:452,237 -DA:453,237 -DA:454,220 +DA:452,234 +DA:453,234 +DA:454,217 DA:457,17 DA:458,17 DA:459,7 DA:462,10 -DA:477,528 -DA:482,528 -DA:484,528 -DA:486,528 -DA:487,108 -DA:488,108 -DA:490,528 +DA:477,608 +DA:482,608 +DA:484,608 +DA:486,608 +DA:487,105 +DA:488,105 +DA:490,608 DA:504,1 -DA:505,0 +DA:505,6 DA:511,1 -DA:512,198 -DA:514,99 -DA:515,99 -DA:516,99 -DA:517,99 -DA:518,80 -DA:520,99 -DA:521,119 +DA:512,238 +DA:514,119 +DA:515,119 +DA:516,119 +DA:517,119 +DA:518,100 +DA:520,119 +DA:521,139 DA:529,1 -DA:533,13090 -DA:534,13090 -DA:535,13090 +DA:533,13528 +DA:534,13528 +DA:535,13528 DA:547,1 -DA:550,13252 -DA:552,13141 -DA:553,13141 -DA:557,13141 -DA:559,13141 +DA:550,13670 +DA:552,13563 +DA:553,13563 +DA:557,13563 +DA:559,13563 DA:567,1 DA:568,22 DA:571,17 @@ -35367,35 +35780,35 @@ DA:594,0 DA:595,0 DA:596,0 DA:609,1 -DA:615,6751 -DA:616,6751 +DA:615,7083 +DA:616,7083 DA:628,1 -DA:629,6524 -DA:630,6524 +DA:629,6743 +DA:630,6743 DA:644,1 -DA:645,13656 +DA:645,14144 DA:651,1 DA:652,8 DA:663,1 DA:664,4 DA:665,4 DA:675,1 -DA:676,14621 +DA:676,15490 DA:683,1 -DA:684,16 +DA:684,34 DA:691,1 DA:692,37 DA:699,1 -DA:700,22 -DA:701,22 +DA:700,93 +DA:701,93 DA:711,1 DA:712,0 DA:714,0 DA:715,0 -DA:726,63 -DA:727,63 -DA:728,62 -DA:729,62 +DA:726,67 +DA:727,67 +DA:728,66 +DA:729,66 DA:741,9 DA:742,9 DA:743,9 @@ -35447,8 +35860,8 @@ DA:854,14 DA:855,14 DA:856,14 DA:864,1 -DA:865,6524 -DA:866,6524 +DA:865,6743 +DA:866,6743 DA:877,1 DA:878,0 DA:880,0 @@ -35463,7 +35876,7 @@ DA:917,2 DA:921,1 DA:922,1 DA:928,1 -DA:929,6544 +DA:929,6763 DA:940,1 DA:941,2 DA:942,2 @@ -35475,7 +35888,7 @@ DA:957,0 DA:964,1 DA:967,41 DA:976,1 -DA:977,14 +DA:977,13 DA:983,1 DA:984,0 DA:993,1 @@ -35490,29 +35903,29 @@ DA:1010,0 DA:1025,1 DA:1026,43 DA:1033,1 -DA:1034,132413 +DA:1034,138188 DA:1035,0 -DA:1037,132413 +DA:1037,138188 DA:1041,1 LF:290 -LH:225 +LH:226 BRDA:93,0,0,0 -BRDA:93,0,1,6524 +BRDA:93,0,1,6743 BRDA:122,1,0,0 BRDA:122,1,1,1 BRDA:122,2,0,1 BRDA:122,2,1,1 -BRDA:155,3,0,35 +BRDA:155,3,0,47 BRDA:155,3,1,0 -BRDA:155,4,0,22 -BRDA:155,4,1,13 -BRDA:155,5,0,35 -BRDA:155,5,1,35 -BRDA:165,6,0,4 +BRDA:155,4,0,30 +BRDA:155,4,1,17 +BRDA:155,5,0,47 +BRDA:155,5,1,47 +BRDA:165,6,0,5 BRDA:165,6,1,0 -BRDA:165,7,0,4 -BRDA:165,7,1,4 -BRDA:165,7,2,4 +BRDA:165,7,0,5 +BRDA:165,7,1,5 +BRDA:165,7,2,5 BRDA:187,8,0,2 BRDA:187,8,1,0 BRDA:187,9,0,2 @@ -35524,144 +35937,144 @@ BRDA:192,11,1,2 BRDA:192,12,0,2 BRDA:192,12,1,2 BRDA:212,13,0,0 -BRDA:212,13,1,466 -BRDA:220,14,0,27853 -BRDA:220,14,1,69 +BRDA:212,13,1,487 +BRDA:220,14,0,29239 +BRDA:220,14,1,96 BRDA:228,15,0,6 -BRDA:228,15,1,27916 +BRDA:228,15,1,29329 BRDA:229,16,0,6 -BRDA:229,16,1,27916 -BRDA:231,17,0,27859 -BRDA:231,17,1,63 -BRDA:232,18,0,63 -BRDA:232,18,1,27859 -BRDA:277,19,0,120 +BRDA:229,16,1,29329 +BRDA:231,17,0,29245 +BRDA:231,17,1,90 +BRDA:232,18,0,90 +BRDA:232,18,1,29245 +BRDA:277,19,0,186 BRDA:277,19,1,0 -BRDA:288,20,0,348 -BRDA:288,20,1,6524 -BRDA:303,21,0,3 +BRDA:288,20,0,426 +BRDA:288,20,1,6743 +BRDA:303,21,0,9 BRDA:303,21,1,0 BRDA:308,22,0,0 -BRDA:308,22,1,3 -BRDA:305,23,0,3 -BRDA:305,23,1,3 -BRDA:309,24,0,3 +BRDA:308,22,1,9 +BRDA:305,23,0,9 +BRDA:305,23,1,9 +BRDA:309,24,0,9 BRDA:309,24,1,0 BRDA:309,25,0,0 -BRDA:309,25,1,3 -BRDA:309,26,0,3 -BRDA:309,26,1,3 +BRDA:309,25,1,9 +BRDA:309,26,0,9 +BRDA:309,26,1,9 BRDA:314,27,0,0 -BRDA:314,27,1,3 -BRDA:314,28,0,3 -BRDA:314,28,1,3 +BRDA:314,27,1,9 +BRDA:314,28,0,9 +BRDA:314,28,1,9 BRDA:314,28,2,0 BRDA:330,29,0,0 BRDA:330,29,1,0 BRDA:330,30,0,0 BRDA:330,30,1,0 -BRDA:346,31,0,4 +BRDA:346,31,0,3 BRDA:346,31,1,2 -BRDA:347,32,0,4 +BRDA:347,32,0,3 BRDA:347,32,1,2 -BRDA:348,33,0,4 +BRDA:348,33,0,3 BRDA:348,33,1,2 BRDA:351,34,0,0 -BRDA:351,34,1,6 -BRDA:355,35,0,6 +BRDA:351,34,1,5 +BRDA:355,35,0,5 BRDA:355,35,1,0 -BRDA:365,36,0,6 -BRDA:365,36,1,6 -BRDA:374,37,0,6 +BRDA:365,36,0,5 +BRDA:365,36,1,5 +BRDA:374,37,0,5 BRDA:374,37,1,0 -BRDA:393,38,0,204 -BRDA:393,38,1,307 +BRDA:393,38,0,235 +BRDA:393,38,1,0 BRDA:417,39,0,0 BRDA:417,39,1,0 BRDA:452,40,0,0 -BRDA:452,40,1,237 -BRDA:452,41,0,237 -BRDA:452,41,1,237 -BRDA:453,42,0,220 +BRDA:452,40,1,234 +BRDA:452,41,0,234 +BRDA:452,41,1,234 +BRDA:453,42,0,217 BRDA:453,42,1,17 -BRDA:453,43,0,237 -BRDA:453,43,1,237 +BRDA:453,43,0,234 +BRDA:453,43,1,234 BRDA:453,44,0,0 -BRDA:453,44,1,237 -BRDA:453,45,0,237 -BRDA:453,45,1,237 +BRDA:453,44,1,234 +BRDA:453,45,0,234 +BRDA:453,45,1,234 BRDA:458,46,0,7 BRDA:458,46,1,10 -BRDA:482,47,0,420 -BRDA:482,47,1,108 +BRDA:482,47,0,503 +BRDA:482,47,1,105 BRDA:494,48,0,461 -BRDA:494,48,1,67 -BRDA:485,49,0,528 +BRDA:494,48,1,147 +BRDA:485,49,0,608 BRDA:485,49,1,471 BRDA:485,50,0,32 -BRDA:485,50,1,496 -BRDA:485,51,0,528 -BRDA:485,51,1,528 -BRDA:486,52,0,108 -BRDA:486,52,1,420 +BRDA:485,50,1,576 +BRDA:485,51,0,608 +BRDA:485,51,1,608 +BRDA:486,52,0,105 +BRDA:486,52,1,503 BRDA:488,53,0,10 -BRDA:488,53,1,98 -BRDA:488,54,0,108 -BRDA:488,54,1,98 -BRDA:491,55,0,528 -BRDA:491,55,1,518 -BRDA:512,56,0,99 +BRDA:488,53,1,95 +BRDA:488,54,0,105 +BRDA:488,54,1,95 +BRDA:491,55,0,608 +BRDA:491,55,1,598 +BRDA:512,56,0,119 BRDA:512,56,1,0 -BRDA:518,57,0,80 +BRDA:518,57,0,100 BRDA:518,57,1,0 BRDA:533,58,0,0 -BRDA:533,58,1,13090 -BRDA:550,59,0,111 -BRDA:550,59,1,13030 +BRDA:533,58,1,13528 +BRDA:550,59,0,107 +BRDA:550,59,1,13456 BRDA:568,60,0,5 BRDA:568,60,1,12 -BRDA:618,61,0,181 -BRDA:618,61,1,6570 -BRDA:618,62,0,6751 -BRDA:618,62,1,6751 -BRDA:619,63,0,170 -BRDA:619,63,1,6581 -BRDA:619,64,0,6751 -BRDA:619,64,1,6751 +BRDA:618,61,0,294 +BRDA:618,61,1,6789 +BRDA:618,62,0,7083 +BRDA:618,62,1,7083 +BRDA:619,63,0,269 +BRDA:619,63,1,6814 +BRDA:619,64,0,7083 +BRDA:619,64,1,7083 BRDA:620,65,0,20 -BRDA:620,65,1,6731 -BRDA:620,66,0,6751 -BRDA:620,66,1,6751 -BRDA:631,67,0,6524 -BRDA:631,67,1,6524 +BRDA:620,65,1,7063 +BRDA:620,66,0,7083 +BRDA:620,66,1,7083 +BRDA:631,67,0,6743 +BRDA:631,67,1,6743 BRDA:665,68,0,4 BRDA:665,68,1,3 BRDA:666,69,0,2 BRDA:666,69,1,1 -BRDA:684,70,0,16 +BRDA:684,70,0,34 BRDA:684,70,1,0 -BRDA:684,71,0,16 -BRDA:684,71,1,16 -BRDA:700,72,0,22 +BRDA:684,71,0,34 +BRDA:684,71,1,34 +BRDA:700,72,0,93 BRDA:700,72,1,0 -BRDA:700,73,0,22 -BRDA:700,73,1,22 -BRDA:700,74,0,12 -BRDA:700,74,1,10 -BRDA:700,75,0,22 -BRDA:700,75,1,22 -BRDA:702,76,0,22 +BRDA:700,73,0,93 +BRDA:700,73,1,93 +BRDA:700,74,0,63 +BRDA:700,74,1,30 +BRDA:700,75,0,93 +BRDA:700,75,1,93 +BRDA:702,76,0,93 BRDA:702,76,1,0 BRDA:712,77,0,0 BRDA:712,77,1,0 BRDA:716,78,0,0 BRDA:716,78,1,0 -BRDA:727,79,0,52 +BRDA:727,79,0,56 BRDA:727,79,1,11 -BRDA:727,80,0,63 -BRDA:727,80,1,63 -BRDA:730,81,0,62 -BRDA:730,81,1,62 +BRDA:727,80,0,67 +BRDA:727,80,1,67 +BRDA:730,81,0,66 +BRDA:730,81,1,66 BRDA:742,82,0,9 BRDA:742,82,1,0 BRDA:744,83,0,0 @@ -35737,9 +36150,9 @@ BRDA:1005,117,1,0 BRDA:1009,118,0,0 BRDA:1009,118,1,0 BRDA:1034,119,0,0 -BRDA:1034,119,1,132413 +BRDA:1034,119,1,138188 BRF:242 -BRH:152 +BRH:151 end_of_record TN: SF:packages/roosterjs-editor-core/lib/editor/createEditorCore.ts @@ -35751,56 +36164,56 @@ FN:49,(anonymous_4) FN:51,(anonymous_5) FNF:6 FNH:5 -FNDA:6524,(anonymous_0) -FNDA:84812,(anonymous_1) +FNDA:6743,(anonymous_0) +FNDA:87659,(anonymous_1) FNDA:43,(anonymous_2) -FNDA:78403,(anonymous_3) -FNDA:362,(anonymous_4) +FNDA:81031,(anonymous_3) +FNDA:444,(anonymous_4) FNDA:0,(anonymous_5) DA:1,1 DA:2,1 DA:3,1 DA:4,1 DA:12,1 -DA:13,6524 -DA:14,6524 -DA:16,6524 -DA:17,84812 -DA:18,6524 -DA:19,6500 -DA:22,78288 -DA:26,6524 -DA:27,6524 -DA:29,6524 +DA:13,6743 +DA:14,6743 +DA:16,6743 +DA:17,87659 +DA:18,6743 +DA:19,6715 +DA:22,80916 +DA:26,6743 +DA:27,6743 +DA:29,6743 DA:31,43 DA:33,43 -DA:40,6524 -DA:47,78403 -DA:49,362 +DA:40,6743 +DA:47,81031 +DA:49,444 DA:51,0 -DA:58,6524 +DA:58,6743 LF:22 LH:21 -BRDA:17,0,0,6524 -BRDA:17,0,1,78288 -BRDA:18,1,0,6500 -BRDA:18,1,1,24 +BRDA:17,0,0,6743 +BRDA:17,0,1,80916 +BRDA:18,1,0,6715 +BRDA:18,1,1,28 BRDA:27,2,0,0 -BRDA:27,2,1,6524 +BRDA:27,2,1,6743 BRDA:27,3,0,0 -BRDA:27,3,1,6524 -BRDA:27,4,0,6524 -BRDA:27,4,1,6524 -BRDA:29,5,0,6524 -BRDA:29,5,1,6524 +BRDA:27,3,1,6743 +BRDA:27,4,0,6743 +BRDA:27,4,1,6743 +BRDA:29,5,0,6743 +BRDA:29,5,1,6743 BRDA:35,6,0,43 BRDA:35,6,1,0 -BRDA:44,7,0,6524 -BRDA:44,7,1,6523 -BRDA:49,8,0,6524 -BRDA:49,8,1,6524 -BRDA:51,9,0,6524 -BRDA:51,9,1,6524 +BRDA:44,7,0,6743 +BRDA:44,7,1,6742 +BRDA:49,8,0,6743 +BRDA:49,8,1,6743 +BRDA:51,9,0,6743 +BRDA:51,9,1,6743 BRF:20 BRH:17 end_of_record @@ -35956,11 +36369,11 @@ FN:155,(anonymous_131) FN:156,(anonymous_132) FN:158,(anonymous_133) FNF:134 -FNH:98 -FNDA:6745,(anonymous_0) -FNDA:6545,(anonymous_1) -FNDA:221,(anonymous_2) -FNDA:116,(anonymous_3) +FNH:100 +FNDA:6993,(anonymous_0) +FNDA:6764,(anonymous_1) +FNDA:292,(anonymous_2) +FNDA:120,(anonymous_3) FNDA:30,(anonymous_4) FNDA:0,(anonymous_5) FNDA:0,(anonymous_6) @@ -35968,53 +36381,53 @@ FNDA:28,(anonymous_7) FNDA:0,(anonymous_8) FNDA:1,(anonymous_9) FNDA:3,(anonymous_10) -FNDA:3,(anonymous_11) -FNDA:0,(anonymous_12) +FNDA:9,(anonymous_11) +FNDA:8,(anonymous_12) FNDA:0,(anonymous_13) FNDA:2,(anonymous_14) FNDA:0,(anonymous_15) FNDA:0,(anonymous_16) -FNDA:2,(anonymous_17) +FNDA:3,(anonymous_17) FNDA:11,(anonymous_18) FNDA:25,(anonymous_19) FNDA:25,(anonymous_20) FNDA:25,(anonymous_21) -FNDA:27123,(anonymous_22) +FNDA:28034,(anonymous_22) FNDA:0,(anonymous_23) -FNDA:6526,(anonymous_24) +FNDA:6745,(anonymous_24) FNDA:19,(anonymous_25) FNDA:29,(anonymous_26) -FNDA:13067,(anonymous_27) -FNDA:7800,(anonymous_28) +FNDA:14801,(anonymous_27) +FNDA:8120,(anonymous_28) FNDA:0,(anonymous_29) FNDA:12,(anonymous_30) -FNDA:188,(anonymous_31) +FNDA:239,(anonymous_31) FNDA:1,(anonymous_32) FNDA:100,(anonymous_33) -FNDA:8557,(anonymous_34) -FNDA:247,(anonymous_35) +FNDA:8942,(anonymous_34) +FNDA:391,(anonymous_35) FNDA:34,(anonymous_36) -FNDA:26,(anonymous_37) +FNDA:35,(anonymous_37) FNDA:64,(anonymous_38) -FNDA:27924,(anonymous_39) +FNDA:29356,(anonymous_39) FNDA:12,(anonymous_40) -FNDA:17,(anonymous_41) -FNDA:100,(anonymous_42) -FNDA:76,(anonymous_43) -FNDA:29,(anonymous_44) +FNDA:21,(anonymous_41) +FNDA:172,(anonymous_42) +FNDA:111,(anonymous_43) +FNDA:53,(anonymous_44) FNDA:32,(anonymous_45) -FNDA:179,(anonymous_46) +FNDA:213,(anonymous_46) FNDA:0,(anonymous_47) FNDA:3,(anonymous_48) FNDA:23,(anonymous_49) -FNDA:14954,(anonymous_50) +FNDA:15876,(anonymous_50) FNDA:0,(anonymous_51) FNDA:0,(anonymous_52) -FNDA:13113,(anonymous_53) +FNDA:13590,(anonymous_53) FNDA:34,(anonymous_54) -FNDA:6864,(anonymous_55) +FNDA:7083,(anonymous_55) FNDA:0,(anonymous_56) -FNDA:69,(anonymous_57) +FNDA:66,(anonymous_57) FNDA:43,(anonymous_58) FNDA:0,(anonymous_59) FNDA:20,(anonymous_60) @@ -36022,60 +36435,60 @@ FNDA:158,(anonymous_61) FNDA:92,(anonymous_62) FNDA:5,(anonymous_63) FNDA:0,(anonymous_64) -FNDA:17,(anonymous_65) -FNDA:96,(anonymous_66) +FNDA:28,(anonymous_65) +FNDA:116,(anonymous_66) FNDA:0,(anonymous_67) FNDA:0,(anonymous_68) -FNDA:0,(anonymous_69) +FNDA:3,(anonymous_69) FNDA:0,(anonymous_70) FNDA:1,(anonymous_71) FNDA:1,(anonymous_72) -FNDA:81,(anonymous_73) -FNDA:46,(anonymous_74) -FNDA:39,(anonymous_75) -FNDA:53,(anonymous_76) +FNDA:101,(anonymous_73) +FNDA:66,(anonymous_74) +FNDA:59,(anonymous_75) +FNDA:66,(anonymous_76) FNDA:0,(anonymous_77) FNDA:0,(anonymous_78) -FNDA:14258,(anonymous_79) -FNDA:760,(anonymous_80) +FNDA:15068,(anonymous_79) +FNDA:922,(anonymous_80) FNDA:0,(anonymous_81) -FNDA:1,(anonymous_82) -FNDA:6838,(anonymous_83) +FNDA:7,(anonymous_82) +FNDA:7185,(anonymous_83) FNDA:3,(anonymous_84) FNDA:0,(anonymous_85) FNDA:4,(anonymous_86) -FNDA:396,(anonymous_87) -FNDA:762,(anonymous_88) +FNDA:474,(anonymous_87) +FNDA:894,(anonymous_88) FNDA:0,(anonymous_89) -FNDA:6910,(anonymous_90) -FNDA:13048,(anonymous_91) +FNDA:7227,(anonymous_90) +FNDA:13486,(anonymous_91) FNDA:0,(anonymous_92) -FNDA:530,(anonymous_93) +FNDA:707,(anonymous_93) FNDA:0,(anonymous_94) FNDA:0,(anonymous_95) -FNDA:6737,(anonymous_96) -FNDA:14,(anonymous_97) +FNDA:6962,(anonymous_96) +FNDA:11,(anonymous_97) FNDA:40,(anonymous_98) FNDA:0,(anonymous_99) FNDA:48,(anonymous_100) -FNDA:302,(anonymous_101) +FNDA:286,(anonymous_101) FNDA:129,(anonymous_102) -FNDA:7115,(anonymous_103) -FNDA:7308,(anonymous_104) +FNDA:7511,(anonymous_103) +FNDA:7769,(anonymous_104) FNDA:0,(anonymous_105) FNDA:3,(anonymous_106) -FNDA:403,(anonymous_107) -FNDA:94,(anonymous_108) +FNDA:481,(anonymous_107) +FNDA:3,(anonymous_108) FNDA:7,(anonymous_109) FNDA:0,(anonymous_110) FNDA:48,(anonymous_111) -FNDA:29,(anonymous_112) -FNDA:54,(anonymous_113) +FNDA:25,(anonymous_112) +FNDA:52,(anonymous_113) FNDA:5,(anonymous_114) FNDA:720,(anonymous_115) FNDA:145,(anonymous_116) -FNDA:14318,(anonymous_117) -FNDA:24,(anonymous_118) +FNDA:14938,(anonymous_117) +FNDA:40,(anonymous_118) FNDA:0,(anonymous_119) FNDA:0,(anonymous_120) FNDA:0,(anonymous_121) @@ -36084,17 +36497,17 @@ FNDA:0,(anonymous_123) FNDA:0,(anonymous_124) FNDA:0,(anonymous_125) FNDA:1,(anonymous_126) -FNDA:95,(anonymous_127) -FNDA:29,(anonymous_128) -FNDA:18,(anonymous_129) -FNDA:6591,(anonymous_130) -FNDA:39901,(anonymous_131) -FNDA:841,(anonymous_132) -FNDA:14,(anonymous_133) -DA:1,6746 -DA:2,6546 -DA:4,222 -DA:5,117 +FNDA:73,(anonymous_127) +FNDA:19,(anonymous_128) +FNDA:6,(anonymous_129) +FNDA:6804,(anonymous_130) +FNDA:41386,(anonymous_131) +FNDA:1148,(anonymous_132) +FNDA:13,(anonymous_133) +DA:1,6994 +DA:2,6765 +DA:4,293 +DA:5,121 DA:7,1 DA:8,31 DA:9,1 @@ -36103,48 +36516,48 @@ DA:12,29 DA:14,1 DA:15,2 DA:16,4 -DA:17,4 -DA:18,1 +DA:17,10 +DA:18,9 DA:19,1 DA:21,3 DA:22,1 DA:23,1 -DA:24,3 +DA:24,4 DA:25,12 DA:26,26 DA:27,26 DA:28,26 -DA:30,27124 -DA:31,6527 +DA:30,28035 +DA:31,6746 DA:32,20 DA:33,30 -DA:34,13068 -DA:35,7801 +DA:34,14802 +DA:35,8121 DA:36,1 -DA:37,189 +DA:37,240 DA:38,1 DA:39,2 DA:40,101 -DA:43,8558 -DA:44,248 +DA:43,8943 +DA:44,392 DA:45,35 -DA:46,27 +DA:46,36 DA:47,65 -DA:48,27925 -DA:49,18 -DA:50,101 -DA:51,77 -DA:52,33 -DA:53,180 +DA:48,29357 +DA:49,22 +DA:50,173 +DA:51,112 +DA:52,54 +DA:53,214 DA:54,4 DA:55,24 -DA:56,14955 +DA:56,15877 DA:57,1 DA:58,1 -DA:59,13114 +DA:59,13591 DA:60,35 -DA:61,6865 -DA:62,70 +DA:61,7084 +DA:62,67 DA:63,44 DA:64,1 DA:65,21 @@ -36152,63 +36565,63 @@ DA:67,159 DA:68,93 DA:70,6 DA:71,1 -DA:72,18 -DA:73,97 +DA:72,29 +DA:73,117 DA:74,1 DA:75,1 -DA:76,1 +DA:76,4 DA:77,1 DA:78,2 DA:79,2 -DA:81,82 -DA:82,47 -DA:83,40 -DA:84,54 +DA:81,102 +DA:82,67 +DA:83,60 +DA:84,67 DA:85,1 DA:86,1 -DA:88,14259 -DA:89,761 +DA:88,15069 +DA:89,923 DA:90,1 -DA:91,2 -DA:92,6839 +DA:91,8 +DA:92,7186 DA:93,4 DA:94,1 DA:95,1 DA:96,5 -DA:97,397 -DA:99,763 -DA:101,6911 -DA:102,13049 +DA:97,475 +DA:99,895 +DA:101,7228 +DA:102,13487 DA:103,1 DA:104,1 -DA:105,531 +DA:105,708 DA:107,1 DA:108,1 DA:109,1 -DA:111,6738 -DA:112,15 +DA:111,6963 +DA:112,12 DA:114,41 DA:115,1 DA:116,49 -DA:117,303 +DA:117,287 DA:119,130 -DA:120,7116 -DA:121,7309 +DA:120,7512 +DA:121,7770 DA:122,1 DA:123,1 DA:124,4 -DA:125,404 -DA:128,95 +DA:125,482 +DA:128,4 DA:129,8 DA:130,1 DA:131,49 -DA:132,30 -DA:134,55 +DA:132,26 +DA:134,53 DA:135,6 DA:136,721 DA:137,146 -DA:138,14319 -DA:140,25 +DA:138,14939 +DA:140,41 DA:141,1 DA:142,1 DA:144,1 @@ -36218,11 +36631,11 @@ DA:147,1 DA:148,1 DA:149,1 DA:150,2 -DA:152,96 -DA:154,6592 -DA:155,39902 -DA:156,842 -DA:158,15 +DA:152,74 +DA:154,6805 +DA:155,41387 +DA:156,1149 +DA:158,14 LF:132 LH:132 BRF:0 @@ -36242,30 +36655,30 @@ FN:64,(anonymous_8) FNF:9 FNH:9 FNDA:1,(anonymous_0) -FNDA:1008,NodeBlockElement -FNDA:37,(anonymous_2) -FNDA:688,(anonymous_3) -FNDA:567,(anonymous_4) -FNDA:230,(anonymous_5) -FNDA:208,(anonymous_6) -FNDA:636,(anonymous_7) +FNDA:1316,NodeBlockElement +FNDA:38,(anonymous_2) +FNDA:866,(anonymous_3) +FNDA:775,(anonymous_4) +FNDA:296,(anonymous_5) +FNDA:288,(anonymous_6) +FNDA:1053,(anonymous_7) FNDA:9,(anonymous_8) DA:1,1 DA:2,1 DA:10,1 -DA:11,1008 +DA:11,1316 DA:18,1 -DA:19,37 +DA:19,38 DA:26,1 -DA:27,688 +DA:27,866 DA:34,1 -DA:35,567 +DA:35,775 DA:41,1 -DA:43,230 +DA:43,296 DA:49,1 -DA:51,208 +DA:51,288 DA:57,1 -DA:58,636 +DA:58,1053 DA:64,1 DA:65,9 DA:67,1 @@ -36295,14 +36708,14 @@ FN:107,(anonymous_9) FNF:10 FNH:9 FNDA:1,(anonymous_0) -FNDA:967,StartEndBlockElement -FNDA:1868,(anonymous_2) +FNDA:1005,StartEndBlockElement +FNDA:2214,(anonymous_2) FNDA:20,(anonymous_3) -FNDA:224,(anonymous_4) -FNDA:236,(anonymous_5) -FNDA:50,(anonymous_6) -FNDA:57,(anonymous_7) -FNDA:1477,(anonymous_8) +FNDA:255,(anonymous_4) +FNDA:276,(anonymous_5) +FNDA:80,(anonymous_6) +FNDA:80,(anonymous_7) +FNDA:1520,(anonymous_8) FNDA:0,(anonymous_9) DA:1,1 DA:2,1 @@ -36314,12 +36727,12 @@ DA:7,1 DA:8,1 DA:11,1 DA:22,1 -DA:23,967 +DA:23,1005 DA:25,1 -DA:26,1868 -DA:27,1868 -DA:28,2660 -DA:30,1868 +DA:26,2214 +DA:27,2214 +DA:28,3167 +DA:30,2214 DA:38,1 DA:39,20 DA:40,20 @@ -36331,23 +36744,23 @@ DA:52,18 DA:54,0 DA:57,20 DA:65,1 -DA:66,224 +DA:66,255 DA:72,1 -DA:73,236 +DA:73,276 DA:79,1 -DA:80,50 +DA:80,80 DA:89,1 -DA:90,57 +DA:90,80 DA:96,1 -DA:97,1477 +DA:97,1520 DA:107,1 DA:108,0 DA:109,0 DA:111,1 LF:40 LH:37 -BRDA:27,0,0,4528 -BRDA:27,0,1,4528 +BRDA:27,0,0,5381 +BRDA:27,0,1,5381 BRDA:41,1,0,20 BRDA:41,1,1,0 BRDA:45,2,0,38 @@ -36360,12 +36773,12 @@ BRDA:58,4,0,13 BRDA:58,4,1,7 BRDA:57,5,0,20 BRDA:57,5,1,19 -BRDA:81,6,0,50 +BRDA:81,6,0,80 BRDA:81,6,1,18 -BRDA:98,7,0,1477 -BRDA:98,7,1,1242 -BRDA:98,7,2,1111 -BRDA:98,7,3,356 +BRDA:98,7,0,1520 +BRDA:98,7,1,1278 +BRDA:98,7,2,1136 +BRDA:98,7,3,359 BRDA:109,8,0,0 BRDA:109,8,1,0 BRF:22 @@ -36377,8 +36790,8 @@ FN:34,getBlockElementAtNode FN:111,findHeadTailLeafNode FNF:2 FNH:2 -FNDA:8934,getBlockElementAtNode -FNDA:3476,findHeadTailLeafNode +FNDA:9572,getBlockElementAtNode +FNDA:4084,findHeadTailLeafNode DA:1,1 DA:2,1 DA:3,1 @@ -36386,100 +36799,100 @@ DA:4,1 DA:5,1 DA:6,1 DA:34,1 -DA:38,8934 -DA:39,7106 -DA:45,1828 -DA:46,1828 +DA:38,9572 +DA:39,7398 +DA:45,2174 +DA:46,2174 DA:47,0 -DA:48,1828 -DA:49,90 -DA:53,1738 -DA:54,1738 -DA:56,1738 +DA:48,2174 +DA:49,132 +DA:53,2042 +DA:54,2042 +DA:56,2042 DA:57,0 -DA:65,1738 -DA:67,1738 +DA:65,2042 +DA:67,2042 DA:68,0 -DA:71,1738 -DA:72,1738 -DA:74,1738 +DA:71,2042 +DA:72,2042 +DA:74,2042 DA:76,1 -DA:79,1737 -DA:80,1722 -DA:81,1722 -DA:83,1621 -DA:85,801 -DA:87,1621 -DA:88,101 -DA:90,101 +DA:79,2041 +DA:80,2081 +DA:81,2081 +DA:83,1904 +DA:85,1067 +DA:87,1904 +DA:88,177 +DA:90,177 DA:92,0 -DA:97,1737 -DA:112,3476 -DA:114,3476 -DA:115,118 -DA:118,3358 -DA:119,5171 -DA:120,5171 -DA:121,7115 -DA:122,7115 -DA:123,3215 -DA:127,1956 -DA:128,4140 -DA:129,59 -DA:130,4081 -DA:131,84 -DA:134,3997 -DA:135,3997 -DA:138,1813 +DA:97,2041 +DA:112,4084 +DA:114,4084 +DA:115,125 +DA:118,3959 +DA:119,6059 +DA:120,6059 +DA:121,8346 +DA:122,8346 +DA:123,3777 +DA:127,2282 +DA:128,4729 +DA:129,87 +DA:130,4642 +DA:131,95 +DA:134,4547 +DA:135,4547 +DA:138,2100 DA:140,0 LF:53 LH:48 -BRDA:38,0,0,7106 -BRDA:38,0,1,1828 +BRDA:38,0,0,7398 +BRDA:38,0,1,2174 BRDA:46,1,0,0 -BRDA:46,1,1,1828 -BRDA:48,2,0,90 -BRDA:48,2,1,1738 +BRDA:46,1,1,2174 +BRDA:48,2,0,132 +BRDA:48,2,1,2042 BRDA:56,3,0,0 -BRDA:56,3,1,1738 -BRDA:56,4,0,1738 -BRDA:56,4,1,1738 +BRDA:56,3,1,2042 +BRDA:56,4,0,2042 +BRDA:56,4,1,2042 BRDA:67,5,0,0 -BRDA:67,5,1,1738 +BRDA:67,5,1,2042 BRDA:74,6,0,1 -BRDA:74,6,1,1737 -BRDA:79,7,0,1838 -BRDA:79,7,1,1771 -BRDA:81,8,0,1621 -BRDA:81,8,1,101 -BRDA:83,9,0,801 -BRDA:83,9,1,820 -BRDA:88,10,0,101 +BRDA:74,6,1,2041 +BRDA:79,7,0,2218 +BRDA:79,7,1,2137 +BRDA:81,8,0,1904 +BRDA:81,8,1,177 +BRDA:83,9,0,1067 +BRDA:83,9,1,837 +BRDA:88,10,0,177 BRDA:88,10,1,0 -BRDA:88,11,0,101 -BRDA:88,11,1,101 -BRDA:98,12,0,801 -BRDA:98,12,1,936 -BRDA:97,13,0,1737 -BRDA:97,13,1,1242 -BRDA:114,14,0,118 -BRDA:114,14,1,3358 -BRDA:114,15,0,3476 -BRDA:114,15,1,236 -BRDA:120,16,0,9071 -BRDA:120,16,1,9071 -BRDA:120,17,0,4646 -BRDA:120,17,1,4425 -BRDA:122,18,0,3215 -BRDA:122,18,1,3900 -BRDA:128,19,0,59 -BRDA:128,19,1,4081 -BRDA:130,20,0,84 -BRDA:130,20,1,3997 -BRDA:131,21,0,42 -BRDA:131,21,1,42 -BRDA:135,22,0,2168 -BRDA:135,22,1,1829 +BRDA:88,11,0,177 +BRDA:88,11,1,177 +BRDA:98,12,0,1067 +BRDA:98,12,1,974 +BRDA:97,13,0,2041 +BRDA:97,13,1,1528 +BRDA:114,14,0,125 +BRDA:114,14,1,3959 +BRDA:114,15,0,4084 +BRDA:114,15,1,250 +BRDA:120,16,0,10628 +BRDA:120,16,1,10628 +BRDA:120,17,0,5476 +BRDA:120,17,1,5152 +BRDA:122,18,0,3777 +BRDA:122,18,1,4569 +BRDA:128,19,0,87 +BRDA:128,19,1,4642 +BRDA:130,20,0,95 +BRDA:130,20,1,4547 +BRDA:131,21,0,52 +BRDA:131,21,1,43 +BRDA:135,22,0,2498 +BRDA:135,22,1,2049 BRF:46 BRH:42 end_of_record @@ -36488,24 +36901,24 @@ SF:packages/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts FN:10,getFirstLastBlockElement FNF:1 FNH:1 -FNDA:6617,getFirstLastBlockElement +FNDA:6836,getFirstLastBlockElement DA:1,1 DA:10,1 -DA:14,6617 -DA:15,6617 -DA:16,6714 -DA:18,6617 +DA:14,6836 +DA:15,6836 +DA:16,6933 +DA:18,6836 LF:6 LH:6 -BRDA:17,0,0,6714 +BRDA:17,0,0,6933 BRDA:17,0,1,185 -BRDA:16,1,0,6714 -BRDA:16,1,1,6713 +BRDA:16,1,0,6933 +BRDA:16,1,1,6932 BRDA:16,2,0,171 -BRDA:16,2,1,6542 -BRDA:18,3,0,6617 +BRDA:16,2,1,6761 +BRDA:18,3,0,6836 BRDA:18,3,1,88 -BRDA:18,3,2,6529 +BRDA:18,3,2,6748 BRF:9 BRH:9 end_of_record @@ -36797,12 +37210,12 @@ SF:packages/roosterjs-editor-dom/lib/clipboard/handleImagePaste.ts FN:6,handleImagePaste FNF:1 FNH:1 -FNDA:2,handleImagePaste +FNDA:3,handleImagePaste DA:6,1 -DA:7,2 -DA:8,2 -DA:9,2 -DA:10,2 +DA:7,3 +DA:8,3 +DA:9,3 +DA:10,3 LF:5 LH:5 BRF:0 @@ -36880,11 +37293,11 @@ FN:73,processStyles FNF:6 FNH:6 FNDA:25,retrieveMetadataFromClipboard -FNDA:14,(anonymous_1) -FNDA:18,(anonymous_2) -FNDA:7,(anonymous_3) +FNDA:10,(anonymous_1) +FNDA:14,(anonymous_2) +FNDA:6,(anonymous_3) FNDA:2,(anonymous_4) -FNDA:19,processStyles +FNDA:17,processStyles DA:1,1 DA:2,1 DA:5,1 @@ -36893,82 +37306,82 @@ DA:14,1 DA:19,50 DA:20,25 DA:21,25 -DA:22,13 -DA:23,13 -DA:24,14 -DA:25,14 -DA:27,13 -DA:28,18 -DA:29,18 -DA:32,13 -DA:33,13 -DA:35,13 -DA:36,46 -DA:37,46 -DA:38,21 -DA:39,21 -DA:40,17 -DA:43,29 -DA:44,29 -DA:45,21 -DA:50,13 -DA:51,7 -DA:52,7 -DA:55,13 -DA:56,13 -DA:58,13 -DA:59,6 -DA:60,6 -DA:61,6 -DA:62,6 -DA:68,6 -DA:74,19 +DA:22,12 +DA:23,12 +DA:24,10 +DA:25,10 +DA:27,12 +DA:28,14 +DA:29,14 +DA:32,12 +DA:33,12 +DA:35,12 +DA:36,37 +DA:37,37 +DA:38,16 +DA:39,16 +DA:40,12 +DA:43,25 +DA:44,25 +DA:45,19 +DA:50,12 +DA:51,6 +DA:52,6 +DA:55,12 +DA:56,12 +DA:58,12 +DA:59,5 +DA:60,5 +DA:61,5 +DA:62,5 +DA:68,5 +DA:74,17 LF:38 LH:38 -BRDA:21,0,0,13 -BRDA:21,0,1,12 +BRDA:21,0,0,12 +BRDA:21,0,1,13 BRDA:21,1,0,25 -BRDA:21,1,1,13 +BRDA:21,1,1,12 BRDA:21,2,0,0 -BRDA:21,2,1,13 -BRDA:21,3,0,13 -BRDA:21,3,1,13 +BRDA:21,2,1,12 +BRDA:21,3,0,12 +BRDA:21,3,1,12 BRDA:22,4,0,0 -BRDA:22,4,1,13 -BRDA:22,5,0,13 -BRDA:22,5,1,13 -BRDA:23,6,0,13 +BRDA:22,4,1,12 +BRDA:22,5,0,12 +BRDA:22,5,1,12 +BRDA:23,6,0,12 BRDA:23,6,1,0 BRDA:33,7,0,0 -BRDA:33,7,1,13 -BRDA:33,8,0,13 -BRDA:33,8,1,13 +BRDA:33,7,1,12 +BRDA:33,8,0,12 +BRDA:33,8,1,12 BRDA:35,9,0,0 -BRDA:35,9,1,59 -BRDA:35,10,0,59 -BRDA:35,10,1,59 +BRDA:35,9,1,49 +BRDA:35,10,0,49 +BRDA:35,10,1,49 BRDA:36,11,0,0 -BRDA:36,11,1,46 -BRDA:36,12,0,46 -BRDA:36,12,1,46 -BRDA:37,13,0,21 -BRDA:37,13,1,25 +BRDA:36,11,1,37 +BRDA:36,12,0,37 +BRDA:36,12,1,37 +BRDA:37,13,0,16 +BRDA:37,13,1,21 BRDA:38,14,0,0 -BRDA:38,14,1,21 -BRDA:38,15,0,21 -BRDA:38,15,1,21 -BRDA:39,16,0,17 +BRDA:38,14,1,16 +BRDA:38,15,0,16 +BRDA:38,15,1,16 +BRDA:39,16,0,12 BRDA:39,16,1,4 -BRDA:44,17,0,21 -BRDA:44,17,1,8 +BRDA:44,17,0,19 +BRDA:44,17,1,6 BRDA:51,18,0,0 -BRDA:51,18,1,7 -BRDA:51,19,0,7 -BRDA:51,19,1,7 -BRDA:58,20,0,6 +BRDA:51,18,1,6 +BRDA:51,19,0,6 +BRDA:51,19,1,6 +BRDA:58,20,0,5 BRDA:58,20,1,7 -BRDA:58,21,0,13 -BRDA:58,21,1,6 +BRDA:58,21,0,12 +BRDA:58,21,1,5 BRDA:68,22,0,0 BRDA:68,22,1,2 BRDA:68,23,0,2 @@ -36991,8 +37404,8 @@ DA:16,25 DA:17,25 LF:7 LH:7 -BRDA:17,0,0,6 -BRDA:17,0,1,19 +BRDA:17,0,0,5 +BRDA:17,0,1,20 BRF:2 BRH:2 end_of_record @@ -37007,36 +37420,36 @@ FN:53,(anonymous_5) FNF:6 FNH:6 FNDA:1,(anonymous_0) -FNDA:495,BodyScoper +FNDA:500,BodyScoper FNDA:64,(anonymous_2) -FNDA:431,(anonymous_3) +FNDA:436,(anonymous_3) FNDA:27,(anonymous_4) -FNDA:266,(anonymous_5) +FNDA:272,(anonymous_5) DA:1,1 DA:2,1 DA:3,1 DA:4,1 DA:5,1 DA:13,1 -DA:21,495 -DA:22,495 +DA:21,500 +DA:22,500 DA:28,1 DA:29,64 DA:37,1 -DA:38,431 +DA:38,436 DA:46,1 DA:47,27 DA:53,1 -DA:54,266 +DA:54,272 DA:56,1 LF:17 LH:17 BRDA:22,0,0,136 -BRDA:22,0,1,359 +BRDA:22,0,1,364 BRDA:30,1,0,0 BRDA:30,1,1,64 BRDA:39,2,0,136 -BRDA:39,2,1,295 +BRDA:39,2,1,300 BRF:6 BRH:5 end_of_record @@ -37059,19 +37472,19 @@ FN:207,getNextPreviousInlineElement FNF:14 FNH:14 FNDA:1,(anonymous_0) -FNDA:789,ContentTraverser -FNDA:495,(anonymous_2) -FNDA:140,(anonymous_3) -FNDA:154,(anonymous_4) -FNDA:392,(anonymous_5) -FNDA:219,(anonymous_6) +FNDA:913,ContentTraverser +FNDA:500,(anonymous_2) +FNDA:231,(anonymous_3) +FNDA:182,(anonymous_4) +FNDA:485,(anonymous_5) +FNDA:280,(anonymous_6) FNDA:40,(anonymous_7) -FNDA:259,(anonymous_8) -FNDA:1898,(anonymous_9) -FNDA:539,(anonymous_10) -FNDA:323,(anonymous_11) -FNDA:862,(anonymous_12) -FNDA:756,getNextPreviousInlineElement +FNDA:320,(anonymous_8) +FNDA:2140,(anonymous_9) +FNDA:660,(anonymous_10) +FNDA:346,(anonymous_11) +FNDA:1006,(anonymous_12) +FNDA:894,getNextPreviousInlineElement DA:1,1 DA:2,1 DA:3,1 @@ -37082,122 +37495,122 @@ DA:7,1 DA:9,1 DA:10,1 DA:26,1 -DA:27,789 -DA:28,789 -DA:35,789 +DA:27,913 +DA:28,913 +DA:35,913 DA:43,1 -DA:48,495 +DA:48,500 DA:57,1 -DA:62,140 +DA:62,231 DA:73,1 -DA:76,302 -DA:79,154 +DA:76,358 +DA:79,182 DA:85,1 -DA:87,392 -DA:88,175 -DA:91,392 +DA:87,485 +DA:88,207 +DA:91,485 DA:97,1 -DA:98,219 +DA:98,280 DA:104,1 DA:105,40 DA:108,1 -DA:109,259 -DA:111,259 +DA:109,320 +DA:111,320 DA:112,0 -DA:115,259 -DA:121,259 -DA:128,259 -DA:133,100 -DA:134,100 -DA:137,159 +DA:115,320 +DA:121,320 +DA:128,320 +DA:133,133 +DA:134,133 +DA:137,187 DA:143,1 -DA:145,1898 -DA:146,614 -DA:149,1898 +DA:145,2140 +DA:146,706 +DA:149,2140 DA:155,1 -DA:156,539 +DA:156,660 DA:162,1 -DA:163,323 +DA:163,346 DA:166,1 -DA:167,862 -DA:170,862 -DA:171,0 -DA:174,862 -DA:175,106 -DA:180,106 +DA:167,1006 +DA:170,1006 +DA:171,2 +DA:174,1004 +DA:175,110 +DA:180,110 DA:181,0 -DA:184,756 -DA:185,756 -DA:198,862 -DA:199,385 -DA:200,385 -DA:203,477 +DA:184,894 +DA:185,894 +DA:198,1004 +DA:199,457 +DA:200,457 +DA:203,547 DA:205,1 -DA:212,756 +DA:212,894 DA:213,0 -DA:215,756 -DA:217,26 -DA:219,26 -DA:220,14 -DA:225,742 -DA:226,742 -DA:227,742 +DA:215,894 +DA:217,30 +DA:219,30 +DA:220,16 +DA:225,878 +DA:226,878 +DA:227,878 LF:70 -LH:66 -BRDA:76,0,0,148 +LH:67 +BRDA:76,0,0,176 BRDA:76,0,1,6 -BRDA:87,1,0,175 -BRDA:87,1,1,217 +BRDA:87,1,0,207 +BRDA:87,1,1,278 BRDA:111,2,0,0 -BRDA:111,2,1,259 -BRDA:117,3,0,219 +BRDA:111,2,1,320 +BRDA:117,3,0,280 BRDA:117,3,1,40 -BRDA:121,4,0,151 -BRDA:121,4,1,108 -BRDA:128,5,0,100 -BRDA:128,5,1,159 -BRDA:129,6,0,259 -BRDA:129,6,1,151 -BRDA:129,6,2,100 -BRDA:129,6,3,99 +BRDA:121,4,0,193 +BRDA:121,4,1,127 +BRDA:128,5,0,133 +BRDA:128,5,1,187 +BRDA:129,6,0,320 +BRDA:129,6,1,193 +BRDA:129,6,2,133 +BRDA:129,6,3,132 BRDA:129,6,4,1 BRDA:129,6,5,1 -BRDA:145,7,0,614 -BRDA:145,7,1,1284 -BRDA:149,8,0,118 -BRDA:149,8,1,1780 -BRDA:167,9,0,862 -BRDA:167,9,1,106 -BRDA:170,10,0,0 -BRDA:170,10,1,862 -BRDA:174,11,0,106 -BRDA:174,11,1,756 +BRDA:145,7,0,706 +BRDA:145,7,1,1434 +BRDA:149,8,0,125 +BRDA:149,8,1,2015 +BRDA:167,9,0,1006 +BRDA:167,9,1,112 +BRDA:170,10,0,2 +BRDA:170,10,1,1004 +BRDA:174,11,0,110 +BRDA:174,11,1,894 BRDA:180,12,0,0 -BRDA:180,12,1,106 -BRDA:180,13,0,106 +BRDA:180,12,1,110 +BRDA:180,13,0,110 BRDA:180,13,1,94 -BRDA:189,14,0,308 -BRDA:189,14,1,448 -BRDA:186,15,0,756 -BRDA:186,15,1,308 -BRDA:186,15,2,308 -BRDA:186,15,3,214 -BRDA:186,15,4,94 -BRDA:186,15,5,94 -BRDA:198,16,0,385 -BRDA:198,16,1,477 -BRDA:198,17,0,862 -BRDA:198,17,1,402 +BRDA:189,14,0,394 +BRDA:189,14,1,500 +BRDA:186,15,0,894 +BRDA:186,15,1,394 +BRDA:186,15,2,394 +BRDA:186,15,3,293 +BRDA:186,15,4,101 +BRDA:186,15,5,101 +BRDA:198,16,0,457 +BRDA:198,16,1,547 +BRDA:198,17,0,1004 +BRDA:198,17,1,488 BRDA:212,18,0,0 -BRDA:212,18,1,756 -BRDA:215,19,0,26 -BRDA:215,19,1,730 +BRDA:212,18,1,894 +BRDA:215,19,0,30 +BRDA:215,19,1,864 BRDA:217,20,0,19 -BRDA:217,20,1,7 -BRDA:219,21,0,14 -BRDA:219,21,1,12 +BRDA:217,20,1,11 +BRDA:219,21,0,16 +BRDA:219,21,1,14 BRF:52 -BRH:48 +BRH:49 end_of_record TN: SF:packages/roosterjs-editor-dom/lib/contentTraverser/PositionContentSearcher.ts @@ -37218,48 +37631,48 @@ FN:184,(anonymous_13) FNF:14 FNH:13 FNDA:1,(anonymous_0) -FNDA:140,PositionContentSearcher +FNDA:156,PositionContentSearcher FNDA:26,(anonymous_2) FNDA:21,(anonymous_3) -FNDA:28,(anonymous_4) -FNDA:24,(anonymous_5) -FNDA:30,(anonymous_6) -FNDA:14,(anonymous_7) +FNDA:40,(anonymous_4) +FNDA:36,(anonymous_5) +FNDA:34,(anonymous_6) +FNDA:16,(anonymous_7) FNDA:50,(anonymous_8) FNDA:49,(anonymous_9) FNDA:61,(anonymous_10) FNDA:40,(anonymous_11) FNDA:0,(anonymous_12) -FNDA:167,(anonymous_13) +FNDA:183,(anonymous_13) DA:1,1 DA:2,1 DA:15,1 DA:20,1 -DA:22,140 -DA:25,140 -DA:28,140 -DA:31,140 -DA:34,140 -DA:37,140 -DA:40,140 -DA:43,140 -DA:50,140 +DA:22,156 +DA:25,156 +DA:28,156 +DA:31,156 +DA:34,156 +DA:37,156 +DA:40,156 +DA:43,156 +DA:50,156 DA:57,26 DA:58,26 DA:59,26 DA:62,26 DA:69,1 -DA:70,28 -DA:71,28 -DA:74,28 +DA:70,40 +DA:71,40 +DA:74,40 DA:81,1 -DA:82,24 -DA:83,24 -DA:89,24 -DA:100,30 -DA:101,30 -DA:102,17 -DA:105,30 +DA:82,36 +DA:83,36 +DA:89,36 +DA:100,34 +DA:101,34 +DA:102,21 +DA:105,34 DA:114,1 DA:115,50 DA:116,1 @@ -37289,28 +37702,28 @@ DA:174,40 DA:175,40 DA:178,40 DA:184,1 -DA:185,167 -DA:188,167 +DA:185,183 +DA:188,183 DA:189,3 -DA:192,164 -DA:193,164 -DA:194,200 -DA:196,200 -DA:197,97 -DA:200,97 -DA:203,97 -DA:204,97 +DA:192,180 +DA:193,180 +DA:194,223 +DA:196,223 +DA:197,104 +DA:200,104 +DA:203,104 +DA:204,104 DA:205,13 -DA:209,97 -DA:210,97 -DA:213,97 +DA:209,104 +DA:210,104 +DA:213,104 DA:214,61 -DA:217,103 -DA:218,103 -DA:219,103 -DA:221,97 -DA:227,103 -DA:230,36 +DA:217,119 +DA:218,119 +DA:219,119 +DA:221,113 +DA:227,119 +DA:230,43 DA:233,1 LF:81 LH:78 @@ -37318,11 +37731,11 @@ BRDA:58,0,0,26 BRDA:58,0,1,0 BRDA:62,1,0,26 BRDA:62,1,1,2 -BRDA:70,2,0,28 +BRDA:70,2,0,40 BRDA:70,2,1,0 -BRDA:82,3,0,24 +BRDA:82,3,0,36 BRDA:82,3,1,0 -BRDA:101,4,0,17 +BRDA:101,4,0,21 BRDA:101,4,1,13 BRDA:115,5,0,1 BRDA:115,5,1,49 @@ -37347,29 +37760,29 @@ BRDA:164,14,0,56 BRDA:164,14,1,5 BRDA:174,15,0,40 BRDA:174,15,1,0 -BRDA:186,16,0,167 -BRDA:186,16,1,124 +BRDA:186,16,0,183 +BRDA:186,16,1,140 BRDA:188,17,0,3 -BRDA:188,17,1,164 -BRDA:188,18,0,167 -BRDA:188,18,1,167 -BRDA:194,19,0,200 -BRDA:194,19,1,124 -BRDA:196,20,0,97 -BRDA:196,20,1,103 -BRDA:196,21,0,200 -BRDA:196,21,1,99 -BRDA:200,22,0,97 +BRDA:188,17,1,180 +BRDA:188,18,0,183 +BRDA:188,18,1,183 +BRDA:194,19,0,223 +BRDA:194,19,1,140 +BRDA:196,20,0,104 +BRDA:196,20,1,119 +BRDA:196,21,0,223 +BRDA:196,21,1,106 +BRDA:200,22,0,104 BRDA:200,22,1,0 BRDA:204,23,0,13 -BRDA:204,23,1,84 -BRDA:204,24,0,97 +BRDA:204,23,1,91 +BRDA:204,24,0,104 BRDA:204,24,1,13 BRDA:213,25,0,61 -BRDA:213,25,1,36 -BRDA:213,26,0,97 -BRDA:213,26,1,91 -BRDA:219,27,0,97 +BRDA:213,25,1,43 +BRDA:213,26,0,104 +BRDA:213,26,1,93 +BRDA:219,27,0,113 BRDA:219,27,1,6 BRF:57 BRH:45 @@ -37386,11 +37799,11 @@ FN:108,getFirstLastInlineElementFromBlockElement FNF:7 FNH:7 FNDA:1,(anonymous_0) -FNDA:167,SelectionBlockScoper +FNDA:195,SelectionBlockScoper FNDA:7,(anonymous_2) -FNDA:156,(anonymous_3) +FNDA:184,(anonymous_3) FNDA:3,(anonymous_4) -FNDA:105,(anonymous_5) +FNDA:112,(anonymous_5) FNDA:5,getFirstLastInlineElementFromBlockElement DA:1,1 DA:2,1 @@ -37401,53 +37814,53 @@ DA:6,1 DA:8,1 DA:11,1 DA:24,1 -DA:35,167 -DA:37,167 -DA:39,167 +DA:35,195 +DA:37,195 +DA:39,195 DA:40,19 -DA:43,167 -DA:44,167 +DA:43,195 +DA:44,195 DA:50,1 DA:51,7 DA:60,1 -DA:61,156 -DA:62,156 +DA:61,184 +DA:62,180 DA:66,5 -DA:72,151 -DA:73,151 -DA:79,0 +DA:72,175 +DA:73,175 +DA:79,4 DA:86,1 DA:87,3 DA:96,1 -DA:97,105 +DA:97,112 DA:101,1 DA:112,5 DA:113,1 DA:114,1 DA:116,4 LF:33 -LH:32 +LH:33 BRDA:39,0,0,19 -BRDA:39,0,1,148 -BRDA:61,1,0,156 -BRDA:61,1,1,0 +BRDA:39,0,1,176 +BRDA:61,1,0,180 +BRDA:61,1,1,4 BRDA:63,2,0,3 BRDA:63,2,1,5 BRDA:63,2,2,5 -BRDA:63,2,3,151 -BRDA:74,3,0,33 -BRDA:74,3,1,118 -BRDA:73,4,0,151 -BRDA:73,4,1,33 +BRDA:63,2,3,175 +BRDA:74,3,0,50 +BRDA:74,3,1,125 +BRDA:73,4,0,175 +BRDA:73,4,1,50 BRDA:87,5,0,3 BRDA:87,5,1,0 BRDA:87,6,0,3 BRDA:87,6,1,3 -BRDA:98,7,0,100 +BRDA:98,7,0,107 BRDA:98,7,1,5 -BRDA:97,8,0,105 -BRDA:97,8,1,105 -BRDA:97,8,2,105 +BRDA:97,8,0,112 +BRDA:97,8,1,112 +BRDA:97,8,2,112 BRDA:112,9,0,1 BRDA:112,9,1,4 BRDA:114,10,0,1 @@ -37455,7 +37868,7 @@ BRDA:114,10,1,0 BRDA:116,11,0,2 BRDA:116,11,1,2 BRF:27 -BRH:24 +BRH:25 end_of_record TN: SF:packages/roosterjs-editor-dom/lib/contentTraverser/SelectionScoper.ts @@ -37468,97 +37881,97 @@ FN:89,(anonymous_5) FNF:6 FNH:6 FNDA:1,(anonymous_0) -FNDA:156,SelectionScoper -FNDA:241,(anonymous_2) -FNDA:35,(anonymous_3) -FNDA:127,(anonymous_4) -FNDA:71,(anonymous_5) +FNDA:247,SelectionScoper +FNDA:315,(anonymous_2) +FNDA:94,(anonymous_3) +FNDA:169,(anonymous_4) +FNDA:203,(anonymous_5) DA:1,1 DA:2,1 DA:3,1 DA:4,1 DA:14,1 -DA:17,156 -DA:18,156 -DA:25,156 -DA:26,156 -DA:27,156 +DA:17,247 +DA:18,247 +DA:25,247 +DA:26,247 +DA:27,247 DA:33,1 -DA:34,241 -DA:35,118 -DA:38,241 +DA:34,315 +DA:35,150 +DA:38,315 DA:44,1 -DA:45,35 -DA:46,35 -DA:51,35 +DA:45,94 +DA:46,94 +DA:51,94 DA:58,1 -DA:59,127 +DA:59,169 DA:60,0 -DA:62,127 -DA:63,127 -DA:64,127 +DA:62,169 +DA:63,169 +DA:64,169 DA:65,9 -DA:67,118 -DA:73,118 -DA:81,127 +DA:67,160 +DA:73,160 +DA:81,169 DA:89,1 -DA:90,71 +DA:90,203 DA:91,0 -DA:95,71 -DA:96,71 -DA:98,71 -DA:99,4 -DA:102,67 -DA:103,67 -DA:105,67 +DA:95,203 +DA:96,203 +DA:98,203 +DA:99,18 +DA:102,185 +DA:103,185 +DA:105,185 DA:106,1 DA:107,1 -DA:110,67 -DA:111,23 -DA:112,23 -DA:115,67 +DA:110,185 +DA:111,25 +DA:112,25 +DA:115,185 DA:125,1 LF:45 LH:43 -BRDA:34,0,0,118 -BRDA:34,0,1,123 -BRDA:45,1,0,35 +BRDA:34,0,0,150 +BRDA:34,0,1,165 +BRDA:45,1,0,94 BRDA:45,1,1,0 BRDA:59,2,0,0 -BRDA:59,2,1,127 +BRDA:59,2,1,169 BRDA:64,3,0,9 -BRDA:64,3,1,118 +BRDA:64,3,1,160 BRDA:65,4,0,9 BRDA:65,4,1,9 -BRDA:74,5,0,118 -BRDA:74,5,1,118 -BRDA:74,5,2,118 -BRDA:74,5,3,116 -BRDA:74,5,4,77 -BRDA:74,5,5,76 +BRDA:74,5,0,160 +BRDA:74,5,1,160 +BRDA:74,5,2,160 +BRDA:74,5,3,158 +BRDA:74,5,4,112 +BRDA:74,5,5,111 BRDA:90,6,0,0 -BRDA:90,6,1,71 -BRDA:90,7,0,71 -BRDA:90,7,1,71 -BRDA:98,8,0,4 -BRDA:98,8,1,67 -BRDA:98,9,0,71 -BRDA:98,9,1,68 +BRDA:90,6,1,203 +BRDA:90,7,0,203 +BRDA:90,7,1,203 +BRDA:98,8,0,18 +BRDA:98,8,1,185 +BRDA:98,9,0,203 +BRDA:98,9,1,186 BRDA:105,10,0,1 -BRDA:105,10,1,66 -BRDA:110,11,0,23 -BRDA:110,11,1,44 +BRDA:105,10,1,184 +BRDA:110,11,0,25 +BRDA:110,11,1,160 BRDA:116,12,0,10 -BRDA:116,12,1,57 -BRDA:115,13,0,67 -BRDA:115,13,1,67 -BRDA:118,14,0,14 -BRDA:118,14,1,43 -BRDA:117,15,0,57 -BRDA:117,15,1,56 +BRDA:116,12,1,175 +BRDA:115,13,0,185 +BRDA:115,13,1,185 +BRDA:118,14,0,16 +BRDA:118,14,1,159 +BRDA:117,15,0,175 +BRDA:117,15,1,174 BRDA:120,16,0,1 -BRDA:120,16,1,13 -BRDA:121,17,0,13 +BRDA:120,16,1,15 +BRDA:121,17,0,15 BRDA:121,17,1,1 BRF:40 BRH:37 @@ -37663,18 +38076,18 @@ FN:338,adjustInsertPositionBySteps FN:344,(anonymous_10) FN:350,safeRemove FNF:12 -FNH:10 -FNDA:24,adjustInsertPositionForHyperLink -FNDA:0,(anonymous_1) -FNDA:24,adjustInsertPositionForStructuredNode -FNDA:8,(anonymous_3) -FNDA:24,adjustInsertPositionForParagraph -FNDA:24,adjustInsertPositionForVoidElement -FNDA:24,adjustInsertPositionForMoveCursorOutOfALink -FNDA:25,adjustInsertPositionForNotEditableNode -FNDA:24,adjustInsertPositionForTable -FNDA:24,adjustInsertPositionBySteps -FNDA:168,(anonymous_10) +FNH:11 +FNDA:40,adjustInsertPositionForHyperLink +FNDA:2,(anonymous_1) +FNDA:40,adjustInsertPositionForStructuredNode +FNDA:12,(anonymous_3) +FNDA:40,adjustInsertPositionForParagraph +FNDA:40,adjustInsertPositionForVoidElement +FNDA:40,adjustInsertPositionForMoveCursorOutOfALink +FNDA:42,adjustInsertPositionForNotEditableNode +FNDA:40,adjustInsertPositionForTable +FNDA:40,adjustInsertPositionBySteps +FNDA:280,(anonymous_10) FNDA:0,safeRemove DA:1,1 DA:2,1 @@ -37699,15 +38112,15 @@ DA:20,1 DA:22,1 DA:25,1 DA:32,1 -DA:51,24 -DA:53,24 -DA:56,22 -DA:62,0 -DA:65,22 +DA:51,40 +DA:53,40 +DA:56,32 +DA:62,2 +DA:65,32 DA:66,0 DA:67,0 DA:68,0 -DA:73,22 +DA:73,32 DA:78,0 DA:79,0 DA:81,0 @@ -37718,23 +38131,23 @@ DA:94,0 DA:97,0 DA:98,0 DA:99,0 -DA:104,24 -DA:116,24 -DA:117,24 -DA:119,24 -DA:120,6 -DA:121,6 -DA:122,8 -DA:124,6 -DA:127,24 -DA:129,24 -DA:130,24 -DA:131,24 -DA:132,24 -DA:134,24 +DA:104,40 +DA:116,40 +DA:117,40 +DA:119,40 +DA:120,11 +DA:121,11 +DA:122,12 +DA:124,11 +DA:127,40 +DA:129,40 +DA:130,40 +DA:131,40 +DA:132,40 +DA:134,40 DA:135,0 DA:136,0 -DA:139,24 +DA:139,40 DA:145,0 DA:147,0 DA:148,0 @@ -37744,40 +38157,40 @@ DA:153,0 DA:154,0 DA:155,0 DA:156,0 -DA:165,24 +DA:165,40 DA:166,0 DA:172,0 DA:173,0 -DA:176,24 -DA:189,24 +DA:176,40 +DA:189,40 DA:192,0 DA:193,0 DA:194,0 DA:195,0 -DA:199,24 -DA:212,24 +DA:199,40 +DA:212,40 DA:213,0 -DA:218,24 -DA:231,24 -DA:232,24 -DA:233,24 -DA:234,24 -DA:235,24 +DA:218,40 +DA:231,40 +DA:232,36 +DA:233,36 +DA:234,36 +DA:235,36 DA:236,0 -DA:237,24 -DA:238,1 -DA:241,24 -DA:253,25 -DA:254,1 -DA:255,1 -DA:261,1 -DA:262,1 -DA:263,1 -DA:272,1 -DA:273,1 -DA:274,1 -DA:278,24 -DA:290,24 +DA:237,36 +DA:238,3 +DA:241,40 +DA:253,42 +DA:254,2 +DA:255,2 +DA:261,2 +DA:262,2 +DA:263,2 +DA:272,2 +DA:273,2 +DA:274,2 +DA:278,40 +DA:290,40 DA:295,9 DA:297,9 DA:298,9 @@ -37797,33 +38210,33 @@ DA:318,1 DA:319,1 DA:321,1 DA:322,1 -DA:326,24 +DA:326,40 DA:338,1 -DA:344,24 -DA:345,168 -DA:347,24 +DA:344,40 +DA:345,280 +DA:347,40 DA:351,0 LF:127 -LH:89 -BRDA:53,0,0,22 -BRDA:53,0,1,2 +LH:90 +BRDA:53,0,0,32 +BRDA:53,0,1,8 BRDA:65,1,0,0 -BRDA:65,1,1,22 -BRDA:65,2,0,22 -BRDA:65,2,1,0 +BRDA:65,1,1,32 +BRDA:65,2,0,32 +BRDA:65,2,1,2 BRDA:73,3,0,0 -BRDA:73,3,1,22 -BRDA:74,4,0,22 -BRDA:74,4,1,0 -BRDA:74,4,2,0 +BRDA:73,3,1,32 +BRDA:74,4,0,32 +BRDA:74,4,1,2 +BRDA:74,4,2,2 BRDA:75,5,0,0 -BRDA:75,5,1,0 -BRDA:75,6,0,0 -BRDA:75,6,1,0 +BRDA:75,5,1,2 +BRDA:75,6,0,2 +BRDA:75,6,1,2 BRDA:76,7,0,0 -BRDA:76,7,1,0 -BRDA:76,8,0,0 -BRDA:76,8,1,0 +BRDA:76,7,1,2 +BRDA:76,8,0,2 +BRDA:76,8,1,2 BRDA:82,9,0,0 BRDA:82,9,1,0 BRDA:88,10,0,0 @@ -37832,23 +38245,23 @@ BRDA:93,11,0,0 BRDA:93,11,1,0 BRDA:97,12,0,0 BRDA:97,12,1,0 -BRDA:119,13,0,6 -BRDA:119,13,1,18 -BRDA:124,14,0,4 -BRDA:124,14,1,2 -BRDA:129,15,0,24 -BRDA:129,15,1,22 -BRDA:129,15,2,22 -BRDA:131,16,0,24 +BRDA:119,13,0,11 +BRDA:119,13,1,29 +BRDA:124,14,0,10 +BRDA:124,14,1,1 +BRDA:129,15,0,40 +BRDA:129,15,1,33 +BRDA:129,15,2,33 +BRDA:131,16,0,40 BRDA:131,16,1,0 BRDA:134,17,0,0 -BRDA:134,17,1,24 +BRDA:134,17,1,40 BRDA:135,18,0,0 BRDA:135,18,1,0 BRDA:139,19,0,0 -BRDA:139,19,1,24 -BRDA:140,20,0,24 -BRDA:140,20,1,24 +BRDA:139,19,1,40 +BRDA:140,20,0,40 +BRDA:140,20,1,40 BRDA:140,20,2,0 BRDA:140,20,3,0 BRDA:145,21,0,0 @@ -37864,45 +38277,45 @@ BRDA:154,25,1,0 BRDA:159,26,0,0 BRDA:159,26,1,0 BRDA:165,27,0,0 -BRDA:165,27,1,24 -BRDA:165,28,0,24 -BRDA:165,28,1,6 +BRDA:165,27,1,40 +BRDA:165,28,0,40 +BRDA:165,28,1,11 BRDA:165,28,2,2 BRDA:189,29,0,0 -BRDA:189,29,1,24 +BRDA:189,29,1,40 BRDA:194,30,0,0 BRDA:194,30,1,0 BRDA:212,31,0,0 -BRDA:212,31,1,24 +BRDA:212,31,1,40 BRDA:215,32,0,0 BRDA:215,32,1,0 -BRDA:231,33,0,24 -BRDA:231,33,1,0 -BRDA:231,34,0,24 -BRDA:231,34,1,24 +BRDA:231,33,0,36 +BRDA:231,33,1,4 +BRDA:231,34,0,40 +BRDA:231,34,1,40 BRDA:235,35,0,0 -BRDA:235,35,1,24 -BRDA:237,36,0,1 -BRDA:237,36,1,23 -BRDA:253,37,0,1 -BRDA:253,37,1,24 +BRDA:235,35,1,36 +BRDA:237,36,0,3 +BRDA:237,36,1,33 +BRDA:253,37,0,2 +BRDA:253,37,1,40 BRDA:253,38,0,0 -BRDA:253,38,1,25 -BRDA:253,39,0,25 -BRDA:253,39,1,25 -BRDA:264,40,0,1 +BRDA:253,38,1,42 +BRDA:253,39,0,42 +BRDA:253,39,1,42 +BRDA:264,40,0,2 BRDA:264,40,1,0 BRDA:263,41,0,0 -BRDA:263,41,1,1 -BRDA:263,42,0,1 -BRDA:263,42,1,1 -BRDA:272,43,0,1 +BRDA:263,41,1,2 +BRDA:263,42,0,2 +BRDA:263,42,1,2 +BRDA:272,43,0,2 BRDA:272,43,1,0 BRDA:290,44,0,9 -BRDA:290,44,1,15 -BRDA:291,45,0,24 -BRDA:291,45,1,19 -BRDA:291,45,2,22 +BRDA:290,44,1,31 +BRDA:291,45,0,40 +BRDA:291,45,1,28 +BRDA:291,45,2,38 BRDA:301,46,0,9 BRDA:301,46,1,9 BRDA:303,47,0,9 @@ -37926,7 +38339,7 @@ BRDA:351,55,1,0 BRDA:351,56,0,0 BRDA:351,56,1,0 BRF:120 -BRH:55 +BRH:65 end_of_record TN: SF:packages/roosterjs-editor-dom/lib/edit/deleteSelectedContent.ts @@ -38112,10 +38525,10 @@ FNH:8 FNDA:1,createEntityPlaceholder FNDA:8,moveContentWithEntityPlaceholders FNDA:1,(anonymous_3) -FNDA:411,restoreContentWithEntityPlaceholder +FNDA:489,restoreContentWithEntityPlaceholder FNDA:2,(anonymous_5) -FNDA:421,removeUntil -FNDA:602,tryGetWrapperFromEntityPlaceholder +FNDA:499,removeUntil +FNDA:713,tryGetWrapperFromEntityPlaceholder FNDA:5,getPlaceholder DA:1,1 DA:2,1 @@ -38143,33 +38556,33 @@ DA:61,20 DA:64,8 DA:66,8 DA:76,1 -DA:82,411 -DA:84,411 -DA:86,411 -DA:87,600 -DA:88,600 -DA:90,600 +DA:82,489 +DA:84,489 +DA:86,489 +DA:87,711 +DA:88,711 +DA:90,711 DA:91,10 DA:93,10 DA:94,9 DA:96,1 -DA:99,590 -DA:100,590 -DA:102,590 -DA:103,460 +DA:99,701 +DA:100,701 +DA:102,701 +DA:103,570 DA:104,2 DA:106,2 DA:107,1 -DA:113,600 -DA:116,411 -DA:120,421 -DA:121,387 -DA:122,387 -DA:123,387 -DA:125,421 -DA:133,602 -DA:136,602 -DA:138,602 +DA:113,711 +DA:116,489 +DA:120,499 +DA:121,465 +DA:122,465 +DA:123,465 +DA:125,499 +DA:133,713 +DA:136,713 +DA:138,713 DA:148,5 DA:150,5 LF:55 @@ -38185,40 +38598,40 @@ BRDA:55,3,1,1 BRDA:55,4,0,1 BRDA:55,4,1,1 BRDA:90,5,0,10 -BRDA:90,5,1,590 +BRDA:90,5,1,701 BRDA:93,6,0,9 BRDA:93,6,1,1 BRDA:99,7,0,8 -BRDA:99,7,1,582 -BRDA:102,8,0,460 -BRDA:102,8,1,130 +BRDA:99,7,1,693 +BRDA:102,8,0,570 +BRDA:102,8,1,131 BRDA:106,9,0,1 BRDA:106,9,1,1 BRDA:107,10,0,0 BRDA:107,10,1,1 BRDA:107,11,0,1 BRDA:107,11,1,1 -BRDA:120,12,0,808 -BRDA:120,12,1,396 +BRDA:120,12,0,964 +BRDA:120,12,1,474 BRDA:120,12,2,22 BRDA:123,13,0,0 -BRDA:123,13,1,387 -BRDA:123,14,0,387 -BRDA:123,14,1,387 -BRDA:133,15,0,602 -BRDA:133,15,1,472 +BRDA:123,13,1,465 +BRDA:123,14,0,465 +BRDA:123,14,1,465 +BRDA:133,15,0,713 +BRDA:133,15,1,582 BRDA:133,15,2,15 BRDA:135,16,0,0 BRDA:135,16,1,15 BRDA:135,17,0,15 BRDA:135,17,1,15 BRDA:136,18,0,12 -BRDA:136,18,1,590 +BRDA:136,18,1,701 BRDA:136,19,0,0 BRDA:136,19,1,12 BRDA:136,20,0,12 BRDA:136,20,1,12 -BRDA:139,21,0,590 +BRDA:139,21,0,701 BRDA:139,21,1,12 BRDA:141,22,0,10 BRDA:141,22,1,2 @@ -38282,17 +38695,17 @@ SF:packages/roosterjs-editor-dom/lib/entity/getEntitySelector.ts FN:8,getEntitySelector FNF:1 FNH:1 -FNDA:7727,getEntitySelector +FNDA:8266,getEntitySelector DA:8,1 -DA:9,7727 -DA:10,7727 -DA:11,7727 +DA:9,8266 +DA:10,8266 +DA:11,8266 LF:4 LH:4 BRDA:9,0,0,2 -BRDA:9,0,1,7725 +BRDA:9,0,1,8264 BRDA:10,1,0,2 -BRDA:10,1,1,7725 +BRDA:10,1,1,8264 BRF:4 BRH:4 end_of_record @@ -38301,24 +38714,24 @@ SF:packages/roosterjs-editor-dom/lib/event/cacheGetEventData.ts FN:10,cacheGetEventData FNF:1 FNH:1 -FNDA:929,cacheGetEventData +FNDA:1013,cacheGetEventData DA:10,1 -DA:16,929 -DA:19,929 -DA:20,422 -DA:21,422 -DA:24,929 +DA:16,1013 +DA:19,1013 +DA:20,426 +DA:21,426 +DA:24,1013 LF:6 LH:6 BRDA:17,0,0,84 -BRDA:17,0,1,845 -BRDA:16,1,0,929 -BRDA:16,1,1,422 +BRDA:17,0,1,929 +BRDA:16,1,0,1013 +BRDA:16,1,1,426 BRDA:16,1,2,169 -BRDA:19,2,0,422 -BRDA:19,2,1,507 -BRDA:20,3,0,422 -BRDA:20,3,1,223 +BRDA:19,2,0,426 +BRDA:19,2,1,587 +BRDA:20,3,0,426 +BRDA:20,3,1,227 BRF:9 BRH:9 end_of_record @@ -38374,14 +38787,14 @@ FN:12,isCtrlOrMetaPressed FNF:3 FNH:2 FNDA:0,(anonymous_0) -FNDA:29,(anonymous_1) -FNDA:29,isCtrlOrMetaPressed +FNDA:25,(anonymous_1) +FNDA:25,isCtrlOrMetaPressed DA:1,1 DA:3,1 DA:4,0 -DA:5,29 +DA:5,25 DA:12,1 -DA:13,29 +DA:13,25 LF:6 LH:5 BRDA:4,0,0,0 @@ -38448,23 +38861,23 @@ FNDA:202,HtmlSanitizer FNDA:6,(anonymous_2) FNDA:0,(anonymous_3) FNDA:169,(anonymous_4) -FNDA:18,(anonymous_5) -FNDA:20,(anonymous_6) +FNDA:14,(anonymous_5) +FNDA:14,(anonymous_6) FNDA:224,(anonymous_7) FNDA:219,(anonymous_8) -FNDA:10,(anonymous_9) +FNDA:9,(anonymous_9) FNDA:8,(anonymous_10) -FNDA:18,(anonymous_11) -FNDA:16,(anonymous_13) +FNDA:17,(anonymous_11) +FNDA:14,(anonymous_13) FNDA:8,(anonymous_14) -FNDA:1033,(anonymous_15) -FNDA:472,(anonymous_16) -FNDA:45,(anonymous_17) -FNDA:472,(anonymous_18) -FNDA:288,(anonymous_19) -FNDA:472,(anonymous_20) -FNDA:12,(anonymous_21) -FNDA:34,(anonymous_22) +FNDA:1023,(anonymous_15) +FNDA:469,(anonymous_16) +FNDA:41,(anonymous_17) +FNDA:469,(anonymous_18) +FNDA:279,(anonymous_19) +FNDA:469,(anonymous_20) +FNDA:10,(anonymous_21) +FNDA:32,(anonymous_22) DA:1,1 DA:2,1 DA:3,1 @@ -38507,8 +38920,8 @@ DA:114,164 DA:115,159 DA:118,169 DA:126,1 -DA:127,18 -DA:128,20 +DA:127,14 +DA:128,14 DA:137,1 DA:138,224 DA:139,0 @@ -38517,112 +38930,112 @@ DA:142,224 DA:149,1 DA:150,219 DA:151,219 -DA:153,10 +DA:153,9 DA:154,8 -DA:155,18 +DA:155,17 DA:156,219 -DA:157,40 -DA:159,40 -DA:160,40 -DA:161,40 -DA:165,20 -DA:166,20 +DA:157,33 +DA:159,33 +DA:160,33 +DA:161,33 +DA:165,14 +DA:166,14 DA:167,0 -DA:169,20 -DA:173,20 -DA:174,16 +DA:169,14 +DA:173,14 +DA:174,14 DA:180,219 DA:181,8 DA:182,8 DA:187,1 -DA:188,1033 -DA:189,1033 -DA:190,1033 -DA:191,1033 -DA:192,1033 -DA:194,1033 -DA:196,1033 -DA:197,506 -DA:198,506 -DA:199,506 -DA:201,506 -DA:202,7 -DA:205,506 -DA:206,36 -DA:207,470 +DA:188,1023 +DA:189,1023 +DA:190,1023 +DA:191,1023 +DA:192,1023 +DA:194,1023 +DA:196,1023 +DA:197,503 +DA:198,503 +DA:199,503 +DA:201,503 +DA:202,5 +DA:205,503 +DA:206,34 +DA:207,469 DA:208,0 -DA:209,470 -DA:210,435 +DA:209,469 +DA:210,434 DA:211,35 DA:212,3 DA:213,3 -DA:215,527 -DA:216,466 -DA:217,466 +DA:215,520 +DA:216,459 +DA:217,459 DA:222,61 DA:223,55 DA:224,6 DA:225,6 DA:227,0 -DA:230,1033 -DA:231,49 -DA:232,984 +DA:230,1023 +DA:231,46 +DA:232,977 DA:236,8 -DA:239,976 -DA:240,527 -DA:241,527 -DA:242,527 -DA:243,472 -DA:244,472 -DA:245,472 -DA:248,527 -DA:249,527 -DA:250,527 -DA:251,809 -DA:252,809 +DA:239,969 +DA:240,524 +DA:241,524 +DA:242,524 +DA:243,469 +DA:244,469 +DA:245,469 +DA:248,524 +DA:249,524 +DA:250,524 +DA:251,799 +DA:252,799 DA:257,1 -DA:258,472 -DA:262,472 -DA:263,28 -DA:264,45 -DA:269,472 -DA:270,472 -DA:271,472 -DA:272,288 -DA:273,288 -DA:274,288 -DA:275,288 -DA:277,288 -DA:278,59 -DA:281,288 +DA:258,469 +DA:262,469 +DA:263,26 +DA:264,41 +DA:269,469 +DA:270,469 +DA:271,469 +DA:272,279 +DA:273,279 +DA:274,279 +DA:275,279 +DA:277,279 +DA:278,57 +DA:281,279 DA:282,0 DA:283,0 -DA:286,288 -DA:294,288 +DA:286,279 +DA:294,279 DA:295,71 -DA:298,288 -DA:299,170 -DA:301,118 -DA:305,472 +DA:298,279 +DA:299,169 +DA:301,110 +DA:305,469 DA:308,1 -DA:309,472 -DA:310,206 -DA:311,206 -DA:312,206 -DA:313,206 -DA:315,206 -DA:321,206 -DA:322,12 -DA:325,206 -DA:330,60 +DA:309,469 +DA:310,204 +DA:311,204 +DA:312,204 +DA:313,204 +DA:315,204 +DA:321,204 +DA:322,10 +DA:325,204 +DA:330,58 DA:332,146 -DA:337,12 -DA:338,12 -DA:339,12 -DA:341,12 -DA:342,34 +DA:337,10 +DA:338,10 +DA:339,10 +DA:341,10 +DA:342,32 DA:346,0 -DA:350,12 +DA:350,10 DA:352,1 LF:159 LH:148 @@ -38635,7 +39048,7 @@ BRDA:92,2,1,147 BRDA:93,3,0,202 BRDA:93,3,1,201 BRDA:94,4,0,202 -BRDA:94,4,1,80 +BRDA:94,4,1,81 BRDA:56,5,0,0 BRDA:56,5,1,0 BRDA:59,6,0,0 @@ -38655,129 +39068,129 @@ BRDA:118,11,2,169 BRDA:118,11,3,5 BRDA:138,12,0,0 BRDA:138,12,1,224 -BRDA:160,13,0,40 +BRDA:160,13,0,33 BRDA:160,13,1,0 -BRDA:160,14,0,40 -BRDA:160,14,1,40 -BRDA:161,15,0,22 -BRDA:161,15,1,18 -BRDA:161,16,0,40 -BRDA:161,16,1,34 -BRDA:161,16,2,18 +BRDA:160,14,0,33 +BRDA:160,14,1,33 +BRDA:161,15,0,19 +BRDA:161,15,1,14 +BRDA:161,16,0,33 +BRDA:161,16,1,30 +BRDA:161,16,2,14 BRDA:166,17,0,0 -BRDA:166,17,1,20 -BRDA:166,18,0,20 -BRDA:166,18,1,20 -BRDA:174,19,0,16 -BRDA:174,19,1,3 +BRDA:166,17,1,14 +BRDA:166,18,0,14 +BRDA:166,18,1,14 +BRDA:174,19,0,14 +BRDA:174,19,1,1 BRDA:181,20,0,8 BRDA:181,20,1,0 -BRDA:196,21,0,506 -BRDA:196,21,1,527 -BRDA:201,22,0,7 -BRDA:201,22,1,499 -BRDA:205,23,0,36 -BRDA:205,23,1,470 +BRDA:196,21,0,503 +BRDA:196,21,1,520 +BRDA:201,22,0,5 +BRDA:201,22,1,498 +BRDA:205,23,0,34 +BRDA:205,23,1,469 BRDA:207,24,0,0 -BRDA:207,24,1,470 -BRDA:209,25,0,435 +BRDA:207,24,1,469 +BRDA:209,25,0,434 BRDA:209,25,1,35 -BRDA:209,26,0,470 -BRDA:209,26,1,470 +BRDA:209,26,0,469 +BRDA:209,26,1,469 BRDA:211,27,0,3 BRDA:211,27,1,32 BRDA:211,28,0,35 BRDA:211,28,1,4 -BRDA:215,29,0,466 +BRDA:215,29,0,459 BRDA:215,29,1,61 -BRDA:218,30,0,466 -BRDA:218,30,1,463 -BRDA:218,30,2,462 -BRDA:218,30,3,457 -BRDA:221,31,0,457 +BRDA:218,30,0,459 +BRDA:218,30,1,456 +BRDA:218,30,2,455 +BRDA:218,30,3,450 +BRDA:221,31,0,450 BRDA:221,31,1,4 BRDA:222,32,0,55 BRDA:222,32,1,6 BRDA:224,33,0,6 BRDA:224,33,1,0 -BRDA:230,34,0,49 -BRDA:230,34,1,984 +BRDA:230,34,0,46 +BRDA:230,34,1,977 BRDA:231,35,0,0 -BRDA:231,35,1,49 -BRDA:231,36,0,49 -BRDA:231,36,1,49 +BRDA:231,35,1,46 +BRDA:231,36,0,46 +BRDA:231,36,1,46 BRDA:232,37,0,8 -BRDA:232,37,1,976 -BRDA:233,38,0,984 -BRDA:233,38,1,456 -BRDA:233,38,2,453 +BRDA:232,37,1,969 +BRDA:233,38,0,977 +BRDA:233,38,1,452 +BRDA:233,38,2,449 BRDA:236,39,0,8 BRDA:236,39,1,0 -BRDA:239,40,0,527 -BRDA:239,40,1,449 -BRDA:239,41,0,976 -BRDA:239,41,1,504 -BRDA:242,42,0,472 +BRDA:239,40,0,524 +BRDA:239,40,1,445 +BRDA:239,41,0,969 +BRDA:239,41,1,500 +BRDA:242,42,0,469 BRDA:242,42,1,55 -BRDA:262,43,0,28 -BRDA:262,43,1,444 -BRDA:277,44,0,59 -BRDA:277,44,1,229 -BRDA:277,45,0,288 -BRDA:277,45,1,288 +BRDA:262,43,0,26 +BRDA:262,43,1,443 +BRDA:277,44,0,57 +BRDA:277,44,1,222 +BRDA:277,45,0,279 +BRDA:277,45,1,279 BRDA:281,46,0,0 -BRDA:281,46,1,288 -BRDA:281,47,0,288 -BRDA:281,47,1,257 -BRDA:287,48,0,288 -BRDA:287,48,1,257 -BRDA:287,48,2,257 -BRDA:287,48,3,256 -BRDA:287,48,4,235 -BRDA:287,48,5,217 -BRDA:287,48,6,113 -BRDA:287,48,7,146 -BRDA:287,48,8,104 -BRDA:287,48,9,101 +BRDA:281,46,1,279 +BRDA:281,47,0,279 +BRDA:281,47,1,250 +BRDA:287,48,0,279 +BRDA:287,48,1,250 +BRDA:287,48,2,250 +BRDA:287,48,3,249 +BRDA:287,48,4,230 +BRDA:287,48,5,212 +BRDA:287,48,6,109 +BRDA:287,48,7,141 +BRDA:287,48,8,103 +BRDA:287,48,9,100 BRDA:294,49,0,71 -BRDA:294,49,1,217 -BRDA:294,50,0,288 -BRDA:294,50,1,170 -BRDA:298,51,0,170 -BRDA:298,51,1,118 +BRDA:294,49,1,208 +BRDA:294,50,0,279 +BRDA:294,50,1,169 +BRDA:298,51,0,169 +BRDA:298,51,1,110 BRDA:316,52,0,9 -BRDA:316,52,1,197 +BRDA:316,52,1,195 BRDA:318,53,0,140 -BRDA:318,53,1,57 -BRDA:317,54,0,197 -BRDA:317,54,1,68 -BRDA:321,55,0,12 +BRDA:318,53,1,55 +BRDA:317,54,0,195 +BRDA:317,54,1,66 +BRDA:321,55,0,10 BRDA:321,55,1,194 -BRDA:321,56,0,206 -BRDA:321,56,1,24 -BRDA:325,57,0,60 +BRDA:321,56,0,204 +BRDA:321,56,1,22 +BRDA:325,57,0,58 BRDA:325,57,1,146 -BRDA:326,58,0,206 +BRDA:326,58,0,204 BRDA:326,58,1,148 BRDA:326,58,2,148 -BRDA:338,59,0,12 +BRDA:338,59,0,10 BRDA:338,59,1,0 BRDA:339,60,0,0 -BRDA:339,60,1,12 +BRDA:339,60,1,10 BRDA:342,61,0,0 -BRDA:342,61,1,34 -BRDA:343,62,0,34 +BRDA:342,61,1,32 +BRDA:343,62,0,32 BRDA:343,62,1,0 BRDA:343,63,0,0 -BRDA:343,63,1,34 -BRDA:343,64,0,34 -BRDA:343,64,1,34 +BRDA:343,63,1,32 +BRDA:343,64,0,32 +BRDA:343,64,1,32 BRDA:350,65,0,0 -BRDA:350,65,1,12 +BRDA:350,65,1,10 BRDA:350,66,0,0 -BRDA:350,66,1,12 -BRDA:350,67,0,12 -BRDA:350,67,1,12 +BRDA:350,66,1,10 +BRDA:350,67,0,10 +BRDA:350,67,1,10 BRF:152 BRH:132 end_of_record @@ -38787,18 +39200,18 @@ FN:9,chainSanitizerCallback FN:18,(anonymous_1) FNF:2 FNH:1 -FNDA:302,chainSanitizerCallback +FNDA:286,chainSanitizerCallback FNDA:0,(anonymous_1) DA:9,1 -DA:14,302 -DA:15,302 +DA:14,286 +DA:15,286 DA:17,0 DA:18,0 DA:19,0 DA:20,0 LF:7 LH:3 -BRDA:14,0,0,302 +BRDA:14,0,0,286 BRDA:14,0,1,0 BRF:2 BRH:1 @@ -38810,11 +39223,11 @@ FN:10,customClone FN:29,cloneObject FNF:3 FNH:2 -FNDA:1559,nativeClone +FNDA:1556,nativeClone FNDA:0,customClone -FNDA:1559,cloneObject +FNDA:1556,cloneObject DA:1,1 -DA:7,1559 +DA:7,1556 DA:14,0 DA:15,0 DA:16,0 @@ -38822,11 +39235,11 @@ DA:17,0 DA:20,0 DA:24,1 DA:29,1 -DA:33,1559 +DA:33,1556 LF:10 LH:5 -BRDA:7,0,0,1559 -BRDA:7,0,1,1335 +BRDA:7,0,0,1556 +BRDA:7,0,1,1332 BRDA:14,1,0,0 BRDA:14,1,1,0 BRDA:15,2,0,0 @@ -38924,8 +39337,8 @@ BRDA:210,2,0,202 BRDA:210,2,1,148 BRDA:221,3,0,202 BRDA:221,3,1,149 -BRDA:222,4,0,6 -BRDA:222,4,1,196 +BRDA:222,4,0,5 +BRDA:222,4,1,197 BRDA:230,5,0,54 BRDA:230,5,1,148 BRDA:233,6,0,1 @@ -38947,27 +39360,27 @@ FN:17,getInheritableStyles FN:22,(anonymous_1) FNF:2 FNH:2 -FNDA:232,getInheritableStyles -FNDA:6264,(anonymous_1) +FNDA:231,getInheritableStyles +FNDA:6237,(anonymous_1) DA:5,1 DA:17,1 -DA:18,232 -DA:19,232 -DA:20,232 -DA:21,232 -DA:22,6264 -DA:24,232 +DA:18,231 +DA:19,231 +DA:20,231 +DA:21,231 +DA:22,6237 +DA:24,231 LF:8 LH:8 -BRDA:18,0,0,232 -BRDA:18,0,1,7 -BRDA:18,0,2,7 -BRDA:19,1,0,232 -BRDA:19,1,1,7 -BRDA:19,1,2,7 -BRDA:22,2,0,6264 -BRDA:22,2,1,189 -BRDA:22,2,2,6076 +BRDA:18,0,0,231 +BRDA:18,0,1,6 +BRDA:18,0,2,6 +BRDA:19,1,0,231 +BRDA:19,1,1,6 +BRDA:19,1,2,6 +BRDA:22,2,0,6237 +BRDA:22,2,1,162 +BRDA:22,2,2,6088 BRF:9 BRH:9 end_of_record @@ -38976,17 +39389,17 @@ SF:packages/roosterjs-editor-dom/lib/htmlSanitizer/getPredefinedCssForElement.ts FN:44,getPredefinedCssForElement FNF:1 FNH:1 -FNDA:481,getPredefinedCssForElement +FNDA:478,getPredefinedCssForElement DA:1,1 DA:4,1 DA:44,1 -DA:48,481 -DA:49,481 +DA:48,478 +DA:49,478 LF:5 LH:5 -BRDA:49,0,0,481 -BRDA:49,0,1,452 -BRDA:49,1,0,452 +BRDA:49,0,0,478 +BRDA:49,0,1,451 +BRDA:49,1,0,451 BRDA:49,1,1,346 BRF:4 BRH:4 @@ -38998,14 +39411,14 @@ FN:16,isCssVariable FNF:2 FNH:2 FNDA:5,processCssVariable -FNDA:259,isCssVariable +FNDA:252,isCssVariable DA:1,1 DA:2,1 DA:8,1 DA:9,5 DA:10,5 DA:16,1 -DA:17,259 +DA:17,252 LF:7 LH:7 BRDA:10,0,0,5 @@ -39033,18 +39446,18 @@ FN:71,(anonymous_10) FNF:11 FNH:4 FNDA:1,(anonymous_0) -FNDA:118,EmptyInlineElement +FNDA:125,EmptyInlineElement FNDA:0,(anonymous_2) FNDA:0,(anonymous_3) FNDA:94,(anonymous_4) -FNDA:106,(anonymous_5) +FNDA:110,(anonymous_5) FNDA:0,(anonymous_6) FNDA:0,(anonymous_7) FNDA:0,(anonymous_8) FNDA:0,(anonymous_9) FNDA:0,(anonymous_10) DA:9,1 -DA:10,118 +DA:10,125 DA:15,1 DA:16,0 DA:22,1 @@ -39052,7 +39465,7 @@ DA:23,0 DA:29,1 DA:30,94 DA:36,1 -DA:37,106 +DA:37,110 DA:43,1 DA:44,0 DA:50,1 @@ -39077,15 +39490,15 @@ FN:8,ImageInlineElement FNF:2 FNH:2 FNDA:1,(anonymous_0) -FNDA:4,ImageInlineElement +FNDA:5,ImageInlineElement DA:1,1 DA:7,1 -DA:9,4 +DA:9,5 DA:11,1 LF:4 LH:4 -BRDA:9,0,0,4 -BRDA:9,0,1,4 +BRDA:9,0,0,5 +BRDA:9,0,1,5 BRF:2 BRH:2 end_of_record @@ -39096,15 +39509,15 @@ FN:8,LinkInlineElement FNF:2 FNH:2 FNDA:1,(anonymous_0) -FNDA:15,LinkInlineElement +FNDA:33,LinkInlineElement DA:1,1 DA:7,1 -DA:9,15 +DA:9,33 DA:11,1 LF:4 LH:4 -BRDA:9,0,0,15 -BRDA:9,0,1,15 +BRDA:9,0,0,33 +BRDA:9,0,1,33 BRF:2 BRH:2 end_of_record @@ -39124,54 +39537,54 @@ FN:84,(anonymous_10) FNF:11 FNH:11 FNDA:1,(anonymous_0) -FNDA:953,NodeInlineElement -FNDA:180,(anonymous_2) -FNDA:2268,(anonymous_3) +FNDA:1118,NodeInlineElement +FNDA:185,(anonymous_2) +FNDA:2531,(anonymous_3) FNDA:14,(anonymous_4) -FNDA:369,(anonymous_5) -FNDA:264,(anonymous_6) -FNDA:102,(anonymous_7) -FNDA:298,(anonymous_8) -FNDA:147,(anonymous_9) -FNDA:7,(anonymous_10) +FNDA:574,(anonymous_5) +FNDA:468,(anonymous_6) +FNDA:109,(anonymous_7) +FNDA:382,(anonymous_8) +FNDA:219,(anonymous_9) +FNDA:117,(anonymous_10) DA:1,1 DA:2,1 DA:3,1 DA:13,1 -DA:14,953 +DA:14,1118 DA:19,1 -DA:21,180 +DA:21,185 DA:31,1 -DA:32,2268 +DA:32,2531 DA:36,1 DA:37,14 DA:43,1 -DA:46,369 +DA:46,574 DA:52,1 -DA:55,264 +DA:55,468 DA:61,1 -DA:62,102 +DA:62,109 DA:68,1 -DA:69,298 +DA:69,382 DA:75,1 -DA:76,147 -DA:77,147 -DA:78,147 +DA:76,219 +DA:77,219 +DA:78,219 DA:84,1 -DA:85,7 +DA:85,117 DA:87,1 LF:26 LH:26 -BRDA:22,0,0,180 +BRDA:22,0,0,185 BRDA:22,0,1,5 -BRDA:23,1,0,168 +BRDA:23,1,0,173 BRDA:23,1,1,12 -BRDA:62,2,0,102 -BRDA:62,2,1,102 -BRDA:69,3,0,298 -BRDA:69,3,1,298 -BRDA:78,4,0,147 -BRDA:78,4,1,147 +BRDA:62,2,0,109 +BRDA:62,2,1,109 +BRDA:69,3,0,382 +BRDA:69,3,1,382 +BRDA:78,4,0,219 +BRDA:78,4,1,219 BRDA:78,4,2,96 BRF:11 BRH:11 @@ -39195,52 +39608,52 @@ FN:108,(anonymous_13) FNF:14 FNH:14 FNDA:1,(anonymous_0) -FNDA:121,PartialInlineElement +FNDA:129,PartialInlineElement FNDA:5,(anonymous_2) -FNDA:61,(anonymous_3) +FNDA:68,(anonymous_3) FNDA:8,(anonymous_4) -FNDA:17,(anonymous_5) -FNDA:111,(anonymous_6) -FNDA:103,(anonymous_7) +FNDA:19,(anonymous_5) +FNDA:116,(anonymous_6) +FNDA:108,(anonymous_7) FNDA:24,(anonymous_8) -FNDA:12,(anonymous_9) +FNDA:16,(anonymous_9) FNDA:5,(anonymous_10) -FNDA:6,(anonymous_11) -FNDA:22,(anonymous_12) +FNDA:8,(anonymous_11) +FNDA:24,(anonymous_12) FNDA:23,(anonymous_13) DA:1,1 DA:2,1 DA:3,1 DA:4,1 DA:15,1 -DA:17,121 -DA:18,144 -DA:19,155 +DA:17,129 +DA:18,156 +DA:19,167 DA:25,1 DA:26,5 DA:32,1 -DA:33,61 +DA:33,68 DA:39,1 DA:40,8 DA:46,1 -DA:47,17 -DA:49,17 +DA:47,19 +DA:49,19 DA:55,1 -DA:56,111 +DA:56,116 DA:62,1 -DA:63,103 +DA:63,108 DA:69,1 DA:70,24 DA:76,1 -DA:77,12 +DA:77,16 DA:85,1 DA:86,5 DA:92,1 -DA:93,6 +DA:93,8 DA:99,1 -DA:100,22 -DA:101,22 -DA:102,22 +DA:100,24 +DA:101,24 +DA:102,24 DA:108,1 DA:109,23 DA:110,23 @@ -39255,28 +39668,28 @@ DA:122,23 DA:124,1 LF:45 LH:41 -BRDA:18,0,0,23 -BRDA:18,0,1,98 -BRDA:19,1,0,34 -BRDA:19,1,1,87 -BRDA:56,2,0,111 -BRDA:56,2,1,38 -BRDA:63,3,0,103 -BRDA:63,3,1,39 +BRDA:18,0,0,27 +BRDA:18,0,1,102 +BRDA:19,1,0,38 +BRDA:19,1,1,91 +BRDA:56,2,0,116 +BRDA:56,2,1,40 +BRDA:63,3,0,108 +BRDA:63,3,1,40 BRDA:70,4,0,14 BRDA:70,4,1,10 -BRDA:78,5,0,8 -BRDA:78,5,1,4 +BRDA:78,5,0,10 +BRDA:78,5,1,6 BRDA:86,6,0,5 BRDA:86,6,1,5 BRDA:86,6,2,3 -BRDA:93,7,0,6 -BRDA:93,7,1,6 -BRDA:101,8,0,22 -BRDA:101,8,1,22 -BRDA:102,9,0,22 -BRDA:102,9,1,22 -BRDA:102,9,2,20 +BRDA:93,7,0,8 +BRDA:93,7,1,8 +BRDA:101,8,0,24 +BRDA:101,8,1,24 +BRDA:102,9,0,24 +BRDA:102,9,1,24 +BRDA:102,9,2,22 BRDA:113,10,0,0 BRDA:113,10,1,23 BRDA:115,11,0,0 @@ -39301,11 +39714,11 @@ FN:71,(anonymous_3) FN:96,callStylerWithInnerNode FNF:5 FNH:5 -FNDA:65,applyTextStyle -FNDA:74,(anonymous_1) +FNDA:175,applyTextStyle +FNDA:180,(anonymous_1) FNDA:15,(anonymous_2) -FNDA:67,(anonymous_3) -FNDA:74,callStylerWithInnerNode +FNDA:173,(anonymous_3) +FNDA:181,callStylerWithInnerNode DA:1,1 DA:2,1 DA:3,1 @@ -39315,66 +39728,66 @@ DA:6,1 DA:8,1 DA:11,1 DA:20,1 -DA:23,80 -DA:24,83 -DA:26,65 -DA:27,65 -DA:28,65 -DA:30,65 -DA:31,83 -DA:32,83 -DA:35,83 -DA:37,83 -DA:38,82 +DA:23,300 +DA:24,303 +DA:26,175 +DA:27,175 +DA:28,175 +DA:30,175 +DA:31,193 +DA:32,193 +DA:35,193 +DA:37,193 +DA:38,188 DA:39,24 -DA:46,82 +DA:46,188 DA:47,27 -DA:54,82 -DA:57,83 -DA:60,65 -DA:61,74 -DA:62,53 -DA:63,53 +DA:54,188 +DA:57,193 +DA:60,175 +DA:61,180 +DA:62,159 +DA:63,159 DA:64,15 DA:65,15 DA:66,15 -DA:68,53 -DA:71,56 -DA:74,67 -DA:75,67 -DA:80,48 -DA:81,48 -DA:84,67 -DA:85,26 -DA:86,26 -DA:89,67 -DA:90,67 -DA:100,74 -DA:101,7 +DA:68,159 +DA:71,162 +DA:74,173 +DA:75,173 +DA:80,98 +DA:81,98 +DA:84,173 +DA:85,83 +DA:86,83 +DA:89,173 +DA:90,173 +DA:100,181 +DA:101,8 LF:45 LH:45 -BRDA:23,0,0,15 +BRDA:23,0,0,125 BRDA:23,0,1,50 -BRDA:24,1,0,18 +BRDA:24,1,0,128 BRDA:24,1,1,47 -BRDA:30,2,0,148 -BRDA:30,2,1,94 -BRDA:30,2,2,94 -BRDA:37,3,0,82 -BRDA:37,3,1,1 -BRDA:37,4,0,83 -BRDA:37,4,1,82 +BRDA:30,2,0,368 +BRDA:30,2,1,204 +BRDA:30,2,2,204 +BRDA:37,3,0,188 +BRDA:37,3,1,5 +BRDA:37,4,0,193 +BRDA:37,4,1,188 BRDA:38,5,0,24 -BRDA:38,5,1,58 -BRDA:38,6,0,82 -BRDA:38,6,1,54 +BRDA:38,5,1,164 +BRDA:38,6,0,188 +BRDA:38,6,1,160 BRDA:46,7,0,27 -BRDA:46,7,1,55 -BRDA:57,8,0,83 +BRDA:46,7,1,161 +BRDA:57,8,0,193 BRDA:57,8,1,29 -BRDA:60,9,0,56 -BRDA:60,9,1,9 -BRDA:61,10,0,53 +BRDA:60,9,0,162 +BRDA:60,9,1,13 +BRDA:61,10,0,159 BRDA:61,10,1,3 BRDA:64,11,0,15 BRDA:64,11,1,1 @@ -39384,19 +39797,19 @@ BRDA:66,13,0,0 BRDA:66,13,1,15 BRDA:66,14,0,15 BRDA:66,14,1,15 -BRDA:76,15,0,115 -BRDA:76,15,1,115 -BRDA:76,15,2,74 -BRDA:84,16,0,26 -BRDA:84,16,1,41 -BRDA:84,17,0,67 -BRDA:84,17,1,67 -BRDA:89,18,0,67 +BRDA:76,15,0,271 +BRDA:76,15,1,271 +BRDA:76,15,2,181 +BRDA:84,16,0,83 +BRDA:84,16,1,90 +BRDA:84,17,0,173 +BRDA:84,17,1,173 +BRDA:89,18,0,173 BRDA:89,18,1,0 -BRDA:100,19,0,7 -BRDA:100,19,1,67 -BRDA:100,20,0,74 -BRDA:100,20,1,74 +BRDA:100,19,0,8 +BRDA:100,19,1,173 +BRDA:100,20,0,181 +BRDA:100,20,1,181 BRF:44 BRH:41 end_of_record @@ -39406,19 +39819,19 @@ FN:9,getFirstInlineElement FN:20,getLastInlineElement FNF:2 FNH:2 -FNDA:300,getFirstInlineElement +FNDA:305,getFirstInlineElement FNDA:4,getLastInlineElement DA:1,1 DA:2,1 DA:9,1 -DA:12,300 -DA:13,300 +DA:12,305 +DA:13,305 DA:20,1 DA:23,4 DA:24,4 LF:8 LH:8 -BRDA:13,0,0,266 +BRDA:13,0,0,271 BRDA:13,0,1,34 BRDA:24,1,0,4 BRDA:24,1,1,0 @@ -39431,8 +39844,8 @@ FN:26,getInlineElementAtNode FN:42,resolveInlineElement FNF:2 FNH:2 -FNDA:1524,getInlineElementAtNode -FNDA:946,resolveInlineElement +FNDA:1752,getInlineElementAtNode +FNDA:1111,resolveInlineElement DA:1,1 DA:2,1 DA:3,1 @@ -39440,37 +39853,37 @@ DA:4,1 DA:5,1 DA:6,1 DA:26,1 -DA:31,1524 -DA:34,1524 -DA:43,946 -DA:44,946 -DA:45,946 -DA:49,860 -DA:54,946 -DA:55,1794 -DA:56,1794 -DA:57,1794 -DA:58,14 -DA:59,1780 -DA:60,3 -DA:64,946 +DA:31,1752 +DA:34,1752 +DA:43,1111 +DA:44,1111 +DA:45,1111 +DA:49,1129 +DA:54,1111 +DA:55,2201 +DA:56,2201 +DA:57,2201 +DA:58,32 +DA:59,2169 +DA:60,4 +DA:64,1111 LF:21 LH:21 -BRDA:32,0,0,1444 +BRDA:32,0,0,1672 BRDA:32,0,1,80 -BRDA:34,1,0,1524 -BRDA:34,1,1,946 -BRDA:34,1,2,946 -BRDA:46,2,0,1806 -BRDA:46,2,1,1806 -BRDA:54,3,0,2740 -BRDA:54,3,1,1806 -BRDA:57,4,0,14 -BRDA:57,4,1,1780 -BRDA:59,5,0,3 -BRDA:59,5,1,1777 -BRDA:64,6,0,946 -BRDA:64,6,1,929 +BRDA:34,1,0,1752 +BRDA:34,1,1,1111 +BRDA:34,1,2,1111 +BRDA:46,2,0,2240 +BRDA:46,2,1,2240 +BRDA:54,3,0,3312 +BRDA:54,3,1,2231 +BRDA:57,4,0,32 +BRDA:57,4,1,2169 +BRDA:59,5,0,4 +BRDA:59,5,1,2165 +BRDA:64,6,0,1111 +BRDA:64,6,1,1075 BRF:15 BRH:15 end_of_record @@ -39482,8 +39895,8 @@ FN:39,getInlineElementBeforeAfter FNF:3 FNH:2 FNDA:0,getInlineElementBefore -FNDA:186,getInlineElementAfter -FNDA:292,getInlineElementBeforeAfter +FNDA:269,getInlineElementAfter +FNDA:379,getInlineElementBeforeAfter DA:1,1 DA:2,1 DA:3,1 @@ -39491,55 +39904,55 @@ DA:4,1 DA:18,1 DA:19,0 DA:32,1 -DA:33,186 +DA:33,269 DA:39,1 -DA:40,292 +DA:40,379 DA:41,0 -DA:44,292 -DA:45,584 -DA:46,292 -DA:47,292 -DA:49,292 -DA:50,107 -DA:51,185 -DA:55,17 -DA:58,292 -DA:59,25 -DA:62,292 -DA:64,292 -DA:65,17 -DA:70,292 +DA:44,379 +DA:45,758 +DA:46,379 +DA:47,379 +DA:49,379 +DA:50,111 +DA:51,268 +DA:55,21 +DA:58,379 +DA:59,38 +DA:62,379 +DA:64,379 +DA:65,21 +DA:70,379 LF:25 LH:23 BRDA:40,0,0,0 -BRDA:40,0,1,292 -BRDA:40,1,0,292 -BRDA:40,1,1,292 -BRDA:40,1,2,292 -BRDA:49,2,0,107 -BRDA:49,2,1,185 -BRDA:49,3,0,292 -BRDA:49,3,1,106 -BRDA:49,3,2,14 -BRDA:49,3,3,280 -BRDA:49,3,4,186 -BRDA:51,4,0,17 -BRDA:51,4,1,168 -BRDA:52,5,0,185 -BRDA:52,5,1,156 +BRDA:40,0,1,379 +BRDA:40,1,0,379 +BRDA:40,1,1,379 +BRDA:40,1,2,379 +BRDA:49,2,0,111 +BRDA:49,2,1,268 +BRDA:49,3,0,379 +BRDA:49,3,1,110 +BRDA:49,3,2,18 +BRDA:49,3,3,363 +BRDA:49,3,4,269 +BRDA:51,4,0,21 +BRDA:51,4,1,247 +BRDA:52,5,0,268 +BRDA:52,5,1,223 BRDA:52,5,2,92 -BRDA:52,5,3,156 -BRDA:52,5,4,64 -BRDA:58,6,0,25 -BRDA:58,6,1,267 -BRDA:58,7,0,292 -BRDA:58,7,1,185 -BRDA:64,8,0,17 -BRDA:64,8,1,275 -BRDA:64,9,0,292 -BRDA:64,9,1,162 -BRDA:64,9,2,145 -BRDA:66,10,0,17 +BRDA:52,5,3,223 +BRDA:52,5,4,131 +BRDA:58,6,0,38 +BRDA:58,6,1,341 +BRDA:58,7,0,379 +BRDA:58,7,1,268 +BRDA:64,8,0,21 +BRDA:64,8,1,358 +BRDA:64,9,0,379 +BRDA:64,9,1,238 +BRDA:64,9,2,217 +BRDA:66,10,0,21 BRDA:66,10,1,0 BRF:30 BRH:28 @@ -39549,9 +39962,9 @@ SF:packages/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts FN:6,arrayPush FNF:1 FNH:1 -FNDA:6706,arrayPush +FNDA:6946,arrayPush DA:6,1 -DA:7,6706 +DA:7,6946 LF:2 LH:2 BRF:0 @@ -39562,9 +39975,9 @@ SF:packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts FN:6,getObjectKeys FNF:1 FNH:1 -FNDA:41756,getObjectKeys +FNDA:43258,getObjectKeys DA:6,1 -DA:9,41756 +DA:9,43258 LF:2 LH:2 BRF:0 @@ -39575,9 +39988,9 @@ SF:packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts FN:33,toArray FNF:1 FNH:1 -FNDA:31962,toArray +FNDA:34169,toArray DA:33,1 -DA:34,31962 +DA:34,34169 LF:2 LH:2 BRF:0 @@ -39622,11 +40035,11 @@ FN:572,createListStyleMetadata FNF:34 FNH:34 FNDA:1,(anonymous_0) -FNDA:271,VList +FNDA:287,VList FNDA:5,(anonymous_2) FNDA:6,(anonymous_3) -FNDA:93,(anonymous_4) -FNDA:152,(anonymous_5) +FNDA:108,(anonymous_4) +FNDA:178,(anonymous_5) FNDA:59,(anonymous_6) FNDA:131,(anonymous_7) FNDA:5,(anonymous_8) @@ -39639,19 +40052,19 @@ FNDA:23,(anonymous_14) FNDA:32,(anonymous_15) FNDA:32,(anonymous_16) FNDA:37,(anonymous_17) -FNDA:23,(anonymous_18) +FNDA:24,(anonymous_18) FNDA:22,(anonymous_19) FNDA:34,(anonymous_20) FNDA:18,(anonymous_21) -FNDA:174,(anonymous_22) +FNDA:189,(anonymous_22) FNDA:64,(anonymous_23) FNDA:142,(anonymous_24) -FNDA:329,(anonymous_25) -FNDA:486,(anonymous_26) -FNDA:332,moveChildNodesToLi -FNDA:494,(anonymous_28) -FNDA:410,moveLiToList -FNDA:8,(anonymous_30) +FNDA:348,(anonymous_25) +FNDA:515,(anonymous_26) +FNDA:351,moveChildNodesToLi +FNDA:525,(anonymous_28) +FNDA:436,moveLiToList +FNDA:7,(anonymous_30) FNDA:74,getValidValue FNDA:222,(anonymous_32) FNDA:37,createListStyleMetadata @@ -39670,20 +40083,20 @@ DA:12,1 DA:13,1 DA:14,1 DA:75,1 -DA:76,271 -DA:82,271 -DA:83,271 +DA:76,287 +DA:82,287 +DA:83,287 DA:84,1 -DA:108,270 -DA:109,270 -DA:143,270 -DA:145,270 +DA:108,286 +DA:109,286 +DA:143,286 +DA:145,286 DA:152,1 DA:156,6 DA:163,1 -DA:164,93 -DA:166,93 -DA:172,152 +DA:164,108 +DA:166,108 +DA:172,178 DA:185,59 DA:186,59 DA:187,0 @@ -39750,12 +40163,12 @@ DA:373,37 DA:374,37 DA:379,37 DA:387,1 -DA:388,23 -DA:391,23 -DA:392,15 +DA:388,24 +DA:391,24 +DA:392,16 DA:393,8 DA:394,5 -DA:397,23 +DA:397,24 DA:412,22 DA:413,22 DA:414,34 @@ -39772,7 +40185,7 @@ DA:453,18 DA:454,18 DA:458,0 DA:465,1 -DA:466,174 +DA:466,189 DA:469,1 DA:474,64 DA:475,8 @@ -39789,45 +40202,45 @@ DA:495,56 DA:497,56 DA:498,56 DA:501,56 -DA:504,329 -DA:506,599 -DA:513,329 -DA:514,329 -DA:516,329 -DA:517,486 -DA:519,486 -DA:520,59 -DA:521,427 -DA:522,414 +DA:504,348 +DA:506,634 +DA:513,348 +DA:514,348 +DA:516,348 +DA:517,515 +DA:519,515 +DA:520,62 +DA:521,453 +DA:522,440 DA:526,1 -DA:535,332 -DA:537,332 -DA:538,494 -DA:539,405 -DA:540,89 -DA:541,59 -DA:542,30 -DA:543,9 -DA:553,410 -DA:554,8 -DA:555,8 -DA:557,8 -DA:558,7 -DA:559,5 -DA:561,8 -DA:564,8 +DA:535,351 +DA:537,351 +DA:538,525 +DA:539,432 +DA:540,93 +DA:541,62 +DA:542,31 +DA:543,10 +DA:553,436 +DA:554,7 +DA:555,7 +DA:557,7 +DA:558,6 +DA:559,4 +DA:561,7 +DA:564,7 DA:568,370 DA:569,222 DA:577,37 LF:164 LH:159 BRDA:83,0,0,1 -BRDA:83,0,1,270 +BRDA:83,0,1,286 BRDA:167,1,0,0 -BRDA:167,1,1,93 -BRDA:172,2,0,152 -BRDA:172,2,1,152 -BRDA:172,2,2,116 +BRDA:167,1,1,108 +BRDA:172,2,0,178 +BRDA:172,2,1,178 +BRDA:172,2,2,136 BRDA:186,3,0,0 BRDA:186,3,1,59 BRDA:193,4,0,59 @@ -39877,11 +40290,11 @@ BRDA:356,25,0,32 BRDA:356,25,1,24 BRDA:359,26,0,23 BRDA:359,26,1,9 -BRDA:391,27,0,15 +BRDA:391,27,0,16 BRDA:391,27,1,8 BRDA:393,28,0,5 BRDA:393,28,1,3 -BRDA:399,29,0,19 +BRDA:399,29,0,20 BRDA:399,29,1,4 BRDA:413,30,0,21 BRDA:413,30,1,1 @@ -39901,7 +40314,7 @@ BRDA:449,37,0,18 BRDA:449,37,1,18 BRDA:453,38,0,18 BRDA:453,38,1,0 -BRDA:466,39,0,163 +BRDA:466,39,0,178 BRDA:466,39,1,11 BRDA:474,40,0,8 BRDA:474,40,1,56 @@ -39921,29 +40334,29 @@ BRDA:495,47,0,56 BRDA:495,47,1,0 BRDA:497,48,0,56 BRDA:497,48,1,0 -BRDA:506,49,0,270 -BRDA:506,49,1,59 -BRDA:519,50,0,59 -BRDA:519,50,1,427 -BRDA:521,51,0,414 +BRDA:506,49,0,286 +BRDA:506,49,1,62 +BRDA:519,50,0,62 +BRDA:519,50,1,453 +BRDA:521,51,0,440 BRDA:521,51,1,13 -BRDA:521,52,0,427 +BRDA:521,52,0,453 BRDA:521,52,1,13 BRDA:521,53,0,13 BRDA:521,53,1,0 -BRDA:538,54,0,405 -BRDA:538,54,1,89 -BRDA:540,55,0,59 -BRDA:540,55,1,30 -BRDA:542,56,0,9 +BRDA:538,54,0,432 +BRDA:538,54,1,93 +BRDA:540,55,0,62 +BRDA:540,55,1,31 +BRDA:542,56,0,10 BRDA:542,56,1,21 -BRDA:542,57,0,30 -BRDA:542,57,1,17 +BRDA:542,57,0,31 +BRDA:542,57,1,18 BRDA:543,58,0,7 -BRDA:543,58,1,2 -BRDA:557,59,0,7 +BRDA:543,58,1,3 +BRDA:557,59,0,6 BRDA:557,59,1,1 -BRDA:558,60,0,5 +BRDA:558,60,0,4 BRDA:558,60,1,2 BRDA:580,61,0,37 BRDA:580,61,1,0 @@ -39976,17 +40389,17 @@ FN:178,createListChainName FNF:15 FNH:15 FNDA:1,(anonymous_0) -FNDA:46,VListChain -FNDA:122,(anonymous_2) -FNDA:89,(anonymous_3) -FNDA:72,(anonymous_4) -FNDA:19,(anonymous_5) +FNDA:55,VListChain +FNDA:149,(anonymous_2) +FNDA:116,(anonymous_3) +FNDA:90,(anonymous_4) +FNDA:29,(anonymous_5) FNDA:18,(anonymous_6) -FNDA:4,(anonymous_7) +FNDA:5,(anonymous_7) FNDA:20,(anonymous_8) -FNDA:19,(anonymous_9) -FNDA:60,(anonymous_10) -FNDA:63,(anonymous_11) +FNDA:29,(anonymous_9) +FNDA:75,(anonymous_10) +FNDA:79,(anonymous_11) FNDA:20,(anonymous_12) FNDA:33,(anonymous_13) FNDA:41,createListChainName @@ -40001,40 +40414,40 @@ DA:11,1 DA:12,1 DA:13,1 DA:20,1 -DA:21,46 -DA:22,46 +DA:21,55 +DA:22,55 DA:30,1 -DA:35,122 -DA:36,122 -DA:37,122 -DA:38,89 -DA:41,89 -DA:42,72 -DA:44,72 -DA:46,60 -DA:48,60 -DA:49,60 -DA:51,60 -DA:54,48 -DA:55,8 -DA:58,48 -DA:59,12 +DA:35,149 +DA:36,149 +DA:37,149 +DA:38,116 +DA:41,116 +DA:42,90 +DA:44,90 +DA:46,75 +DA:48,75 +DA:49,75 +DA:51,75 +DA:54,62 +DA:55,13 +DA:58,62 +DA:59,13 DA:60,6 -DA:63,60 -DA:64,60 -DA:68,89 -DA:71,122 +DA:63,75 +DA:64,75 +DA:68,116 +DA:71,149 DA:78,1 DA:79,18 DA:87,1 -DA:88,4 -DA:89,3 -DA:91,3 -DA:92,3 -DA:93,3 -DA:95,3 -DA:97,3 -DA:98,3 +DA:88,5 +DA:89,4 +DA:91,4 +DA:92,4 +DA:93,4 +DA:95,4 +DA:97,4 +DA:98,4 DA:100,1 DA:110,1 DA:111,20 @@ -40050,17 +40463,17 @@ DA:127,33 DA:129,33 DA:130,33 DA:132,33 -DA:140,46 +DA:140,55 DA:146,1 -DA:147,19 +DA:147,29 DA:155,1 -DA:156,60 -DA:157,60 -DA:159,60 -DA:160,12 -DA:162,48 +DA:156,75 +DA:157,75 +DA:159,75 +DA:160,13 +DA:162,62 DA:166,1 -DA:167,63 +DA:167,79 DA:170,20 DA:171,20 DA:174,33 @@ -40068,30 +40481,30 @@ DA:176,1 DA:179,41 LF:76 LH:76 -BRDA:35,0,0,89 -BRDA:35,0,1,33 -BRDA:35,1,0,32 +BRDA:35,0,0,109 +BRDA:35,0,1,40 +BRDA:35,1,0,39 BRDA:35,1,1,1 -BRDA:44,2,0,60 -BRDA:44,2,1,12 -BRDA:46,3,0,60 -BRDA:46,3,1,46 -BRDA:47,4,0,46 +BRDA:44,2,0,75 +BRDA:44,2,1,15 +BRDA:46,3,0,75 +BRDA:46,3,1,55 +BRDA:47,4,0,55 BRDA:47,4,1,41 -BRDA:49,5,0,60 -BRDA:49,5,1,30 -BRDA:51,6,0,48 -BRDA:51,6,1,12 -BRDA:54,7,0,8 -BRDA:54,7,1,40 +BRDA:49,5,0,75 +BRDA:49,5,1,32 +BRDA:51,6,0,62 +BRDA:51,6,1,13 +BRDA:54,7,0,13 +BRDA:54,7,1,49 BRDA:59,8,0,6 -BRDA:59,8,1,6 +BRDA:59,8,1,7 BRDA:79,9,0,18 BRDA:79,9,1,12 -BRDA:88,10,0,3 +BRDA:88,10,0,4 BRDA:88,10,1,1 -BRDA:88,11,0,4 -BRDA:88,11,1,3 +BRDA:88,11,0,5 +BRDA:88,11,1,4 BRDA:117,12,0,33 BRDA:117,12,1,0 BRDA:119,13,0,8 @@ -40100,10 +40513,10 @@ BRDA:120,14,0,2 BRDA:120,14,1,6 BRDA:127,15,0,33 BRDA:127,15,1,0 -BRDA:157,16,0,60 +BRDA:157,16,0,75 BRDA:157,16,1,0 -BRDA:159,17,0,12 -BRDA:159,17,1,48 +BRDA:159,17,0,13 +BRDA:159,17,1,62 BRF:36 BRH:33 end_of_record @@ -40139,13 +40552,13 @@ FN:518,getChildrenAndUnwrap FNF:27 FNH:19 FNDA:1,(anonymous_0) -FNDA:517,VListItem -FNDA:192,(anonymous_2) -FNDA:274,(anonymous_3) -FNDA:343,(anonymous_4) +FNDA:545,VListItem +FNDA:218,(anonymous_2) +FNDA:300,(anonymous_3) +FNDA:344,(anonymous_4) FNDA:131,(anonymous_5) FNDA:293,(anonymous_6) -FNDA:212,(anonymous_7) +FNDA:232,(anonymous_7) FNDA:0,(anonymous_8) FNDA:0,(anonymous_9) FNDA:0,(anonymous_10) @@ -40159,10 +40572,10 @@ FNDA:35,(anonymous_17) FNDA:0,(anonymous_18) FNDA:5,(anonymous_19) FNDA:142,(anonymous_20) -FNDA:151,(anonymous_21) +FNDA:152,(anonymous_21) FNDA:44,(anonymous_23) -FNDA:117,(anonymous_24) -FNDA:117,createListElement +FNDA:118,(anonymous_24) +FNDA:118,createListElement FNDA:11,wrapIfNotBlockNode FNDA:11,getChildrenAndUnwrap DA:1,1 @@ -40189,26 +40602,26 @@ DA:35,1 DA:36,1 DA:42,1 DA:79,1 -DA:83,517 -DA:93,1638 -DA:100,517 +DA:83,545 +DA:93,1727 +DA:100,545 DA:101,1 -DA:104,516 -DA:107,516 -DA:109,516 -DA:112,516 +DA:104,544 +DA:107,544 +DA:109,544 +DA:112,544 DA:118,1 -DA:119,192 +DA:119,218 DA:125,1 -DA:126,274 +DA:126,300 DA:132,1 -DA:133,343 +DA:133,344 DA:139,1 DA:140,131 DA:147,1 DA:148,293 DA:156,1 -DA:157,212 +DA:157,232 DA:163,1 DA:164,0 DA:170,1 @@ -40252,35 +40665,35 @@ DA:272,15 DA:273,10 DA:278,5 DA:280,5 -DA:292,151 -DA:295,258 -DA:297,151 -DA:299,151 +DA:292,152 +DA:295,260 +DA:297,152 +DA:299,152 DA:301,0 DA:302,0 DA:309,0 DA:310,0 DA:315,0 DA:318,0 -DA:325,151 +DA:325,152 DA:326,107 DA:327,34 DA:328,34 -DA:338,151 -DA:339,117 -DA:340,117 -DA:347,117 -DA:348,117 -DA:352,117 +DA:338,152 +DA:339,118 +DA:340,118 +DA:347,118 +DA:348,118 +DA:352,118 DA:353,20 DA:354,20 DA:358,6 -DA:363,151 -DA:364,151 -DA:367,151 -DA:368,140 -DA:369,140 -DA:373,151 +DA:363,152 +DA:364,152 +DA:367,152 +DA:368,141 +DA:369,141 +DA:373,152 DA:375,11 DA:376,11 DA:384,11 @@ -40298,35 +40711,35 @@ DA:404,44 DA:405,0 DA:412,11 DA:432,1 -DA:433,117 -DA:434,117 +DA:433,118 +DA:434,118 DA:435,51 DA:436,51 DA:437,73 DA:438,73 DA:440,51 -DA:442,66 +DA:442,67 DA:444,1 -DA:452,117 -DA:461,117 +DA:452,118 +DA:461,118 DA:462,72 DA:464,10 DA:465,10 DA:468,62 DA:469,62 -DA:473,45 -DA:476,117 +DA:473,46 +DA:476,118 DA:477,0 DA:478,0 -DA:482,117 +DA:482,118 DA:483,7 DA:484,7 DA:485,0 -DA:489,117 +DA:489,118 DA:490,29 -DA:496,117 +DA:496,118 DA:497,3 -DA:503,117 +DA:503,118 DA:507,11 DA:512,8 DA:515,11 @@ -40336,11 +40749,11 @@ DA:521,11 LF:168 LH:145 BRDA:100,0,0,1 -BRDA:100,0,1,516 -BRDA:105,1,0,499 +BRDA:100,0,1,544 +BRDA:105,1,0,527 BRDA:105,1,1,17 -BRDA:109,2,0,516 -BRDA:109,2,1,516 +BRDA:109,2,0,544 +BRDA:109,2,1,544 BRDA:171,3,0,0 BRDA:171,3,1,0 BRDA:171,4,0,0 @@ -40379,10 +40792,10 @@ BRDA:273,19,1,5 BRDA:274,20,0,10 BRDA:274,20,1,10 BRDA:274,20,2,5 -BRDA:295,21,0,107 +BRDA:295,21,0,108 BRDA:295,21,1,44 BRDA:299,22,0,0 -BRDA:299,22,1,151 +BRDA:299,22,1,152 BRDA:301,23,0,0 BRDA:301,23,1,0 BRDA:310,24,0,0 @@ -40392,7 +40805,7 @@ BRDA:311,25,1,0 BRDA:326,26,0,34 BRDA:326,26,1,73 BRDA:352,27,0,20 -BRDA:352,27,1,97 +BRDA:352,27,1,98 BRDA:353,28,0,0 BRDA:353,28,1,20 BRDA:353,29,0,20 @@ -40402,11 +40815,11 @@ BRDA:354,30,1,14 BRDA:355,31,0,20 BRDA:355,31,1,6 BRDA:364,32,0,2 -BRDA:364,32,1,149 -BRDA:367,33,0,140 +BRDA:364,32,1,150 +BRDA:367,33,0,141 BRDA:367,33,1,11 BRDA:373,34,0,11 -BRDA:373,34,1,140 +BRDA:373,34,1,141 BRDA:377,35,0,11 BRDA:377,35,1,0 BRDA:384,36,0,11 @@ -40420,8 +40833,8 @@ BRDA:394,39,1,0 BRDA:404,40,0,0 BRDA:404,40,1,44 BRDA:434,41,0,51 -BRDA:434,41,1,66 -BRDA:434,42,0,117 +BRDA:434,41,1,67 +BRDA:434,42,0,118 BRDA:434,42,1,104 BRDA:436,43,0,124 BRDA:436,43,1,73 @@ -40432,40 +40845,40 @@ BRDA:438,45,1,73 BRDA:438,46,0,73 BRDA:438,46,1,73 BRDA:461,47,0,72 -BRDA:461,47,1,45 -BRDA:461,48,0,117 -BRDA:461,48,1,85 +BRDA:461,47,1,46 +BRDA:461,48,0,118 +BRDA:461,48,1,86 BRDA:461,48,2,79 BRDA:462,49,0,10 BRDA:462,49,1,62 -BRDA:473,50,0,32 +BRDA:473,50,0,33 BRDA:473,50,1,13 BRDA:476,51,0,0 -BRDA:476,51,1,117 -BRDA:476,52,0,117 +BRDA:476,51,1,118 +BRDA:476,52,0,118 BRDA:476,52,1,0 -BRDA:476,53,0,13 +BRDA:476,53,0,14 BRDA:476,53,1,104 -BRDA:476,54,0,117 -BRDA:476,54,1,117 +BRDA:476,54,0,118 +BRDA:476,54,1,118 BRDA:476,55,0,0 BRDA:476,55,1,0 BRDA:476,56,0,0 BRDA:476,56,1,0 BRDA:482,57,0,7 -BRDA:482,57,1,110 -BRDA:482,58,0,117 +BRDA:482,57,1,111 +BRDA:482,58,0,118 BRDA:482,58,1,104 BRDA:482,58,2,79 BRDA:484,59,0,0 BRDA:484,59,1,7 BRDA:489,60,0,29 -BRDA:489,60,1,88 -BRDA:489,61,0,117 -BRDA:489,61,1,96 +BRDA:489,60,1,89 +BRDA:489,61,0,118 +BRDA:489,61,1,97 BRDA:496,62,0,3 -BRDA:496,62,1,114 -BRDA:496,63,0,117 +BRDA:496,62,1,115 +BRDA:496,63,0,118 BRDA:496,63,1,21 BRDA:507,64,0,8 BRDA:507,64,1,3 @@ -40529,7 +40942,7 @@ FN:111,tryIncludeSiblingNode FN:129,createVListFromItemNode FNF:6 FNH:6 -FNDA:44,createVListFromRegion +FNDA:55,createVListFromRegion FNDA:44,(anonymous_1) FNDA:53,(anonymous_2) FNDA:22,(anonymous_3) @@ -40549,12 +40962,12 @@ DA:11,1 DA:12,1 DA:16,1 DA:26,1 -DA:31,44 +DA:31,55 DA:32,1 -DA:35,43 -DA:37,43 -DA:38,12 -DA:39,12 +DA:35,54 +DA:37,54 +DA:38,23 +DA:39,23 DA:40,10 DA:43,31 DA:48,31 @@ -40575,8 +40988,8 @@ DA:79,31 DA:80,17 DA:81,17 DA:84,53 -DA:87,43 -DA:89,43 +DA:87,54 +DA:89,54 DA:90,41 DA:91,41 DA:97,41 @@ -40584,7 +40997,7 @@ DA:98,41 DA:99,22 DA:100,13 DA:102,9 -DA:108,43 +DA:108,54 DA:112,34 DA:113,34 DA:114,34 @@ -40603,11 +41016,11 @@ DA:143,5 LF:65 LH:65 BRDA:31,0,0,1 -BRDA:31,0,1,43 -BRDA:37,1,0,12 +BRDA:31,0,1,54 +BRDA:37,1,0,23 BRDA:37,1,1,31 BRDA:39,2,0,10 -BRDA:39,2,1,2 +BRDA:39,2,1,13 BRDA:51,3,0,31 BRDA:51,3,1,13 BRDA:52,4,0,30 @@ -40624,7 +41037,7 @@ BRDA:68,8,1,1 BRDA:79,9,0,17 BRDA:79,9,1,14 BRDA:89,10,0,41 -BRDA:89,10,1,2 +BRDA:89,10,1,13 BRDA:90,11,0,41 BRDA:90,11,1,0 BRDA:92,12,0,36 @@ -40658,21 +41071,21 @@ FN:25,getListTypeFromNode FN:41,isListElement FNF:2 FNH:2 -FNDA:1665,getListTypeFromNode -FNDA:1068,isListElement +FNDA:1742,getListTypeFromNode +FNDA:1126,isListElement DA:1,1 DA:25,1 -DA:26,1665 -DA:28,967 +DA:26,1742 +DA:28,1018 DA:30,217 -DA:32,481 +DA:32,507 DA:41,1 -DA:42,1068 +DA:42,1126 LF:8 LH:8 -BRDA:27,0,0,967 +BRDA:27,0,0,1018 BRDA:27,0,1,217 -BRDA:27,0,2,481 +BRDA:27,0,2,507 BRF:3 BRH:3 end_of_record @@ -40681,21 +41094,21 @@ SF:packages/roosterjs-editor-dom/lib/list/getRootListNode.ts FN:21,getRootListNode FNF:1 FNH:1 -FNDA:175,getRootListNode +FNDA:204,getRootListNode DA:1,1 DA:21,1 -DA:27,175 -DA:34,175 -DA:35,129 -DA:36,129 -DA:43,23 -DA:47,175 +DA:27,204 +DA:34,204 +DA:35,147 +DA:36,147 +DA:43,26 +DA:47,204 LF:8 LH:8 -BRDA:27,0,0,175 -BRDA:27,0,1,173 -BRDA:34,1,0,129 -BRDA:34,1,1,46 +BRDA:27,0,0,204 +BRDA:27,0,1,202 +BRDA:34,1,0,147 +BRDA:34,1,1,57 BRF:4 BRH:4 end_of_record @@ -40726,102 +41139,102 @@ FN:39,getInlineChildElementsStyle FN:61,(anonymous_6) FNF:5 FNH:5 -FNDA:294,setListItemStyle -FNDA:1021,(anonymous_1) -FNDA:192,(anonymous_2) -FNDA:294,getInlineChildElementsStyle -FNDA:202,(anonymous_6) +FNDA:299,setListItemStyle +FNDA:1031,(anonymous_1) +FNDA:205,(anonymous_2) +FNDA:299,getInlineChildElementsStyle +FNDA:215,(anonymous_6) DA:1,1 DA:2,1 DA:3,1 DA:13,1 -DA:16,294 -DA:18,294 -DA:20,294 -DA:21,1021 -DA:22,192 -DA:25,1021 -DA:30,26 -DA:31,24 +DA:16,302 +DA:18,299 +DA:20,299 +DA:21,1031 +DA:22,205 +DA:25,1031 +DA:30,29 +DA:31,27 DA:33,2 -DA:40,294 -DA:41,294 -DA:42,294 -DA:44,294 -DA:45,280 -DA:46,280 -DA:47,280 -DA:49,280 -DA:53,280 -DA:59,64 -DA:61,64 -DA:62,202 -DA:66,202 -DA:67,60 -DA:70,202 -DA:71,75 -DA:75,64 -DA:76,33 -DA:78,31 -DA:82,280 -DA:83,60 -DA:86,280 -DA:89,294 +DA:40,299 +DA:41,299 +DA:42,299 +DA:44,299 +DA:45,291 +DA:46,291 +DA:47,291 +DA:49,291 +DA:53,291 +DA:59,72 +DA:61,72 +DA:62,215 +DA:66,215 +DA:67,68 +DA:70,215 +DA:71,83 +DA:75,72 +DA:76,35 +DA:78,37 +DA:82,291 +DA:83,68 +DA:86,291 +DA:89,299 LF:36 LH:36 -BRDA:16,0,0,0 -BRDA:16,0,1,294 -BRDA:22,1,0,75 -BRDA:22,1,1,117 -BRDA:25,2,0,26 -BRDA:25,2,1,995 -BRDA:26,3,0,1021 -BRDA:26,3,1,1021 -BRDA:26,3,2,919 -BRDA:26,3,3,123 -BRDA:30,4,0,24 +BRDA:16,0,0,3 +BRDA:16,0,1,296 +BRDA:22,1,0,83 +BRDA:22,1,1,122 +BRDA:25,2,0,29 +BRDA:25,2,1,1002 +BRDA:26,3,0,1031 +BRDA:26,3,1,1031 +BRDA:26,3,2,922 +BRDA:26,3,3,130 +BRDA:30,4,0,27 BRDA:30,4,1,2 -BRDA:46,5,0,280 +BRDA:46,5,0,291 BRDA:46,5,1,0 BRDA:46,6,0,0 -BRDA:46,6,1,280 -BRDA:46,7,0,280 -BRDA:46,7,1,280 -BRDA:49,8,0,280 +BRDA:46,6,1,291 +BRDA:46,7,0,291 +BRDA:46,7,1,291 +BRDA:49,8,0,291 BRDA:49,8,1,0 -BRDA:63,9,0,144 -BRDA:63,9,1,58 -BRDA:66,10,0,60 -BRDA:66,10,1,142 -BRDA:70,11,0,75 -BRDA:70,11,1,127 -BRDA:70,12,0,202 -BRDA:70,12,1,75 -BRDA:75,13,0,33 -BRDA:75,13,1,31 +BRDA:63,9,0,153 +BRDA:63,9,1,62 +BRDA:66,10,0,68 +BRDA:66,10,1,147 +BRDA:70,11,0,83 +BRDA:70,11,1,132 +BRDA:70,12,0,215 +BRDA:70,12,1,83 +BRDA:75,13,0,35 +BRDA:75,13,1,37 BRDA:75,14,0,0 -BRDA:75,14,1,64 -BRDA:75,15,0,64 -BRDA:75,15,1,64 +BRDA:75,14,1,72 +BRDA:75,15,0,72 +BRDA:75,15,1,72 BRDA:75,16,0,0 -BRDA:75,16,1,64 -BRDA:75,17,0,64 -BRDA:75,17,1,64 -BRDA:54,18,0,344 -BRDA:54,18,1,313 -BRDA:54,18,2,64 -BRDA:54,18,3,64 -BRDA:54,18,4,20 -BRDA:57,19,0,20 -BRDA:57,19,1,0 +BRDA:75,16,1,72 +BRDA:75,17,0,72 +BRDA:75,17,1,72 +BRDA:54,18,0,363 +BRDA:54,18,1,326 +BRDA:54,18,2,75 +BRDA:54,18,3,75 +BRDA:54,18,4,26 +BRDA:57,19,0,26 +BRDA:57,19,1,3 BRDA:57,20,0,0 -BRDA:57,20,1,20 -BRDA:57,21,0,20 -BRDA:57,21,1,20 -BRDA:82,22,0,60 -BRDA:82,22,1,220 +BRDA:57,20,1,26 +BRDA:57,21,0,26 +BRDA:57,21,1,26 +BRDA:82,22,0,68 +BRDA:82,22,1,223 BRF:51 -BRH:43 +BRH:45 end_of_record TN: SF:packages/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts @@ -40896,53 +41309,53 @@ FN:50,setMetadata FN:64,removeMetadata FNF:3 FNH:3 -FNDA:964,getMetadata -FNDA:85,setMetadata -FNDA:62,removeMetadata +FNDA:1092,getMetadata +FNDA:99,setMetadata +FNDA:50,removeMetadata DA:1,1 DA:4,1 DA:15,1 -DA:20,964 -DA:23,964 -DA:24,964 -DA:27,964 -DA:28,963 -DA:29,138 -DA:30,825 -DA:31,823 +DA:20,1092 +DA:23,1092 +DA:24,1092 +DA:27,1092 +DA:28,1091 +DA:29,116 +DA:30,975 +DA:31,973 DA:35,3 DA:36,1 DA:38,2 DA:50,1 -DA:51,85 -DA:52,84 -DA:53,84 +DA:51,99 +DA:52,98 +DA:53,98 DA:55,1 DA:64,1 -DA:65,62 +DA:65,50 DA:66,43 DA:67,43 DA:68,1 DA:69,1 -DA:72,19 +DA:72,7 LF:26 LH:26 -BRDA:24,0,0,96 -BRDA:24,0,1,868 -BRDA:27,1,0,963 +BRDA:24,0,0,86 +BRDA:24,0,1,1006 +BRDA:27,1,0,1091 BRDA:27,1,1,1 -BRDA:28,2,0,138 -BRDA:28,2,1,825 -BRDA:30,3,0,823 +BRDA:28,2,0,116 +BRDA:28,2,1,975 +BRDA:30,3,0,973 BRDA:30,3,1,2 BRDA:35,4,0,1 BRDA:35,4,1,2 -BRDA:51,5,0,84 +BRDA:51,5,0,98 BRDA:51,5,1,1 -BRDA:51,6,0,85 -BRDA:51,6,1,56 +BRDA:51,6,0,99 +BRDA:51,6,1,80 BRDA:65,7,0,43 -BRDA:65,7,1,19 +BRDA:65,7,1,7 BRDA:67,8,0,1 BRDA:67,8,1,42 BRF:18 @@ -40956,75 +41369,75 @@ FN:53,(anonymous_2) FN:67,areSameNumbers FNF:4 FNH:4 -FNDA:3254,validate -FNDA:978,(anonymous_1) -FNDA:1073,(anonymous_2) +FNDA:3503,validate +FNDA:976,(anonymous_1) +FNDA:1149,(anonymous_2) FNDA:54,areSameNumbers DA:1,1 DA:11,1 -DA:12,3254 -DA:13,3254 -DA:14,1120 -DA:15,2134 +DA:12,3503 +DA:13,3503 +DA:14,1320 +DA:15,2183 DA:19,39 -DA:21,2095 +DA:21,2144 DA:23,130 DA:26,130 -DA:29,1217 -DA:34,1217 -DA:37,116 -DA:40,116 -DA:43,314 -DA:47,978 -DA:48,314 -DA:51,310 -DA:54,1073 -DA:56,310 +DA:29,1215 +DA:34,1215 +DA:37,140 +DA:40,140 +DA:43,316 +DA:47,976 +DA:48,316 +DA:51,335 +DA:54,1149 +DA:56,335 DA:59,8 DA:60,8 -DA:64,3215 +DA:64,3464 DA:68,54 LF:24 LH:24 -BRDA:13,0,0,1120 -BRDA:13,0,1,2134 -BRDA:13,1,0,3254 -BRDA:13,1,1,750 -BRDA:13,1,2,2956 -BRDA:13,1,3,996 +BRDA:13,0,0,1320 +BRDA:13,0,1,2183 +BRDA:13,1,0,3503 +BRDA:13,1,1,824 +BRDA:13,1,2,3155 +BRDA:13,1,3,1194 BRDA:15,2,0,39 -BRDA:15,2,1,2095 -BRDA:16,3,0,2134 -BRDA:16,3,1,1843 -BRDA:16,3,2,2106 -BRDA:16,3,3,1932 +BRDA:15,2,1,2144 +BRDA:16,3,0,2183 +BRDA:16,3,1,1868 +BRDA:16,3,2,2155 +BRDA:16,3,3,1933 BRDA:22,4,0,130 -BRDA:22,4,1,1217 -BRDA:22,4,2,116 -BRDA:22,4,3,314 -BRDA:22,4,4,310 +BRDA:22,4,1,1215 +BRDA:22,4,2,140 +BRDA:22,4,3,316 +BRDA:22,4,4,335 BRDA:22,4,5,8 BRDA:24,5,0,130 BRDA:24,5,1,114 BRDA:24,5,2,4 -BRDA:30,6,0,1217 -BRDA:30,6,1,1200 +BRDA:30,6,0,1215 +BRDA:30,6,1,1198 BRDA:30,6,2,54 -BRDA:30,6,3,1170 +BRDA:30,6,3,1168 BRDA:30,6,4,141 -BRDA:30,6,5,1170 +BRDA:30,6,5,1168 BRDA:30,6,6,141 -BRDA:38,7,0,116 -BRDA:38,7,1,102 +BRDA:38,7,0,140 +BRDA:38,7,1,126 BRDA:38,7,2,4 -BRDA:44,8,0,314 -BRDA:44,8,1,302 +BRDA:44,8,0,316 +BRDA:44,8,1,304 BRDA:44,8,2,4 -BRDA:44,8,3,300 +BRDA:44,8,3,302 BRDA:44,8,4,4 -BRDA:44,8,5,298 -BRDA:52,9,0,310 -BRDA:52,9,1,304 +BRDA:44,8,5,300 +BRDA:52,9,0,335 +BRDA:52,9,1,329 BRF:39 BRH:39 end_of_record @@ -41047,13 +41460,13 @@ FN:22,(anonymous_1) FNF:2 FNH:2 FNDA:6,(anonymous_0) -FNDA:24,(anonymous_1) +FNDA:23,(anonymous_1) DA:3,1 DA:13,1 DA:14,6 DA:22,1 -DA:23,24 -DA:24,24 +DA:23,23 +DA:24,23 DA:26,1 LF:7 LH:7 @@ -41066,8 +41479,8 @@ FN:42,getPasteSource FN:56,(anonymous_1) FNF:2 FNH:2 -FNDA:14,getPasteSource -FNDA:98,(anonymous_1) +FNDA:13,getPasteSource +FNDA:91,(anonymous_1) DA:1,1 DA:2,1 DA:3,1 @@ -41077,23 +41490,23 @@ DA:6,1 DA:7,1 DA:26,1 DA:42,1 -DA:46,42 -DA:48,14 -DA:49,14 -DA:56,14 -DA:57,98 -DA:58,12 -DA:62,14 +DA:46,39 +DA:48,13 +DA:49,13 +DA:56,13 +DA:57,91 +DA:58,11 +DA:62,13 LF:16 LH:16 -BRDA:57,0,0,12 -BRDA:57,0,1,86 -BRDA:57,1,0,98 -BRDA:57,1,1,67 -BRDA:62,2,0,12 +BRDA:57,0,0,11 +BRDA:57,0,1,80 +BRDA:57,1,0,91 +BRDA:57,1,1,60 +BRDA:62,2,0,11 BRDA:62,2,1,2 -BRDA:62,3,0,14 -BRDA:62,3,1,12 +BRDA:62,3,0,13 +BRDA:62,3,1,11 BRF:8 BRH:8 end_of_record @@ -41102,12 +41515,12 @@ SF:packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelDesktopDocume FN:12,(anonymous_0) FNF:1 FNH:1 -FNDA:18,(anonymous_0) +FNDA:17,(anonymous_0) DA:1,1 DA:4,1 DA:12,1 -DA:13,18 -DA:15,18 +DA:13,17 +DA:15,17 DA:17,1 LF:6 LH:6 @@ -41119,16 +41532,16 @@ SF:packages/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelOnlineDocumen FN:13,(anonymous_0) FNF:1 FNH:1 -FNDA:14,(anonymous_0) +FNDA:13,(anonymous_0) DA:1,1 DA:5,1 DA:13,1 -DA:14,14 -DA:16,14 +DA:14,13 +DA:16,13 DA:21,1 LF:6 LH:6 -BRDA:17,0,0,14 +BRDA:17,0,0,13 BRDA:17,0,1,4 BRF:2 BRH:2 @@ -41138,11 +41551,11 @@ SF:packages/roosterjs-editor-dom/lib/pasteSourceValidations/isGoogleSheetDocumen FN:10,(anonymous_0) FNF:1 FNH:1 -FNDA:9,(anonymous_0) +FNDA:8,(anonymous_0) DA:1,1 DA:10,1 -DA:11,9 -DA:12,9 +DA:11,8 +DA:12,8 DA:15,1 LF:5 LH:5 @@ -41154,11 +41567,11 @@ SF:packages/roosterjs-editor-dom/lib/pasteSourceValidations/isPowerPointDesktopD FN:12,(anonymous_0) FNF:1 FNH:1 -FNDA:11,(anonymous_0) +FNDA:10,(anonymous_0) DA:1,1 DA:4,1 DA:12,1 -DA:13,11 +DA:13,10 DA:15,1 LF:5 LH:5 @@ -41170,18 +41583,18 @@ SF:packages/roosterjs-editor-dom/lib/pasteSourceValidations/isWordDesktopDocumen FN:14,(anonymous_0) FNF:1 FNH:1 -FNDA:18,(anonymous_0) +FNDA:17,(anonymous_0) DA:1,1 DA:4,1 DA:5,1 DA:6,1 DA:14,1 -DA:15,18 -DA:16,18 +DA:15,17 +DA:16,17 DA:22,1 LF:8 LH:8 -BRDA:17,0,0,18 +BRDA:17,0,0,17 BRDA:17,0,1,14 BRF:2 BRH:2 @@ -41191,14 +41604,14 @@ SF:packages/roosterjs-editor-dom/lib/pasteSourceValidations/shouldConvertToSingl FN:10,(anonymous_0) FNF:1 FNH:1 -FNDA:9,(anonymous_0) +FNDA:8,(anonymous_0) DA:10,1 -DA:11,18 -DA:12,9 +DA:11,16 +DA:12,8 DA:19,1 LF:4 LH:4 -BRDA:13,0,0,9 +BRDA:13,0,0,8 BRDA:13,0,1,3 BRDA:13,0,2,2 BRDA:14,1,0,0 @@ -41214,35 +41627,35 @@ FN:13,collapseNodesInRegion FN:28,(anonymous_1) FNF:2 FNH:2 -FNDA:74,collapseNodesInRegion -FNDA:143,(anonymous_1) +FNDA:94,collapseNodesInRegion +FNDA:181,(anonymous_1) DA:1,1 DA:2,1 DA:3,1 DA:13,1 -DA:17,74 -DA:18,5 -DA:21,69 -DA:28,143 -DA:30,69 -DA:31,69 -DA:33,69 -DA:34,67 +DA:17,94 +DA:18,6 +DA:21,88 +DA:28,181 +DA:30,88 +DA:31,88 +DA:33,88 +DA:34,86 DA:36,2 LF:13 LH:13 -BRDA:17,0,0,5 -BRDA:17,0,1,69 -BRDA:17,1,0,74 -BRDA:17,1,1,72 +BRDA:17,0,0,6 +BRDA:17,0,1,88 +BRDA:17,1,0,94 +BRDA:17,1,1,92 BRDA:22,2,0,33 -BRDA:22,2,1,36 -BRDA:28,3,0,69 -BRDA:28,3,1,69 -BRDA:33,4,0,67 +BRDA:22,2,1,55 +BRDA:28,3,0,88 +BRDA:28,3,1,88 +BRDA:33,4,0,86 BRDA:33,4,1,2 -BRDA:33,5,0,69 -BRDA:33,5,1,67 +BRDA:33,5,0,88 +BRDA:33,5,1,86 BRF:12 BRH:12 end_of_record @@ -41260,16 +41673,16 @@ FN:203,(anonymous_8) FN:226,areNodesValid FNF:10 FNH:10 -FNDA:145,getRegionsFromRange -FNDA:218,(anonymous_1) -FNDA:178,getRegionCreator -FNDA:312,(anonymous_3) -FNDA:142,buildBoundaryTree +FNDA:165,getRegionsFromRange +FNDA:238,(anonymous_1) +FNDA:198,getRegionCreator +FNDA:332,(anonymous_3) +FNDA:162,buildBoundaryTree FNDA:145,(anonymous_5) FNDA:59,(anonymous_6) -FNDA:260,iterateNodes +FNDA:280,iterateNodes FNDA:118,(anonymous_8) -FNDA:312,areNodesValid +FNDA:332,areNodesValid DA:1,1 DA:2,1 DA:3,1 @@ -41277,24 +41690,24 @@ DA:4,1 DA:5,1 DA:27,1 DA:42,1 -DA:47,145 -DA:48,145 -DA:49,142 -DA:50,142 -DA:51,142 -DA:52,142 -DA:53,142 -DA:54,142 -DA:57,218 +DA:47,165 +DA:48,165 +DA:49,162 +DA:50,162 +DA:51,162 +DA:52,162 +DA:53,162 +DA:54,162 +DA:57,238 DA:63,1 -DA:67,178 -DA:68,178 -DA:69,178 -DA:70,312 -DA:120,142 -DA:121,142 -DA:122,142 -DA:132,142 +DA:67,198 +DA:68,198 +DA:69,198 +DA:70,332 +DA:120,162 +DA:121,162 +DA:122,162 +DA:132,162 DA:136,145 DA:137,145 DA:138,118 @@ -41308,15 +41721,15 @@ DA:147,68 DA:150,118 DA:151,118 DA:154,118 -DA:161,142 -DA:181,260 -DA:182,260 -DA:183,520 -DA:184,260 -DA:186,260 -DA:187,199 -DA:188,199 -DA:189,199 +DA:161,162 +DA:181,280 +DA:182,280 +DA:183,560 +DA:184,280 +DA:186,280 +DA:187,219 +DA:188,219 +DA:189,219 DA:193,61 DA:194,105 DA:195,105 @@ -41327,26 +41740,26 @@ DA:199,19 DA:203,105 DA:205,118 DA:206,118 -DA:211,260 -DA:232,312 +DA:211,280 +DA:232,332 DA:233,0 -DA:235,312 -DA:236,312 -DA:238,312 -DA:240,312 -DA:242,312 -DA:248,312 +DA:235,332 +DA:236,332 +DA:238,332 +DA:240,332 +DA:242,332 +DA:248,332 LF:66 LH:65 -BRDA:48,0,0,142 +BRDA:48,0,0,162 BRDA:48,0,1,3 -BRDA:48,1,0,145 -BRDA:48,1,1,143 -BRDA:51,2,0,142 -BRDA:51,2,1,118 -BRDA:52,3,0,142 -BRDA:52,3,1,121 -BRDA:71,4,0,254 +BRDA:48,1,0,165 +BRDA:48,1,1,163 +BRDA:51,2,0,162 +BRDA:51,2,1,138 +BRDA:52,3,0,162 +BRDA:52,3,1,141 +BRDA:71,4,0,274 BRDA:71,4,1,58 BRDA:137,5,0,118 BRDA:137,5,1,27 @@ -41356,11 +41769,11 @@ BRDA:142,7,0,118 BRDA:142,7,1,92 BRDA:145,8,0,68 BRDA:145,8,1,50 -BRDA:181,9,0,260 -BRDA:181,9,1,170 -BRDA:186,10,0,199 +BRDA:181,9,0,280 +BRDA:181,9,1,190 +BRDA:186,10,0,219 BRDA:186,10,1,61 -BRDA:188,11,0,199 +BRDA:188,11,0,219 BRDA:188,11,1,0 BRDA:193,12,0,166 BRDA:193,12,1,129 @@ -41378,29 +41791,29 @@ BRDA:203,18,0,37 BRDA:203,18,1,68 BRDA:203,19,0,105 BRDA:203,19,1,105 -BRDA:211,20,0,260 -BRDA:211,20,1,236 +BRDA:211,20,0,280 +BRDA:211,20,1,256 BRDA:232,21,0,0 -BRDA:232,21,1,312 -BRDA:235,22,0,312 +BRDA:232,21,1,332 +BRDA:235,22,0,332 BRDA:235,22,1,68 -BRDA:236,23,0,312 +BRDA:236,23,0,332 BRDA:236,23,1,64 -BRDA:238,24,0,312 +BRDA:238,24,0,332 BRDA:238,24,1,68 BRDA:238,24,2,68 -BRDA:240,25,0,312 +BRDA:240,25,0,332 BRDA:240,25,1,64 BRDA:240,25,2,64 -BRDA:242,26,0,312 +BRDA:242,26,0,332 BRDA:242,26,1,68 BRDA:242,26,2,27 BRDA:242,26,3,27 BRDA:242,26,4,26 BRDA:242,26,5,26 -BRDA:248,27,0,312 -BRDA:248,27,1,284 -BRDA:248,27,2,255 +BRDA:248,27,0,332 +BRDA:248,27,1,304 +BRDA:248,27,2,275 BRF:63 BRH:61 end_of_record @@ -41410,59 +41823,59 @@ FN:16,getSelectedBlockElementsInRegion FN:37,(anonymous_1) FNF:2 FNH:2 -FNDA:102,getSelectedBlockElementsInRegion -FNDA:162,(anonymous_1) +FNDA:122,getSelectedBlockElementsInRegion +FNDA:211,(anonymous_1) DA:1,1 DA:2,1 DA:3,1 DA:4,1 DA:5,1 DA:16,1 -DA:21,102 -DA:22,102 -DA:24,102 -DA:25,184 -DA:26,92 -DA:28,92 -DA:29,92 -DA:33,162 -DA:37,92 -DA:38,162 -DA:39,162 -DA:41,162 -DA:42,4 -DA:43,4 -DA:45,158 -DA:50,102 -DA:51,1 -DA:55,1 -DA:57,1 -DA:59,1 -DA:60,1 -DA:64,102 +DA:21,122 +DA:22,122 +DA:24,122 +DA:25,224 +DA:26,112 +DA:28,112 +DA:29,112 +DA:33,211 +DA:37,112 +DA:38,211 +DA:39,211 +DA:41,211 +DA:42,14 +DA:43,14 +DA:45,197 +DA:50,122 +DA:51,2 +DA:55,2 +DA:57,2 +DA:59,2 +DA:60,2 +DA:64,122 LF:28 LH:28 -BRDA:24,0,0,92 +BRDA:24,0,0,112 BRDA:24,0,1,10 BRDA:29,1,0,0 -BRDA:29,1,1,92 -BRDA:29,2,0,92 -BRDA:29,2,1,92 -BRDA:41,3,0,4 -BRDA:41,3,1,158 -BRDA:41,4,0,162 -BRDA:41,4,1,150 +BRDA:29,1,1,112 +BRDA:29,2,0,112 +BRDA:29,2,1,112 +BRDA:41,3,0,14 +BRDA:41,3,1,197 +BRDA:41,4,0,211 +BRDA:41,4,1,199 BRDA:42,5,0,0 -BRDA:42,5,1,4 -BRDA:42,6,0,4 -BRDA:42,6,1,4 -BRDA:50,7,0,1 -BRDA:50,7,1,101 -BRDA:50,8,0,102 -BRDA:50,8,1,11 -BRDA:50,8,2,10 -BRDA:50,8,3,3 -BRDA:59,9,0,1 +BRDA:42,5,1,14 +BRDA:42,6,0,14 +BRDA:42,6,1,14 +BRDA:50,7,0,2 +BRDA:50,7,1,120 +BRDA:50,8,0,122 +BRDA:50,8,1,13 +BRDA:50,8,2,12 +BRDA:50,8,3,5 +BRDA:59,9,0,2 BRDA:59,9,1,0 BRF:22 BRH:19 @@ -41473,56 +41886,56 @@ FN:12,getSelectionRangeInRegion FN:46,isRegion FNF:2 FNH:2 -FNDA:129,getSelectionRangeInRegion -FNDA:128,isRegion +FNDA:149,getSelectionRangeInRegion +FNDA:148,isRegion DA:1,1 DA:2,1 DA:3,1 DA:12,1 -DA:13,129 +DA:13,149 DA:14,1 -DA:17,512 -DA:18,128 -DA:21,128 -DA:24,128 -DA:26,128 +DA:17,592 +DA:18,148 +DA:21,148 +DA:24,148 +DA:26,148 DA:27,1 -DA:28,127 -DA:29,124 -DA:30,124 -DA:31,248 -DA:33,124 -DA:34,117 -DA:37,117 -DA:39,117 +DA:28,147 +DA:29,144 +DA:30,144 +DA:31,288 +DA:33,144 +DA:34,137 +DA:37,137 +DA:39,137 DA:43,10 -DA:47,128 -DA:48,128 +DA:47,148 +DA:48,148 LF:23 LH:23 BRDA:13,0,0,1 -BRDA:13,0,1,128 +BRDA:13,0,1,148 BRDA:19,1,0,18 -BRDA:19,1,1,110 +BRDA:19,1,1,130 BRDA:22,2,0,15 -BRDA:22,2,1,113 -BRDA:24,3,0,128 -BRDA:24,3,1,125 -BRDA:24,3,2,125 +BRDA:22,2,1,133 +BRDA:24,3,0,148 +BRDA:24,3,1,145 +BRDA:24,3,2,145 BRDA:26,4,0,1 -BRDA:26,4,1,127 -BRDA:28,5,0,124 +BRDA:26,4,1,147 +BRDA:28,5,0,144 BRDA:28,5,1,3 -BRDA:33,6,0,117 +BRDA:33,6,0,137 BRDA:33,6,1,7 -BRDA:33,7,0,124 -BRDA:33,7,1,121 -BRDA:35,8,0,63 -BRDA:35,8,1,54 +BRDA:33,7,0,144 +BRDA:33,7,1,141 +BRDA:35,8,0,72 +BRDA:35,8,1,65 BRDA:37,9,0,25 -BRDA:37,9,1,92 -BRDA:48,10,0,128 -BRDA:48,10,1,127 +BRDA:37,9,1,112 +BRDA:48,10,0,148 +BRDA:48,10,1,147 BRF:23 BRH:23 end_of_record @@ -41531,17 +41944,17 @@ SF:packages/roosterjs-editor-dom/lib/region/isNodeInRegion.ts FN:10,isNodeInRegion FNF:1 FNH:1 -FNDA:483,isNodeInRegion +FNDA:572,isNodeInRegion DA:1,1 DA:10,1 -DA:11,483 +DA:11,572 LF:3 LH:3 -BRDA:12,0,0,483 -BRDA:12,0,1,478 -BRDA:12,0,2,411 +BRDA:12,0,0,572 +BRDA:12,0,1,567 +BRDA:12,0,2,491 BRDA:12,0,3,49 -BRDA:12,0,4,408 +BRDA:12,0,4,488 BRDA:12,0,5,32 BRF:6 BRH:6 @@ -41631,136 +42044,136 @@ FN:175,getEndOffset FNF:10 FNH:10 FNDA:1,(anonymous_0) -FNDA:19742,Position -FNDA:15735,(anonymous_2) -FNDA:315,(anonymous_3) -FNDA:1326,(anonymous_4) +FNDA:22372,Position +FNDA:17459,(anonymous_2) +FNDA:609,(anonymous_3) +FNDA:2194,(anonymous_4) FNDA:125,(anonymous_5) -FNDA:1543,(anonymous_6) -FNDA:932,(anonymous_7) -FNDA:889,getIndexOfNode -FNDA:18853,getEndOffset +FNDA:2014,(anonymous_6) +FNDA:1342,(anonymous_7) +FNDA:1057,getIndexOfNode +FNDA:21315,getEndOffset DA:1,1 DA:2,1 DA:10,1 -DA:42,19751 -DA:43,19742 -DA:45,19742 +DA:42,22381 +DA:43,22372 +DA:45,22372 DA:46,7 DA:47,7 -DA:49,19735 -DA:52,19742 -DA:54,460 -DA:55,460 -DA:56,460 -DA:57,460 -DA:60,429 -DA:61,429 -DA:62,429 -DA:63,429 -DA:66,931 -DA:67,931 -DA:68,931 -DA:71,17922 -DA:72,17922 -DA:73,17922 -DA:74,17922 -DA:77,19742 +DA:49,22365 +DA:52,22372 +DA:54,534 +DA:55,534 +DA:56,534 +DA:57,534 +DA:60,523 +DA:61,523 +DA:62,523 +DA:63,523 +DA:66,1482 +DA:67,1482 +DA:68,1482 +DA:71,19833 +DA:72,19833 +DA:73,19833 +DA:74,19833 +DA:77,22372 DA:84,1 -DA:85,15735 -DA:86,14567 -DA:89,1168 -DA:90,1168 -DA:93,1168 -DA:94,2086 -DA:104,2086 -DA:105,1808 -DA:106,1808 -DA:109,278 -DA:112,1168 +DA:85,17459 +DA:86,15818 +DA:89,1641 +DA:90,1641 +DA:93,1641 +DA:94,3069 +DA:104,3069 +DA:105,2726 +DA:106,2726 +DA:109,343 +DA:112,1641 DA:119,1 -DA:120,315 +DA:120,609 DA:132,1 -DA:133,1326 +DA:133,2194 DA:142,1 DA:143,125 DA:150,1 -DA:151,1543 +DA:151,2014 DA:158,1 -DA:161,932 +DA:161,1342 DA:165,1 -DA:168,889 -DA:169,889 -DA:170,321 -DA:172,889 -DA:176,18853 -DA:177,3054 -DA:178,15799 -DA:179,15694 +DA:168,1057 +DA:169,1057 +DA:170,380 +DA:172,1057 +DA:176,21315 +DA:177,4273 +DA:178,17042 +DA:179,16937 DA:181,105 LF:58 LH:58 BRDA:42,0,0,9 -BRDA:42,0,1,19733 +BRDA:42,0,1,22363 BRDA:45,1,0,7 -BRDA:45,1,1,19735 -BRDA:53,2,0,460 -BRDA:53,2,1,429 -BRDA:53,2,2,931 -BRDA:53,2,3,17922 -BRDA:73,3,0,17922 -BRDA:73,3,1,1682 -BRDA:85,4,0,14567 -BRDA:85,4,1,1168 -BRDA:85,5,0,15735 -BRDA:85,5,1,14375 -BRDA:91,6,0,371 -BRDA:91,6,1,797 -BRDA:93,7,0,2976 -BRDA:93,7,1,890 -BRDA:95,8,0,635 -BRDA:95,8,1,1451 -BRDA:96,9,0,565 -BRDA:96,9,1,70 -BRDA:99,10,0,1198 -BRDA:99,10,1,253 -BRDA:101,11,0,185 -BRDA:101,11,1,68 -BRDA:104,12,0,1808 -BRDA:104,12,1,278 -BRDA:107,13,0,744 -BRDA:107,13,1,1064 -BRDA:107,14,0,1808 -BRDA:107,14,1,1175 -BRDA:121,15,0,315 -BRDA:121,15,1,315 -BRDA:121,15,2,290 -BRDA:121,15,3,143 -BRDA:121,15,4,36 -BRDA:134,16,0,770 -BRDA:134,16,1,556 -BRDA:134,17,0,770 -BRDA:134,17,1,318 -BRDA:134,17,2,614 -BRDA:162,18,0,343 -BRDA:162,18,1,589 -BRDA:169,19,0,1210 -BRDA:169,19,1,889 +BRDA:45,1,1,22365 +BRDA:53,2,0,534 +BRDA:53,2,1,523 +BRDA:53,2,2,1482 +BRDA:53,2,3,19833 +BRDA:73,3,0,19833 +BRDA:73,3,1,2103 +BRDA:85,4,0,15818 +BRDA:85,4,1,1641 +BRDA:85,5,0,17459 +BRDA:85,5,1,15356 +BRDA:91,6,0,566 +BRDA:91,6,1,1075 +BRDA:93,7,0,4367 +BRDA:93,7,1,1298 +BRDA:95,8,0,1031 +BRDA:95,8,1,2038 +BRDA:96,9,0,930 +BRDA:96,9,1,101 +BRDA:99,10,0,1695 +BRDA:99,10,1,343 +BRDA:101,11,0,259 +BRDA:101,11,1,84 +BRDA:104,12,0,2726 +BRDA:104,12,1,343 +BRDA:107,13,0,1183 +BRDA:107,13,1,1543 +BRDA:107,14,0,2726 +BRDA:107,14,1,1684 +BRDA:121,15,0,609 +BRDA:121,15,1,609 +BRDA:121,15,2,582 +BRDA:121,15,3,320 +BRDA:121,15,4,40 +BRDA:134,16,0,1338 +BRDA:134,16,1,856 +BRDA:134,17,0,1338 +BRDA:134,17,1,492 +BRDA:134,17,2,1070 +BRDA:162,18,0,362 +BRDA:162,18,1,980 +BRDA:169,19,0,1437 +BRDA:169,19,1,1057 BRDA:169,20,0,0 -BRDA:169,20,1,1210 -BRDA:169,21,0,1210 -BRDA:169,21,1,1210 -BRDA:176,22,0,3054 -BRDA:176,22,1,15799 -BRDA:177,23,0,3054 -BRDA:177,23,1,62 +BRDA:169,20,1,1437 +BRDA:169,21,0,1437 +BRDA:169,21,1,1437 +BRDA:176,22,0,4273 +BRDA:176,22,1,17042 +BRDA:177,23,0,4273 +BRDA:177,23,1,57 BRDA:177,24,0,0 -BRDA:177,24,1,3054 -BRDA:177,25,0,3054 -BRDA:177,25,1,3054 -BRDA:178,26,0,15694 +BRDA:177,24,1,4273 +BRDA:177,25,0,4273 +BRDA:177,25,1,4273 +BRDA:178,26,0,16937 BRDA:178,26,1,105 -BRDA:178,27,0,15799 +BRDA:178,27,0,17042 BRDA:178,27,1,105 BRF:62 BRH:60 @@ -41770,54 +42183,54 @@ SF:packages/roosterjs-editor-dom/lib/selection/addRangeToSelection.ts FN:10,addRangeToSelection FNF:1 FNH:1 -FNDA:758,addRangeToSelection +FNDA:890,addRangeToSelection DA:1,1 DA:10,1 -DA:11,758 -DA:12,758 -DA:13,758 -DA:15,758 -DA:17,755 -DA:18,755 -DA:21,755 +DA:11,890 +DA:12,890 +DA:13,890 +DA:15,890 +DA:17,889 +DA:18,889 +DA:21,889 DA:29,0 -DA:31,755 -DA:36,758 -DA:37,758 +DA:31,889 +DA:36,890 +DA:37,890 LF:13 LH:12 BRDA:11,0,0,0 -BRDA:11,0,1,758 -BRDA:11,1,0,758 -BRDA:11,1,1,758 +BRDA:11,0,1,890 +BRDA:11,1,0,890 +BRDA:11,1,1,890 BRDA:11,2,0,0 -BRDA:11,2,1,758 -BRDA:11,3,0,758 -BRDA:11,3,1,758 +BRDA:11,2,1,890 +BRDA:11,3,0,890 +BRDA:11,3,1,890 BRDA:11,4,0,0 -BRDA:11,4,1,758 -BRDA:11,5,0,758 -BRDA:11,5,1,758 +BRDA:11,4,1,890 +BRDA:11,5,0,890 +BRDA:11,5,1,890 BRDA:11,6,0,0 -BRDA:11,6,1,758 -BRDA:11,7,0,758 -BRDA:11,7,1,758 -BRDA:12,8,0,758 +BRDA:11,6,1,890 +BRDA:11,7,0,890 +BRDA:11,7,1,890 +BRDA:12,8,0,890 BRDA:12,8,1,0 -BRDA:15,9,0,755 -BRDA:15,9,1,3 +BRDA:15,9,0,889 +BRDA:15,9,1,1 BRDA:21,10,0,0 -BRDA:21,10,1,755 -BRDA:22,11,0,755 -BRDA:22,11,1,582 -BRDA:22,11,2,173 -BRDA:22,11,3,173 +BRDA:21,10,1,889 +BRDA:22,11,0,889 +BRDA:22,11,1,705 +BRDA:22,11,2,184 +BRDA:22,11,3,184 BRDA:22,11,4,0 BRDA:22,11,5,0 BRDA:22,11,6,0 -BRDA:23,12,0,173 +BRDA:23,12,0,184 BRDA:23,12,1,0 -BRDA:36,13,0,758 +BRDA:36,13,0,890 BRDA:36,13,1,0 BRF:33 BRH:22 @@ -41830,100 +42243,100 @@ FN:109,isNodePosition FN:113,getPositionFromPath FNF:4 FNH:4 -FNDA:1300,createRange -FNDA:2592,getFocusablePosition -FNDA:1823,isNodePosition -FNDA:306,getPositionFromPath +FNDA:1514,createRange +FNDA:3020,getFocusablePosition +FNDA:2148,isNodePosition +FNDA:308,getPositionFromPath DA:1,1 DA:2,1 DA:3,1 DA:56,1 -DA:62,1300 -DA:63,1300 -DA:65,1300 -DA:67,523 -DA:68,523 -DA:69,777 -DA:70,775 -DA:72,153 -DA:73,153 -DA:74,622 -DA:77,315 -DA:78,315 -DA:79,307 -DA:81,307 -DA:82,307 -DA:86,1300 -DA:87,1296 -DA:88,1296 -DA:89,1296 -DA:90,1296 -DA:91,1296 -DA:93,1296 +DA:62,1514 +DA:63,1514 +DA:65,1514 +DA:67,634 +DA:68,634 +DA:69,880 +DA:70,878 +DA:72,154 +DA:73,154 +DA:74,724 +DA:77,397 +DA:78,397 +DA:79,327 +DA:81,327 +DA:82,327 +DA:86,1514 +DA:87,1510 +DA:88,1510 +DA:89,1510 +DA:90,1510 +DA:91,1510 +DA:93,1510 DA:95,4 -DA:104,2592 -DA:110,1823 -DA:114,306 +DA:104,3020 +DA:110,2148 +DA:114,308 DA:115,0 -DA:120,306 -DA:122,306 -DA:123,1046 -DA:124,1046 -DA:130,740 -DA:132,306 -DA:136,306 +DA:120,308 +DA:122,308 +DA:123,1044 +DA:124,1044 +DA:130,736 +DA:132,308 +DA:136,308 LF:38 LH:37 -BRDA:65,0,0,523 -BRDA:65,0,1,777 -BRDA:68,1,0,290 -BRDA:68,1,1,233 -BRDA:69,2,0,775 +BRDA:65,0,0,634 +BRDA:65,0,1,880 +BRDA:68,1,0,354 +BRDA:68,1,1,280 +BRDA:69,2,0,878 BRDA:69,2,1,2 -BRDA:70,3,0,153 -BRDA:70,3,1,622 -BRDA:73,4,0,153 +BRDA:70,3,0,154 +BRDA:70,3,1,724 +BRDA:73,4,0,154 BRDA:73,4,1,0 -BRDA:74,5,0,315 -BRDA:74,5,1,307 -BRDA:78,6,0,26 -BRDA:78,6,1,289 -BRDA:79,7,0,307 +BRDA:74,5,0,397 +BRDA:74,5,1,327 +BRDA:78,6,0,87 +BRDA:78,6,1,310 +BRDA:79,7,0,327 BRDA:79,7,1,0 -BRDA:79,8,0,307 +BRDA:79,8,0,327 BRDA:79,8,1,104 -BRDA:82,9,0,307 +BRDA:82,9,0,327 BRDA:82,9,1,104 -BRDA:86,10,0,1296 +BRDA:86,10,0,1510 BRDA:86,10,1,4 BRDA:86,11,0,4 -BRDA:86,11,1,1296 -BRDA:86,12,0,1300 -BRDA:86,12,1,1298 +BRDA:86,11,1,1510 +BRDA:86,12,0,1514 +BRDA:86,12,1,1512 BRDA:86,13,0,2 -BRDA:86,13,1,1298 -BRDA:86,14,0,1300 -BRDA:86,14,1,1298 -BRDA:89,15,0,1296 -BRDA:89,15,1,520 +BRDA:86,13,1,1512 +BRDA:86,14,0,1514 +BRDA:86,14,1,1512 +BRDA:89,15,0,1510 +BRDA:89,15,1,588 BRDA:105,16,0,107 -BRDA:105,16,1,2485 -BRDA:104,17,0,2592 -BRDA:104,17,1,1537 +BRDA:105,16,1,2913 +BRDA:104,17,0,3020 +BRDA:104,17,1,1829 BRDA:105,18,0,3 BRDA:105,18,1,104 -BRDA:110,19,0,1823 -BRDA:110,19,1,1588 +BRDA:110,19,0,2148 +BRDA:110,19,1,1866 BRDA:114,20,0,0 -BRDA:114,20,1,306 -BRDA:114,21,0,306 -BRDA:114,21,1,306 -BRDA:124,22,0,740 -BRDA:124,22,1,306 -BRDA:125,23,0,1046 -BRDA:125,23,1,740 -BRDA:125,23,2,740 -BRDA:125,23,3,740 +BRDA:114,20,1,308 +BRDA:114,21,0,308 +BRDA:114,21,1,308 +BRDA:124,22,0,736 +BRDA:124,22,1,308 +BRDA:125,23,0,1044 +BRDA:125,23,1,736 +BRDA:125,23,2,736 +BRDA:125,23,3,736 BRF:50 BRH:47 end_of_record @@ -42030,90 +42443,90 @@ FN:11,getSelectionPath FN:39,getPositionPath FNF:2 FNH:2 -FNDA:6876,getSelectionPath -FNDA:602,getPositionPath +FNDA:7223,getSelectionPath +FNDA:858,getPositionPath DA:1,1 DA:2,1 DA:11,1 -DA:15,6876 -DA:16,6575 -DA:19,301 -DA:24,301 -DA:40,602 +DA:15,7223 +DA:16,6794 +DA:19,429 +DA:24,429 +DA:40,858 DA:41,0 -DA:44,602 -DA:45,602 -DA:46,602 -DA:49,602 +DA:44,858 +DA:45,858 +DA:46,858 +DA:49,858 DA:50,2 -DA:53,600 -DA:54,319 -DA:55,319 -DA:56,49 -DA:57,49 -DA:59,319 -DA:61,281 -DA:62,281 -DA:65,600 -DA:66,1558 -DA:67,1558 -DA:69,1558 -DA:70,520 -DA:71,143 +DA:53,856 +DA:54,398 +DA:55,398 +DA:56,50 +DA:57,50 +DA:59,398 +DA:61,458 +DA:62,458 +DA:65,856 +DA:66,2102 +DA:67,2102 +DA:69,2102 +DA:70,823 +DA:71,203 DA:72,45 -DA:75,98 -DA:77,377 -DA:80,475 -DA:83,1558 -DA:84,1558 -DA:85,1558 -DA:88,600 +DA:75,158 +DA:77,620 +DA:80,778 +DA:83,2102 +DA:84,2102 +DA:85,2102 +DA:88,856 LF:36 LH:35 -BRDA:15,0,0,6575 -BRDA:15,0,1,301 +BRDA:15,0,0,6794 +BRDA:15,0,1,429 BRDA:40,1,0,0 -BRDA:40,1,1,602 -BRDA:40,2,0,602 -BRDA:40,2,1,602 +BRDA:40,1,1,858 +BRDA:40,2,0,858 +BRDA:40,2,1,858 BRDA:49,3,0,2 -BRDA:49,3,1,600 -BRDA:53,4,0,319 -BRDA:53,4,1,281 -BRDA:55,5,0,368 -BRDA:55,5,1,93 -BRDA:56,6,0,49 +BRDA:49,3,1,856 +BRDA:53,4,0,398 +BRDA:53,4,1,458 +BRDA:55,5,0,448 +BRDA:55,5,1,108 +BRDA:56,6,0,50 BRDA:56,6,1,14 BRDA:56,7,0,0 -BRDA:56,7,1,49 -BRDA:56,8,0,49 -BRDA:56,8,1,49 -BRDA:86,9,0,1558 -BRDA:86,9,1,1558 -BRDA:69,10,0,1558 -BRDA:69,10,1,24 +BRDA:56,7,1,50 +BRDA:56,8,0,50 +BRDA:56,8,1,50 +BRDA:86,9,0,2102 +BRDA:86,9,1,2102 +BRDA:69,10,0,2102 +BRDA:69,10,1,28 BRDA:69,11,0,0 -BRDA:69,11,1,1558 -BRDA:69,12,0,1558 -BRDA:69,12,1,1558 -BRDA:69,13,0,2078 -BRDA:69,13,1,1998 -BRDA:70,14,0,143 -BRDA:70,14,1,377 +BRDA:69,11,1,2102 +BRDA:69,12,0,2102 +BRDA:69,12,1,2102 +BRDA:69,13,0,2925 +BRDA:69,13,1,2769 +BRDA:70,14,0,203 +BRDA:70,14,1,620 BRDA:71,15,0,45 -BRDA:71,15,1,98 -BRDA:71,16,0,143 -BRDA:71,16,1,103 +BRDA:71,15,1,158 +BRDA:71,16,0,203 +BRDA:71,16,1,163 BRDA:71,17,0,0 -BRDA:71,17,1,143 -BRDA:71,18,0,143 -BRDA:71,18,1,143 -BRDA:85,19,0,1558 +BRDA:71,17,1,203 +BRDA:71,18,0,203 +BRDA:71,18,1,203 +BRDA:85,19,0,2102 BRDA:85,19,1,10 BRDA:85,20,0,0 -BRDA:85,20,1,1558 -BRDA:85,21,0,1558 -BRDA:85,21,1,1558 +BRDA:85,20,1,2102 +BRDA:85,21,0,2102 +BRDA:85,21,1,2102 BRF:44 BRH:39 end_of_record @@ -42123,41 +42536,41 @@ FN:13,isPositionAtBeginningOf FN:30,areAllPreviousNodesEmpty FNF:2 FNH:2 -FNDA:16,isPositionAtBeginningOf -FNDA:19,areAllPreviousNodesEmpty +FNDA:22,isPositionAtBeginningOf +FNDA:27,areAllPreviousNodesEmpty DA:1,1 DA:2,1 DA:3,1 DA:13,1 -DA:14,16 -DA:15,15 -DA:16,15 -DA:17,15 -DA:18,15 -DA:19,14 -DA:20,13 -DA:23,14 -DA:27,2 -DA:31,19 +DA:14,22 +DA:15,21 +DA:16,21 +DA:17,21 +DA:18,21 +DA:19,18 +DA:20,21 +DA:23,18 +DA:27,4 +DA:31,27 DA:32,7 DA:33,7 DA:34,6 -DA:37,13 +DA:37,21 LF:18 LH:18 -BRDA:14,0,0,15 +BRDA:14,0,0,21 BRDA:14,0,1,1 -BRDA:18,1,0,14 -BRDA:18,1,1,1 -BRDA:19,2,0,27 -BRDA:19,2,1,27 -BRDA:19,2,2,19 -BRDA:20,3,0,13 +BRDA:18,1,0,18 +BRDA:18,1,1,3 +BRDA:19,2,0,39 +BRDA:19,2,1,39 +BRDA:19,2,2,27 +BRDA:20,3,0,21 BRDA:20,3,1,0 BRDA:20,4,0,0 -BRDA:20,4,1,13 -BRDA:20,5,0,13 -BRDA:20,5,1,13 +BRDA:20,4,1,21 +BRDA:20,5,0,21 +BRDA:20,5,1,21 BRDA:33,6,0,6 BRDA:33,6,1,1 BRDA:33,7,0,7 @@ -42174,7 +42587,7 @@ FNF:3 FNH:3 FNDA:39,setHtmlWithSelectionPath FNDA:58,setHtmlWithMetadata -FNDA:468,extractContentMetadata +FNDA:546,extractContentMetadata DA:1,1 DA:2,1 DA:3,1 @@ -42195,16 +42608,16 @@ DA:87,57 DA:88,57 DA:90,57 DA:98,1 -DA:99,468 -DA:101,468 -DA:102,167 -DA:103,167 -DA:105,160 -DA:110,145 -DA:111,145 -DA:112,145 -DA:114,145 -DA:119,323 +DA:99,546 +DA:101,546 +DA:102,168 +DA:103,168 +DA:105,161 +DA:110,146 +DA:111,146 +DA:112,146 +DA:114,146 +DA:119,400 LF:30 LH:30 BRDA:66,0,0,34 @@ -42223,19 +42636,19 @@ BRDA:88,6,0,54 BRDA:88,6,1,3 BRDA:88,7,0,57 BRDA:88,7,1,57 -BRDA:101,8,0,167 -BRDA:101,8,1,301 -BRDA:103,9,0,167 +BRDA:101,8,0,168 +BRDA:101,8,1,378 +BRDA:103,9,0,168 BRDA:103,9,1,2 -BRDA:105,10,0,145 +BRDA:105,10,0,146 BRDA:105,10,1,15 -BRDA:106,11,0,160 +BRDA:106,11,0,161 BRDA:106,11,1,19 BRDA:106,11,2,15 -BRDA:111,12,0,137 +BRDA:111,12,0,138 BRDA:111,12,1,8 -BRDA:112,13,0,145 -BRDA:112,13,1,140 +BRDA:112,13,0,146 +BRDA:112,13,1,141 BRF:29 BRH:29 end_of_record @@ -42249,43 +42662,43 @@ FN:95,compareSnapshots FN:99,defaultCompare FNF:6 FNH:6 -FNDA:6937,addSnapshot +FNDA:7254,addSnapshot FNDA:27,(anonymous_1) -FNDA:6913,addSnapshotV2 -FNDA:6859,(anonymous_3) -FNDA:379,compareSnapshots +FNDA:7230,addSnapshotV2 +FNDA:7193,(anonymous_3) +FNDA:477,compareSnapshots FNDA:10,defaultCompare DA:1,1 DA:32,1 -DA:39,6937 -DA:40,6937 -DA:42,6937 -DA:43,6937 -DA:45,6937 -DA:46,6881 -DA:47,6881 -DA:48,6881 -DA:49,6881 -DA:51,6881 -DA:52,6881 +DA:39,7254 +DA:40,7254 +DA:42,7254 +DA:43,7254 +DA:45,7254 +DA:46,7215 +DA:47,7215 +DA:48,7215 +DA:49,7215 +DA:51,7215 +DA:52,7215 DA:56,3 DA:57,3 -DA:60,6881 +DA:60,7215 DA:61,3 DA:62,3 DA:63,3 -DA:66,6881 +DA:66,7215 DA:67,25 -DA:69,56 -DA:71,56 +DA:69,39 +DA:71,39 DA:81,1 -DA:86,6913 -DA:90,6859 -DA:96,379 +DA:86,7230 +DA:90,7193 +DA:96,477 DA:100,10 LF:28 LH:28 -BRDA:39,0,0,6937 +BRDA:39,0,0,7254 BRDA:39,0,1,24 BRDA:39,1,0,27 BRDA:39,1,1,4 @@ -42293,32 +42706,32 @@ BRDA:39,2,0,0 BRDA:39,2,1,27 BRDA:39,3,0,27 BRDA:39,3,1,27 -BRDA:40,4,0,6937 +BRDA:40,4,0,7254 BRDA:40,4,1,24 -BRDA:43,5,0,6937 -BRDA:43,5,1,389 -BRDA:45,6,0,6881 -BRDA:45,6,1,56 -BRDA:45,7,0,6937 -BRDA:45,7,1,392 -BRDA:45,7,2,389 -BRDA:53,8,0,6884 -BRDA:53,8,1,6883 +BRDA:43,5,0,7254 +BRDA:43,5,1,487 +BRDA:45,6,0,7215 +BRDA:45,6,1,39 +BRDA:45,7,0,7254 +BRDA:45,7,1,490 +BRDA:45,7,2,487 +BRDA:53,8,0,7218 +BRDA:53,8,1,7217 BRDA:60,9,0,3 -BRDA:60,9,1,6878 +BRDA:60,9,1,7212 BRDA:66,10,0,25 -BRDA:66,10,1,6856 -BRDA:69,11,0,56 +BRDA:66,10,1,7190 +BRDA:69,11,0,39 BRDA:69,11,1,0 -BRDA:90,12,0,6859 -BRDA:90,12,1,6534 +BRDA:90,12,0,7193 +BRDA:90,12,1,6744 BRDA:90,13,0,0 -BRDA:90,13,1,6859 -BRDA:90,14,0,6859 -BRDA:90,14,1,6859 -BRDA:96,15,0,379 -BRDA:96,15,1,55 -BRDA:96,15,2,55 +BRDA:90,13,1,7193 +BRDA:90,14,0,7193 +BRDA:90,14,1,7193 +BRDA:96,15,0,477 +BRDA:96,15,1,38 +BRDA:96,15,2,38 BRF:34 BRH:31 end_of_record @@ -42327,14 +42740,14 @@ SF:packages/roosterjs-editor-dom/lib/snapshots/canMoveCurrentSnapshot.ts FN:9,canMoveCurrentSnapshot FNF:1 FNH:1 -FNDA:20548,canMoveCurrentSnapshot +FNDA:21497,canMoveCurrentSnapshot DA:9,1 -DA:13,20548 -DA:14,20548 +DA:13,21497 +DA:14,21497 LF:3 LH:3 -BRDA:14,0,0,20548 -BRDA:14,0,1,13998 +BRDA:14,0,0,21497 +BRDA:14,0,1,14728 BRF:2 BRH:2 end_of_record @@ -42343,12 +42756,12 @@ SF:packages/roosterjs-editor-dom/lib/snapshots/canUndoAutoComplete.ts FN:6,canUndoAutoComplete FNF:1 FNH:1 -FNDA:14,canUndoAutoComplete +FNDA:11,canUndoAutoComplete DA:6,1 -DA:7,14 +DA:7,11 LF:2 LH:2 -BRDA:8,0,0,14 +BRDA:8,0,0,11 BRDA:8,0,1,8 BRF:2 BRH:2 @@ -42361,14 +42774,14 @@ FN:43,clearProceedingSnapshotsV2 FN:44,(anonymous_3) FNF:4 FNH:3 -FNDA:7417,clearProceedingSnapshots +FNDA:7928,clearProceedingSnapshots FNDA:3,(anonymous_1) -FNDA:530,clearProceedingSnapshotsV2 +FNDA:707,clearProceedingSnapshotsV2 FNDA:0,(anonymous_3) DA:1,1 DA:23,1 -DA:27,7417 -DA:28,7417 +DA:27,7928 +DA:28,7928 DA:29,5 DA:30,5 DA:31,5 @@ -42376,10 +42789,10 @@ DA:33,5 DA:34,5 DA:35,5 DA:43,1 -DA:44,530 +DA:44,707 LF:12 LH:12 -BRDA:27,0,0,7417 +BRDA:27,0,0,7928 BRDA:27,0,1,6 BRDA:27,1,0,3 BRDA:27,1,1,0 @@ -42388,7 +42801,7 @@ BRDA:27,2,1,3 BRDA:27,3,0,3 BRDA:27,3,1,3 BRDA:28,4,0,5 -BRDA:28,4,1,7412 +BRDA:28,4,1,7923 BRDA:44,5,0,0 BRDA:44,5,1,0 BRDA:44,6,0,0 @@ -42403,9 +42816,9 @@ SF:packages/roosterjs-editor-dom/lib/snapshots/createSnapshots.ts FN:7,createSnapshots FNF:1 FNH:1 -FNDA:6749,createSnapshots +FNDA:6974,createSnapshots DA:7,1 -DA:8,6749 +DA:8,6974 LF:2 LH:2 BRF:0 @@ -42438,30 +42851,30 @@ FN:5,getStyles FN:8,(anonymous_1) FNF:2 FNH:2 -FNDA:1286,getStyles -FNDA:1626,(anonymous_1) +FNDA:1281,getStyles +FNDA:1612,(anonymous_1) DA:5,1 -DA:6,1286 -DA:7,1286 -DA:8,1286 -DA:9,1626 -DA:10,1626 -DA:11,1626 -DA:12,1626 -DA:13,446 -DA:16,1286 +DA:6,1281 +DA:7,1281 +DA:8,1281 +DA:9,1612 +DA:10,1612 +DA:11,1612 +DA:12,1612 +DA:13,437 +DA:16,1281 LF:10 LH:10 -BRDA:7,0,0,1286 -BRDA:7,0,1,1125 +BRDA:7,0,0,1281 +BRDA:7,0,1,1121 BRDA:7,1,0,0 -BRDA:7,1,1,1286 -BRDA:7,2,0,1286 -BRDA:7,2,1,1286 -BRDA:12,3,0,446 -BRDA:12,3,1,1180 -BRDA:12,4,0,1626 -BRDA:12,4,1,447 +BRDA:7,1,1,1281 +BRDA:7,2,0,1281 +BRDA:7,2,1,1281 +BRDA:12,3,0,437 +BRDA:12,3,1,1175 +BRDA:12,4,0,1612 +BRDA:12,4,1,438 BRF:10 BRH:9 end_of_record @@ -42470,15 +42883,15 @@ SF:packages/roosterjs-editor-dom/lib/style/removeGlobalCssStyle.ts FN:7,removeGlobalCssStyle FNF:1 FNH:1 -FNDA:14319,removeGlobalCssStyle +FNDA:14939,removeGlobalCssStyle DA:7,1 -DA:8,14319 -DA:9,14319 +DA:8,14939 +DA:9,14939 DA:10,126 LF:4 LH:4 BRDA:9,0,0,126 -BRDA:9,0,1,14193 +BRDA:9,0,1,14813 BRDA:10,1,0,0 BRDA:10,1,1,126 BRDA:10,2,0,126 @@ -42553,37 +42966,37 @@ FN:11,(anonymous_1) FN:17,(anonymous_2) FNF:3 FNH:3 -FNDA:507,setStyles -FNDA:233,(anonymous_1) -FNDA:233,(anonymous_2) +FNDA:504,setStyles +FNDA:232,(anonymous_1) +FNDA:232,(anonymous_2) DA:1,1 DA:8,1 -DA:9,507 -DA:10,506 -DA:12,233 -DA:13,233 -DA:14,233 -DA:15,233 -DA:17,233 -DA:19,506 -DA:20,80 -DA:22,426 +DA:9,504 +DA:10,503 +DA:12,232 +DA:13,232 +DA:14,232 +DA:15,232 +DA:17,232 +DA:19,503 +DA:20,79 +DA:22,424 LF:12 LH:12 -BRDA:9,0,0,506 +BRDA:9,0,0,503 BRDA:9,0,1,1 -BRDA:10,1,0,506 +BRDA:10,1,0,503 BRDA:10,1,1,1 -BRDA:13,2,0,232 +BRDA:13,2,0,231 BRDA:13,2,1,1 -BRDA:14,3,0,206 +BRDA:14,3,0,205 BRDA:14,3,1,27 -BRDA:15,4,0,204 +BRDA:15,4,0,203 BRDA:15,4,1,29 -BRDA:15,5,0,233 -BRDA:15,5,1,232 -BRDA:19,6,0,80 -BRDA:19,6,1,426 +BRDA:15,5,0,232 +BRDA:15,5,1,231 +BRDA:19,6,0,79 +BRDA:19,6,1,424 BRF:14 BRH:14 end_of_record @@ -42637,23 +43050,23 @@ FN:788,getTableFromTd FN:798,cloneCell FN:810,cloneNode FNF:47 -FNH:38 +FNH:39 FNDA:1,(anonymous_0) -FNDA:504,VTable -FNDA:1404,(anonymous_2) -FNDA:1404,(anonymous_3) +FNDA:630,VTable +FNDA:1746,(anonymous_2) +FNDA:1746,(anonymous_3) FNDA:0,(anonymous_4) -FNDA:920,(anonymous_5) -FNDA:190,(anonymous_6) -FNDA:293,(anonymous_7) -FNDA:814,(anonymous_8) -FNDA:2409,(anonymous_9) -FNDA:1567,(anonymous_10) +FNDA:1276,(anonymous_5) +FNDA:253,(anonymous_6) +FNDA:419,(anonymous_7) +FNDA:1156,(anonymous_8) +FNDA:3363,(anonymous_9) +FNDA:2161,(anonymous_10) FNDA:15,(anonymous_11) FNDA:15,(anonymous_12) FNDA:34,(anonymous_13) FNDA:42,(anonymous_14) -FNDA:145,(anonymous_15) +FNDA:208,(anonymous_15) FNDA:63,(anonymous_17) FNDA:55,(anonymous_19) FNDA:65,(anonymous_21) @@ -42662,29 +43075,29 @@ FNDA:36,(anonymous_25) FNDA:13,(anonymous_26) FNDA:13,(anonymous_27) FNDA:13,(anonymous_28) -FNDA:0,(anonymous_29) +FNDA:42,(anonymous_29) FNDA:18,(anonymous_30) -FNDA:1572,(anonymous_31) +FNDA:2166,(anonymous_31) FNDA:5,(anonymous_32) FNDA:25,(anonymous_33) FNDA:0,(anonymous_34) FNDA:0,(anonymous_35) -FNDA:5060,(anonymous_36) +FNDA:6698,(anonymous_36) FNDA:23,(anonymous_37) FNDA:154,(anonymous_38) FNDA:60,(anonymous_39) FNDA:13,(anonymous_40) -FNDA:1567,(anonymous_41) -FNDA:1589,(anonymous_42) -FNDA:1590,(anonymous_43) +FNDA:2161,(anonymous_41) +FNDA:2183,(anonymous_42) +FNDA:2184,(anonymous_43) FNDA:0,(anonymous_44) FNDA:0,(anonymous_45) FNDA:0,(anonymous_46) FNDA:0,(anonymous_47) FNDA:0,setHTMLElementSizeInPx -FNDA:193,getTableFromTd +FNDA:256,getTableFromTd FNDA:142,cloneCell -FNDA:1066,cloneNode +FNDA:1408,cloneNode DA:1,1 DA:2,1 DA:3,1 @@ -42696,62 +43109,62 @@ DA:8,1 DA:9,1 DA:20,1 DA:39,1 -DA:48,504 -DA:63,504 -DA:65,504 -DA:67,504 -DA:75,504 -DA:80,504 -DA:81,504 -DA:82,492 -DA:83,492 -DA:84,1404 -DA:85,492 -DA:86,1404 -DA:87,1404 -DA:89,3831 -DA:90,3831 -DA:92,3831 -DA:93,181 -DA:94,181 -DA:97,3831 -DA:98,4301 -DA:99,4791 -DA:100,4791 -DA:101,4791 -DA:102,4791 -DA:113,1404 -DA:114,4791 +DA:48,630 +DA:63,630 +DA:65,630 +DA:67,630 +DA:75,630 +DA:80,630 +DA:81,630 +DA:82,618 +DA:83,618 +DA:84,1746 +DA:85,618 +DA:86,1746 +DA:87,1746 +DA:89,4425 +DA:90,4425 +DA:92,4425 +DA:93,244 +DA:94,244 +DA:97,4425 +DA:98,5075 +DA:99,5745 +DA:100,5745 +DA:101,5745 +DA:102,5745 +DA:113,1746 +DA:114,5745 DA:115,0 -DA:125,492 -DA:126,492 +DA:125,618 +DA:126,618 DA:127,0 DA:135,1 -DA:136,920 -DA:140,190 -DA:141,97 -DA:142,97 -DA:143,97 -DA:145,190 -DA:153,293 -DA:154,293 -DA:155,276 -DA:156,276 -DA:157,814 -DA:159,814 -DA:160,814 -DA:161,814 -DA:162,2409 -DA:163,1567 -DA:164,1567 -DA:165,1567 -DA:170,276 +DA:136,1276 +DA:140,253 +DA:141,123 +DA:142,123 +DA:143,123 +DA:145,253 +DA:153,419 +DA:154,419 +DA:155,402 +DA:156,402 +DA:157,1156 +DA:159,1156 +DA:160,1156 +DA:161,1156 +DA:162,3363 +DA:163,2161 +DA:164,2161 +DA:165,2161 +DA:170,402 DA:171,15 DA:172,15 DA:174,17 DA:175,8 DA:179,1 -DA:180,1567 +DA:180,2161 DA:181,56 DA:182,56 DA:183,56 @@ -42766,16 +43179,16 @@ DA:211,15 DA:212,34 DA:213,42 DA:214,42 -DA:224,145 -DA:225,145 +DA:224,208 +DA:225,208 DA:226,1 -DA:229,144 -DA:230,144 -DA:231,144 -DA:232,144 -DA:233,144 -DA:234,144 -DA:235,144 +DA:229,207 +DA:230,207 +DA:231,207 +DA:232,207 +DA:233,207 +DA:234,207 +DA:235,207 DA:237,14 DA:238,20 DA:240,14 @@ -42872,38 +43285,38 @@ DA:408,2 DA:410,5 DA:411,13 DA:418,7 -DA:420,0 -DA:421,0 -DA:422,0 -DA:424,0 -DA:425,0 -DA:426,0 -DA:428,0 -DA:429,0 -DA:430,0 -DA:432,0 -DA:439,0 -DA:441,0 -DA:448,0 -DA:450,0 -DA:457,0 -DA:459,0 -DA:467,0 -DA:469,0 -DA:477,0 -DA:479,0 -DA:487,0 +DA:420,7 +DA:421,7 +DA:422,7 +DA:424,7 +DA:425,7 +DA:426,7 +DA:428,7 +DA:429,7 +DA:430,7 +DA:432,7 +DA:439,7 +DA:441,7 +DA:448,7 +DA:450,7 +DA:457,7 +DA:459,7 +DA:467,7 +DA:469,7 +DA:477,7 +DA:479,7 +DA:487,7 DA:491,1 -DA:499,0 -DA:500,0 -DA:501,0 -DA:502,0 -DA:503,0 -DA:504,0 -DA:505,0 -DA:506,0 -DA:507,0 -DA:508,0 +DA:499,42 +DA:500,68 +DA:501,68 +DA:502,68 +DA:503,68 +DA:504,24 +DA:505,24 +DA:506,24 +DA:507,44 +DA:508,24 DA:515,1 DA:516,18 DA:519,18 @@ -42913,7 +43326,7 @@ DA:522,5 DA:523,3 DA:525,2 DA:530,1 -DA:531,1572 +DA:531,2166 DA:534,1 DA:535,5 DA:536,0 @@ -42946,7 +43359,7 @@ DA:605,0 DA:612,1 DA:613,0 DA:622,1 -DA:623,5060 +DA:623,6698 DA:629,1 DA:630,23 DA:638,1 @@ -42973,30 +43386,30 @@ DA:672,13 DA:673,13 DA:674,36 DA:679,1 -DA:680,1567 -DA:681,1567 -DA:682,1567 -DA:683,1567 -DA:684,1567 -DA:685,1185 -DA:687,1567 -DA:688,1167 +DA:680,2161 +DA:681,2161 +DA:682,2161 +DA:683,2161 +DA:684,2161 +DA:685,1599 +DA:687,2161 +DA:688,1581 DA:693,1 -DA:694,1589 -DA:695,1589 -DA:696,1393 -DA:697,1393 -DA:698,979 -DA:700,414 -DA:702,1589 +DA:694,2183 +DA:695,2183 +DA:696,1915 +DA:697,1915 +DA:698,1321 +DA:700,594 +DA:702,2183 DA:705,1 -DA:706,1590 -DA:707,1590 -DA:708,1411 -DA:709,1411 -DA:710,969 -DA:712,442 -DA:714,1590 +DA:706,2184 +DA:707,2184 +DA:708,1933 +DA:709,1933 +DA:710,1311 +DA:712,622 +DA:714,2184 DA:717,1 DA:718,0 DA:719,0 @@ -43029,67 +43442,67 @@ DA:781,0 DA:782,0 DA:783,0 DA:784,0 -DA:789,193 -DA:790,193 -DA:791,193 +DA:789,256 +DA:790,256 +DA:791,256 DA:799,142 -DA:811,1066 -DA:812,1066 +DA:811,1408 +DA:812,1408 DA:813,188 DA:814,188 DA:815,188 -DA:818,1066 +DA:818,1408 LF:354 -LH:264 -BRDA:80,0,0,311 -BRDA:80,0,1,193 -BRDA:81,1,0,492 +LH:295 +BRDA:80,0,0,374 +BRDA:80,0,1,256 +BRDA:81,1,0,618 BRDA:81,1,1,12 -BRDA:82,2,0,311 -BRDA:82,2,1,181 -BRDA:92,3,0,181 -BRDA:92,3,1,3650 -BRDA:101,4,0,4791 +BRDA:82,2,0,374 +BRDA:82,2,1,244 +BRDA:92,3,0,244 +BRDA:92,3,1,4181 +BRDA:101,4,0,5745 BRDA:101,4,1,0 BRDA:101,5,0,0 -BRDA:101,5,1,4791 -BRDA:101,6,0,4791 -BRDA:101,6,1,4791 -BRDA:103,7,0,3831 -BRDA:103,7,1,960 -BRDA:106,8,0,3831 -BRDA:106,8,1,960 -BRDA:107,9,0,3831 -BRDA:107,9,1,960 +BRDA:101,5,1,5745 +BRDA:101,6,0,5745 +BRDA:101,6,1,5745 +BRDA:103,7,0,4425 +BRDA:103,7,1,1320 +BRDA:106,8,0,4425 +BRDA:106,8,1,1320 +BRDA:107,9,0,4425 +BRDA:107,9,1,1320 BRDA:114,10,0,0 -BRDA:114,10,1,4791 +BRDA:114,10,1,5745 BRDA:126,11,0,0 -BRDA:126,11,1,492 +BRDA:126,11,1,618 BRDA:127,12,0,0 BRDA:127,12,1,0 -BRDA:136,13,0,920 -BRDA:136,13,1,436 -BRDA:140,14,0,97 -BRDA:140,14,1,93 +BRDA:136,13,0,1276 +BRDA:136,13,1,584 +BRDA:140,14,0,123 +BRDA:140,14,1,130 BRDA:142,15,0,2 -BRDA:142,15,1,95 -BRDA:142,16,0,97 -BRDA:142,16,1,95 +BRDA:142,15,1,121 +BRDA:142,16,0,123 +BRDA:142,16,1,121 BRDA:143,17,0,2 -BRDA:143,17,1,95 -BRDA:143,18,0,97 -BRDA:143,18,1,95 -BRDA:154,19,0,276 +BRDA:143,17,1,121 +BRDA:143,18,0,123 +BRDA:143,18,1,121 +BRDA:154,19,0,402 BRDA:154,19,1,17 -BRDA:157,20,0,814 +BRDA:157,20,0,1156 BRDA:157,20,1,0 -BRDA:159,21,0,814 +BRDA:159,21,0,1156 BRDA:159,21,1,0 -BRDA:162,22,0,1567 -BRDA:162,22,1,842 +BRDA:162,22,0,2161 +BRDA:162,22,1,1202 BRDA:170,23,0,15 -BRDA:170,23,1,261 -BRDA:170,24,0,276 +BRDA:170,23,1,387 +BRDA:170,24,0,402 BRDA:170,24,1,15 BRDA:174,25,0,8 BRDA:174,25,1,9 @@ -43098,8 +43511,8 @@ BRDA:175,26,1,8 BRDA:175,27,0,8 BRDA:175,27,1,8 BRDA:180,28,0,56 -BRDA:180,28,1,1511 -BRDA:180,29,0,1567 +BRDA:180,28,1,2105 +BRDA:180,29,0,2161 BRDA:180,29,1,354 BRDA:193,30,0,0 BRDA:193,30,1,15 @@ -43116,19 +43529,19 @@ BRDA:211,35,1,15 BRDA:213,36,0,42 BRDA:213,36,1,0 BRDA:225,37,0,1 -BRDA:225,37,1,144 -BRDA:225,38,0,145 -BRDA:225,38,1,144 -BRDA:225,38,2,144 -BRDA:225,38,3,144 -BRDA:231,39,0,42 -BRDA:231,39,1,102 -BRDA:232,40,0,42 -BRDA:232,40,1,102 -BRDA:233,41,0,42 -BRDA:233,41,1,102 -BRDA:234,42,0,42 -BRDA:234,42,1,102 +BRDA:225,37,1,207 +BRDA:225,38,0,208 +BRDA:225,38,1,207 +BRDA:225,38,2,207 +BRDA:225,38,3,207 +BRDA:231,39,0,68 +BRDA:231,39,1,139 +BRDA:232,40,0,68 +BRDA:232,40,1,139 +BRDA:233,41,0,68 +BRDA:233,41,1,139 +BRDA:234,42,0,68 +BRDA:234,42,1,139 BRDA:236,43,0,14 BRDA:236,43,1,17 BRDA:236,43,2,14 @@ -43143,15 +43556,15 @@ BRDA:236,43,10,6 BRDA:236,43,11,8 BRDA:236,43,12,7 BRDA:236,43,13,7 -BRDA:236,43,14,0 -BRDA:236,43,15,0 -BRDA:236,43,16,0 -BRDA:236,43,17,0 -BRDA:236,43,18,0 -BRDA:236,43,19,0 -BRDA:236,43,20,0 -BRDA:236,43,21,0 -BRDA:236,43,22,0 +BRDA:236,43,14,7 +BRDA:236,43,15,7 +BRDA:236,43,16,7 +BRDA:236,43,17,7 +BRDA:236,43,18,7 +BRDA:236,43,19,7 +BRDA:236,43,20,7 +BRDA:236,43,21,7 +BRDA:236,43,22,7 BRDA:250,44,0,13 BRDA:250,44,1,50 BRDA:252,45,0,3 @@ -43224,22 +43637,22 @@ BRDA:407,77,0,7 BRDA:407,77,1,7 BRDA:412,78,0,5 BRDA:412,78,1,8 -BRDA:501,79,0,0 +BRDA:501,79,0,68 BRDA:501,79,1,0 -BRDA:503,80,0,0 -BRDA:503,80,1,0 -BRDA:503,81,0,0 -BRDA:503,81,1,0 +BRDA:503,80,0,24 +BRDA:503,80,1,44 +BRDA:503,81,0,68 +BRDA:503,81,1,39 BRDA:504,82,0,0 -BRDA:504,82,1,0 -BRDA:504,83,0,0 -BRDA:504,83,1,0 -BRDA:507,84,0,0 -BRDA:507,84,1,0 +BRDA:504,82,1,24 +BRDA:504,83,0,24 +BRDA:504,83,1,24 +BRDA:507,84,0,24 +BRDA:507,84,1,20 BRDA:508,85,0,0 -BRDA:508,85,1,0 -BRDA:508,86,0,0 -BRDA:508,86,1,0 +BRDA:508,85,1,24 +BRDA:508,86,0,24 +BRDA:508,86,1,24 BRDA:517,87,0,12 BRDA:517,87,1,6 BRDA:517,88,0,12 @@ -43269,7 +43682,7 @@ BRDA:519,99,1,18 BRDA:519,99,2,18 BRDA:522,100,0,3 BRDA:522,100,1,2 -BRDA:531,101,0,1572 +BRDA:531,101,0,2166 BRDA:531,101,1,364 BRDA:535,102,0,0 BRDA:535,102,1,5 @@ -43289,9 +43702,9 @@ BRDA:594,109,0,0 BRDA:594,109,1,0 BRDA:597,110,0,0 BRDA:597,110,1,0 -BRDA:623,111,0,5060 -BRDA:623,111,1,5059 -BRDA:623,111,2,5033 +BRDA:623,111,0,6698 +BRDA:623,111,1,6697 +BRDA:623,111,2,6671 BRDA:623,111,3,66 BRDA:639,112,0,153 BRDA:639,112,1,1 @@ -43320,24 +43733,24 @@ BRDA:672,123,0,13 BRDA:672,123,1,0 BRDA:673,124,0,49 BRDA:673,124,1,49 -BRDA:681,125,0,1567 +BRDA:681,125,0,2161 BRDA:681,125,1,0 -BRDA:684,126,0,1185 -BRDA:684,126,1,382 -BRDA:687,127,0,1167 -BRDA:687,127,1,400 -BRDA:695,128,0,2003 -BRDA:695,128,1,2003 -BRDA:697,129,0,979 -BRDA:697,129,1,414 -BRDA:697,130,0,1393 -BRDA:697,130,1,629 -BRDA:707,131,0,2032 -BRDA:707,131,1,2032 -BRDA:709,132,0,969 -BRDA:709,132,1,442 -BRDA:709,133,0,1411 -BRDA:709,133,1,625 +BRDA:684,126,0,1599 +BRDA:684,126,1,562 +BRDA:687,127,0,1581 +BRDA:687,127,1,580 +BRDA:695,128,0,2777 +BRDA:695,128,1,2777 +BRDA:697,129,0,1321 +BRDA:697,129,1,594 +BRDA:697,130,0,1915 +BRDA:697,130,1,899 +BRDA:707,131,0,2806 +BRDA:707,131,1,2806 +BRDA:709,132,0,1311 +BRDA:709,132,1,622 +BRDA:709,133,0,1933 +BRDA:709,133,1,895 BRDA:720,134,0,0 BRDA:720,134,1,0 BRDA:721,135,0,0 @@ -43380,16 +43793,16 @@ BRDA:769,153,0,0 BRDA:769,153,1,0 BRDA:779,154,0,0 BRDA:779,154,1,0 -BRDA:790,155,0,736 -BRDA:790,155,1,724 -BRDA:811,156,0,1002 +BRDA:790,155,0,988 +BRDA:790,155,1,976 +BRDA:811,156,0,1344 BRDA:811,156,1,64 BRDA:812,157,0,188 -BRDA:812,157,1,878 +BRDA:812,157,1,1220 BRDA:814,158,0,188 BRDA:814,158,1,0 BRF:347 -BRH:235 +BRH:257 end_of_record TN: SF:packages/roosterjs-editor-dom/lib/table/applyTableFormat.ts @@ -43905,23 +44318,23 @@ FN:26,getTableCellMetadata FN:35,saveTableCellMetadata FNF:2 FNH:2 -FNDA:144,getTableCellMetadata -FNDA:1,saveTableCellMetadata +FNDA:168,getTableCellMetadata +FNDA:25,saveTableCellMetadata DA:1,1 DA:2,1 DA:5,1 DA:11,1 DA:26,1 -DA:27,144 +DA:27,168 DA:35,1 -DA:36,1 -DA:37,1 +DA:36,25 +DA:37,25 LF:9 LH:9 -BRDA:36,0,0,1 +BRDA:36,0,0,25 BRDA:36,0,1,0 -BRDA:36,1,0,1 -BRDA:36,1,1,1 +BRDA:36,1,0,25 +BRDA:36,1,1,25 BRF:4 BRH:3 end_of_record @@ -43931,7 +44344,7 @@ FN:49,getTableFormatInfo FN:59,saveTableInfo FNF:2 FNH:2 -FNDA:493,getTableFormatInfo +FNDA:619,getTableFormatInfo FNDA:16,saveTableInfo DA:1,1 DA:4,1 @@ -43939,7 +44352,7 @@ DA:11,1 DA:17,1 DA:19,1 DA:49,1 -DA:50,493 +DA:50,619 DA:59,1 DA:60,16 DA:61,16 @@ -43977,7 +44390,7 @@ DA:48,7 DA:49,5 DA:50,5 DA:51,5 -DA:53,4 +DA:53,3 DA:57,5 DA:60,5 DA:61,1 @@ -43989,7 +44402,7 @@ DA:88,1 LF:26 LH:25 BRDA:21,0,0,7 -BRDA:21,0,1,2 +BRDA:21,0,1,3 BRDA:22,1,0,7 BRDA:22,1,1,6 BRDA:36,2,0,0 @@ -44001,9 +44414,9 @@ BRDA:46,4,1,0 BRDA:46,4,2,0 BRDA:48,5,0,5 BRDA:48,5,1,2 -BRDA:51,6,0,4 -BRDA:51,6,1,1 -BRDA:53,7,0,4 +BRDA:51,6,0,3 +BRDA:51,6,1,2 +BRDA:53,7,0,3 BRDA:53,7,1,1 BRDA:60,8,0,1 BRDA:60,8,1,4 @@ -44023,93 +44436,93 @@ SF:packages/roosterjs-editor-dom/lib/utils/applyFormat.ts FN:11,applyFormat FNF:1 FNH:1 -FNDA:6526,applyFormat +FNDA:6745,applyFormat DA:1,1 DA:11,1 -DA:17,6526 -DA:18,6526 -DA:29,58734 -DA:31,6526 -DA:32,6506 -DA:34,6526 -DA:35,6512 -DA:38,6526 -DA:39,6506 -DA:47,20 +DA:17,6745 +DA:18,6745 +DA:29,60705 +DA:31,6745 +DA:32,6719 +DA:34,6745 +DA:35,6725 +DA:38,6745 +DA:39,6719 +DA:47,26 DA:48,0 -DA:58,6526 +DA:58,6745 DA:59,0 -DA:67,6526 +DA:67,6745 DA:68,0 -DA:78,6526 -DA:79,0 -DA:81,6526 +DA:78,6745 +DA:79,5 +DA:81,6745 DA:82,0 -DA:84,6526 +DA:84,6745 DA:85,0 LF:23 -LH:17 -BRDA:17,0,0,6526 +LH:18 +BRDA:17,0,0,6745 BRDA:17,0,1,0 -BRDA:31,1,0,6506 -BRDA:31,1,1,20 -BRDA:34,2,0,6512 -BRDA:34,2,1,14 -BRDA:38,3,0,6506 -BRDA:38,3,1,20 +BRDA:31,1,0,6719 +BRDA:31,1,1,26 +BRDA:34,2,0,6725 +BRDA:34,2,1,20 +BRDA:38,3,0,6719 +BRDA:38,3,1,26 BRDA:47,4,0,0 -BRDA:47,4,1,20 +BRDA:47,4,1,26 BRDA:58,5,0,0 -BRDA:58,5,1,6526 +BRDA:58,5,1,6745 BRDA:67,6,0,0 -BRDA:67,6,1,6526 -BRDA:78,7,0,0 -BRDA:78,7,1,6526 +BRDA:67,6,1,6745 +BRDA:78,7,0,5 +BRDA:78,7,1,6740 BRDA:81,8,0,0 -BRDA:81,8,1,6526 +BRDA:81,8,1,6745 BRDA:84,9,0,0 -BRDA:84,9,1,6526 +BRDA:84,9,1,6745 BRF:20 -BRH:13 +BRH:14 end_of_record TN: SF:packages/roosterjs-editor-dom/lib/utils/changeElementTag.ts FN:24,changeElementTag FNF:1 FNH:1 -FNDA:114,changeElementTag +FNDA:115,changeElementTag DA:1,1 DA:2,1 DA:3,1 DA:24,1 -DA:25,114 +DA:25,115 DA:26,0 -DA:29,114 -DA:31,114 +DA:29,115 +DA:31,115 DA:33,55 -DA:36,59 -DA:38,59 -DA:39,28 -DA:40,28 -DA:43,59 -DA:45,59 +DA:36,60 +DA:38,60 +DA:39,29 +DA:40,29 +DA:43,60 +DA:45,60 DA:46,4 -DA:52,59 -DA:53,59 -DA:56,59 +DA:52,60 +DA:53,60 +DA:56,60 LF:19 LH:18 BRDA:25,0,0,0 -BRDA:25,0,1,114 -BRDA:25,1,0,114 -BRDA:25,1,1,114 +BRDA:25,0,1,115 +BRDA:25,1,0,115 +BRDA:25,1,1,115 BRDA:31,2,0,55 -BRDA:31,2,1,59 +BRDA:31,2,1,60 BRDA:45,3,0,4 -BRDA:45,3,1,55 -BRDA:45,4,0,59 -BRDA:45,4,1,57 -BRDA:52,5,0,59 +BRDA:45,3,1,56 +BRDA:45,4,0,60 +BRDA:45,4,1,58 +BRDA:52,5,0,60 BRDA:52,5,1,0 BRF:12 BRH:10 @@ -44120,66 +44533,66 @@ FN:17,collapseNodes FN:54,collapse FNF:2 FNH:2 -FNDA:1868,collapseNodes -FNDA:3748,collapse +FNDA:2191,collapseNodes +FNDA:4394,collapse DA:1,1 DA:2,1 DA:3,1 DA:17,1 -DA:23,1868 +DA:23,2191 DA:24,2 -DA:27,1866 -DA:28,1866 -DA:30,1866 -DA:31,1125 -DA:32,741 +DA:27,2189 +DA:28,2189 +DA:30,2189 +DA:31,1247 +DA:32,942 DA:33,0 -DA:34,741 -DA:35,737 -DA:36,737 -DA:37,737 -DA:38,737 +DA:34,942 +DA:35,938 +DA:36,938 +DA:37,938 +DA:38,938 DA:40,4 DA:54,1 -DA:61,3748 -DA:62,1504 +DA:61,4394 +DA:62,1810 DA:63,65 DA:64,5 DA:66,60 -DA:69,1499 +DA:69,1805 DA:70,0 -DA:73,1499 -DA:75,3748 +DA:73,1805 +DA:75,4394 LF:28 LH:26 BRDA:23,0,0,2 -BRDA:23,0,1,1866 -BRDA:23,1,0,1868 -BRDA:23,1,1,1866 -BRDA:30,2,0,1125 -BRDA:30,2,1,741 +BRDA:23,0,1,2189 +BRDA:23,1,0,2191 +BRDA:23,1,1,2189 +BRDA:30,2,0,1247 +BRDA:30,2,1,942 BRDA:32,3,0,0 -BRDA:32,3,1,741 -BRDA:34,4,0,737 +BRDA:32,3,1,942 +BRDA:34,4,0,938 BRDA:34,4,1,4 -BRDA:35,5,0,737 +BRDA:35,5,0,938 BRDA:35,5,1,0 BRDA:35,6,0,0 -BRDA:35,6,1,737 -BRDA:35,7,0,737 -BRDA:35,7,1,737 -BRDA:61,8,0,5247 -BRDA:61,8,1,3349 +BRDA:35,6,1,938 +BRDA:35,7,0,938 +BRDA:35,7,1,938 +BRDA:61,8,0,6199 +BRDA:61,8,1,4239 BRDA:62,9,0,65 -BRDA:62,9,1,1439 -BRDA:62,10,0,1504 -BRDA:62,10,1,733 -BRDA:62,10,2,1480 -BRDA:62,10,3,771 +BRDA:62,9,1,1745 +BRDA:62,10,0,1810 +BRDA:62,10,1,837 +BRDA:62,10,2,1786 +BRDA:62,10,3,973 BRDA:63,11,0,5 BRDA:63,11,1,60 BRDA:69,12,0,0 -BRDA:69,12,1,1499 +BRDA:69,12,1,1805 BRF:28 BRH:24 end_of_record @@ -44189,25 +44602,25 @@ FN:30,contains FN:63,internalContains FNF:2 FNH:2 -FNDA:47849,contains -FNDA:27728,internalContains +FNDA:53914,contains +FNDA:31528,internalContains DA:1,1 DA:30,1 -DA:35,47849 -DA:36,8456 -DA:39,39393 -DA:40,4210 -DA:43,35183 -DA:44,2635 -DA:45,2635 -DA:48,35183 -DA:49,9469 -DA:50,9469 -DA:53,35183 -DA:54,788 -DA:57,34395 -DA:64,27728 -DA:65,27728 +DA:35,53914 +DA:36,8925 +DA:39,44989 +DA:40,5513 +DA:43,39476 +DA:44,3237 +DA:45,3237 +DA:48,39476 +DA:49,11536 +DA:50,11536 +DA:53,39476 +DA:54,1024 +DA:57,38452 +DA:64,31528 +DA:65,31528 DA:67,0 DA:68,0 DA:69,0 @@ -44215,33 +44628,33 @@ DA:72,0 DA:75,0 LF:22 LH:17 -BRDA:35,0,0,8456 -BRDA:35,0,1,39393 -BRDA:35,1,0,47849 -BRDA:35,1,1,47836 -BRDA:39,2,0,4210 -BRDA:39,2,1,35183 -BRDA:39,3,0,39393 -BRDA:39,3,1,15746 -BRDA:43,4,0,2635 -BRDA:43,4,1,32548 -BRDA:44,5,0,2635 -BRDA:44,5,1,2635 -BRDA:48,6,0,9469 -BRDA:48,6,1,25714 -BRDA:48,7,0,35183 -BRDA:48,7,1,35183 -BRDA:53,8,0,788 -BRDA:53,8,1,34395 -BRDA:53,9,0,35183 -BRDA:53,9,1,917 -BRDA:54,10,0,788 -BRDA:54,10,1,783 -BRDA:58,11,0,34395 -BRDA:58,11,1,27728 -BRDA:58,12,0,34395 -BRDA:58,12,1,12884 -BRDA:64,13,0,27728 +BRDA:35,0,0,8925 +BRDA:35,0,1,44989 +BRDA:35,1,0,53914 +BRDA:35,1,1,53901 +BRDA:39,2,0,5513 +BRDA:39,2,1,39476 +BRDA:39,3,0,44989 +BRDA:39,3,1,17936 +BRDA:43,4,0,3237 +BRDA:43,4,1,36239 +BRDA:44,5,0,3237 +BRDA:44,5,1,3237 +BRDA:48,6,0,11536 +BRDA:48,6,1,27940 +BRDA:48,7,0,39476 +BRDA:48,7,1,39476 +BRDA:53,8,0,1024 +BRDA:53,8,1,38452 +BRDA:53,9,0,39476 +BRDA:53,9,1,1153 +BRDA:54,10,0,1024 +BRDA:54,10,1,1002 +BRDA:58,11,0,38452 +BRDA:58,11,1,31528 +BRDA:58,12,0,38452 +BRDA:58,12,1,13891 +BRDA:64,13,0,31528 BRDA:64,13,1,0 BRDA:68,14,0,0 BRDA:68,14,1,0 @@ -44256,69 +44669,69 @@ FN:113,(anonymous_2) FN:119,(anonymous_3) FNF:4 FNH:4 -FNDA:15075,createElement +FNDA:15525,createElement FNDA:307,(anonymous_1) FNDA:253,(anonymous_2) -FNDA:8987,(anonymous_3) +FNDA:9207,(anonymous_3) DA:1,1 DA:2,1 DA:3,1 DA:11,1 DA:78,1 -DA:85,15075 -DA:86,6590 -DA:89,15075 +DA:85,15525 +DA:86,6820 +DA:89,15525 DA:90,1 -DA:93,105518 -DA:94,15074 -DA:98,15074 -DA:99,569 -DA:102,15074 +DA:93,108668 +DA:94,15524 +DA:98,15524 +DA:99,579 +DA:102,15524 DA:103,470 -DA:106,15074 +DA:106,15524 DA:107,155 DA:108,307 -DA:112,15074 +DA:112,15524 DA:113,94 DA:114,253 -DA:118,15074 -DA:119,8165 -DA:120,8987 +DA:118,15524 +DA:119,8385 +DA:120,9207 DA:121,1062 -DA:122,7925 -DA:123,7924 -DA:124,7924 -DA:125,7924 -DA:131,15074 +DA:122,8145 +DA:123,8144 +DA:124,8144 +DA:125,8144 +DA:131,15524 LF:30 LH:30 BRDA:17,0,0,0 BRDA:17,0,1,1 -BRDA:85,1,0,6590 -BRDA:85,1,1,8485 +BRDA:85,1,0,6820 +BRDA:85,1,1,8705 BRDA:89,2,0,1 -BRDA:89,2,1,15074 -BRDA:89,3,0,15075 -BRDA:89,3,1,15074 +BRDA:89,2,1,15524 +BRDA:89,3,0,15525 +BRDA:89,3,1,15524 BRDA:95,4,0,118 -BRDA:95,4,1,14956 -BRDA:98,5,0,569 -BRDA:98,5,1,14505 +BRDA:95,4,1,15406 +BRDA:98,5,0,579 +BRDA:98,5,1,14945 BRDA:102,6,0,470 -BRDA:102,6,1,14604 +BRDA:102,6,1,15054 BRDA:106,7,0,155 -BRDA:106,7,1,14919 -BRDA:106,8,0,15074 +BRDA:106,7,1,15369 +BRDA:106,8,0,15524 BRDA:106,8,1,155 BRDA:112,9,0,94 -BRDA:112,9,1,14980 -BRDA:118,10,0,8165 -BRDA:118,10,1,6909 +BRDA:112,9,1,15430 +BRDA:118,10,0,8385 +BRDA:118,10,1,7139 BRDA:120,11,0,1062 -BRDA:120,11,1,7925 -BRDA:122,12,0,7924 +BRDA:120,11,1,8145 +BRDA:122,12,0,8144 BRDA:122,12,1,1 -BRDA:124,13,0,7924 +BRDA:124,13,0,8144 BRDA:124,13,1,0 BRF:28 BRH:26 @@ -44328,41 +44741,41 @@ SF:packages/roosterjs-editor-dom/lib/utils/findClosestElementAncestor.ts FN:13,findClosestElementAncestor FNF:1 FNH:1 -FNDA:29240,findClosestElementAncestor +FNDA:32463,findClosestElementAncestor DA:1,1 DA:2,1 DA:13,1 -DA:18,29240 -DA:19,29240 -DA:21,29240 -DA:22,8582 -DA:23,8582 +DA:18,32463 +DA:19,32463 +DA:21,32463 +DA:22,9029 +DA:23,9029 DA:25,0 DA:26,0 -DA:31,29240 +DA:31,32463 LF:11 LH:9 BRDA:18,0,0,31 -BRDA:18,0,1,29209 -BRDA:18,1,0,25154 -BRDA:18,1,1,4055 -BRDA:19,2,0,29070 +BRDA:18,0,1,32432 +BRDA:18,1,0,27123 +BRDA:18,1,1,5309 +BRDA:19,2,0,32293 BRDA:19,2,1,170 -BRDA:19,3,0,29240 -BRDA:19,3,1,29070 -BRDA:21,4,0,8582 -BRDA:21,4,1,20658 -BRDA:21,5,0,29240 -BRDA:21,5,1,29070 -BRDA:22,6,0,8582 +BRDA:19,3,0,32463 +BRDA:19,3,1,32293 +BRDA:21,4,0,9029 +BRDA:21,4,1,23434 +BRDA:21,5,0,32463 +BRDA:21,5,1,32293 +BRDA:22,6,0,9029 BRDA:22,6,1,0 BRDA:25,7,0,0 BRDA:25,7,1,0 BRDA:25,7,2,0 -BRDA:31,8,0,21793 -BRDA:31,8,1,7447 -BRDA:31,9,0,29240 -BRDA:31,9,1,8596 +BRDA:31,8,0,24615 +BRDA:31,8,1,7848 +BRDA:31,9,0,32463 +BRDA:31,9,1,9019 BRF:21 BRH:17 end_of_record @@ -44389,49 +44802,49 @@ FN:40,getComputedStyle FN:44,px2Pt FNF:3 FNH:3 -FNDA:583,getComputedStyles -FNDA:555,getComputedStyle +FNDA:721,getComputedStyles +FNDA:693,getComputedStyle FNDA:45,px2Pt DA:1,1 DA:10,1 -DA:12,587 -DA:14,583 -DA:15,583 -DA:16,583 -DA:17,583 -DA:18,580 -DA:19,580 -DA:21,580 -DA:22,703 -DA:23,703 -DA:24,703 -DA:25,703 -DA:26,703 -DA:31,583 +DA:12,725 +DA:14,721 +DA:15,721 +DA:16,721 +DA:17,721 +DA:18,718 +DA:19,718 +DA:21,718 +DA:22,841 +DA:23,841 +DA:24,841 +DA:25,841 +DA:26,841 +DA:31,721 DA:40,1 -DA:41,555 +DA:41,693 DA:45,45 DA:48,43 DA:50,2 LF:21 LH:21 BRDA:12,0,0,4 -BRDA:12,0,1,579 +BRDA:12,0,1,717 BRDA:16,1,0,27 -BRDA:16,1,1,556 -BRDA:17,2,0,580 +BRDA:16,1,1,694 +BRDA:17,2,0,718 BRDA:17,2,1,3 -BRDA:18,3,0,580 +BRDA:18,3,0,718 BRDA:18,3,1,0 -BRDA:21,4,0,580 +BRDA:21,4,0,718 BRDA:21,4,1,0 -BRDA:23,5,0,703 +BRDA:23,5,0,841 BRDA:23,5,1,73 -BRDA:24,6,0,688 +BRDA:24,6,0,826 BRDA:24,6,1,15 BRDA:25,7,0,45 -BRDA:25,7,1,658 -BRDA:41,8,0,555 +BRDA:25,7,1,796 +BRDA:41,8,0,693 BRDA:41,8,1,74 BRDA:45,9,0,43 BRDA:45,9,1,2 @@ -44513,33 +44926,33 @@ FN:27,getFirstLeafNode FN:35,getLastLeafNode FNF:4 FNH:4 -FNDA:493,getLeafNode -FNDA:1865,(anonymous_1) -FNDA:484,getFirstLeafNode +FNDA:532,getLeafNode +FNDA:1975,(anonymous_1) +FNDA:523,getFirstLeafNode FNDA:9,getLastLeafNode DA:1,1 DA:2,1 -DA:10,1865 -DA:11,493 -DA:12,493 -DA:13,444 -DA:16,493 +DA:10,1975 +DA:11,532 +DA:12,532 +DA:13,460 +DA:16,532 DA:17,36 -DA:20,493 +DA:20,532 DA:27,1 -DA:28,484 +DA:28,523 DA:35,1 DA:36,9 LF:13 LH:13 -BRDA:10,0,0,1836 +BRDA:10,0,0,1946 BRDA:10,0,1,29 -BRDA:12,1,0,937 -BRDA:12,1,1,928 +BRDA:12,1,0,992 +BRDA:12,1,1,983 BRDA:16,2,0,36 -BRDA:16,2,1,457 -BRDA:16,3,0,493 -BRDA:16,3,1,484 +BRDA:16,2,1,496 +BRDA:16,3,0,532 +BRDA:16,3,1,523 BRF:8 BRH:8 end_of_record @@ -44554,84 +44967,84 @@ FN:68,getNextLeafSibling FN:82,getPreviousLeafSibling FNF:7 FNH:7 -FNDA:1530,getLeafSibling -FNDA:1670,(anonymous_1) -FNDA:649,(anonymous_2) -FNDA:1559,(anonymous_3) -FNDA:631,(anonymous_4) -FNDA:203,getNextLeafSibling +FNDA:1878,getLeafSibling +FNDA:2054,(anonymous_1) +FNDA:688,(anonymous_2) +FNDA:1991,(anonymous_3) +FNDA:641,(anonymous_4) +FNDA:337,getNextLeafSibling FNDA:116,getPreviousLeafSibling DA:1,1 DA:2,1 DA:3,1 DA:14,1 -DA:21,1530 -DA:22,1530 -DA:23,1670 -DA:24,649 -DA:25,1559 -DA:26,1530 -DA:27,1505 -DA:28,1505 -DA:30,1505 -DA:33,1522 -DA:34,1522 -DA:35,1522 -DA:36,797 -DA:37,797 -DA:41,1522 -DA:46,762 -DA:50,1522 -DA:51,1522 -DA:53,1505 -DA:54,1505 -DA:59,1530 +DA:21,1878 +DA:22,1878 +DA:23,2054 +DA:24,688 +DA:25,1991 +DA:26,1878 +DA:27,1756 +DA:28,1756 +DA:30,1756 +DA:33,1779 +DA:34,1779 +DA:35,1779 +DA:36,963 +DA:37,963 +DA:41,1779 +DA:46,914 +DA:50,1779 +DA:51,1779 +DA:53,1756 +DA:54,1756 +DA:59,1878 DA:68,1 -DA:73,203 +DA:73,337 DA:82,1 DA:87,116 LF:29 LH:29 -BRDA:23,0,0,1128 -BRDA:23,0,1,402 -BRDA:23,1,0,1670 -BRDA:23,1,1,1186 +BRDA:23,0,0,1457 +BRDA:23,0,1,421 +BRDA:23,1,0,2054 +BRDA:23,1,1,1442 BRDA:23,2,0,0 -BRDA:23,2,1,1670 -BRDA:23,3,0,1670 -BRDA:23,3,1,1670 -BRDA:24,4,0,649 -BRDA:24,4,1,455 +BRDA:23,2,1,2054 +BRDA:23,3,0,2054 +BRDA:23,3,1,2054 +BRDA:24,4,0,688 +BRDA:24,4,1,484 BRDA:24,5,0,0 -BRDA:24,5,1,649 -BRDA:24,6,0,649 -BRDA:24,6,1,649 -BRDA:25,7,0,1128 -BRDA:25,7,1,402 -BRDA:26,8,0,1505 -BRDA:26,8,1,25 -BRDA:33,9,0,1522 +BRDA:24,5,1,688 +BRDA:24,6,0,688 +BRDA:24,6,1,688 +BRDA:25,7,0,1457 +BRDA:25,7,1,421 +BRDA:26,8,0,1756 +BRDA:26,8,1,122 +BRDA:33,9,0,1779 BRDA:33,9,1,0 BRDA:33,10,0,0 -BRDA:33,10,1,1522 -BRDA:33,11,0,1522 -BRDA:33,11,1,1522 -BRDA:35,12,0,2319 -BRDA:35,12,1,1641 -BRDA:37,13,0,797 +BRDA:33,10,1,1779 +BRDA:33,11,0,1779 +BRDA:33,11,1,1779 +BRDA:35,12,0,2742 +BRDA:35,12,1,1926 +BRDA:37,13,0,963 BRDA:37,13,1,0 BRDA:37,14,0,0 -BRDA:37,14,1,797 -BRDA:37,15,0,797 -BRDA:37,15,1,797 -BRDA:42,16,0,2284 -BRDA:42,16,1,1440 -BRDA:42,16,2,556 -BRDA:42,16,3,1428 -BRDA:50,17,0,1522 -BRDA:50,17,1,678 -BRDA:51,18,0,1505 -BRDA:51,18,1,17 +BRDA:37,14,1,963 +BRDA:37,15,0,963 +BRDA:37,15,1,963 +BRDA:42,16,0,2693 +BRDA:42,16,1,1730 +BRDA:42,16,2,631 +BRDA:42,16,3,1718 +BRDA:50,17,0,1779 +BRDA:50,17,1,816 +BRDA:51,18,0,1756 +BRDA:51,18,1,23 BRF:40 BRH:34 end_of_record @@ -44660,15 +45073,15 @@ SF:packages/roosterjs-editor-dom/lib/utils/getTagOfNode.ts FN:8,getTagOfNode FNF:1 FNH:1 -FNDA:34964,getTagOfNode +FNDA:39928,getTagOfNode DA:8,1 -DA:9,34964 +DA:9,39928 LF:2 LH:2 -BRDA:9,0,0,25130 -BRDA:9,0,1,9834 -BRDA:9,1,0,34964 -BRDA:9,1,1,34896 +BRDA:9,0,0,28337 +BRDA:9,0,1,11591 +BRDA:9,1,0,39928 +BRDA:9,1,1,39850 BRF:4 BRH:4 end_of_record @@ -44677,18 +45090,18 @@ SF:packages/roosterjs-editor-dom/lib/utils/isBlockElement.ts FN:13,isBlockElement FNF:1 FNH:1 -FNDA:10218,isBlockElement +FNDA:12090,isBlockElement DA:1,1 DA:3,1 DA:6,1 DA:13,1 -DA:14,10218 -DA:15,10218 +DA:14,12090 +DA:15,12090 LF:6 LH:6 -BRDA:16,0,0,10218 -BRDA:16,0,1,6499 -BRDA:16,0,2,6499 +BRDA:16,0,0,12090 +BRDA:16,0,1,7810 +BRDA:16,0,2,7810 BRF:3 BRH:3 end_of_record @@ -44697,14 +45110,14 @@ SF:packages/roosterjs-editor-dom/lib/utils/isNodeAfter.ts FN:9,isNodeAfter FNF:1 FNH:1 -FNDA:2709,isNodeAfter +FNDA:3280,isNodeAfter DA:9,1 -DA:10,2709 +DA:10,3280 LF:2 LH:2 -BRDA:11,0,0,2709 -BRDA:11,0,1,2707 -BRDA:11,0,2,2706 +BRDA:11,0,0,3280 +BRDA:11,0,1,3278 +BRDA:11,0,2,3277 BRF:3 BRH:3 end_of_record @@ -44714,47 +45127,47 @@ FN:15,isNodeEmpty FN:41,trim FNF:2 FNH:2 -FNDA:87,isNodeEmpty -FNDA:85,trim +FNDA:90,isNodeEmpty +FNDA:88,trim DA:1,1 DA:4,1 DA:5,1 DA:6,1 DA:15,1 -DA:20,87 +DA:20,90 DA:21,2 -DA:22,85 -DA:23,20 -DA:24,65 -DA:25,65 -DA:26,65 -DA:27,65 -DA:30,65 -DA:35,44 +DA:22,88 +DA:23,21 +DA:24,67 +DA:25,67 +DA:26,67 +DA:27,67 +DA:30,67 +DA:35,46 DA:38,21 -DA:42,85 -DA:43,85 +DA:42,88 +DA:43,88 LF:18 LH:18 BRDA:20,0,0,2 -BRDA:20,0,1,85 -BRDA:22,1,0,20 -BRDA:22,1,1,65 -BRDA:23,2,0,20 +BRDA:20,0,1,88 +BRDA:22,1,0,21 +BRDA:22,1,1,67 +BRDA:23,2,0,21 BRDA:23,2,1,2 -BRDA:24,3,0,65 +BRDA:24,3,0,67 BRDA:24,3,1,0 -BRDA:26,4,0,65 +BRDA:26,4,0,67 BRDA:26,4,1,30 BRDA:28,5,0,11 -BRDA:28,5,1,54 -BRDA:30,6,0,44 +BRDA:28,5,1,56 +BRDA:30,6,0,46 BRDA:30,6,1,21 -BRDA:31,7,0,65 +BRDA:31,7,0,67 BRDA:31,7,1,32 BRDA:31,7,2,29 -BRDA:43,8,0,31 -BRDA:43,8,1,54 +BRDA:43,8,0,32 +BRDA:43,8,1,56 BRF:19 BRH:18 end_of_record @@ -44763,15 +45176,15 @@ SF:packages/roosterjs-editor-dom/lib/utils/isVoidHtmlElement.ts FN:17,isVoidHtmlElement FNF:1 FNH:1 -FNDA:1606,isVoidHtmlElement +FNDA:1923,isVoidHtmlElement DA:1,1 DA:9,1 DA:17,1 -DA:18,1606 +DA:18,1923 LF:4 LH:4 -BRDA:18,0,0,1606 -BRDA:18,0,1,1605 +BRDA:18,0,0,1923 +BRDA:18,0,1,1922 BRF:2 BRH:2 end_of_record @@ -44844,24 +45257,24 @@ SF:packages/roosterjs-editor-dom/lib/utils/moveChildNodes.ts FN:7,moveChildNodes FNF:1 FNH:1 -FNDA:506,moveChildNodes +FNDA:630,moveChildNodes DA:7,1 -DA:12,506 +DA:12,630 DA:13,4 -DA:16,502 -DA:17,393 -DA:20,502 -DA:21,175 +DA:16,626 +DA:17,519 +DA:20,626 +DA:21,171 LF:7 LH:7 BRDA:12,0,0,4 -BRDA:12,0,1,502 -BRDA:16,1,0,895 -BRDA:16,1,1,879 -BRDA:20,2,0,348 -BRDA:20,2,1,329 -BRDA:20,3,0,677 -BRDA:20,3,1,673 +BRDA:12,0,1,626 +BRDA:16,1,0,1145 +BRDA:16,1,1,1129 +BRDA:20,2,0,472 +BRDA:20,2,1,325 +BRDA:20,3,0,797 +BRDA:20,3,1,793 BRF:8 BRH:8 end_of_record @@ -44931,71 +45344,71 @@ FN:82,checkPosition FN:83,(anonymous_4) FNF:5 FNH:5 -FNDA:28915,queryElements -FNDA:723,(anonymous_1) -FNDA:723,isIntersectWithNodeRange -FNDA:2384,checkPosition -FNDA:4726,(anonymous_4) +FNDA:30456,queryElements +FNDA:842,(anonymous_1) +FNDA:842,isIntersectWithNodeRange +FNDA:2794,checkPosition +FNDA:5370,(anonymous_4) DA:1,1 DA:14,1 -DA:18,29564 -DA:21,28915 +DA:18,31164 +DA:21,30456 DA:22,6 -DA:25,28909 -DA:27,28909 -DA:28,794 -DA:29,794 -DA:30,397 -DA:31,227 -DA:35,227 -DA:38,397 -DA:43,397 -DA:44,723 -DA:53,28909 -DA:54,827 -DA:56,28909 -DA:65,723 -DA:66,723 -DA:67,723 -DA:69,723 -DA:70,605 -DA:73,723 -DA:83,2384 -DA:84,4726 +DA:25,30450 +DA:27,30450 +DA:28,986 +DA:29,986 +DA:30,493 +DA:31,276 +DA:35,276 +DA:38,493 +DA:43,493 +DA:44,842 +DA:53,30450 +DA:54,933 +DA:56,30450 +DA:65,842 +DA:66,842 +DA:67,842 +DA:69,842 +DA:70,611 +DA:73,842 +DA:83,2794 +DA:84,5370 LF:26 LH:26 -BRDA:18,0,0,649 -BRDA:18,0,1,28266 +BRDA:18,0,0,708 +BRDA:18,0,1,29748 BRDA:21,1,0,6 -BRDA:21,1,1,28909 -BRDA:21,2,0,28915 -BRDA:21,2,1,28912 -BRDA:27,3,0,397 -BRDA:27,3,1,28512 -BRDA:27,4,0,28909 -BRDA:27,4,1,397 -BRDA:30,5,0,227 -BRDA:30,5,1,170 -BRDA:30,6,0,397 -BRDA:30,6,1,245 -BRDA:35,7,0,227 +BRDA:21,1,1,30450 +BRDA:21,2,0,30456 +BRDA:21,2,1,30453 +BRDA:27,3,0,493 +BRDA:27,3,1,29957 +BRDA:27,4,0,30450 +BRDA:27,4,1,493 +BRDA:30,5,0,276 +BRDA:30,5,1,217 +BRDA:30,6,0,493 +BRDA:30,6,1,300 +BRDA:35,7,0,276 BRDA:35,7,1,12 -BRDA:40,8,0,174 -BRDA:40,8,1,223 -BRDA:39,9,0,397 -BRDA:39,9,1,249 -BRDA:39,9,2,231 -BRDA:53,10,0,827 -BRDA:53,10,1,28082 -BRDA:69,11,0,605 -BRDA:69,11,1,118 -BRDA:74,12,0,723 -BRDA:74,12,1,619 -BRDA:74,12,2,584 -BRDA:74,12,3,374 +BRDA:40,8,0,206 +BRDA:40,8,1,287 +BRDA:39,9,0,493 +BRDA:39,9,1,300 +BRDA:39,9,2,276 +BRDA:53,10,0,933 +BRDA:53,10,1,29517 +BRDA:69,11,0,611 +BRDA:69,11,1,231 +BRDA:74,12,0,842 +BRDA:74,12,1,731 +BRDA:74,12,2,696 +BRDA:74,12,3,441 BRDA:74,12,4,84 -BRDA:85,13,0,1342 -BRDA:85,13,1,3384 +BRDA:85,13,0,1573 +BRDA:85,13,1,3797 BRF:32 BRH:32 end_of_record @@ -45030,46 +45443,46 @@ FN:11,getTargetWindow FN:29,safeInstanceOf FNF:2 FNH:2 -FNDA:23098,getTargetWindow -FNDA:58770,safeInstanceOf +FNDA:25608,getTargetWindow +FNDA:65703,safeInstanceOf DA:11,1 -DA:13,23098 -DA:20,23098 -DA:21,23098 +DA:13,25608 +DA:20,25608 +DA:21,25608 DA:29,1 -DA:33,58770 -DA:34,35674 -DA:40,23096 -DA:41,23096 -DA:42,23096 -DA:43,23096 -DA:44,23096 +DA:33,65703 +DA:34,40097 +DA:40,25606 +DA:41,25606 +DA:42,25606 +DA:43,25606 +DA:44,25606 LF:12 LH:12 -BRDA:13,0,0,23098 -BRDA:13,0,1,9383 -BRDA:13,0,2,712 +BRDA:13,0,0,25608 +BRDA:13,0,1,11458 +BRDA:13,0,2,915 BRDA:16,1,0,0 -BRDA:16,1,1,712 -BRDA:20,2,0,23098 -BRDA:20,2,1,8671 -BRDA:20,2,2,575 -BRDA:33,3,0,35674 -BRDA:33,3,1,23096 -BRDA:35,4,0,35674 -BRDA:35,4,1,2773 +BRDA:16,1,1,915 +BRDA:20,2,0,25608 +BRDA:20,2,1,10543 +BRDA:20,2,2,686 +BRDA:33,3,0,40097 +BRDA:33,3,1,25606 +BRDA:35,4,0,40097 +BRDA:35,4,1,3396 BRDA:36,5,0,0 -BRDA:36,5,1,2773 -BRDA:36,6,0,2773 -BRDA:36,6,1,2773 -BRDA:41,7,0,23096 -BRDA:41,7,1,8669 -BRDA:43,8,0,23096 -BRDA:43,8,1,23096 -BRDA:45,9,0,23096 -BRDA:45,9,1,23096 -BRDA:45,9,2,16788 -BRDA:45,9,3,2361 +BRDA:36,5,1,3396 +BRDA:36,6,0,3396 +BRDA:36,6,1,3396 +BRDA:41,7,0,25606 +BRDA:41,7,1,10541 +BRDA:43,8,0,25606 +BRDA:43,8,1,25606 +BRDA:45,9,0,25606 +BRDA:45,9,1,25606 +BRDA:45,9,2,18217 +BRDA:45,9,3,3152 BRF:24 BRH:22 end_of_record @@ -45083,7 +45496,7 @@ FN:131,calculateLightness FNF:5 FNH:5 FNDA:1,(anonymous_0) -FNDA:19678,setColor +FNDA:20368,setColor FNDA:58,adaptFontColorToBackgroundColor FNDA:7,isADarkOrBrightColor FNDA:7,calculateLightness @@ -45099,14 +45512,14 @@ DA:11,1 DA:15,1 DA:17,1 DA:29,1 -DA:37,19678 -DA:38,19678 -DA:39,19678 -DA:41,19678 -DA:42,19678 -DA:43,19615 -DA:49,19615 -DA:52,19678 +DA:37,20368 +DA:38,20368 +DA:39,20368 +DA:41,20368 +DA:42,20368 +DA:43,20305 +DA:49,20305 +DA:52,20368 DA:53,58 DA:77,58 DA:78,51 @@ -45135,32 +45548,32 @@ LF:44 LH:40 BRDA:8,0,0,1 BRDA:8,0,1,1 -BRDA:37,1,0,114 -BRDA:37,1,1,19564 -BRDA:38,2,0,114 -BRDA:38,2,1,19564 -BRDA:39,3,0,6605 -BRDA:39,3,1,13073 -BRDA:41,4,0,19678 +BRDA:37,1,0,153 +BRDA:37,1,1,20215 +BRDA:38,2,0,153 +BRDA:38,2,1,20215 +BRDA:39,3,0,6832 +BRDA:39,3,1,13536 +BRDA:41,4,0,20368 BRDA:41,4,1,0 -BRDA:41,5,0,19678 -BRDA:41,5,1,19564 -BRDA:42,6,0,19615 +BRDA:41,5,0,20368 +BRDA:41,5,1,20215 +BRDA:42,6,0,20305 BRDA:42,6,1,63 -BRDA:44,7,0,19615 -BRDA:44,7,1,61 -BRDA:44,8,0,61 -BRDA:44,8,1,19554 -BRDA:44,9,0,19615 -BRDA:44,9,1,19554 -BRDA:46,10,0,61 -BRDA:46,10,1,19554 -BRDA:46,11,0,19615 -BRDA:46,11,1,19554 +BRDA:44,7,0,20305 +BRDA:44,7,1,100 +BRDA:44,8,0,100 +BRDA:44,8,1,20205 +BRDA:44,9,0,20305 +BRDA:44,9,1,20205 +BRDA:46,10,0,100 +BRDA:46,10,1,20205 +BRDA:46,11,0,20305 +BRDA:46,11,1,20205 BRDA:52,12,0,58 -BRDA:52,12,1,19620 -BRDA:52,13,0,19678 -BRDA:52,13,1,6605 +BRDA:52,12,1,20310 +BRDA:52,13,0,20368 +BRDA:52,13,1,6832 BRDA:55,14,0,58 BRDA:55,14,1,58 BRDA:55,15,0,58 @@ -45187,52 +45600,52 @@ SF:packages/roosterjs-editor-dom/lib/utils/shouldSkipNode.ts FN:21,shouldSkipNode FNF:1 FNH:1 -FNDA:1657,shouldSkipNode +FNDA:1990,shouldSkipNode DA:1,1 DA:2,1 DA:5,1 DA:6,1 DA:21,1 -DA:22,1657 -DA:23,1256 -DA:24,34 -DA:25,1222 -DA:26,12 -DA:28,1210 -DA:30,401 -DA:31,401 +DA:22,1990 +DA:23,1502 +DA:24,33 +DA:25,1469 +DA:26,20 +DA:28,1449 +DA:30,488 +DA:31,488 DA:32,1 -DA:35,400 -DA:37,400 -DA:41,140 -DA:42,99 -DA:43,90 -DA:46,50 -DA:50,260 +DA:35,487 +DA:37,487 +DA:41,186 +DA:42,123 +DA:43,112 +DA:46,74 +DA:50,301 DA:53,0 LF:22 LH:21 -BRDA:22,0,0,1256 -BRDA:22,0,1,401 -BRDA:23,1,0,34 -BRDA:23,1,1,1222 -BRDA:23,2,0,1256 -BRDA:23,2,1,1231 -BRDA:23,2,2,1231 -BRDA:25,3,0,12 -BRDA:25,3,1,1210 -BRDA:25,4,0,1222 -BRDA:25,4,1,112 -BRDA:30,5,0,401 +BRDA:22,0,0,1502 +BRDA:22,0,1,488 +BRDA:23,1,0,33 +BRDA:23,1,1,1469 +BRDA:23,2,0,1502 +BRDA:23,2,1,1478 +BRDA:23,2,2,1478 +BRDA:25,3,0,20 +BRDA:25,3,1,1449 +BRDA:25,4,0,1469 +BRDA:25,4,1,130 +BRDA:30,5,0,488 BRDA:30,5,1,0 BRDA:31,6,0,1 -BRDA:31,6,1,400 -BRDA:37,7,0,140 -BRDA:37,7,1,260 -BRDA:37,8,0,400 -BRDA:37,8,1,283 -BRDA:42,9,0,90 -BRDA:42,9,1,9 +BRDA:31,6,1,487 +BRDA:37,7,0,186 +BRDA:37,7,1,301 +BRDA:37,8,0,487 +BRDA:37,8,1,348 +BRDA:42,9,0,112 +BRDA:42,9,1,11 BRF:21 BRH:20 end_of_record @@ -45242,69 +45655,69 @@ FN:14,splitParentNode FN:51,splitBalancedNodeRange FNF:2 FNH:2 -FNDA:274,splitParentNode -FNDA:89,splitBalancedNodeRange +FNDA:381,splitParentNode +FNDA:143,splitBalancedNodeRange DA:1,1 DA:14,1 -DA:15,274 +DA:15,381 DA:16,2 -DA:19,272 -DA:20,272 -DA:21,272 -DA:22,272 -DA:23,128 -DA:24,94 -DA:27,144 -DA:28,123 -DA:33,272 -DA:34,165 -DA:39,107 -DA:42,272 +DA:19,379 +DA:20,379 +DA:21,379 +DA:22,379 +DA:23,181 +DA:24,97 +DA:27,198 +DA:28,138 +DA:33,379 +DA:34,173 +DA:39,206 +DA:42,379 DA:51,1 -DA:52,89 -DA:53,89 -DA:54,89 -DA:55,89 -DA:56,87 +DA:52,143 +DA:53,143 +DA:54,143 +DA:55,143 +DA:56,141 DA:57,1 DA:58,1 DA:59,1 -DA:61,87 -DA:62,87 -DA:65,89 +DA:61,141 +DA:62,141 +DA:65,143 LF:28 LH:28 BRDA:15,0,0,2 -BRDA:15,0,1,272 -BRDA:15,1,0,274 -BRDA:15,1,1,272 -BRDA:22,2,0,128 -BRDA:22,2,1,144 -BRDA:23,3,0,222 -BRDA:23,3,1,222 -BRDA:33,4,0,165 -BRDA:33,4,1,107 -BRDA:33,5,0,272 -BRDA:33,5,1,167 +BRDA:15,0,1,379 +BRDA:15,1,0,381 +BRDA:15,1,1,379 +BRDA:22,2,0,181 +BRDA:22,2,1,198 +BRDA:23,3,0,278 +BRDA:23,3,1,278 +BRDA:33,4,0,173 +BRDA:33,4,1,206 +BRDA:33,5,0,379 +BRDA:33,5,1,175 BRDA:34,6,0,0 -BRDA:34,6,1,165 -BRDA:34,7,0,165 -BRDA:34,7,1,165 -BRDA:36,8,0,70 -BRDA:36,8,1,95 -BRDA:52,9,0,31 -BRDA:52,9,1,58 -BRDA:53,10,0,31 -BRDA:53,10,1,58 -BRDA:54,11,0,87 +BRDA:34,6,1,173 +BRDA:34,7,0,173 +BRDA:34,7,1,173 +BRDA:36,8,0,73 +BRDA:36,8,1,100 +BRDA:52,9,0,35 +BRDA:52,9,1,108 +BRDA:53,10,0,35 +BRDA:53,10,1,108 +BRDA:54,11,0,141 BRDA:54,11,1,2 -BRDA:54,12,0,89 -BRDA:54,12,1,88 -BRDA:54,12,2,87 -BRDA:55,13,0,87 +BRDA:54,12,0,143 +BRDA:54,12,1,142 +BRDA:54,12,2,141 +BRDA:55,13,0,141 BRDA:55,13,1,2 BRDA:56,14,0,1 -BRDA:56,14,1,86 +BRDA:56,14,1,140 BRF:31 BRH:30 end_of_record @@ -45353,21 +45766,21 @@ SF:packages/roosterjs-editor-dom/lib/utils/unwrap.ts FN:5,unwrap FNF:1 FNH:1 -FNDA:111,unwrap +FNDA:181,unwrap DA:5,1 -DA:7,111 -DA:8,111 +DA:7,181 +DA:8,181 DA:9,12 -DA:12,99 -DA:13,116 -DA:16,99 -DA:17,99 +DA:12,169 +DA:13,220 +DA:16,169 +DA:17,169 LF:8 LH:8 -BRDA:7,0,0,110 +BRDA:7,0,0,180 BRDA:7,0,1,1 BRDA:8,1,0,12 -BRDA:8,1,1,99 +BRDA:8,1,1,169 BRF:4 BRH:4 end_of_record @@ -45376,47 +45789,47 @@ SF:packages/roosterjs-editor-dom/lib/utils/wrap.ts FN:48,wrap FNF:1 FNH:1 -FNDA:163,wrap +FNDA:255,wrap DA:1,1 DA:2,1 DA:3,1 DA:48,1 -DA:57,163 -DA:58,163 +DA:57,255 +DA:58,255 DA:59,4 -DA:62,159 -DA:63,36 -DA:66,159 -DA:67,159 -DA:69,159 -DA:70,139 -DA:74,20 -DA:78,159 -DA:80,159 -DA:81,142 -DA:84,181 -DA:85,181 -DA:88,159 +DA:62,251 +DA:63,60 +DA:66,251 +DA:67,251 +DA:69,251 +DA:70,221 +DA:74,30 +DA:78,251 +DA:80,251 +DA:81,234 +DA:84,274 +DA:85,274 +DA:88,251 LF:20 LH:20 BRDA:57,0,0,2 -BRDA:57,0,1,161 -BRDA:57,1,0,108 -BRDA:57,1,1,53 +BRDA:57,0,1,253 +BRDA:57,1,0,190 +BRDA:57,1,1,63 BRDA:58,2,0,4 -BRDA:58,2,1,159 -BRDA:58,3,0,163 -BRDA:58,3,1,159 -BRDA:58,3,2,159 -BRDA:62,4,0,36 -BRDA:62,4,1,123 -BRDA:66,5,0,159 +BRDA:58,2,1,251 +BRDA:58,3,0,255 +BRDA:58,3,1,251 +BRDA:58,3,2,251 +BRDA:62,4,0,60 +BRDA:62,4,1,191 +BRDA:66,5,0,251 BRDA:66,5,1,0 -BRDA:69,6,0,139 -BRDA:69,6,1,20 -BRDA:71,7,0,135 +BRDA:69,6,0,221 +BRDA:69,6,1,30 +BRDA:71,7,0,217 BRDA:71,7,1,4 -BRDA:80,8,0,142 +BRDA:80,8,0,234 BRDA:80,8,1,17 BRF:19 BRH:18 @@ -46466,34 +46879,34 @@ SF:packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/cursorFeat FN:12,(anonymous_0) FN:31,(anonymous_1) FNF:2 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) +FNH:2 +FNDA:10,(anonymous_0) +FNDA:2,(anonymous_1) DA:1,1 DA:9,1 -DA:13,0 -DA:16,0 -DA:23,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:32,0 +DA:13,10 +DA:16,10 +DA:23,6 +DA:26,4 +DA:27,4 +DA:29,4 +DA:32,2 DA:40,1 LF:10 -LH:3 -BRDA:16,0,0,0 -BRDA:16,0,1,0 -BRDA:17,1,0,0 -BRDA:17,1,1,0 -BRDA:17,1,2,0 -BRDA:17,1,3,0 -BRDA:17,1,4,0 -BRDA:29,2,0,0 -BRDA:29,2,1,0 -BRDA:29,2,2,0 -BRDA:29,2,3,0 +LH:10 +BRDA:16,0,0,6 +BRDA:16,0,1,4 +BRDA:17,1,0,10 +BRDA:17,1,1,8 +BRDA:17,1,2,8 +BRDA:17,1,3,6 +BRDA:17,1,4,6 +BRDA:29,2,0,4 +BRDA:29,2,1,2 +BRDA:29,2,2,3 +BRDA:29,2,3,2 BRF:11 -BRH:0 +BRH:11 end_of_record TN: SF:packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/entityFeatures.ts @@ -48137,19 +48550,19 @@ FN:146,shouldSetIndentation FN:177,isRangeEmpty FN:190,insertTab FNF:12 -FNH:5 +FNH:10 FNDA:5,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) +FNDA:14,(anonymous_1) +FNDA:14,(anonymous_2) +FNDA:2,(anonymous_3) FNDA:4,(anonymous_4) FNDA:1,(anonymous_5) FNDA:1,(anonymous_6) FNDA:0,(anonymous_7) FNDA:0,(anonymous_8) -FNDA:1,shouldSetIndentation -FNDA:0,isRangeEmpty -FNDA:0,insertTab +FNDA:13,shouldSetIndentation +FNDA:21,isRangeEmpty +FNDA:4,insertTab DA:1,1 DA:2,1 DA:26,1 @@ -48160,20 +48573,20 @@ DA:44,5 DA:49,5 DA:55,5 DA:61,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:73,0 -DA:75,0 -DA:76,0 -DA:77,0 -DA:78,0 -DA:83,0 +DA:64,14 +DA:65,14 +DA:66,14 +DA:67,14 +DA:68,2 +DA:70,12 +DA:71,12 +DA:72,12 +DA:73,10 +DA:75,2 +DA:76,2 +DA:77,2 +DA:78,2 +DA:83,14 DA:92,1 DA:95,4 DA:99,3 @@ -48185,45 +48598,45 @@ DA:123,1 DA:126,0 DA:129,0 DA:137,1 -DA:147,1 -DA:149,1 -DA:150,1 -DA:151,1 -DA:152,1 -DA:154,1 +DA:147,13 +DA:149,13 +DA:150,13 +DA:151,13 +DA:152,13 +DA:154,13 DA:155,0 -DA:158,1 -DA:160,1 -DA:163,0 -DA:164,0 -DA:166,0 -DA:167,0 -DA:169,0 -DA:170,0 -DA:173,0 -DA:178,0 -DA:191,0 -DA:192,0 -DA:193,0 +DA:158,13 +DA:160,2 +DA:163,11 +DA:164,11 +DA:166,11 +DA:167,11 +DA:169,11 +DA:170,9 +DA:173,11 +DA:178,21 +DA:191,4 +DA:192,4 +DA:193,4 DA:194,0 -DA:196,0 -DA:197,0 -DA:198,0 -DA:200,0 -DA:201,0 -DA:202,0 -DA:204,0 -DA:205,0 -DA:206,0 -DA:207,0 -DA:208,0 -DA:209,0 -DA:211,0 -DA:216,0 -DA:217,0 -DA:218,0 +DA:196,4 +DA:197,4 +DA:198,4 +DA:200,4 +DA:201,4 +DA:202,19 +DA:204,4 +DA:205,4 +DA:206,1 +DA:207,1 +DA:208,1 +DA:209,1 +DA:211,4 +DA:216,4 +DA:217,4 +DA:218,1 LF:72 -LH:26 +LH:67 BRDA:39,0,0,5 BRDA:39,0,1,0 BRDA:40,1,0,5 @@ -48232,12 +48645,12 @@ BRDA:56,2,0,5 BRDA:56,2,1,4 BRDA:57,3,0,1 BRDA:57,3,1,3 -BRDA:65,4,0,0 +BRDA:65,4,0,14 BRDA:65,4,1,0 -BRDA:67,5,0,0 -BRDA:67,5,1,0 -BRDA:72,6,0,0 -BRDA:72,6,1,0 +BRDA:67,5,0,2 +BRDA:67,5,1,12 +BRDA:72,6,0,10 +BRDA:72,6,1,2 BRDA:95,7,0,3 BRDA:95,7,1,1 BRDA:96,8,0,4 @@ -48248,28 +48661,28 @@ BRDA:102,9,2,3 BRDA:102,9,3,1 BRDA:102,9,4,1 BRDA:154,10,0,0 -BRDA:154,10,1,1 -BRDA:154,11,0,1 -BRDA:154,11,1,1 -BRDA:158,12,0,1 -BRDA:158,12,1,0 -BRDA:169,13,0,0 -BRDA:169,13,1,0 -BRDA:169,14,0,0 -BRDA:169,14,1,0 -BRDA:169,14,2,0 -BRDA:179,15,0,0 -BRDA:179,15,1,0 +BRDA:154,10,1,13 +BRDA:154,11,0,13 +BRDA:154,11,1,13 +BRDA:158,12,0,2 +BRDA:158,12,1,11 +BRDA:169,13,0,9 +BRDA:169,13,1,2 +BRDA:169,14,0,11 +BRDA:169,14,1,11 +BRDA:169,14,2,10 +BRDA:179,15,0,21 +BRDA:179,15,1,19 BRDA:193,16,0,0 -BRDA:193,16,1,0 -BRDA:205,17,0,0 -BRDA:205,17,1,0 -BRDA:205,18,0,0 -BRDA:205,18,1,0 -BRDA:217,19,0,0 -BRDA:217,19,1,0 +BRDA:193,16,1,4 +BRDA:205,17,0,1 +BRDA:205,17,1,3 +BRDA:205,18,0,4 +BRDA:205,18,1,1 +BRDA:217,19,0,1 +BRDA:217,19,1,3 BRF:44 -BRH:20 +BRH:40 end_of_record TN: SF:packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/convertAlphaToDecimals.ts @@ -49131,23 +49544,23 @@ FN:795,isASmallImage FN:801,getColorString FN:808,setFlipped FNF:42 -FNH:38 +FNH:36 FNDA:1,(anonymous_0) FNDA:28,ImageEdit -FNDA:23,(anonymous_2) -FNDA:120,(anonymous_3) +FNDA:0,(anonymous_2) +FNDA:86,(anonymous_3) FNDA:1,(anonymous_4) FNDA:34,(anonymous_5) FNDA:0,(anonymous_6) FNDA:28,(anonymous_7) -FNDA:23,(anonymous_8) +FNDA:0,(anonymous_8) FNDA:0,(anonymous_9) FNDA:28,(anonymous_10) -FNDA:223,(anonymous_11) +FNDA:204,(anonymous_11) FNDA:1,(anonymous_12) FNDA:0,(anonymous_13) -FNDA:79,(anonymous_14) -FNDA:25,(anonymous_15) +FNDA:59,(anonymous_14) +FNDA:10,(anonymous_15) FNDA:8,(anonymous_16) FNDA:2,(anonymous_17) FNDA:34,(anonymous_18) @@ -49156,7 +49569,7 @@ FNDA:220,(anonymous_20) FNDA:35,(anonymous_21) FNDA:96,(anonymous_22) FNDA:176,(anonymous_23) -FNDA:57,(anonymous_24) +FNDA:38,(anonymous_24) FNDA:176,(anonymous_25) FNDA:0,setSize FNDA:34,setWrapperSizeDimensions @@ -49212,7 +49625,7 @@ DA:161,0 DA:168,28 DA:169,28 DA:170,28 -DA:171,23 +DA:171,0 DA:173,0 DA:174,0 DA:183,1 @@ -49221,7 +49634,7 @@ DA:185,28 DA:186,28 DA:187,28 DA:194,1 -DA:195,223 +DA:195,204 DA:197,46 DA:203,46 DA:206,46 @@ -49235,8 +49648,8 @@ DA:223,0 DA:226,0 DA:228,1 DA:229,1 -DA:232,63 -DA:233,63 +DA:232,48 +DA:233,48 DA:237,1 DA:238,1 DA:240,1 @@ -49245,22 +49658,22 @@ DA:246,28 DA:247,28 DA:256,1 DA:257,0 -DA:279,79 -DA:284,79 -DA:285,79 -DA:287,79 -DA:296,29 -DA:299,29 -DA:309,29 -DA:311,29 -DA:313,29 +DA:279,59 +DA:284,59 +DA:285,59 +DA:287,59 +DA:296,10 +DA:299,10 +DA:309,10 +DA:311,10 +DA:313,10 DA:314,0 -DA:317,29 -DA:318,29 -DA:319,29 -DA:320,29 -DA:321,29 -DA:324,79 +DA:317,10 +DA:318,10 +DA:319,10 +DA:320,10 +DA:321,10 +DA:324,59 DA:326,24 DA:327,24 DA:330,24 @@ -49295,7 +49708,7 @@ DA:396,2 DA:397,2 DA:398,2 DA:404,28 -DA:405,23 +DA:405,0 DA:410,34 DA:411,34 DA:413,34 @@ -49333,12 +49746,12 @@ DA:478,35 DA:479,23 DA:485,35 DA:493,28 -DA:494,120 +DA:494,86 DA:495,34 -DA:497,120 -DA:498,78 -DA:504,120 -DA:505,120 +DA:497,86 +DA:498,54 +DA:504,86 +DA:505,86 DA:508,28 DA:509,1 DA:510,1 @@ -49406,7 +49819,7 @@ DA:656,96 DA:659,176 DA:679,1 DA:680,176 -DA:681,57 +DA:681,38 DA:683,1 DA:694,0 DA:695,0 @@ -49456,14 +49869,14 @@ DA:805,0 DA:813,34 DA:814,34 LF:281 -LH:251 +LH:249 BRDA:494,0,0,34 -BRDA:494,0,1,86 -BRDA:497,1,0,78 -BRDA:497,1,1,42 -BRDA:498,2,0,56 +BRDA:494,0,1,52 +BRDA:497,1,0,54 +BRDA:497,1,1,32 +BRDA:498,2,0,32 BRDA:498,2,1,22 -BRDA:498,3,0,78 +BRDA:498,3,0,54 BRDA:498,3,1,22 BRDA:509,4,0,1 BRDA:509,4,1,0 @@ -49525,7 +49938,7 @@ BRDA:196,28,0,46 BRDA:196,28,1,1 BRDA:196,28,2,0 BRDA:196,28,3,1 -BRDA:196,28,4,63 +BRDA:196,28,4,48 BRDA:196,28,5,1 BRDA:196,28,6,28 BRDA:197,29,0,46 @@ -49552,29 +49965,29 @@ BRDA:237,36,1,1 BRDA:237,37,0,1 BRDA:237,37,1,1 BRDA:284,38,0,49 -BRDA:284,38,1,30 +BRDA:284,38,1,10 BRDA:285,39,0,49 -BRDA:285,39,1,30 -BRDA:287,40,0,29 -BRDA:287,40,1,50 -BRDA:288,41,0,79 -BRDA:288,41,1,30 -BRDA:288,41,2,29 -BRDA:288,41,3,29 -BRDA:288,41,4,29 -BRDA:288,41,5,29 -BRDA:304,42,0,29 -BRDA:304,42,1,11 +BRDA:285,39,1,10 +BRDA:287,40,0,10 +BRDA:287,40,1,49 +BRDA:288,41,0,59 +BRDA:288,41,1,10 +BRDA:288,41,2,10 +BRDA:288,41,3,10 +BRDA:288,41,4,10 +BRDA:288,41,5,10 +BRDA:304,42,0,10 +BRDA:304,42,1,10 BRDA:313,43,0,0 -BRDA:313,43,1,29 +BRDA:313,43,1,10 BRDA:324,44,0,24 -BRDA:324,44,1,55 -BRDA:324,45,0,79 -BRDA:324,45,1,54 +BRDA:324,44,1,35 +BRDA:324,45,0,59 +BRDA:324,45,1,34 BRDA:324,45,2,24 -BRDA:324,46,0,30 +BRDA:324,46,0,10 BRDA:324,46,1,24 -BRDA:324,47,0,54 +BRDA:324,47,0,34 BRDA:324,47,1,24 BRDA:336,48,0,24 BRDA:336,48,1,0 @@ -49637,9 +50050,9 @@ BRDA:656,74,1,96 BRDA:670,75,0,176 BRDA:670,75,1,0 BRDA:680,76,0,0 -BRDA:680,76,1,57 -BRDA:680,77,0,57 -BRDA:680,77,1,57 +BRDA:680,76,1,38 +BRDA:680,77,0,38 +BRDA:680,77,1,38 BRDA:694,78,0,0 BRDA:694,78,1,0 BRDA:695,79,0,0 @@ -49904,65 +50317,65 @@ SF:packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/applyCh FN:19,applyChange FNF:1 FNH:1 -FNDA:36,applyChange +FNDA:14,applyChange DA:1,1 DA:2,1 DA:3,1 DA:5,1 DA:19,1 -DA:28,36 -DA:30,36 -DA:31,36 -DA:33,36 -DA:36,16 -DA:37,16 +DA:28,14 +DA:30,14 +DA:31,14 +DA:33,14 +DA:36,4 +DA:37,4 DA:41,0 DA:42,0 -DA:45,20 -DA:46,20 -DA:49,36 -DA:51,36 -DA:54,18 -DA:60,18 -DA:61,18 +DA:45,10 +DA:46,10 +DA:49,14 +DA:51,14 +DA:54,14 +DA:60,14 +DA:61,0 DA:62,0 -DA:67,36 -DA:70,16 -DA:74,20 -DA:78,36 -DA:79,36 -DA:81,36 -DA:82,35 -DA:83,35 -DA:85,35 -DA:86,35 -DA:87,35 -DA:88,35 +DA:67,14 +DA:70,4 +DA:74,10 +DA:78,14 +DA:79,14 +DA:81,14 +DA:82,14 +DA:83,14 +DA:85,14 +DA:86,14 +DA:87,14 +DA:88,14 LF:33 -LH:30 -BRDA:30,0,0,28 -BRDA:30,0,1,8 -BRDA:30,1,0,36 -BRDA:30,1,1,36 -BRDA:34,2,0,16 +LH:29 +BRDA:30,0,0,10 +BRDA:30,0,1,4 +BRDA:30,1,0,14 +BRDA:30,1,1,14 +BRDA:34,2,0,4 BRDA:34,2,1,0 -BRDA:34,2,2,20 -BRDA:45,3,0,20 +BRDA:34,2,2,10 +BRDA:45,3,0,10 BRDA:45,3,1,0 -BRDA:45,4,0,20 -BRDA:45,4,1,20 -BRDA:51,5,0,18 -BRDA:51,5,1,18 +BRDA:45,4,0,10 +BRDA:45,4,1,10 +BRDA:51,5,0,14 +BRDA:51,5,1,0 BRDA:61,6,0,0 -BRDA:61,6,1,18 -BRDA:67,7,0,16 -BRDA:67,7,1,20 -BRDA:81,8,0,35 -BRDA:81,8,1,1 -BRDA:81,9,0,36 -BRDA:81,9,1,11 +BRDA:61,6,1,0 +BRDA:67,7,0,4 +BRDA:67,7,1,10 +BRDA:81,8,0,14 +BRDA:81,8,1,0 +BRDA:81,9,0,14 +BRDA:81,9,1,10 BRF:21 -BRH:18 +BRH:15 end_of_record TN: SF:packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/checkEditInfoState.ts @@ -49978,14 +50391,14 @@ FN:91,areSameNumber FNF:9 FNH:7 FNDA:1,(anonymous_0) -FNDA:101,checkEditInfoState -FNDA:702,(anonymous_2) -FNDA:224,(anonymous_3) -FNDA:20,(anonymous_4) +FNDA:69,checkEditInfoState +FNDA:478,(anonymous_2) +FNDA:144,(anonymous_3) +FNDA:10,(anonymous_4) FNDA:0,(anonymous_5) FNDA:0,(anonymous_6) -FNDA:702,isNumber -FNDA:244,areSameNumber +FNDA:478,isNumber +FNDA:154,areSameNumber DA:4,1 DA:5,1 DA:6,1 @@ -49997,40 +50410,40 @@ DA:32,1 DA:40,1 DA:47,1 DA:60,1 -DA:64,702 +DA:64,478 DA:65,1 -DA:66,100 -DA:67,224 -DA:72,31 -DA:73,69 -DA:75,20 +DA:66,68 +DA:67,144 +DA:72,19 +DA:73,49 +DA:75,10 DA:76,0 DA:77,0 DA:81,0 -DA:83,69 -DA:88,702 -DA:92,244 +DA:83,49 +DA:88,478 +DA:92,154 LF:24 LH:21 BRDA:21,0,0,1 BRDA:21,0,1,1 BRDA:64,1,0,1 -BRDA:64,1,1,100 -BRDA:64,2,0,101 -BRDA:64,2,1,101 -BRDA:64,2,2,101 -BRDA:66,3,0,31 -BRDA:66,3,1,69 -BRDA:67,4,0,100 -BRDA:67,4,1,31 -BRDA:67,4,2,31 -BRDA:67,4,3,31 -BRDA:67,4,4,16 -BRDA:67,4,5,16 +BRDA:64,1,1,68 +BRDA:64,2,0,69 +BRDA:64,2,1,69 +BRDA:64,2,2,69 +BRDA:66,3,0,19 +BRDA:66,3,1,49 +BRDA:67,4,0,68 +BRDA:67,4,1,19 +BRDA:67,4,2,19 +BRDA:67,4,3,19 +BRDA:67,4,4,4 +BRDA:67,4,5,4 BRDA:73,5,0,0 -BRDA:73,5,1,69 -BRDA:74,6,0,69 -BRDA:74,6,1,20 +BRDA:73,5,1,49 +BRDA:74,6,0,49 +BRDA:74,6,1,10 BRDA:74,6,2,0 BRDA:74,6,3,0 BRDA:74,6,4,0 @@ -50046,33 +50459,33 @@ FN:36,getEditInfoFromImage FN:43,getInitialEditInfo FNF:4 FNH:4 -FNDA:29,saveEditInfo -FNDA:18,deleteEditInfo -FNDA:95,getEditInfoFromImage -FNDA:31,getInitialEditInfo +FNDA:19,saveEditInfo +FNDA:6,deleteEditInfo +FNDA:73,getEditInfoFromImage +FNDA:19,getInitialEditInfo DA:1,1 DA:2,1 DA:11,1 -DA:12,29 -DA:13,29 +DA:12,19 +DA:13,19 DA:22,1 -DA:23,18 -DA:24,18 +DA:23,6 +DA:24,6 DA:36,1 -DA:37,95 -DA:38,95 -DA:44,31 +DA:37,73 +DA:38,73 +DA:44,19 LF:12 LH:12 -BRDA:12,0,0,29 +BRDA:12,0,0,19 BRDA:12,0,1,0 -BRDA:23,1,0,18 +BRDA:23,1,0,6 BRDA:23,1,1,0 -BRDA:39,2,0,31 -BRDA:39,2,1,64 -BRDA:38,3,0,95 -BRDA:38,3,1,65 -BRDA:45,4,0,31 +BRDA:39,2,0,19 +BRDA:39,2,1,54 +BRDA:38,3,0,73 +BRDA:38,3,1,55 +BRDA:45,4,0,19 BRDA:45,4,1,1 BRF:10 BRH:8 @@ -50082,35 +50495,35 @@ SF:packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/generat FN:15,generateDataURL FNF:1 FNH:1 -FNDA:20,generateDataURL +FNDA:10,generateDataURL DA:1,1 DA:15,1 -DA:26,180 -DA:27,20 -DA:28,20 -DA:31,20 -DA:32,20 -DA:33,20 -DA:34,20 -DA:35,20 -DA:37,20 -DA:38,20 -DA:39,20 -DA:40,20 -DA:41,20 -DA:42,20 -DA:43,20 -DA:56,20 +DA:26,90 +DA:27,10 +DA:28,10 +DA:31,10 +DA:32,10 +DA:33,10 +DA:34,10 +DA:35,10 +DA:37,10 +DA:38,10 +DA:39,10 +DA:40,10 +DA:41,10 +DA:42,10 +DA:43,10 +DA:56,10 LF:18 LH:18 -BRDA:31,0,0,20 +BRDA:31,0,0,10 BRDA:31,0,1,0 -BRDA:38,1,0,20 +BRDA:38,1,0,10 BRDA:38,1,1,0 -BRDA:42,2,0,8 -BRDA:42,2,1,12 -BRDA:42,3,0,8 -BRDA:42,3,1,12 +BRDA:42,2,0,4 +BRDA:42,2,1,6 +BRDA:42,3,0,4 +BRDA:42,3,1,6 BRF:8 BRH:6 end_of_record @@ -50119,22 +50532,22 @@ SF:packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getGene FN:16,getGeneratedImageSize FNF:1 FNH:1 -FNDA:90,getGeneratedImageSize +FNDA:58,getGeneratedImageSize DA:16,1 -DA:28,630 -DA:31,90 -DA:32,90 -DA:35,90 -DA:36,90 -DA:40,90 -DA:42,90 -DA:44,90 +DA:28,406 +DA:31,58 +DA:32,58 +DA:35,58 +DA:36,58 +DA:40,58 +DA:42,58 +DA:44,58 LF:9 LH:9 BRDA:35,0,0,0 -BRDA:35,0,1,90 +BRDA:35,0,1,58 BRDA:36,1,0,0 -BRDA:36,1,1,90 +BRDA:36,1,1,58 BRF:4 BRH:2 end_of_record @@ -50170,12 +50583,12 @@ SF:packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getTarg FN:11,getTargetSizeByPercentage FNF:1 FNH:1 -FNDA:17,getTargetSizeByPercentage +FNDA:13,getTargetSizeByPercentage DA:11,1 -DA:22,102 -DA:23,17 -DA:24,17 -DA:25,17 +DA:22,78 +DA:23,13 +DA:24,13 +DA:25,13 LF:5 LH:5 BRF:0 @@ -50659,8 +51072,8 @@ FNDA:15,Paste FNDA:1,(anonymous_2) FNDA:15,(anonymous_3) FNDA:8,(anonymous_4) -FNDA:55,(anonymous_5) -FNDA:14,sanitizeBlockStyles +FNDA:51,(anonymous_5) +FNDA:13,sanitizeBlockStyles FNDA:0,(anonymous_7) DA:1,1 DA:2,1 @@ -50684,12 +51097,12 @@ DA:54,15 DA:60,1 DA:61,8 DA:68,1 -DA:69,55 -DA:70,28 -DA:71,14 -DA:73,14 -DA:76,2 -DA:77,2 +DA:69,51 +DA:70,26 +DA:71,13 +DA:73,13 +DA:76,1 +DA:77,1 DA:80,5 DA:85,3 DA:87,5 @@ -50704,12 +51117,12 @@ DA:99,1 DA:101,1 DA:102,1 DA:103,1 -DA:105,14 -DA:106,14 -DA:107,14 -DA:110,14 +DA:105,13 +DA:106,13 +DA:107,13 +DA:110,13 DA:113,1 -DA:116,14 +DA:116,13 DA:117,0 LF:49 LH:48 @@ -50717,11 +51130,11 @@ BRDA:38,0,0,6 BRDA:38,0,1,9 BRDA:39,1,0,15 BRDA:39,1,1,0 -BRDA:69,2,0,14 -BRDA:69,2,1,41 -BRDA:69,3,0,55 -BRDA:69,3,1,55 -BRDA:74,4,0,2 +BRDA:69,2,0,13 +BRDA:69,2,1,38 +BRDA:69,3,0,51 +BRDA:69,3,1,51 +BRDA:74,4,0,1 BRDA:74,4,1,3 BRDA:74,4,2,5 BRDA:74,4,3,1 @@ -51413,14 +51826,14 @@ FN:13,(anonymous_1) FN:17,(anonymous_2) FNF:3 FNH:3 -FNDA:11,sanitizeHtmlColorsFromPastedContent -FNDA:22,(anonymous_1) +FNDA:10,sanitizeHtmlColorsFromPastedContent +FNDA:20,(anonymous_1) FNDA:19,(anonymous_2) DA:1,1 DA:2,1 DA:10,1 -DA:13,11 -DA:14,22 +DA:13,10 +DA:14,20 DA:17,19 LF:6 LH:6 @@ -51434,13 +51847,13 @@ FN:15,(anonymous_1) FN:19,validateLink FNF:3 FNH:3 -FNDA:20,sanitizeLinks +FNDA:19,sanitizeLinks FNDA:6,(anonymous_1) FNDA:6,validateLink DA:1,1 DA:4,1 DA:11,1 -DA:12,20 +DA:12,19 DA:15,6 DA:21,6 DA:22,6 @@ -51463,9 +51876,9 @@ SF:packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/LevelLists. FN:22,createLevelLists FNF:1 FNH:1 -FNDA:15,createLevelLists +FNDA:14,createLevelLists DA:22,1 -DA:23,15 +DA:23,14 LF:2 LH:2 BRF:0 @@ -51476,10 +51889,10 @@ SF:packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordConvert FN:46,createWordConverterArguments FNF:1 FNH:1 -FNDA:12,createWordConverterArguments +FNDA:11,createWordConverterArguments DA:1,1 DA:46,1 -DA:49,12 +DA:49,11 LF:3 LH:3 BRF:0 @@ -51493,13 +51906,13 @@ FN:52,getObject FN:66,getAndSetNodeId FNF:4 FNH:4 -FNDA:23,createCustomData +FNDA:22,createCustomData FNDA:9,setObject FNDA:11,getObject FNDA:19,getAndSetNodeId DA:4,1 DA:22,1 -DA:23,23 +DA:23,22 DA:33,1 DA:35,9 DA:36,9 @@ -51548,11 +51961,11 @@ FN:96,(anonymous_4) FN:96,(anonymous_5) FNF:6 FNH:6 -FNDA:20,commentsRemoval +FNDA:19,commentsRemoval FNDA:6,(anonymous_1) FNDA:3,(anonymous_2) FNDA:3,(anonymous_3) -FNDA:100,(anonymous_4) +FNDA:95,(anonymous_4) FNDA:9,(anonymous_5) DA:2,1 DA:9,1 @@ -51566,22 +51979,22 @@ DA:16,1 DA:17,1 DA:18,1 DA:24,1 -DA:41,20 +DA:41,19 DA:42,6 DA:43,6 DA:44,1 DA:46,6 -DA:56,20 +DA:56,19 DA:57,3 DA:61,1 DA:63,3 -DA:78,20 +DA:78,19 DA:79,3 DA:80,3 DA:81,1 DA:83,3 -DA:90,20 -DA:96,100 +DA:90,19 +DA:96,95 LF:28 LH:28 BRDA:43,0,0,1 @@ -51611,12 +52024,12 @@ FN:41,(anonymous_2) FN:42,(anonymous_3) FN:52,(anonymous_4) FNF:5 -FNH:5 -FNDA:20,convertPastedContentFromWord -FNDA:2,(anonymous_1) -FNDA:40,(anonymous_2) +FNH:4 +FNDA:19,convertPastedContentFromWord +FNDA:0,(anonymous_1) +FNDA:38,(anonymous_2) FNDA:14,(anonymous_3) -FNDA:6,(anonymous_4) +FNDA:4,(anonymous_4) DA:1,1 DA:2,1 DA:3,1 @@ -51626,40 +52039,40 @@ DA:8,1 DA:9,1 DA:10,1 DA:16,1 -DA:17,40 -DA:20,20 -DA:21,2 -DA:22,2 -DA:23,2 -DA:26,20 -DA:31,20 -DA:32,20 -DA:33,12 -DA:34,12 +DA:17,38 +DA:20,19 +DA:21,0 +DA:22,0 +DA:23,0 +DA:26,19 +DA:31,19 +DA:32,19 +DA:33,11 +DA:34,11 DA:35,4 -DA:41,20 -DA:42,40 +DA:41,19 +DA:42,38 DA:43,14 DA:44,3 DA:47,14 -DA:52,20 -DA:54,6 -DA:59,3 +DA:52,19 +DA:54,4 +DA:59,1 DA:61,3 -DA:64,20 +DA:64,19 LF:30 -LH:30 -BRDA:32,0,0,12 +LH:27 +BRDA:32,0,0,11 BRDA:32,0,1,8 BRDA:34,1,0,4 -BRDA:34,1,1,8 +BRDA:34,1,1,7 BRDA:43,2,0,3 BRDA:43,2,1,11 -BRDA:54,3,0,3 +BRDA:54,3,0,1 BRDA:54,3,1,3 -BRDA:55,4,0,6 -BRDA:55,4,1,4 -BRDA:55,4,2,4 +BRDA:55,4,0,4 +BRDA:55,4,1,2 +BRDA:55,4,2,2 BRF:11 BRH:11 end_of_record @@ -51686,14 +52099,14 @@ FN:551,isEmptyTextNode FN:579,resetCurrentLists FNF:19 FNH:18 -FNDA:12,processNodesDiscovery +FNDA:11,processNodesDiscovery FNDA:4,processNodeConvert FNDA:8,getOrCreateListForNode FNDA:8,convertListIfNeeded FNDA:13,recurringGetOrCreateListAtNode FNDA:40,cleanupListIgnore FNDA:24,(anonymous_6) -FNDA:17,getListItemMetadata +FNDA:15,getListItemMetadata FNDA:7,isFakeBullet FNDA:7,getFakeBulletTagName FNDA:8,getFakeBulletText @@ -51702,7 +52115,7 @@ FNDA:12,getRealPreviousSibling FNDA:24,getRealNextSibling FNDA:48,isIgnoreNode FNDA:56,isEmptySpan -FNDA:41,getStyleValue +FNDA:39,getStyleValue FNDA:48,isEmptyTextNode FNDA:0,resetCurrentLists DA:1,1 @@ -51713,13 +52126,13 @@ DA:14,1 DA:17,1 DA:20,1 DA:29,1 -DA:30,12 -DA:31,12 +DA:30,11 +DA:31,11 DA:32,0 -DA:34,12 -DA:35,17 -DA:38,17 -DA:39,17 +DA:34,11 +DA:35,15 +DA:38,15 +DA:39,15 DA:41,8 DA:42,8 DA:45,8 @@ -51744,14 +52157,14 @@ DA:112,8 DA:115,8 DA:116,8 DA:119,8 -DA:126,9 -DA:127,9 +DA:126,7 +DA:127,7 DA:134,0 DA:135,0 DA:136,0 DA:139,0 -DA:144,17 -DA:146,12 +DA:144,15 +DA:146,11 DA:155,1 DA:156,4 DA:157,4 @@ -51821,14 +52234,14 @@ DA:337,56 DA:340,56 DA:341,24 DA:346,40 -DA:354,17 -DA:355,17 -DA:356,17 +DA:354,15 +DA:355,15 +DA:356,15 DA:357,8 DA:366,8 DA:367,8 DA:368,8 -DA:378,9 +DA:378,7 DA:382,7 DA:387,7 DA:405,8 @@ -51887,7 +52300,7 @@ DA:524,24 DA:529,16 DA:533,32 DA:538,56 -DA:547,41 +DA:547,39 DA:553,48 DA:554,0 DA:558,48 @@ -51905,9 +52318,9 @@ DA:583,0 LF:197 LH:164 BRDA:31,0,0,0 -BRDA:31,0,1,12 +BRDA:31,0,1,11 BRDA:39,1,0,8 -BRDA:39,1,1,9 +BRDA:39,1,1,7 BRDA:41,2,0,8 BRDA:41,2,1,3 BRDA:45,3,0,0 @@ -51933,8 +52346,8 @@ BRDA:91,11,3,0 BRDA:105,12,0,0 BRDA:105,12,1,8 BRDA:127,13,0,0 -BRDA:127,13,1,9 -BRDA:128,14,0,9 +BRDA:127,13,1,7 +BRDA:128,14,0,7 BRDA:128,14,1,0 BRDA:128,14,2,0 BRDA:128,14,3,0 @@ -52023,11 +52436,11 @@ BRDA:340,54,0,24 BRDA:340,54,1,32 BRDA:340,55,0,56 BRDA:340,55,1,40 -BRDA:354,56,0,17 +BRDA:354,56,0,15 BRDA:354,56,1,0 BRDA:356,57,0,8 -BRDA:356,57,1,9 -BRDA:356,58,0,17 +BRDA:356,57,1,7 +BRDA:356,58,0,15 BRDA:356,58,1,8 BRDA:367,59,0,8 BRDA:367,59,1,0 @@ -52116,8 +52529,8 @@ BRDA:525,100,1,16 BRDA:525,100,2,16 BRDA:538,101,0,56 BRDA:538,101,1,32 -BRDA:547,102,0,41 -BRDA:547,102,1,17 +BRDA:547,102,0,39 +BRDA:547,102,1,15 BRDA:553,103,0,0 BRDA:553,103,1,48 BRDA:558,104,0,0 @@ -52150,10 +52563,10 @@ SF:packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/wordConvert FN:30,createWordConverter FNF:1 FNH:1 -FNDA:20,createWordConverter +FNDA:19,createWordConverter DA:1,1 DA:30,1 -DA:31,20 +DA:31,19 LF:3 LH:3 BRF:0 diff --git a/coverage/roosterjs-color-utils/lib/index.html b/coverage/roosterjs-color-utils/lib/index.html index ea8dffce6c5..7925bf27be0 100644 --- a/coverage/roosterjs-color-utils/lib/index.html +++ b/coverage/roosterjs-color-utils/lib/index.html @@ -95,7 +95,7 @@

All files roosterjs-color-utils/lib

diff --git a/coverage/roosterjs-color-utils/lib/index.ts.html b/coverage/roosterjs-color-utils/lib/index.ts.html index 1f821d0ad57..6b2cbbad186 100644 --- a/coverage/roosterjs-color-utils/lib/index.ts.html +++ b/coverage/roosterjs-color-utils/lib/index.ts.html @@ -58,7 +58,7 @@

All files / roosterjs-co
1 -217x +213x  
export { default as getDarkColor } from './utils/getDarkColor';
  
@@ -67,7 +67,7 @@

All files / roosterjs-co diff --git a/coverage/roosterjs-color-utils/lib/utils/getDarkColor.ts.html b/coverage/roosterjs-color-utils/lib/utils/getDarkColor.ts.html index 06eaef8da03..2eb2d9349d9 100644 --- a/coverage/roosterjs-color-utils/lib/utils/getDarkColor.ts.html +++ b/coverage/roosterjs-color-utils/lib/utils/getDarkColor.ts.html @@ -139,7 +139,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-color-utils/lib/utils/index.html b/coverage/roosterjs-color-utils/lib/utils/index.html index 15c1fe4586b..1fe94a4d310 100644 --- a/coverage/roosterjs-color-utils/lib/utils/index.html +++ b/coverage/roosterjs-color-utils/lib/utils/index.html @@ -95,7 +95,7 @@

All files roosterjs-color-utils/lib/utils< diff --git a/coverage/roosterjs-content-model-api/lib/index.html b/coverage/roosterjs-content-model-api/lib/index.html index 20304e6c2f0..9fbedf58eed 100644 --- a/coverage/roosterjs-content-model-api/lib/index.html +++ b/coverage/roosterjs-content-model-api/lib/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-api/lib

Code coverage generated by istanbul - at Tue Apr 16 2024 17:17:51 GMT+0000 (Coordinated Universal Time) + at Tue Apr 16 2024 17:40:39 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/roosterjs-content-model-api/lib/index.ts.html b/coverage/roosterjs-content-model-api/lib/index.ts.html index ac7cedee86e..1f2dcc3832d 100644 --- a/coverage/roosterjs-content-model-api/lib/index.ts.html +++ b/coverage/roosterjs-content-model-api/lib/index.ts.html @@ -165,7 +165,7 @@

All files / roosterjs-co 1x 1x 1x -39x +100x   6x 6x @@ -238,7 +238,7 @@

All files / roosterjs-co diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/block/index.html b/coverage/roosterjs-content-model-api/lib/modelApi/block/index.html index 1d9fd25b057..c4e7bc2a7d9 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/block/index.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/block/index.html @@ -140,7 +140,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/block/setModelAlignment.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/block/setModelAlignment.ts.html index 483afc3ee4d..42643750a3a 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/block/setModelAlignment.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/block/setModelAlignment.ts.html @@ -310,7 +310,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/block/setModelDirection.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/block/setModelDirection.ts.html index 88221a49140..707547bd639 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/block/setModelDirection.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/block/setModelDirection.ts.html @@ -361,7 +361,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/block/setModelIndentation.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/block/setModelIndentation.ts.html index 4258da0d92c..8bcbd7b3144 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/block/setModelIndentation.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/block/setModelIndentation.ts.html @@ -592,7 +592,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/block/toggleModelBlockQuote.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/block/toggleModelBlockQuote.ts.html index 008e81f4ba7..383c5f053d0 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/block/toggleModelBlockQuote.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/block/toggleModelBlockQuote.ts.html @@ -316,7 +316,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/common/clearModelFormat.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/common/clearModelFormat.ts.html index 94fdb87ae2a..b82a26b08e1 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/common/clearModelFormat.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/common/clearModelFormat.ts.html @@ -637,7 +637,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/common/index.html b/coverage/roosterjs-content-model-api/lib/modelApi/common/index.html index 518bd8bd5b7..16f255e4074 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/common/index.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/common/index.html @@ -125,7 +125,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/common/reducedModelChildProcessor.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/common/reducedModelChildProcessor.ts.html index c155d2bcaaf..36ff3e9da00 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/common/reducedModelChildProcessor.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/common/reducedModelChildProcessor.ts.html @@ -340,7 +340,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/common/wrapBlock.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/common/wrapBlock.ts.html index d9192958ac7..8f75758341a 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/common/wrapBlock.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/common/wrapBlock.ts.html @@ -277,7 +277,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/entity/index.html b/coverage/roosterjs-content-model-api/lib/modelApi/entity/index.html index 2a8254b7b32..fbbb0cf33f6 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/entity/index.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/entity/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/entity/insertEntityModel.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/entity/insertEntityModel.ts.html index 8f0190fe610..a540407ddcf 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/entity/insertEntityModel.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/entity/insertEntityModel.ts.html @@ -451,7 +451,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/image/applyImageBorderFormat.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/image/applyImageBorderFormat.ts.html index 05f185d8007..816cbdb61da 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/image/applyImageBorderFormat.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/image/applyImageBorderFormat.ts.html @@ -235,7 +235,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/image/index.html b/coverage/roosterjs-content-model-api/lib/modelApi/image/index.html index ce67525ce8b..50de7d15028 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/image/index.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/image/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/link/index.html b/coverage/roosterjs-content-model-api/lib/modelApi/link/index.html index e86412c8f17..b9e221e0fea 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/link/index.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/link/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/link/matchLink.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/link/matchLink.ts.html index 3fdf672d305..d5919374d5f 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/link/matchLink.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/link/matchLink.ts.html @@ -346,7 +346,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/list/findListItemsInSameThread.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/list/findListItemsInSameThread.ts.html index 5ab236033a2..1f9fb2bb48f 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/list/findListItemsInSameThread.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/list/findListItemsInSameThread.ts.html @@ -511,7 +511,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/list/index.html b/coverage/roosterjs-content-model-api/lib/modelApi/list/index.html index 024df9d6edf..68774a6b85c 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/list/index.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/list/index.html @@ -140,7 +140,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/list/setListType.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/list/setListType.ts.html index 141f7930413..652bae84993 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/list/setListType.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/list/setListType.ts.html @@ -493,7 +493,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/list/setModelListStartNumber.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/list/setModelListStartNumber.ts.html index 5a597045001..1ba1e520775 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/list/setModelListStartNumber.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/list/setModelListStartNumber.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/list/setModelListStyle.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/list/setModelListStyle.ts.html index 2b7e7707335..8f8682e30da 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/list/setModelListStyle.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/list/setModelListStyle.ts.html @@ -142,7 +142,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/selection/adjustSegmentSelection.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/selection/adjustSegmentSelection.ts.html index e8ba570de47..bcdb6b622e5 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/selection/adjustSegmentSelection.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/selection/adjustSegmentSelection.ts.html @@ -223,7 +223,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/selection/adjustTrailingSpaceSelection.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/selection/adjustTrailingSpaceSelection.ts.html index 9ef274350e4..9d13d47123b 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/selection/adjustTrailingSpaceSelection.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/selection/adjustTrailingSpaceSelection.ts.html @@ -289,7 +289,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/selection/adjustWordSelection.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/selection/adjustWordSelection.ts.html index 9dac801c2a3..f0a053464e0 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/selection/adjustWordSelection.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/selection/adjustWordSelection.ts.html @@ -511,7 +511,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/selection/collapseTableSelection.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/selection/collapseTableSelection.ts.html index 99e6b235493..1e2fc14354d 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/selection/collapseTableSelection.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/selection/collapseTableSelection.ts.html @@ -121,7 +121,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/selection/index.html b/coverage/roosterjs-content-model-api/lib/modelApi/selection/index.html index f5d9ae0305f..7e0e054a423 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/selection/index.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/selection/index.html @@ -140,7 +140,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/alignTable.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/alignTable.ts.html index cce0d321f9e..b7e4c88c593 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/alignTable.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/alignTable.ts.html @@ -97,7 +97,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/alignTableCell.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/alignTableCell.ts.html index 37288ced39e..4df8f49ebdb 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/alignTableCell.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/alignTableCell.ts.html @@ -313,7 +313,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/canMergeCells.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/canMergeCells.ts.html index ce5c3777892..e594530c73e 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/canMergeCells.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/canMergeCells.ts.html @@ -271,7 +271,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/clearSelectedCells.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/clearSelectedCells.ts.html index ada2cd65887..2df305e5565 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/clearSelectedCells.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/clearSelectedCells.ts.html @@ -139,7 +139,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/createTableStructure.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/createTableStructure.ts.html index 51dbf518f9b..d3e64ad11ba 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/createTableStructure.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/createTableStructure.ts.html @@ -139,7 +139,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/deleteTable.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/deleteTable.ts.html index a407b8603c8..87dcc02c8e7 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/deleteTable.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/deleteTable.ts.html @@ -91,7 +91,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/deleteTableColumn.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/deleteTableColumn.ts.html index 1c8168ddbc0..a1fe5dfcc05 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/deleteTableColumn.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/deleteTableColumn.ts.html @@ -151,7 +151,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/deleteTableRow.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/deleteTableRow.ts.html index d2e84840a2f..067352a0420 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/deleteTableRow.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/deleteTableRow.ts.html @@ -136,7 +136,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/ensureFocusableParagraphForTable.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/ensureFocusableParagraphForTable.ts.html index c84dd819199..40875790943 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/ensureFocusableParagraphForTable.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/ensureFocusableParagraphForTable.ts.html @@ -286,7 +286,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/index.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/index.html index d0f79d2ba43..362ed5796c3 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/index.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/index.html @@ -320,7 +320,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/insertTableColumn.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/insertTableColumn.ts.html index 582f3451d44..a1a66e93384 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/insertTableColumn.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/insertTableColumn.ts.html @@ -196,7 +196,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/insertTableRow.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/insertTableRow.ts.html index 4dc8c8ccdbc..4ce3af49be6 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/insertTableRow.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/insertTableRow.ts.html @@ -181,7 +181,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/mergeTableCells.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/mergeTableCells.ts.html index 8707ea30b0e..ac6b667cbf3 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/mergeTableCells.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/mergeTableCells.ts.html @@ -154,7 +154,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/mergeTableColumn.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/mergeTableColumn.ts.html index 1266eb6e56a..13cac8fcea0 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/mergeTableColumn.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/mergeTableColumn.ts.html @@ -235,7 +235,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/mergeTableRow.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/mergeTableRow.ts.html index 6e3573699af..1a14bb1617e 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/mergeTableRow.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/mergeTableRow.ts.html @@ -217,7 +217,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/splitTableCellHorizontally.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/splitTableCellHorizontally.ts.html index 0a99881c984..45e227901e5 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/splitTableCellHorizontally.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/splitTableCellHorizontally.ts.html @@ -244,7 +244,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/modelApi/table/splitTableCellVertically.ts.html b/coverage/roosterjs-content-model-api/lib/modelApi/table/splitTableCellVertically.ts.html index f475c784d79..2645ea6e18d 100644 --- a/coverage/roosterjs-content-model-api/lib/modelApi/table/splitTableCellVertically.ts.html +++ b/coverage/roosterjs-content-model-api/lib/modelApi/table/splitTableCellVertically.ts.html @@ -271,7 +271,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/block/index.html b/coverage/roosterjs-content-model-api/lib/publicApi/block/index.html index 2ab4e2c17d3..20fc7b8dbe4 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/block/index.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/block/index.html @@ -185,7 +185,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/block/setAlignment.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/block/setAlignment.ts.html index 55b8ca8985f..32df30baf8e 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/block/setAlignment.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/block/setAlignment.ts.html @@ -109,7 +109,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/block/setDirection.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/block/setDirection.ts.html index afb86266a95..161b2b70028 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/block/setDirection.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/block/setDirection.ts.html @@ -109,7 +109,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/block/setHeadingLevel.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/block/setHeadingLevel.ts.html index 8c1fc467f4e..d8929583a38 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/block/setHeadingLevel.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/block/setHeadingLevel.ts.html @@ -238,7 +238,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/block/setIndentation.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/block/setIndentation.ts.html index 346ff669912..de2b355b3a2 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/block/setIndentation.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/block/setIndentation.ts.html @@ -166,7 +166,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/block/setParagraphMargin.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/block/setParagraphMargin.ts.html index 966a5af0e3c..a5c907db04e 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/block/setParagraphMargin.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/block/setParagraphMargin.ts.html @@ -172,7 +172,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/block/setSpacing.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/block/setSpacing.ts.html index a90ed7e36bd..8ca066cb421 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/block/setSpacing.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/block/setSpacing.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/block/toggleBlockQuote.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/block/toggleBlockQuote.ts.html index f3e12a23952..45cbc1cc702 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/block/toggleBlockQuote.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/block/toggleBlockQuote.ts.html @@ -229,7 +229,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/entity/index.html b/coverage/roosterjs-content-model-api/lib/publicApi/entity/index.html index 59c0aad18b7..88ed346ff6c 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/entity/index.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/entity/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/entity/insertEntity.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/entity/insertEntity.ts.html index a8327177af8..c16f1e99a6d 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/entity/insertEntity.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/entity/insertEntity.ts.html @@ -526,7 +526,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/format/clearFormat.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/format/clearFormat.ts.html index 6ff081eea54..62358b1d693 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/format/clearFormat.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/format/clearFormat.ts.html @@ -172,7 +172,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/format/getFormatState.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/format/getFormatState.ts.html index 07022c89e86..14b9111a9e4 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/format/getFormatState.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/format/getFormatState.ts.html @@ -166,7 +166,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/format/index.html b/coverage/roosterjs-content-model-api/lib/publicApi/format/index.html index f78bcd3768d..ec13cd52c09 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/format/index.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/format/index.html @@ -110,7 +110,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/image/adjustImageSelection.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/image/adjustImageSelection.ts.html index 18284039db7..ceedf4269fc 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/image/adjustImageSelection.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/image/adjustImageSelection.ts.html @@ -157,7 +157,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/image/changeImage.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/image/changeImage.ts.html index 80fc3857bfa..df250678e31 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/image/changeImage.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/image/changeImage.ts.html @@ -169,7 +169,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/image/index.html b/coverage/roosterjs-content-model-api/lib/publicApi/image/index.html index 1332f80c5a6..cd4a72422cb 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/image/index.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/image/index.html @@ -170,7 +170,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/image/insertImage.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/image/insertImage.ts.html index d0597d04fd4..0b5ae55cf80 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/image/insertImage.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/image/insertImage.ts.html @@ -202,7 +202,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/image/setImageAltText.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/image/setImageAltText.ts.html index 06bd248bf98..7526ab55076 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/image/setImageAltText.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/image/setImageAltText.ts.html @@ -112,7 +112,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/image/setImageBorder.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/image/setImageBorder.ts.html index 4408f2b6ed6..480c10e058d 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/image/setImageBorder.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/image/setImageBorder.ts.html @@ -118,7 +118,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/image/setImageBoxShadow.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/image/setImageBoxShadow.ts.html index f9ecde03508..903f7f4f307 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/image/setImageBoxShadow.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/image/setImageBoxShadow.ts.html @@ -145,7 +145,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/link/adjustLinkSelection.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/link/adjustLinkSelection.ts.html index d0392761a83..cc7efdd0eab 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/link/adjustLinkSelection.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/link/adjustLinkSelection.ts.html @@ -196,7 +196,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/link/index.html b/coverage/roosterjs-content-model-api/lib/publicApi/link/index.html index fb3db0cb3da..a79f236ce48 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/link/index.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/link/index.html @@ -125,7 +125,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/link/insertLink.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/link/insertLink.ts.html index 9a82cd45b3b..3d490dc5e7a 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/link/insertLink.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/link/insertLink.ts.html @@ -538,7 +538,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/link/removeLink.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/link/removeLink.ts.html index dcf88ae10e5..55330f15b6f 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/link/removeLink.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/link/removeLink.ts.html @@ -187,7 +187,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/list/index.html b/coverage/roosterjs-content-model-api/lib/publicApi/list/index.html index 110b2dac524..3fd00310cfc 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/list/index.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/list/index.html @@ -140,7 +140,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/list/setListStartNumber.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/list/setListStartNumber.ts.html index 1d49f9ecbec..7d0fc1d50f7 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/list/setListStartNumber.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/list/setListStartNumber.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/list/setListStyle.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/list/setListStyle.ts.html index 4c42d3736de..f15e5f89c61 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/list/setListStyle.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/list/setListStyle.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/list/toggleBullet.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/list/toggleBullet.ts.html index a7ead071010..71614e8a6e9 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/list/toggleBullet.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/list/toggleBullet.ts.html @@ -136,7 +136,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/list/toggleNumbering.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/list/toggleNumbering.ts.html index 17e57f3f1ab..5fadb1d9e37 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/list/toggleNumbering.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/list/toggleNumbering.ts.html @@ -136,7 +136,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/applySegmentFormat.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/applySegmentFormat.ts.html index ea974f9607a..6e99546fbac 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/applySegmentFormat.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/applySegmentFormat.ts.html @@ -145,7 +145,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/changeCapitalization.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/changeCapitalization.ts.html index b69cd30ad5c..2a44128fd5e 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/changeCapitalization.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/changeCapitalization.ts.html @@ -238,7 +238,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/changeFontSize.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/changeFontSize.ts.html index 7ac959c7970..ed0f84fadb1 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/changeFontSize.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/changeFontSize.ts.html @@ -295,7 +295,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/index.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/index.html index 141d981f259..9ea2ce12c77 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/index.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/index.html @@ -290,7 +290,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/setBackgroundColor.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/setBackgroundColor.ts.html index 288d7d6d966..542ecbcab94 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/setBackgroundColor.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/setBackgroundColor.ts.html @@ -196,7 +196,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/setFontName.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/setFontName.ts.html index 7d98580634b..edd47d50efb 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/setFontName.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/setFontName.ts.html @@ -139,7 +139,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/setFontSize.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/setFontSize.ts.html index 70262c769d9..5a88895a863 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/setFontSize.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/setFontSize.ts.html @@ -208,7 +208,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/setTextColor.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/setTextColor.ts.html index 181f903b5f3..2326274cc86 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/setTextColor.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/setTextColor.ts.html @@ -163,7 +163,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleBold.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleBold.ts.html index 7a793de3c19..23c0032860b 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleBold.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleBold.ts.html @@ -139,7 +139,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleCode.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleCode.ts.html index 2434f626da4..7e7212bd602 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleCode.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleCode.ts.html @@ -160,7 +160,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleItalic.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleItalic.ts.html index 15ba972d5d0..1be02476ddb 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleItalic.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleItalic.ts.html @@ -121,7 +121,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleStrikethrough.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleStrikethrough.ts.html index c0787e40be9..ad98a323182 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleStrikethrough.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleStrikethrough.ts.html @@ -121,7 +121,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleSubscript.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleSubscript.ts.html index 9fe3ec6f68e..5739e07f3ef 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleSubscript.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleSubscript.ts.html @@ -121,7 +121,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleSuperscript.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleSuperscript.ts.html index 5e3ae11106e..3f67dc2a6d4 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleSuperscript.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleSuperscript.ts.html @@ -121,7 +121,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleUnderline.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleUnderline.ts.html index ed9dd78b515..3852e25a57d 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleUnderline.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/segment/toggleUnderline.ts.html @@ -142,7 +142,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/table/applyTableBorderFormat.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/table/applyTableBorderFormat.ts.html index 05e829658fd..e361411845f 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/table/applyTableBorderFormat.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/table/applyTableBorderFormat.ts.html @@ -1414,7 +1414,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/table/editTable.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/table/editTable.ts.html index c26fe0fcf34..93e35e60386 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/table/editTable.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/table/editTable.ts.html @@ -334,7 +334,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/table/formatTable.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/table/formatTable.ts.html index 4b51b486544..54e0f9dfeee 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/table/formatTable.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/table/formatTable.ts.html @@ -193,7 +193,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/table/index.html b/coverage/roosterjs-content-model-api/lib/publicApi/table/index.html index 6f361484ccf..7b6ea480279 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/table/index.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/table/index.html @@ -155,7 +155,7 @@

All files roosterjs-content-model-api/l diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/table/insertTable.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/table/insertTable.ts.html index 1ad997b34fd..c68272f3342 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/table/insertTable.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/table/insertTable.ts.html @@ -256,7 +256,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/table/setTableCellShade.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/table/setTableCellShade.ts.html index dd5831037bb..7f419478241 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/table/setTableCellShade.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/table/setTableCellShade.ts.html @@ -187,7 +187,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatImageWithContentModel.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatImageWithContentModel.ts.html index 2f25d5dede8..170fcefdbc1 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatImageWithContentModel.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatImageWithContentModel.ts.html @@ -142,7 +142,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatInsertPointWithContentModel.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatInsertPointWithContentModel.ts.html index 50bad4cdff7..41aa1a1319b 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatInsertPointWithContentModel.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatInsertPointWithContentModel.ts.html @@ -748,7 +748,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatParagraphWithContentModel.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatParagraphWithContentModel.ts.html index 92c6be60768..1831f7a4894 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatParagraphWithContentModel.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatParagraphWithContentModel.ts.html @@ -148,7 +148,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatSegmentWithContentModel.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatSegmentWithContentModel.ts.html index c87f5fe7f1b..262c778abb1 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatSegmentWithContentModel.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatSegmentWithContentModel.ts.html @@ -334,7 +334,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatTableWithContentModel.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatTableWithContentModel.ts.html index 32e900ce48b..48a8ee629f9 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatTableWithContentModel.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatTableWithContentModel.ts.html @@ -250,7 +250,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatTextSegmentBeforeSelectionMarker.ts.html b/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatTextSegmentBeforeSelectionMarker.ts.html index f6b1c2188a3..e1d712929e0 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatTextSegmentBeforeSelectionMarker.ts.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/utils/formatTextSegmentBeforeSelectionMarker.ts.html @@ -25,7 +25,7 @@

All files / rooste
100% Statements - 13/13 + 16/16
@@ -46,7 +46,7 @@

All files / rooste
100% Lines - 13/13 + 16/16
@@ -102,7 +102,19 @@

All files / rooste 43 44 45 -461x +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +561x +  +        @@ -127,6 +139,9 @@

All files / rooste       +  +34x +  34x 34x   @@ -142,11 +157,16 @@

All files / rooste 30x 29x   +29x +  +      5x     +34x +   
import { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-dom';
 import type {
     ContentModelDocument,
@@ -154,6 +174,7 @@ 

All files / rooste ContentModelSegmentFormat, ContentModelText, FormatContentModelContext, + FormatContentModelOptions, IEditor, } from 'roosterjs-content-model-types';   @@ -161,6 +182,7 @@

All files / rooste * Invoke a callback to format the text segment before the selection marker using Content Model * @param editor The editor object * @param callback The callback to format the text segment. + * @returns True if the segment before cursor is found and callback is called, otherwise false */ export function formatTextSegmentBeforeSelectionMarker( editor: IEditor, @@ -170,8 +192,11 @@

All files / rooste paragraph: ContentModelParagraph, markerFormat: ContentModelSegmentFormat, context: FormatContentModelContext - ) => boolean -) { + ) => boolean, + options?: FormatContentModelOptions +): boolean { + let result = false; +  editor.formatContentModel((model, context) => { const selectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs( model, @@ -185,12 +210,17 @@

All files / rooste if (marker.segmentType === 'SelectionMarker' && markerIndex > 0) { const previousSegment = paragraph.segments[markerIndex - 1]; if (previousSegment && previousSegment.segmentType === 'Text') { + result = true; +  return callback(model, previousSegment, paragraph, marker.format, context); } } } +  return false; - }); + }, options); +  + return result; }  

@@ -199,7 +229,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-api/lib/publicApi/utils/index.html b/coverage/roosterjs-content-model-api/lib/publicApi/utils/index.html index 451393c926a..8895b4131df 100644 --- a/coverage/roosterjs-content-model-api/lib/publicApi/utils/index.html +++ b/coverage/roosterjs-content-model-api/lib/publicApi/utils/index.html @@ -23,9 +23,9 @@

All files roosterjs-content-model-api/l
- 99.38% + 99.39% Statements - 159/160 + 162/163
@@ -44,9 +44,9 @@

All files roosterjs-content-model-api/l
- 99.29% + 99.31% Lines - 140/141 + 143/144
@@ -153,13 +153,13 @@

All files roosterjs-content-model-api/l
100% - 13/13 + 16/16 100% 12/12 100% 2/2 100% - 13/13 + 16/16 @@ -170,7 +170,7 @@

All files roosterjs-content-model-api/l

diff --git a/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/convertInlineCss.ts.html b/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/convertInlineCss.ts.html index dbdbb4da0ed..71234d75e75 100644 --- a/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/convertInlineCss.ts.html +++ b/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/convertInlineCss.ts.html @@ -280,7 +280,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/createDomToModelContextForSanitizing.ts.html b/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/createDomToModelContextForSanitizing.ts.html index 314c0a4296a..bd3f751587d 100644 --- a/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/createDomToModelContextForSanitizing.ts.html +++ b/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/createDomToModelContextForSanitizing.ts.html @@ -250,7 +250,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/createModelFromHtml.ts.html b/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/createModelFromHtml.ts.html index 6d2ea960602..8fcbbe5f96b 100644 --- a/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/createModelFromHtml.ts.html +++ b/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/createModelFromHtml.ts.html @@ -196,7 +196,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/index.html b/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/index.html index f5d6aaf2a00..ba27701693b 100644 --- a/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/index.html +++ b/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/index.html @@ -140,7 +140,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/sanitizeElement.ts.html b/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/sanitizeElement.ts.html index 261efb76496..48a3031e06b 100644 --- a/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/sanitizeElement.ts.html +++ b/coverage/roosterjs-content-model-core/lib/command/createModelFromHtml/sanitizeElement.ts.html @@ -1273,7 +1273,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/command/exportContent/exportContent.ts.html b/coverage/roosterjs-content-model-core/lib/command/exportContent/exportContent.ts.html index 0586e0e91dc..2161cd67298 100644 --- a/coverage/roosterjs-content-model-core/lib/command/exportContent/exportContent.ts.html +++ b/coverage/roosterjs-content-model-core/lib/command/exportContent/exportContent.ts.html @@ -199,7 +199,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/command/exportContent/index.html b/coverage/roosterjs-content-model-core/lib/command/exportContent/index.html index 2f2e01e4024..70a652c439a 100644 --- a/coverage/roosterjs-content-model-core/lib/command/exportContent/index.html +++ b/coverage/roosterjs-content-model-core/lib/command/exportContent/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/command/paste/createPasteFragment.ts.html b/coverage/roosterjs-content-model-core/lib/command/paste/createPasteFragment.ts.html index e49c55ed200..cf777a2470e 100644 --- a/coverage/roosterjs-content-model-core/lib/command/paste/createPasteFragment.ts.html +++ b/coverage/roosterjs-content-model-core/lib/command/paste/createPasteFragment.ts.html @@ -316,7 +316,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/command/paste/generatePasteOptionFromPlugins.ts.html b/coverage/roosterjs-content-model-core/lib/command/paste/generatePasteOptionFromPlugins.ts.html index 86453d128b7..472ade55dcf 100644 --- a/coverage/roosterjs-content-model-core/lib/command/paste/generatePasteOptionFromPlugins.ts.html +++ b/coverage/roosterjs-content-model-core/lib/command/paste/generatePasteOptionFromPlugins.ts.html @@ -196,7 +196,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/command/paste/index.html b/coverage/roosterjs-content-model-core/lib/command/paste/index.html index b3e773b1e5e..2d715a47707 100644 --- a/coverage/roosterjs-content-model-core/lib/command/paste/index.html +++ b/coverage/roosterjs-content-model-core/lib/command/paste/index.html @@ -155,7 +155,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/command/paste/mergePasteContent.ts.html b/coverage/roosterjs-content-model-core/lib/command/paste/mergePasteContent.ts.html index e6452725da8..cf7b066acf8 100644 --- a/coverage/roosterjs-content-model-core/lib/command/paste/mergePasteContent.ts.html +++ b/coverage/roosterjs-content-model-core/lib/command/paste/mergePasteContent.ts.html @@ -409,7 +409,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/command/paste/paste.ts.html b/coverage/roosterjs-content-model-core/lib/command/paste/paste.ts.html index f8d378f3e5a..16d6fed1617 100644 --- a/coverage/roosterjs-content-model-core/lib/command/paste/paste.ts.html +++ b/coverage/roosterjs-content-model-core/lib/command/paste/paste.ts.html @@ -280,7 +280,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/command/paste/retrieveHtmlInfo.ts.html b/coverage/roosterjs-content-model-core/lib/command/paste/retrieveHtmlInfo.ts.html index 0ca112da5cf..fbde257fddd 100644 --- a/coverage/roosterjs-content-model-core/lib/command/paste/retrieveHtmlInfo.ts.html +++ b/coverage/roosterjs-content-model-core/lib/command/paste/retrieveHtmlInfo.ts.html @@ -358,7 +358,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/command/redo/index.html b/coverage/roosterjs-content-model-core/lib/command/redo/index.html index 6da105d272f..dfbe508b5d0 100644 --- a/coverage/roosterjs-content-model-core/lib/command/redo/index.html +++ b/coverage/roosterjs-content-model-core/lib/command/redo/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/command/redo/redo.ts.html b/coverage/roosterjs-content-model-core/lib/command/redo/redo.ts.html index 63f046a87b4..8daf8b21214 100644 --- a/coverage/roosterjs-content-model-core/lib/command/redo/redo.ts.html +++ b/coverage/roosterjs-content-model-core/lib/command/redo/redo.ts.html @@ -112,7 +112,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/command/undo/index.html b/coverage/roosterjs-content-model-core/lib/command/undo/index.html index db278e7ab05..11d9347e98b 100644 --- a/coverage/roosterjs-content-model-core/lib/command/undo/index.html +++ b/coverage/roosterjs-content-model-core/lib/command/undo/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/command/undo/undo.ts.html b/coverage/roosterjs-content-model-core/lib/command/undo/undo.ts.html index b6da03ad0c9..59f0bbae9f3 100644 --- a/coverage/roosterjs-content-model-core/lib/command/undo/undo.ts.html +++ b/coverage/roosterjs-content-model-core/lib/command/undo/undo.ts.html @@ -127,7 +127,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/addUndoSnapshot.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/addUndoSnapshot.ts.html index 8d3daa6d06e..164a1967422 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/addUndoSnapshot.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/addUndoSnapshot.ts.html @@ -298,7 +298,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/createSnapshotSelection.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/createSnapshotSelection.ts.html index ced3da63d24..7363cf84b54 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/createSnapshotSelection.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/createSnapshotSelection.ts.html @@ -273,11 +273,11 @@

All files / rooste 166x   166x -474x +475x 41x     -474x +475x     166x @@ -475,7 +475,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/getPath.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/getPath.ts.html index 56f63047f34..4e5dcd88ef9 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/getPath.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/getPath.ts.html @@ -159,26 +159,26 @@

All files / rooste     322x -894x -894x +896x +896x   -894x -136x +896x +134x 22x 2x     20x   -114x +112x     -134x +132x     -894x -894x -894x +896x +896x +896x     322x @@ -253,7 +253,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/index.html index fe3ff58446c..905507299f7 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/addUndoSnapshot/index.html @@ -125,7 +125,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/attachDomEvent/attachDomEvent.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/attachDomEvent/attachDomEvent.ts.html index 53e89d5787f..55eaeeeb50b 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/attachDomEvent/attachDomEvent.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/attachDomEvent/attachDomEvent.ts.html @@ -114,11 +114,11 @@

All files / rooste 784x 784x 784x -56x -55x +8x +7x     -56x +8x 2x     @@ -187,7 +187,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/attachDomEvent/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/attachDomEvent/index.html index 6785ed99c33..ffe643da361 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/attachDomEvent/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/attachDomEvent/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/coreApiMap.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/coreApiMap.ts.html index 024698e47af..79b0ba13519 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/coreApiMap.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/coreApiMap.ts.html @@ -190,7 +190,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/createContentModel/createContentModel.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/createContentModel/createContentModel.ts.html index c9092f9d0c7..fc0a93b196f 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/createContentModel/createContentModel.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/createContentModel/createContentModel.ts.html @@ -232,7 +232,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/createContentModel/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/createContentModel/index.html index c5b36900585..5de9214fda6 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/createContentModel/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/createContentModel/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/createEditorContext/createEditorContext.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/createEditorContext/createEditorContext.ts.html index e15f51c8618..cce68ac731b 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/createEditorContext/createEditorContext.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/createEditorContext/createEditorContext.ts.html @@ -25,28 +25,28 @@

All files / rooste
100% Statements - 11/11 + 9/9
- 90.91% + 100% Branches - 20/22 + 10/10
100% Functions - 2/2 + 1/1
100% Lines - 10/10 + 8/8
@@ -87,13 +87,7 @@

All files / rooste 28 29 30 -31 -32 -33 -34 -35 -36 -371x +311x       @@ -118,17 +112,11 @@

All files / rooste     180x -  -180x -  +1x     180x   -180x -1x -  -   
import { getRootComputedStyleForContext } from './getRootComputedStyleForContext';
 import type { EditorContext, CreateEditorContext } from 'roosterjs-content-model-types';
  
@@ -153,18 +141,12 @@ 

All files / rooste ...getRootComputedStyleForContext(logicalRoot.ownerDocument), };   - checkRootRtl(logicalRoot, context); + if (core.domHelper.isRightToLeft()) { + context.isRootRtl = true; + }   return context; }; -  -function checkRootRtl(element: HTMLElement, context: EditorContext) { - const style = element?.ownerDocument.defaultView?.getComputedStyle(element); -  - if (style?.direction == 'rtl') { - context.isRootRtl = true; - } -}  

@@ -172,7 +154,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/createEditorContext/getRootComputedStyleForContext.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/createEditorContext/getRootComputedStyleForContext.ts.html index 7c12ff20b83..b8eab3907fd 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/createEditorContext/getRootComputedStyleForContext.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/createEditorContext/getRootComputedStyleForContext.ts.html @@ -106,7 +106,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/createEditorContext/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/createEditorContext/index.html index c9db332494b..c993ac099d6 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/createEditorContext/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/createEditorContext/index.html @@ -25,28 +25,28 @@

All files roosterjs-content-model-core/
100% Statements - 16/16 + 14/14
- 93.75% + 100% Branches - 30/32 + 20/20
100% Functions - 3/3 + 2/2
100% Lines - 15/15 + 13/13
@@ -78,13 +78,13 @@

All files roosterjs-content-model-core/
100% - 11/11 - 90.91% - 20/22 - 100% - 2/2 + 9/9 100% 10/10 + 100% + 1/1 + 100% + 8/8 @@ -110,7 +110,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/focus/focus.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/focus/focus.ts.html index bc6d4feb3b2..efdc313346c 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/focus/focus.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/focus/focus.ts.html @@ -127,7 +127,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/focus/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/focus/index.html index d2d4a9e25fb..3903a0510b7 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/focus/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/focus/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/formatContentModel/formatContentModel.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/formatContentModel/formatContentModel.ts.html index e09dadd7d59..2ab629dab74 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/formatContentModel/formatContentModel.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/formatContentModel/formatContentModel.ts.html @@ -535,7 +535,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/formatContentModel/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/formatContentModel/index.html index 3dbe8e4e672..293e949b634 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/formatContentModel/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/formatContentModel/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/getDOMSelection/getDOMSelection.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/getDOMSelection/getDOMSelection.ts.html index cca23f1ef22..12214484062 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/getDOMSelection/getDOMSelection.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/getDOMSelection/getDOMSelection.ts.html @@ -94,22 +94,22 @@

All files / rooste     1x -422x +394x 1x   -421x +393x   -421x +393x             -210x -210x +182x +182x   -210x +182x       @@ -157,7 +157,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/getDOMSelection/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/getDOMSelection/index.html index 345cdf49f6f..3c2a370b55f 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/getDOMSelection/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/getDOMSelection/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/getVisibleViewport/getVisibleViewport.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/getVisibleViewport/getVisibleViewport.ts.html index 87fc94dbf28..ec0283ec8f0 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/getVisibleViewport/getVisibleViewport.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/getVisibleViewport/getVisibleViewport.ts.html @@ -238,7 +238,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/getVisibleViewport/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/getVisibleViewport/index.html index 02f946e481c..45c56eea5c9 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/getVisibleViewport/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/getVisibleViewport/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/index.html index 0cecf4f04c9..d77d1ba4f17 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/lib diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/getPositionFromPath.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/getPositionFromPath.ts.html index a2cc60896e6..21dd1dad462 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/getPositionFromPath.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/getPositionFromPath.ts.html @@ -154,7 +154,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/index.html index 1855b7fc9a0..e6f34566131 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/index.html @@ -170,7 +170,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotColors.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotColors.ts.html index fc56e9234c4..0381592b482 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotColors.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotColors.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotHTML.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotHTML.ts.html index 45239223c4b..c7771184d55 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotHTML.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotHTML.ts.html @@ -415,7 +415,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotLogicalRoot.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotLogicalRoot.ts.html index 1cf91a10d75..c51ccd05a10 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotLogicalRoot.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotLogicalRoot.ts.html @@ -115,7 +115,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotSelection.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotSelection.ts.html index 099d95659d0..513ca0e0835 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotSelection.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreSnapshotSelection.ts.html @@ -259,7 +259,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreUndoSnapshot.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreUndoSnapshot.ts.html index 366c973337c..302b9594dad 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreUndoSnapshot.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/restoreUndoSnapshot.ts.html @@ -190,7 +190,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/setContentModel/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/setContentModel/index.html index 1ea96218683..66d429b7882 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/setContentModel/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/setContentModel/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/setContentModel/setContentModel.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/setContentModel/setContentModel.ts.html index 9a72c63a188..9735e673ed4 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/setContentModel/setContentModel.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/setContentModel/setContentModel.ts.html @@ -226,7 +226,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/addRangeToSelection.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/addRangeToSelection.ts.html index bc7f75e9169..5fb317071d0 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/addRangeToSelection.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/addRangeToSelection.ts.html @@ -91,12 +91,12 @@

All files / rooste 32      -75x -66x +72x +63x   -66x -66x -66x +63x +63x +63x       @@ -105,10 +105,10 @@

All files / rooste   7x   -59x +56x   -59x -59x +56x +56x       @@ -157,7 +157,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/findLastedCoInMergedCell.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/findLastedCoInMergedCell.ts.html index 63a6cb3187a..67815d4ad63 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/findLastedCoInMergedCell.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/findLastedCoInMergedCell.ts.html @@ -166,7 +166,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/findTableCellElement.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/findTableCellElement.ts.html index 8f03cd33afa..250fa5bdd49 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/findTableCellElement.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/findTableCellElement.ts.html @@ -193,7 +193,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/index.html index 1b147f9512e..5e74e2451d2 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/index.html @@ -140,7 +140,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/setDOMSelection.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/setDOMSelection.ts.html index 9b4136eca43..998105842db 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/setDOMSelection.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/setDOMSelection/setDOMSelection.ts.html @@ -319,17 +319,17 @@

All files / rooste 1x     -96x +93x   -96x +93x   -96x -96x -96x -96x +93x +93x +93x +93x   -96x -96x +93x +93x   4x   @@ -415,26 +415,26 @@

All files / rooste   19x   -60x +57x   -60x -60x +57x +57x     12x 12x     -96x +93x     -95x -68x +92x +65x         -68x +65x       @@ -763,7 +763,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/setEditorStyle/ensureUniqueId.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/setEditorStyle/ensureUniqueId.ts.html index a39e1da3eb4..ea536bc0b42 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/setEditorStyle/ensureUniqueId.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/setEditorStyle/ensureUniqueId.ts.html @@ -109,7 +109,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/setEditorStyle/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/setEditorStyle/index.html index 707b9319daa..58b05a38e4d 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/setEditorStyle/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/setEditorStyle/index.html @@ -110,7 +110,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/setEditorStyle/setEditorStyle.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/setEditorStyle/setEditorStyle.ts.html index b04f651d55e..38af7b0686b 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/setEditorStyle/setEditorStyle.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/setEditorStyle/setEditorStyle.ts.html @@ -148,11 +148,11 @@

All files / rooste       -493x +475x   -247x +238x   -247x +238x 22x   22x @@ -162,9 +162,9 @@

All files / rooste 22x     -247x +238x   -247x +238x 54x 20x   @@ -295,7 +295,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/setLogicalRoot/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/setLogicalRoot/index.html index 355dada09d8..db1fc4f2b35 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/setLogicalRoot/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/setLogicalRoot/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/setLogicalRoot/setLogicalRoot.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/setLogicalRoot/setLogicalRoot.ts.html index 55abc5bb1bc..cad9d7898e1 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/setLogicalRoot/setLogicalRoot.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/setLogicalRoot/setLogicalRoot.ts.html @@ -187,7 +187,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/switchShadowEdit/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/switchShadowEdit/index.html index cc01101abf4..cf1f7b19c47 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/switchShadowEdit/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/switchShadowEdit/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/switchShadowEdit/switchShadowEdit.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/switchShadowEdit/switchShadowEdit.ts.html index 0de04a93177..573cad87fe8 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/switchShadowEdit/switchShadowEdit.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/switchShadowEdit/switchShadowEdit.ts.html @@ -235,7 +235,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/triggerEvent/index.html b/coverage/roosterjs-content-model-core/lib/coreApi/triggerEvent/index.html index e8f6332b081..4e782325ec8 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/triggerEvent/index.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/triggerEvent/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/coreApi/triggerEvent/triggerEvent.ts.html b/coverage/roosterjs-content-model-core/lib/coreApi/triggerEvent/triggerEvent.ts.html index 2f2d0998f9e..3f7962fe622 100644 --- a/coverage/roosterjs-content-model-core/lib/coreApi/triggerEvent/triggerEvent.ts.html +++ b/coverage/roosterjs-content-model-core/lib/coreApi/triggerEvent/triggerEvent.ts.html @@ -122,14 +122,14 @@

All files / rooste     1x -226x +223x     15x   -224x -2185x -1524x +221x +2155x +1503x       @@ -193,7 +193,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/cache/CachePlugin.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/cache/CachePlugin.ts.html index 6fa5f2c1566..dfe06547461 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/cache/CachePlugin.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/cache/CachePlugin.ts.html @@ -30,9 +30,9 @@

All files / rooste
- 84.21% + 82.46% Branches - 48/57 + 47/57
@@ -317,11 +317,11 @@

All files / rooste     1x -231x +228x       -231x +228x     6x @@ -331,8 +331,8 @@

All files / rooste 6x     -51x -51x +48x +48x     96x @@ -359,37 +359,37 @@

All files / rooste     78x -9455x +27433x         1x -141x -140x -140x +138x +137x +137x       1x -51x -51x +48x +48x   -51x -51x +48x +48x   -51x +48x         -51x -29x +48x +26x         -28x +25x   1x   @@ -552,7 +552,7 @@

All files / rooste const cachedSelection = this.state.cachedSelection; this.state.cachedSelection = undefined; // Clear it to force getDOMSelection() retrieve the latest selection range   - const newRangeEx = editor.getDOMSelection() || undefined; + const newRangeEx = editor.getDOMSelection() || undefined; const model = this.state.cachedModel; const isSelectionChanged = forceUpdate || @@ -595,7 +595,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/cache/areSameSelection.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/cache/areSameSelection.ts.html index d1e4aa936ed..989083e9c4f 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/cache/areSameSelection.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/cache/areSameSelection.ts.html @@ -100,11 +100,11 @@

All files / rooste     1x -43x +42x 2x     -41x +40x   2x   @@ -120,7 +120,7 @@

All files / rooste       -31x +30x       @@ -172,7 +172,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/cache/domIndexerImpl.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/cache/domIndexerImpl.ts.html index 911b754895a..3dd6ebb0a46 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/cache/domIndexerImpl.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/cache/domIndexerImpl.ts.html @@ -30,9 +30,9 @@

All files / rooste
- 81.44% + 80.41% Branches - 79/97 + 78/97
@@ -386,9 +386,9 @@

All files / rooste       -31x +30x   -31x +30x       @@ -445,8 +445,8 @@

All files / rooste       -21x -4x +20x +3x       @@ -455,29 +455,29 @@

All files / rooste 2x     -2x +1x       -21x +20x       11x     -9x -9x +8x +8x             -45x +40x   -9x -5x +8x +4x 4x     @@ -506,16 +506,16 @@

All files / rooste       -8x +6x   -4x +3x       -9x +8x 6x -3x -3x +2x +2x       @@ -524,7 +524,7 @@

All files / rooste       -3x +2x 2x 2x   @@ -537,7 +537,7 @@

All files / rooste       -3x +2x       @@ -814,7 +814,7 @@

All files / rooste function insertMarker(node: Node | null, isAfter: boolean): Selectable | undefined { let marker: ContentModelSelectionMarker | undefined;   - if (node && isIndexedSegment(node)) { + Eif (node && isIndexedSegment(node)) { const { paragraph, segments } = node.__roosterjsContentModel; const index = paragraph.segments.indexOf(segments[0]);   @@ -934,7 +934,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/cache/index.html b/coverage/roosterjs-content-model-core/lib/corePlugin/cache/index.html index f39bf845469..5e866eadb1f 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/cache/index.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/cache/index.html @@ -30,9 +30,9 @@

All files roosterjs-content-model-core/
- 85.56% + 84.49% Branches - 160/187 + 158/187
@@ -79,8 +79,8 @@

All files roosterjs-content-model-core/ 93.55% 58/62 - 84.21% - 48/57 + 82.46% + 47/57 91.67% 11/12 93.55% @@ -109,8 +109,8 @@

All files roosterjs-content-model-core/ 95.28% 101/106 - 81.44% - 79/97 + 80.41% + 78/97 100% 9/9 94.95% @@ -155,7 +155,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/cache/textMutationObserver.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/cache/textMutationObserver.ts.html index 3cf0a4a2583..0c3b9ca48bb 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/cache/textMutationObserver.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/cache/textMutationObserver.ts.html @@ -223,7 +223,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/cache/updateCachedSelection.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/cache/updateCachedSelection.ts.html index 6ef5b0199ca..bc19f2bc6b6 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/cache/updateCachedSelection.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/cache/updateCachedSelection.ts.html @@ -154,7 +154,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/contextMenu/ContextMenuPlugin.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/contextMenu/ContextMenuPlugin.ts.html index 0894ab96278..59b84cb5aab 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/contextMenu/ContextMenuPlugin.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/contextMenu/ContextMenuPlugin.ts.html @@ -445,7 +445,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/contextMenu/index.html b/coverage/roosterjs-content-model-core/lib/corePlugin/contextMenu/index.html index 9c81511b272..75313eefc37 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/contextMenu/index.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/contextMenu/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/copyPaste/CopyPastePlugin.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/copyPaste/CopyPastePlugin.ts.html index 5d691ecdcb2..aa3037aa0e9 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/copyPaste/CopyPastePlugin.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/copyPaste/CopyPastePlugin.ts.html @@ -1102,7 +1102,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/copyPaste/deleteEmptyList.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/copyPaste/deleteEmptyList.ts.html index 2872fbad40c..aa4575e2bfc 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/copyPaste/deleteEmptyList.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/copyPaste/deleteEmptyList.ts.html @@ -244,7 +244,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/copyPaste/index.html b/coverage/roosterjs-content-model-core/lib/corePlugin/copyPaste/index.html index 0c3dd052601..91c0d33ba30 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/copyPaste/index.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/copyPaste/index.html @@ -110,7 +110,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/createEditorCorePlugins.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/createEditorCorePlugins.ts.html index 6e01310d624..bbdfa27b66a 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/createEditorCorePlugins.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/createEditorCorePlugins.ts.html @@ -160,7 +160,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/domEvent/DOMEventPlugin.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/domEvent/DOMEventPlugin.ts.html index 9395845d85b..7a3cdd162d1 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/domEvent/DOMEventPlugin.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/domEvent/DOMEventPlugin.ts.html @@ -778,7 +778,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/domEvent/index.html b/coverage/roosterjs-content-model-core/lib/corePlugin/domEvent/index.html index 4eeef9ca707..ea1b37a7ae3 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/domEvent/index.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/domEvent/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/entity/EntityPlugin.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/entity/EntityPlugin.ts.html index d7065634903..5325e0bc6a2 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/entity/EntityPlugin.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/entity/EntityPlugin.ts.html @@ -430,8 +430,8 @@

All files / rooste     1x -236x -236x +233x +233x   4x 4x @@ -946,7 +946,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/entity/entityDelimiterUtils.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/entity/entityDelimiterUtils.ts.html index ffb01290e9d..8b2ff89d295 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/entity/entityDelimiterUtils.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/entity/entityDelimiterUtils.ts.html @@ -1084,7 +1084,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/entity/findAllEntities.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/entity/findAllEntities.ts.html index 47bf58325ac..4871c195dab 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/entity/findAllEntities.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/entity/findAllEntities.ts.html @@ -196,7 +196,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/entity/index.html b/coverage/roosterjs-content-model-core/lib/corePlugin/entity/index.html index 1390777886a..2ae0ab6728c 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/entity/index.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/entity/index.html @@ -125,7 +125,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/format/FormatPlugin.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/format/FormatPlugin.ts.html index 1af89c9a091..1807e14c20d 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/format/FormatPlugin.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/format/FormatPlugin.ts.html @@ -386,11 +386,11 @@

All files / rooste     1x -237x +234x       -237x +234x   1x   @@ -742,7 +742,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/format/applyDefaultFormat.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/format/applyDefaultFormat.ts.html index 2969495d15a..bfebcc430be 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/format/applyDefaultFormat.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/format/applyDefaultFormat.ts.html @@ -280,7 +280,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/format/applyPendingFormat.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/format/applyPendingFormat.ts.html index 10193bfc61f..87b33e0b319 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/format/applyPendingFormat.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/format/applyPendingFormat.ts.html @@ -286,7 +286,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/format/index.html b/coverage/roosterjs-content-model-core/lib/corePlugin/format/index.html index 44eb4eef4ef..632ba83b4b3 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/format/index.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/format/index.html @@ -125,7 +125,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/index.html b/coverage/roosterjs-content-model-core/lib/corePlugin/index.html index bfaa3c6546e..df83188a8b8 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/index.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/lib diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/lifecycle/LifecyclePlugin.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/lifecycle/LifecyclePlugin.ts.html index 8dc65b19a1a..decb99803c4 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/lifecycle/LifecyclePlugin.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/lifecycle/LifecyclePlugin.ts.html @@ -323,7 +323,7 @@

All files / rooste     1x -222x +219x       @@ -529,7 +529,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/lifecycle/index.html b/coverage/roosterjs-content-model-core/lib/corePlugin/lifecycle/index.html index 0fcb2c43767..d72f5323a63 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/lifecycle/index.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/lifecycle/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/selection/SelectionPlugin.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/selection/SelectionPlugin.ts.html index 5528ec89c36..b9b8f0902cf 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/selection/SelectionPlugin.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/selection/SelectionPlugin.ts.html @@ -23,16 +23,16 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/selection/findCoordinate.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/selection/findCoordinate.ts.html index ad81898908f..1b1006539aa 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/selection/findCoordinate.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/selection/findCoordinate.ts.html @@ -178,7 +178,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/selection/index.html b/coverage/roosterjs-content-model-core/lib/corePlugin/selection/index.html index ce51119b36e..4f341795df0 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/selection/index.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/selection/index.html @@ -23,16 +23,16 @@

All files roosterjs-content-model-core/
- 97.16% + 96.88% Statements - 342/352 + 341/352
- 83.76% + 83.53% Branches - 361/431 + 360/431
@@ -44,9 +44,9 @@

All files roosterjs-content-model-core/
- 97.01% + 96.72% Lines - 325/335 + 324/335
@@ -74,17 +74,17 @@

All files roosterjs-content-model-core/ SelectionPlugin.ts - +
- 96.72% - 295/305 - 83.11% - 310/373 + 96.39% + 294/305 + 82.84% + 309/373 96.77% 30/31 - 96.58% - 282/292 + 96.23% + 281/292 @@ -140,7 +140,7 @@

All files roosterjs-content-model-core/

diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/selection/isSingleImageInSelection.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/selection/isSingleImageInSelection.ts.html index 3e006ad790e..3152c7a47ee 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/selection/isSingleImageInSelection.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/selection/isSingleImageInSelection.ts.html @@ -190,7 +190,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/selection/normalizePos.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/selection/normalizePos.ts.html index ae4b1f1ab1e..016ac81a455 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/selection/normalizePos.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/selection/normalizePos.ts.html @@ -244,7 +244,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/undo/SnapshotsManagerImpl.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/undo/SnapshotsManagerImpl.ts.html index 0222da10e0d..fae43242283 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/undo/SnapshotsManagerImpl.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/undo/SnapshotsManagerImpl.ts.html @@ -490,7 +490,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/undo/UndoPlugin.ts.html b/coverage/roosterjs-content-model-core/lib/corePlugin/undo/UndoPlugin.ts.html index ae016d63496..0ef5c579618 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/undo/UndoPlugin.ts.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/undo/UndoPlugin.ts.html @@ -399,11 +399,11 @@

All files / rooste     1x -243x +240x       -243x +240x   66x 66x @@ -835,7 +835,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/corePlugin/undo/index.html b/coverage/roosterjs-content-model-core/lib/corePlugin/undo/index.html index 28e2bb210ea..75a8b7194a6 100644 --- a/coverage/roosterjs-content-model-core/lib/corePlugin/undo/index.html +++ b/coverage/roosterjs-content-model-core/lib/corePlugin/undo/index.html @@ -110,7 +110,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/editor/Editor.ts.html b/coverage/roosterjs-content-model-core/lib/editor/Editor.ts.html index 5911056e122..211eff6e0ca 100644 --- a/coverage/roosterjs-content-model-core/lib/editor/Editor.ts.html +++ b/coverage/roosterjs-content-model-core/lib/editor/Editor.ts.html @@ -633,9 +633,9 @@

All files / roosterjs     1x -112x +84x   -111x +83x       @@ -643,9 +643,9 @@

All files / roosterjs     1x -30x +27x   -29x +26x       @@ -735,8 +735,8 @@

All files / roosterjs     1x -18912x -18911x +54868x +54867x       @@ -823,7 +823,7 @@

All files / roosterjs     1x -138x +135x       @@ -868,7 +868,7 @@

All files / roosterjs     1x -79x +55x       @@ -900,10 +900,10 @@

All files / roosterjs     1x -21304x +57202x 26x   -21278x +57176x     87x @@ -1366,7 +1366,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-core/lib/editor/core/DOMHelperImpl.ts.html b/coverage/roosterjs-content-model-core/lib/editor/core/DOMHelperImpl.ts.html index ef143f9859f..ad0951211fb 100644 --- a/coverage/roosterjs-content-model-core/lib/editor/core/DOMHelperImpl.ts.html +++ b/coverage/roosterjs-content-model-core/lib/editor/core/DOMHelperImpl.ts.html @@ -25,28 +25,28 @@

All files / rooste
100% Statements - 31/31 + 35/35
- 89.66% + 86.49% Branches - 26/29 + 32/37
100% Functions - 12/12 + 13/13
100% Lines - 31/31 + 35/35
@@ -127,11 +127,21 @@

All files / rooste 68 69 70 -711x +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +811x     1x -103x +105x   1x 299x @@ -186,8 +196,18 @@

All files / rooste     1x -19336x -19336x +55289x +55289x +  +  +  +  +  +1x +175x +175x +  +175x   1x   @@ -195,7 +215,7 @@

All files / rooste     1x -103x +105x    
import { isNodeOfType, toArray } from 'roosterjs-content-model-dom';
 import type { DOMHelper } from 'roosterjs-content-model-types';
@@ -259,6 +279,16 @@ 

All files / rooste const activeElement = this.contentDiv.ownerDocument.activeElement; return !!(activeElement && this.contentDiv.contains(activeElement)); } +  + /** + * Check if the root element is in RTL mode + */ + isRightToLeft(): boolean { + const contentDiv = this.contentDiv; + const style = contentDiv.ownerDocument.defaultView?.getComputedStyle(contentDiv); +  + return style?.direction == 'rtl'; + } }   /** @@ -274,7 +304,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/editor/core/DarkColorHandlerImpl.ts.html b/coverage/roosterjs-content-model-core/lib/editor/core/DarkColorHandlerImpl.ts.html index d394e7fbc63..e2bfd1a31c8 100644 --- a/coverage/roosterjs-content-model-core/lib/editor/core/DarkColorHandlerImpl.ts.html +++ b/coverage/roosterjs-content-model-core/lib/editor/core/DarkColorHandlerImpl.ts.html @@ -226,7 +226,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/editor/core/createEditorCore.ts.html b/coverage/roosterjs-content-model-core/lib/editor/core/createEditorCore.ts.html index cf7376e3f1e..b2dd262bf25 100644 --- a/coverage/roosterjs-content-model-core/lib/editor/core/createEditorCore.ts.html +++ b/coverage/roosterjs-content-model-core/lib/editor/core/createEditorCore.ts.html @@ -415,7 +415,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/editor/core/createEditorDefaultSettings.ts.html b/coverage/roosterjs-content-model-core/lib/editor/core/createEditorDefaultSettings.ts.html index d36711a8f93..eacfee77817 100644 --- a/coverage/roosterjs-content-model-core/lib/editor/core/createEditorDefaultSettings.ts.html +++ b/coverage/roosterjs-content-model-core/lib/editor/core/createEditorDefaultSettings.ts.html @@ -241,7 +241,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-core/lib/editor/core/index.html b/coverage/roosterjs-content-model-core/lib/editor/core/index.html index 2764968bddc..dc8a6a88751 100644 --- a/coverage/roosterjs-content-model-core/lib/editor/core/index.html +++ b/coverage/roosterjs-content-model-core/lib/editor/core/index.html @@ -25,28 +25,28 @@

All files roosterjs-content-model-core/
100% Statements - 85/85 + 89/89
- 96.51% + 94.68% Branches - 83/86 + 89/94
100% Functions - 28/28 + 29/29
100% Lines - 83/83 + 87/87
@@ -78,13 +78,13 @@

All files roosterjs-content-model-core/
100% - 31/31 - 89.66% - 26/29 + 35/35 + 86.49% + 32/37 100% - 12/12 + 13/13 100% - 31/31 + 35/35 @@ -140,7 +140,7 @@

All files roosterjs-content-model-core/ diff --git a/coverage/roosterjs-content-model-core/lib/editor/index.html b/coverage/roosterjs-content-model-core/lib/editor/index.html index 3d05635ceb0..cc77dd23989 100644 --- a/coverage/roosterjs-content-model-core/lib/editor/index.html +++ b/coverage/roosterjs-content-model-core/lib/editor/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/lib diff --git a/coverage/roosterjs-content-model-core/lib/index.html b/coverage/roosterjs-content-model-core/lib/index.html index aa035d07f9c..e9d2a420cde 100644 --- a/coverage/roosterjs-content-model-core/lib/index.html +++ b/coverage/roosterjs-content-model-core/lib/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-core/lib Code coverage generated by istanbul - at Tue Apr 16 2024 17:17:51 GMT+0000 (Coordinated Universal Time) + at Tue Apr 16 2024 17:40:39 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/roosterjs-content-model-core/lib/index.ts.html b/coverage/roosterjs-content-model-core/lib/index.ts.html index 731e9189b8d..70c1d74717e 100644 --- a/coverage/roosterjs-content-model-core/lib/index.ts.html +++ b/coverage/roosterjs-content-model-core/lib/index.ts.html @@ -91,7 +91,7 @@

All files / roosterjs-co diff --git a/coverage/roosterjs-content-model-core/lib/override/containerSizeFormatParser.ts.html b/coverage/roosterjs-content-model-core/lib/override/containerSizeFormatParser.ts.html index 30542339d3d..9358ed222d2 100644 --- a/coverage/roosterjs-content-model-core/lib/override/containerSizeFormatParser.ts.html +++ b/coverage/roosterjs-content-model-core/lib/override/containerSizeFormatParser.ts.html @@ -100,7 +100,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-core/lib/override/index.html b/coverage/roosterjs-content-model-core/lib/override/index.html index fb63be771fc..889ad8304e6 100644 --- a/coverage/roosterjs-content-model-core/lib/override/index.html +++ b/coverage/roosterjs-content-model-core/lib/override/index.html @@ -200,7 +200,7 @@

All files roosterjs-content-model-core/lib diff --git a/coverage/roosterjs-content-model-core/lib/override/listMetadataApplier.ts.html b/coverage/roosterjs-content-model-core/lib/override/listMetadataApplier.ts.html index 7d31e0573aa..12f15c87cb6 100644 --- a/coverage/roosterjs-content-model-core/lib/override/listMetadataApplier.ts.html +++ b/coverage/roosterjs-content-model-core/lib/override/listMetadataApplier.ts.html @@ -535,7 +535,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-core/lib/override/pasteCopyBlockEntityParser.ts.html b/coverage/roosterjs-content-model-core/lib/override/pasteCopyBlockEntityParser.ts.html index 01eb00e0516..12b13f4f2d3 100644 --- a/coverage/roosterjs-content-model-core/lib/override/pasteCopyBlockEntityParser.ts.html +++ b/coverage/roosterjs-content-model-core/lib/override/pasteCopyBlockEntityParser.ts.html @@ -193,7 +193,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-core/lib/override/pasteDisplayFormatParser.ts.html b/coverage/roosterjs-content-model-core/lib/override/pasteDisplayFormatParser.ts.html index 03528080412..c26b17eeec2 100644 --- a/coverage/roosterjs-content-model-core/lib/override/pasteDisplayFormatParser.ts.html +++ b/coverage/roosterjs-content-model-core/lib/override/pasteDisplayFormatParser.ts.html @@ -100,7 +100,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-core/lib/override/pasteEntityProcessor.ts.html b/coverage/roosterjs-content-model-core/lib/override/pasteEntityProcessor.ts.html index 92b8b1e8e77..dbd35544fff 100644 --- a/coverage/roosterjs-content-model-core/lib/override/pasteEntityProcessor.ts.html +++ b/coverage/roosterjs-content-model-core/lib/override/pasteEntityProcessor.ts.html @@ -184,7 +184,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-core/lib/override/pasteGeneralProcessor.ts.html b/coverage/roosterjs-content-model-core/lib/override/pasteGeneralProcessor.ts.html index bfb99923f73..d291ad95267 100644 --- a/coverage/roosterjs-content-model-core/lib/override/pasteGeneralProcessor.ts.html +++ b/coverage/roosterjs-content-model-core/lib/override/pasteGeneralProcessor.ts.html @@ -238,7 +238,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-core/lib/override/pasteTextProcessor.ts.html b/coverage/roosterjs-content-model-core/lib/override/pasteTextProcessor.ts.html index 55d4e41668d..58b7e5d1727 100644 --- a/coverage/roosterjs-content-model-core/lib/override/pasteTextProcessor.ts.html +++ b/coverage/roosterjs-content-model-core/lib/override/pasteTextProcessor.ts.html @@ -109,7 +109,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-core/lib/override/tablePreProcessor.ts.html b/coverage/roosterjs-content-model-core/lib/override/tablePreProcessor.ts.html index 965108d2473..9b53037e3ee 100644 --- a/coverage/roosterjs-content-model-core/lib/override/tablePreProcessor.ts.html +++ b/coverage/roosterjs-content-model-core/lib/override/tablePreProcessor.ts.html @@ -154,7 +154,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/config/defaultContentModelFormatMap.ts.html b/coverage/roosterjs-content-model-dom/lib/config/defaultContentModelFormatMap.ts.html index c6ecdc97585..9d31d04696e 100644 --- a/coverage/roosterjs-content-model-dom/lib/config/defaultContentModelFormatMap.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/config/defaultContentModelFormatMap.ts.html @@ -229,7 +229,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/config/defaultHTMLStyleMap.ts.html b/coverage/roosterjs-content-model-dom/lib/config/defaultHTMLStyleMap.ts.html index 4a403f25fd7..4e59b46ad6e 100644 --- a/coverage/roosterjs-content-model-dom/lib/config/defaultHTMLStyleMap.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/config/defaultHTMLStyleMap.ts.html @@ -439,7 +439,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/config/index.html b/coverage/roosterjs-content-model-dom/lib/config/index.html index 95ff041cc36..9278ac5fa37 100644 --- a/coverage/roosterjs-content-model-dom/lib/config/index.html +++ b/coverage/roosterjs-content-model-dom/lib/config/index.html @@ -110,7 +110,7 @@

All files roosterjs-content-model-dom/lib/ diff --git a/coverage/roosterjs-content-model-dom/lib/constants/BulletListType.ts.html b/coverage/roosterjs-content-model-dom/lib/constants/BulletListType.ts.html index 0128428cdfc..cabe09045e4 100644 --- a/coverage/roosterjs-content-model-dom/lib/constants/BulletListType.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/constants/BulletListType.ts.html @@ -211,7 +211,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/constants/ChangeSource.ts.html b/coverage/roosterjs-content-model-dom/lib/constants/ChangeSource.ts.html index 33c2cb9076d..bdce17433d1 100644 --- a/coverage/roosterjs-content-model-dom/lib/constants/ChangeSource.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/constants/ChangeSource.ts.html @@ -241,7 +241,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/constants/NumberingListType.ts.html b/coverage/roosterjs-content-model-dom/lib/constants/NumberingListType.ts.html index cac841a41a5..777990f7f17 100644 --- a/coverage/roosterjs-content-model-dom/lib/constants/NumberingListType.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/constants/NumberingListType.ts.html @@ -343,7 +343,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/constants/OrderedListStyleMap.ts.html b/coverage/roosterjs-content-model-dom/lib/constants/OrderedListStyleMap.ts.html index 1a6dc008bda..836c384aad2 100644 --- a/coverage/roosterjs-content-model-dom/lib/constants/OrderedListStyleMap.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/constants/OrderedListStyleMap.ts.html @@ -145,7 +145,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/constants/TableBorderFormat.ts.html b/coverage/roosterjs-content-model-dom/lib/constants/TableBorderFormat.ts.html index 50a56141152..f66410c61ac 100644 --- a/coverage/roosterjs-content-model-dom/lib/constants/TableBorderFormat.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/constants/TableBorderFormat.ts.html @@ -337,7 +337,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/constants/UnorderedListStyleMap.ts.html b/coverage/roosterjs-content-model-dom/lib/constants/UnorderedListStyleMap.ts.html index df57e86769e..86e849935b8 100644 --- a/coverage/roosterjs-content-model-dom/lib/constants/UnorderedListStyleMap.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/constants/UnorderedListStyleMap.ts.html @@ -112,7 +112,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/constants/index.html b/coverage/roosterjs-content-model-dom/lib/constants/index.html index 7d9e6bb0dc6..8fec770775a 100644 --- a/coverage/roosterjs-content-model-dom/lib/constants/index.html +++ b/coverage/roosterjs-content-model-dom/lib/constants/index.html @@ -170,7 +170,7 @@

All files roosterjs-content-model-dom/lib/ diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts.html index 0d3172ac948..16cd852563f 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts.html @@ -523,7 +523,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/context/defaultProcessors.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/context/defaultProcessors.ts.html index ce9eec10ee1..ce5710b7363 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/context/defaultProcessors.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/context/defaultProcessors.ts.html @@ -262,7 +262,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/context/index.html b/coverage/roosterjs-content-model-dom/lib/domToModel/context/index.html index c375c0f0f75..0d0a3208d17 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/context/index.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/context/index.html @@ -110,7 +110,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts.html index 29c8ad99dff..cc2fd17fd3c 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts.html @@ -130,7 +130,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/index.html b/coverage/roosterjs-content-model-dom/lib/domToModel/index.html index 6402c158bfa..139079f5474 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/index.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-dom/lib/ diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/blockProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/blockProcessor.ts.html index 020eacc8807..8966ce153c0 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/blockProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/blockProcessor.ts.html @@ -211,7 +211,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/brProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/brProcessor.ts.html index 0e62aba7e9b..edaba211eaf 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/brProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/brProcessor.ts.html @@ -115,7 +115,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/childProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/childProcessor.ts.html index 3fcf8e1de69..1dc1889f5ea 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/childProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/childProcessor.ts.html @@ -313,7 +313,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/codeProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/codeProcessor.ts.html index bc5f25fce22..3b36ab31814 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/codeProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/codeProcessor.ts.html @@ -109,7 +109,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts.html index 06eb9981fac..3ece3ea6eb6 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts.html @@ -148,7 +148,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/elementProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/elementProcessor.ts.html index 4d112ac0a62..7b00311bed5 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/elementProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/elementProcessor.ts.html @@ -160,7 +160,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts.html index 80db7b8d0eb..da8f0864e01 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts.html @@ -184,7 +184,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/fontProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/fontProcessor.ts.html index f672655a51a..1edcf913d56 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/fontProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/fontProcessor.ts.html @@ -226,7 +226,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts.html index b4f737a6ab5..63527a51b4d 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts.html @@ -343,7 +343,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/generalProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/generalProcessor.ts.html index 55e86c8ede0..b509b4af51d 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/generalProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/generalProcessor.ts.html @@ -271,7 +271,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/headingProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/headingProcessor.ts.html index 5e92a54c7dd..58d9bcee53f 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/headingProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/headingProcessor.ts.html @@ -172,7 +172,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/hrProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/hrProcessor.ts.html index 932bd5d58db..366a7f375ec 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/hrProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/hrProcessor.ts.html @@ -160,7 +160,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/imageProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/imageProcessor.ts.html index 6de8f6c5fa0..b22fbc81fb5 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/imageProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/imageProcessor.ts.html @@ -202,7 +202,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/index.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/index.html index 833e932a683..e408d1af25c 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/index.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/index.html @@ -395,7 +395,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/knownElementProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/knownElementProcessor.ts.html index 101dc1b53a2..b0eb2870371 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/knownElementProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/knownElementProcessor.ts.html @@ -466,7 +466,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts.html index 9e9aa069d32..8bc7fb044c1 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/linkProcessor.ts.html @@ -127,7 +127,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/listItemProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/listItemProcessor.ts.html index e162bb7d35d..8d14b04ebdb 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/listItemProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/listItemProcessor.ts.html @@ -265,7 +265,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/listProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/listProcessor.ts.html index d44f29a893d..de93a510c79 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/listProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/listProcessor.ts.html @@ -199,7 +199,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/pProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/pProcessor.ts.html index 7351791b52d..a9741051a67 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/pProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/pProcessor.ts.html @@ -151,7 +151,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/tableProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/tableProcessor.ts.html index 6f6ae020874..6983daf3dfd 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/tableProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/tableProcessor.ts.html @@ -1090,7 +1090,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/textProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/textProcessor.ts.html index a77f548a285..64040311142 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/textProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/textProcessor.ts.html @@ -202,7 +202,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/textWithSelectionProcessor.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/textWithSelectionProcessor.ts.html index 49ee43030a2..adfcced85d1 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/processors/textWithSelectionProcessor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/processors/textWithSelectionProcessor.ts.html @@ -190,7 +190,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/addSelectionMarker.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/addSelectionMarker.ts.html index 5c94e3716a5..a753bfc908c 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/addSelectionMarker.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/addSelectionMarker.ts.html @@ -115,7 +115,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/areSameFormats.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/areSameFormats.ts.html index bfda8fb6477..30f5ec9edd7 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/areSameFormats.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/areSameFormats.ts.html @@ -118,7 +118,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/buildSelectionMarker.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/buildSelectionMarker.ts.html index 1914f820656..9d4cc215f6a 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/buildSelectionMarker.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/buildSelectionMarker.ts.html @@ -244,7 +244,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/getBoundingClientRect.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/getBoundingClientRect.ts.html index 23b66c0db71..a8fed0d3b45 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/getBoundingClientRect.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/getBoundingClientRect.ts.html @@ -82,7 +82,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/getDefaultStyle.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/getDefaultStyle.ts.html index 99e4f81c5e8..9a9b126d479 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/getDefaultStyle.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/getDefaultStyle.ts.html @@ -106,7 +106,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/getRegularSelectionOffsets.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/getRegularSelectionOffsets.ts.html index 0bf073e2655..0c8f3c5c174 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/getRegularSelectionOffsets.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/getRegularSelectionOffsets.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/index.html b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/index.html index 616eacf9af7..b28274e696d 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/index.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/index.html @@ -215,7 +215,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/isBlockElement.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/isBlockElement.ts.html index b95787a51d3..669cc462598 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/isBlockElement.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/isBlockElement.ts.html @@ -106,7 +106,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts.html index b638c1fa47b..00a1f329ec5 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts.html @@ -142,7 +142,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/stackFormat.ts.html b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/stackFormat.ts.html index 214924985b7..bf38d004e68 100644 --- a/coverage/roosterjs-content-model-dom/lib/domToModel/utils/stackFormat.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domToModel/utils/stackFormat.ts.html @@ -586,7 +586,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/entityUtils.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/entityUtils.ts.html index 7544f1051e5..095961bba39 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/entityUtils.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/entityUtils.ts.html @@ -580,7 +580,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/event/cacheGetEventData.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/event/cacheGetEventData.ts.html index de8a15b84ad..5b3b9365276 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/event/cacheGetEventData.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/event/cacheGetEventData.ts.html @@ -133,7 +133,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/event/eventUtils.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/event/eventUtils.ts.html index b1b5851c01b..ecf5b53675c 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/event/eventUtils.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/event/eventUtils.ts.html @@ -147,7 +147,7 @@

All files / rooste     1x -18x +20x    
const CTRL_CHAR_CODE = 'Control';
 const ALT_CHAR_CODE = 'Alt';
@@ -202,7 +202,7 @@ 

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/event/extractClipboardItems.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/event/extractClipboardItems.ts.html index 2c20239114e..542ac40617d 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/event/extractClipboardItems.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/event/extractClipboardItems.ts.html @@ -331,7 +331,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/event/index.html b/coverage/roosterjs-content-model-dom/lib/domUtils/event/index.html index 7a147010ec0..b7a346cff83 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/event/index.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/event/index.html @@ -125,7 +125,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts.html index 96201ee6ea1..a3a42d1ecb7 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts.html @@ -94,7 +94,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/index.html b/coverage/roosterjs-content-model-dom/lib/domUtils/index.html index 80249a71095..f797064c17b 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/index.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/index.html @@ -275,7 +275,7 @@

All files roosterjs-content-model-dom/lib/ diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/isElementOfType.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/isElementOfType.ts.html index 6d1154b6cc7..c284fd12177 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/isElementOfType.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/isElementOfType.ts.html @@ -79,7 +79,7 @@

All files / roosterjs       -2893x +2894x    
/**
  * Check if the given element is of the type that we are checking according to its tag name
@@ -100,7 +100,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts.html index dda6b18a14f..736f86bdd2e 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts.html @@ -81,7 +81,7 @@

All files / roosterjs       -10850x +10847x    
import type { NodeTypeMap } from 'roosterjs-content-model-types';
  
@@ -103,7 +103,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/isWhiteSpacePreserved.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/isWhiteSpacePreserved.ts.html index c30cf541d3f..b440f03470a 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/isWhiteSpacePreserved.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/isWhiteSpacePreserved.ts.html @@ -94,7 +94,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/moveChildNodes.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/moveChildNodes.ts.html index c4865823eff..ae32c4f4ccc 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/moveChildNodes.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/moveChildNodes.ts.html @@ -175,7 +175,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/normalizeRect.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/normalizeRect.ts.html index 5c7aa1c1934..e1eb8bc51cc 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/normalizeRect.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/normalizeRect.ts.html @@ -121,7 +121,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/readFile.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/readFile.ts.html index a959203d6ca..d2f7eb44f2b 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/readFile.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/readFile.ts.html @@ -118,7 +118,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/reuseCachedElement.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/reuseCachedElement.ts.html index f8e64b24323..9c07f56f40f 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/reuseCachedElement.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/reuseCachedElement.ts.html @@ -202,7 +202,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/selection/getSelectionRootNode.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/selection/getSelectionRootNode.ts.html index 2da4c0ee77a..1c77e76ec0c 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/selection/getSelectionRootNode.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/selection/getSelectionRootNode.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/selection/index.html b/coverage/roosterjs-content-model-dom/lib/domUtils/selection/index.html index 70e04e07afd..c33f3934cc6 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/selection/index.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/selection/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/stringUtil.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/stringUtil.ts.html index eb53f0cd7c0..2c963e49c29 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/stringUtil.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/stringUtil.ts.html @@ -154,7 +154,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/style/borderValues.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/style/borderValues.ts.html index 7eb17149e0d..232b3a2aa54 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/style/borderValues.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/style/borderValues.ts.html @@ -202,7 +202,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/style/index.html b/coverage/roosterjs-content-model-dom/lib/domUtils/style/index.html index 06c1171bf52..c828579a0d9 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/style/index.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/style/index.html @@ -125,7 +125,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/style/isBold.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/style/isBold.ts.html index 3ff20120b14..14cde6a8b9c 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/style/isBold.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/style/isBold.ts.html @@ -91,7 +91,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/style/transformColor.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/style/transformColor.ts.html index 0ca54422935..25e174da181 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/style/transformColor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/style/transformColor.ts.html @@ -223,7 +223,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/table/index.html b/coverage/roosterjs-content-model-dom/lib/domUtils/table/index.html index ff8221f4b9e..1566c341c6b 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/table/index.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/table/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/table/parseTableCells.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/table/parseTableCells.ts.html index 8059118bef7..ec84274061a 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/table/parseTableCells.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/table/parseTableCells.ts.html @@ -190,7 +190,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/toArray.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/toArray.ts.html index 109e97ec608..b4070bfa599 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/toArray.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/toArray.ts.html @@ -169,7 +169,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/unwrap.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/unwrap.ts.html index b5362f41034..32db4e31494 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/unwrap.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/unwrap.ts.html @@ -124,7 +124,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/domUtils/wrap.ts.html b/coverage/roosterjs-content-model-dom/lib/domUtils/wrap.ts.html index 6b68b74ad04..cd0edb93dc2 100644 --- a/coverage/roosterjs-content-model-dom/lib/domUtils/wrap.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/domUtils/wrap.ts.html @@ -121,7 +121,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/directionFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/directionFormatHandler.ts.html index 8cff0526320..9edd0c7d1a0 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/directionFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/directionFormatHandler.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/displayFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/displayFormatHandler.ts.html index 76120da440a..e7d4894d773 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/displayFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/displayFormatHandler.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/htmlAlignFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/htmlAlignFormatHandler.ts.html index 93ca54acbf4..f0ef4a8904c 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/htmlAlignFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/htmlAlignFormatHandler.ts.html @@ -166,7 +166,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/index.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/index.html index b46e26ea669..39d35379d4a 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/index.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/index.html @@ -215,7 +215,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/lineHeightFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/lineHeightFormatHandler.ts.html index 1fedd4fd09d..d56d71524c1 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/lineHeightFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/lineHeightFormatHandler.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/marginFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/marginFormatHandler.ts.html index 5960fee137d..a34cdcf9d49 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/marginFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/marginFormatHandler.ts.html @@ -208,7 +208,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/paddingFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/paddingFormatHandler.ts.html index 385b36d65f6..4e58c06b70b 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/paddingFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/paddingFormatHandler.ts.html @@ -289,7 +289,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/textAlignFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/textAlignFormatHandler.ts.html index c32f1f8f77d..d3b24813bad 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/textAlignFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/textAlignFormatHandler.ts.html @@ -199,7 +199,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/textIndentFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/textIndentFormatHandler.ts.html index c36e072cc8b..e445dd274ac 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/textIndentFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/textIndentFormatHandler.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/whiteSpaceFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/whiteSpaceFormatHandler.ts.html index acc1a995c19..32a5bdd93c9 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/whiteSpaceFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/block/whiteSpaceFormatHandler.ts.html @@ -130,7 +130,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/backgroundColorFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/backgroundColorFormatHandler.ts.html index 42850f4d0c9..ccbb717f6cd 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/backgroundColorFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/backgroundColorFormatHandler.ts.html @@ -187,7 +187,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/borderBoxFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/borderBoxFormatHandler.ts.html index d4cb48cae77..f8d2395a8cb 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/borderBoxFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/borderBoxFormatHandler.ts.html @@ -118,7 +118,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts.html index 71f8f7b8e94..34c15d070a9 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts.html @@ -30,9 +30,9 @@

All files / rooste
- 90% + 85% Branches - 18/20 + 17/20
@@ -256,7 +256,7 @@

All files / rooste }   if (value && width != defaultWidth) { - format[key] = value == 'none' ? '' : value; + format[key] = value == 'none' ? '' : value; } });   @@ -295,7 +295,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts.html index 09369b4c16c..e5cb79d8a35 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts.html @@ -118,7 +118,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/datasetFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/datasetFormatHandler.ts.html index 459e6c8fc70..18a606c5ae6 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/datasetFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/datasetFormatHandler.ts.html @@ -130,7 +130,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/floatFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/floatFormatHandler.ts.html index 4d25ca5470f..1acbb7d2ba4 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/floatFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/floatFormatHandler.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/idFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/idFormatHandler.ts.html index ef2432cc834..0d9742d0c7e 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/idFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/idFormatHandler.ts.html @@ -118,7 +118,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/index.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/index.html index 2500703bfec..10beea9b60b 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/index.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/index.html @@ -30,9 +30,9 @@

All files roosterjs-content-model-dom/l
- 95.5% + 94.59% Branches - 106/111 + 105/111
@@ -109,8 +109,8 @@

All files roosterjs-content-model-dom/l 96.15% 25/26 - 90% - 18/20 + 85% + 17/20 100% 5/5 96.15% @@ -230,7 +230,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/sizeFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/sizeFormatHandler.ts.html index b7a10398627..12e9ee1a714 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/sizeFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/sizeFormatHandler.ts.html @@ -268,7 +268,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/verticalAlignFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/verticalAlignFormatHandler.ts.html index cf36e6a8d72..9796ca00003 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/verticalAlignFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/verticalAlignFormatHandler.ts.html @@ -172,7 +172,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/wordBreakFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/wordBreakFormatHandler.ts.html index 90990d52e2c..d469b237418 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/wordBreakFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/common/wordBreakFormatHandler.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts.html index a8bf732d04b..94cf15c56af 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/defaultFormatHandlers.ts.html @@ -754,7 +754,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/entity/entityFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/entity/entityFormatHandler.ts.html index 93e39763fe8..cf7eb9621e0 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/entity/entityFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/entity/entityFormatHandler.ts.html @@ -136,7 +136,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/entity/index.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/entity/index.html index f2b74a305e3..a7c4d805a29 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/entity/index.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/entity/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/index.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/index.html index fe7f95e87fa..2a4d69776f2 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/index.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-dom/lib/ diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/index.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/index.html index 0d949704ae2..7ec64b05ff6 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/index.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/index.html @@ -125,7 +125,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/listItemThreadFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/listItemThreadFormatHandler.ts.html index e30b132d994..1deefd6768c 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/listItemThreadFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/listItemThreadFormatHandler.ts.html @@ -211,7 +211,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelThreadFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelThreadFormatHandler.ts.html index e30a9659b1f..6cb0d346533 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelThreadFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelThreadFormatHandler.ts.html @@ -205,7 +205,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/listStyleFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/listStyleFormatHandler.ts.html index cde2491b9aa..3137f4b8c7f 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/listStyleFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/list/listStyleFormatHandler.ts.html @@ -151,7 +151,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/boldFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/boldFormatHandler.ts.html index 1d176e1a1a3..213155f5315 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/boldFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/boldFormatHandler.ts.html @@ -169,7 +169,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/fontFamilyFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/fontFamilyFormatHandler.ts.html index 63e6bcebd05..0ae57872109 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/fontFamilyFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/fontFamilyFormatHandler.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/fontSizeFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/fontSizeFormatHandler.ts.html index 36d18df91b2..2a3b357113a 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/fontSizeFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/fontSizeFormatHandler.ts.html @@ -325,7 +325,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/index.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/index.html index 9768853a4b7..3a8ffe437e0 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/index.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/index.html @@ -230,7 +230,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts.html index ce8f2efadf4..7ae7c6fd971 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts.html @@ -163,7 +163,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/letterSpacingFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/letterSpacingFormatHandler.ts.html index 6151adab9d0..26e46d143a7 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/letterSpacingFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/letterSpacingFormatHandler.ts.html @@ -148,7 +148,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/linkFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/linkFormatHandler.ts.html index 22e466282d7..e443b677f07 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/linkFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/linkFormatHandler.ts.html @@ -295,7 +295,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/strikeFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/strikeFormatHandler.ts.html index ce86d9032cb..33ba9a304e5 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/strikeFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/strikeFormatHandler.ts.html @@ -127,7 +127,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/superOrSubScriptFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/superOrSubScriptFormatHandler.ts.html index 2ef4684c9da..76025b86534 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/superOrSubScriptFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/superOrSubScriptFormatHandler.ts.html @@ -199,7 +199,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/textColorFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/textColorFormatHandler.ts.html index fd150be1431..8b68d2ffef8 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/textColorFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/textColorFormatHandler.ts.html @@ -169,7 +169,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/underlineFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/underlineFormatHandler.ts.html index a99533f490b..7d4572f4c0a 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/underlineFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/segment/underlineFormatHandler.ts.html @@ -163,7 +163,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/index.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/index.html index 39939d8fdb6..189bdc3eea9 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/index.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/index.html @@ -125,7 +125,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/tableLayoutFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/tableLayoutFormatHandler.ts.html index 7e6d8ffdefc..f9ea92d58e0 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/tableLayoutFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/tableLayoutFormatHandler.ts.html @@ -121,7 +121,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/tableSpacingFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/tableSpacingFormatHandler.ts.html index 6c50fa94339..cfdf2800221 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/tableSpacingFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/tableSpacingFormatHandler.ts.html @@ -175,7 +175,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/textColorOnTableCellFormatHandler.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/textColorOnTableCellFormatHandler.ts.html index 8e84062251a..ff2ff97166a 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/textColorOnTableCellFormatHandler.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/table/textColorOnTableCellFormatHandler.ts.html @@ -115,7 +115,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts.html index f54ff4783db..a55d8c502f7 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts.html @@ -583,7 +583,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/dir.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/dir.ts.html index 8e3c6a0afc4..44a376cb656 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/dir.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/dir.ts.html @@ -220,7 +220,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/index.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/index.html index 7ce9c26cacf..447626695e1 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/index.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/index.html @@ -140,7 +140,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts.html index 64d587a4c83..5036fa9a1f0 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts.html @@ -304,7 +304,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/shouldSetValue.ts.html b/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/shouldSetValue.ts.html index 741eb405743..17a21cb6fea 100644 --- a/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/shouldSetValue.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/formatHandlers/utils/shouldSetValue.ts.html @@ -109,7 +109,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/index.html b/coverage/roosterjs-content-model-dom/lib/index.html index b065ef28425..47eb6ad8314 100644 --- a/coverage/roosterjs-content-model-dom/lib/index.html +++ b/coverage/roosterjs-content-model-dom/lib/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-dom/lib

Code coverage generated by istanbul - at Tue Apr 16 2024 17:17:51 GMT+0000 (Coordinated Universal Time) + at Tue Apr 16 2024 17:40:39 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/roosterjs-content-model-dom/lib/index.ts.html b/coverage/roosterjs-content-model-dom/lib/index.ts.html index 5d39a66dde4..9ef558d8a3d 100644 --- a/coverage/roosterjs-content-model-dom/lib/index.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/index.ts.html @@ -213,8 +213,8 @@

All files / roosterjs-co 222x   24x -2329x -678x +2326x +679x 810x 468x 124x @@ -239,7 +239,7 @@

All files / roosterjs-co 236x 218x 905x -707x +711x 45x 786x 4x @@ -308,10 +308,10 @@

All files / roosterjs-co 67x 1x 13x -142x +141x   75x -35x +36x 195x 18x 11x @@ -327,7 +327,7 @@

All files / roosterjs-co 2x 74x   -371x +374x 45x 132x 1x @@ -478,7 +478,7 @@

All files / roosterjs-co diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/block/index.html b/coverage/roosterjs-content-model-dom/lib/modelApi/block/index.html index 31d8d6a014f..2bfd03a5edb 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/block/index.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/block/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts.html index ca0d115b46d..fb62dcfcb53 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts.html @@ -97,7 +97,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/common/addBlock.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/common/addBlock.ts.html index e46c3f89d93..43f2e4c839b 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/common/addBlock.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/common/addBlock.ts.html @@ -94,7 +94,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts.html index ee6b00494cf..8128d4f68f1 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts.html @@ -181,7 +181,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/common/addSegment.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/common/addSegment.ts.html index b7d824b61a5..89714368254 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/common/addSegment.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/common/addSegment.ts.html @@ -229,7 +229,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/common/addTextSegment.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/common/addTextSegment.ts.html index b085a10b9f0..02c084bf160 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/common/addTextSegment.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/common/addTextSegment.ts.html @@ -208,7 +208,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/common/ensureParagraph.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/common/ensureParagraph.ts.html index e8c826f7c3a..f2698d5a213 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/common/ensureParagraph.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/common/ensureParagraph.ts.html @@ -157,7 +157,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/common/hasSpacesOnly.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/common/hasSpacesOnly.ts.html index bb151c9e2a2..92591df8ab5 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/common/hasSpacesOnly.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/common/hasSpacesOnly.ts.html @@ -100,7 +100,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/common/index.html b/coverage/roosterjs-content-model-dom/lib/modelApi/common/index.html index 6085f898026..e4146fc818b 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/common/index.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/common/index.html @@ -245,7 +245,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/common/isEmpty.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/common/isEmpty.ts.html index f535cc52a83..cb3832cf0c9 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/common/isEmpty.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/common/isEmpty.ts.html @@ -367,7 +367,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/common/normalizeContentModel.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/common/normalizeContentModel.ts.html index 2a64e66b17b..6b56b8d7791 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/common/normalizeContentModel.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/common/normalizeContentModel.ts.html @@ -202,7 +202,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts.html index 3404216af62..a7ff25d38a7 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts.html @@ -424,7 +424,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegment.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegment.ts.html index 23dfc641a33..d08efb1e132 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegment.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegment.ts.html @@ -532,7 +532,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts.html index 5859b6378c6..d5b99c171ea 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createBr.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createBr.ts.html index a1f6022396c..c6da2fa47d8 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createBr.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createBr.ts.html @@ -100,7 +100,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createContentModelDocument.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createContentModelDocument.ts.html index 09c732d95aa..1a1a0f22d07 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createContentModelDocument.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createContentModelDocument.ts.html @@ -133,7 +133,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createDivider.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createDivider.ts.html index 2b48dc3a06a..7e9b1ab4a3c 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createDivider.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createDivider.ts.html @@ -115,7 +115,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createEmptyModel.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createEmptyModel.ts.html index 8f8b333b8ae..79c0d842ffe 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createEmptyModel.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createEmptyModel.ts.html @@ -130,7 +130,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createEntity.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createEntity.ts.html index ec998c2d7c2..5818ea7ca45 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createEntity.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createEntity.ts.html @@ -151,7 +151,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createFormatContainer.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createFormatContainer.ts.html index 90a0541ee6c..1bbfd955835 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createFormatContainer.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createFormatContainer.ts.html @@ -130,7 +130,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralBlock.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralBlock.ts.html index 96a098289a6..ed0ea53c256 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralBlock.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralBlock.ts.html @@ -109,7 +109,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralSegment.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralSegment.ts.html index 2d039b3026d..84affe36ed5 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralSegment.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createGeneralSegment.ts.html @@ -133,7 +133,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createImage.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createImage.ts.html index 0a03c1302ab..0b9d430eceb 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createImage.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createImage.ts.html @@ -109,7 +109,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createListItem.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createListItem.ts.html index 978cc58be04..21937fa889c 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createListItem.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createListItem.ts.html @@ -160,7 +160,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createListLevel.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createListLevel.ts.html index 65c1ecb4318..8335e9a10f3 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createListLevel.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createListLevel.ts.html @@ -133,7 +133,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createParagraph.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createParagraph.ts.html index 862c9c04cf3..bad7bb2fed2 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createParagraph.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createParagraph.ts.html @@ -193,7 +193,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createParagraphDecorator.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createParagraphDecorator.ts.html index 7f19f4470bf..df2d1fc6c8a 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createParagraphDecorator.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createParagraphDecorator.ts.html @@ -121,7 +121,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createSelectionMarker.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createSelectionMarker.ts.html index 062ce8de918..84a2f69a916 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createSelectionMarker.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createSelectionMarker.ts.html @@ -118,7 +118,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createTable.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createTable.ts.html index d02d1e6c67c..e045ceec1e4 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createTable.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createTable.ts.html @@ -154,7 +154,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createTableCell.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createTableCell.ts.html index ad7e3b18bc1..bda8ac3d5ef 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createTableCell.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createTableCell.ts.html @@ -166,7 +166,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts.html index 81b40fc95d7..db47453d64a 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts.html @@ -115,21 +115,21 @@

All files / rooste       -1706x +1710x           -1706x +1710x 8x     -1706x +1710x 3x     -1706x +1710x    
import { addCode, addLink } from '../common/addDecorators';
 import type {
@@ -175,7 +175,7 @@ 

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/index.html b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/index.html index 192250ab994..36a02073f88 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/creators/index.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/creators/index.html @@ -335,7 +335,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/applyTableFormat.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/applyTableFormat.ts.html index 8c4359e6964..e879d2cd68a 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/applyTableFormat.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/applyTableFormat.ts.html @@ -979,7 +979,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/cloneModel.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/cloneModel.ts.html index 9e16a83c5f6..852b2541e27 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/cloneModel.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/cloneModel.ts.html @@ -1192,7 +1192,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteBlock.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteBlock.ts.html index bcfd2f60741..68944abfcd2 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteBlock.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteBlock.ts.html @@ -271,7 +271,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteExpandedSelection.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteExpandedSelection.ts.html index 4a4914d5212..2ce2212d50f 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteExpandedSelection.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteExpandedSelection.ts.html @@ -490,7 +490,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteSegment.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteSegment.ts.html index e8524aa497c..c29ad6469a7 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteSegment.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteSegment.ts.html @@ -376,7 +376,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteSelection.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteSelection.ts.html index 5cf414138b7..cc1629ceccb 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteSelection.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteSelection.ts.html @@ -232,7 +232,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteSingleChar.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteSingleChar.ts.html index a852cc82d48..299789b28ab 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteSingleChar.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/deleteSingleChar.ts.html @@ -178,7 +178,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/getClosestAncestorBlockGroupIndex.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/getClosestAncestorBlockGroupIndex.ts.html index 87f049a7b3c..a9513fb22dc 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/getClosestAncestorBlockGroupIndex.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/getClosestAncestorBlockGroupIndex.ts.html @@ -163,7 +163,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/getListStyleTypeFromString.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/getListStyleTypeFromString.ts.html index 43c345f2a28..fdb07c06736 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/getListStyleTypeFromString.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/getListStyleTypeFromString.ts.html @@ -121,7 +121,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/getSegmentTextFormat.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/getSegmentTextFormat.ts.html index 1ad1af40117..2406577b660 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/getSegmentTextFormat.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/getSegmentTextFormat.ts.html @@ -163,7 +163,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/index.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/index.html index 1bcdcc7c9a6..fc10bb4bf85 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/index.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/index.html @@ -290,7 +290,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/mergeModel.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/mergeModel.ts.html index 8f38ac74269..0722281c4ae 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/mergeModel.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/mergeModel.ts.html @@ -1258,7 +1258,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/normalizeTable.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/normalizeTable.ts.html index 2d853c5eaa2..57703e5cf74 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/normalizeTable.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/normalizeTable.ts.html @@ -529,7 +529,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/retrieveModelFormatState.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/retrieveModelFormatState.ts.html index 0e0eeaa96bf..7754a7b7dba 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/retrieveModelFormatState.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/retrieveModelFormatState.ts.html @@ -838,7 +838,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/setTableCellBackgroundColor.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/setTableCellBackgroundColor.ts.html index 3c4d386dbc2..fec8b88446a 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/editing/setTableCellBackgroundColor.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/editing/setTableCellBackgroundColor.ts.html @@ -481,7 +481,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/definitionCreators.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/definitionCreators.ts.html index 26812aa073a..913769f2f70 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/definitionCreators.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/definitionCreators.ts.html @@ -436,7 +436,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/index.html b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/index.html index 5277711d35e..81933bc6d94 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/index.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/index.html @@ -185,7 +185,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateImageMetadata.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateImageMetadata.ts.html index dcc87c8abdc..3bc20a43250 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateImageMetadata.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateImageMetadata.ts.html @@ -166,7 +166,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateListMetadata.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateListMetadata.ts.html index 616f548b6c1..9acc48306c4 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateListMetadata.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateListMetadata.ts.html @@ -101,7 +101,13 @@

All files / rooste 42 43 44 -451x +45 +46 +47 +48 +49 +50 +511x 1x 1x 1x @@ -114,6 +120,10 @@

All files / rooste       +  +  +  +  1x     @@ -139,6 +149,8 @@

All files / rooste       +  +  1x     @@ -153,12 +165,18 @@

All files / rooste createNumberDefinition, createObjectDefinition, } from './definitionCreators'; -import type { ContentModelWithDataset, ListMetadataFormat } from 'roosterjs-content-model-types'; +import type { + ContentModelWithDataset, + ListMetadataFormat, + ObjectDefinition, +} from 'roosterjs-content-model-types';   /** * Metadata definition for List */ -export const ListMetadataDefinition = createObjectDefinition<ListMetadataFormat>( +export const ListMetadataDefinition: ObjectDefinition<ListMetadataFormat> = createObjectDefinition< + ListMetadataFormat +>( { orderedStyleType: createNumberDefinition( true /** isOptional */, @@ -196,7 +214,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateMetadata.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateMetadata.ts.html index b1d96364d41..1281c569c0d 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateMetadata.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateMetadata.ts.html @@ -208,7 +208,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableCellMetadata.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableCellMetadata.ts.html index a1628fc4349..bd1800db44d 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableCellMetadata.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableCellMetadata.ts.html @@ -139,7 +139,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableMetadata.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableMetadata.ts.html index 7e59464bfe1..8a37c8840cd 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableMetadata.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableMetadata.ts.html @@ -223,7 +223,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/validate.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/validate.ts.html index 8dc7cd9db38..aebb8d78d6f 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/validate.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/metadata/validate.ts.html @@ -259,7 +259,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/collectSelections.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/collectSelections.ts.html index 97eea51133e..4f034dea27a 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/collectSelections.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/collectSelections.ts.html @@ -799,7 +799,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/getSelectedCells.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/getSelectedCells.ts.html index 0b44aac99c4..49bf66ec896 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/getSelectedCells.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/getSelectedCells.ts.html @@ -169,7 +169,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/hasSelectionInBlock.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/hasSelectionInBlock.ts.html index 15be3b772cc..f990a68656e 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/hasSelectionInBlock.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/hasSelectionInBlock.ts.html @@ -145,7 +145,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/hasSelectionInBlockGroup.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/hasSelectionInBlockGroup.ts.html index f4f790b66f1..cc24ba321de 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/hasSelectionInBlockGroup.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/hasSelectionInBlockGroup.ts.html @@ -118,7 +118,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/hasSelectionInSegment.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/hasSelectionInSegment.ts.html index 60a75bceda4..ed4941609d8 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/hasSelectionInSegment.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/hasSelectionInSegment.ts.html @@ -103,7 +103,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/index.html b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/index.html index ebc4793baee..e08e7ce6730 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/index.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/index.html @@ -185,7 +185,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/iterateSelections.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/iterateSelections.ts.html index 6ba32e3174d..19549132c11 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/iterateSelections.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/iterateSelections.ts.html @@ -709,7 +709,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/setSelection.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/setSelection.ts.html index 04458abaefe..c9fe4aa8877 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/selection/setSelection.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/selection/setSelection.ts.html @@ -275,7 +275,7 @@

All files / rooste     1x -163x +162x       @@ -284,16 +284,16 @@

All files / rooste       -187x -187x +186x +186x 2x     -187x -185x +186x +184x     -187x +186x       @@ -303,7 +303,7 @@

All files / rooste       -185x +184x       @@ -323,16 +323,16 @@

All files / rooste       -134x +133x   -134x -279x +133x +277x           -279x +277x       @@ -344,15 +344,15 @@

All files / rooste       -134x -40x +133x +39x   -40x -40x +39x +39x       -134x +133x     26x @@ -411,15 +411,15 @@

All files / rooste       -279x +277x   -93x +92x       -40x +39x   -93x +92x     3x @@ -433,19 +433,19 @@

All files / rooste 8x 8x   -175x -175x +174x +174x         -216x +215x 72x   -144x +143x     -216x +215x       @@ -455,9 +455,9 @@

All files / rooste       -481x -481x -481x +478x +478x +478x    
import { isGeneralSegment } from '../typeCheck/isGeneralSegment';
 import type {
@@ -667,7 +667,7 @@ 

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/typeCheck/index.html b/coverage/roosterjs-content-model-dom/lib/modelApi/typeCheck/index.html index 038340fb551..01bfc71100a 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/typeCheck/index.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/typeCheck/index.html @@ -110,7 +110,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/typeCheck/isBlockGroupOfType.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/typeCheck/isBlockGroupOfType.ts.html index 80672ccc2a3..2872c567fe2 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/typeCheck/isBlockGroupOfType.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/typeCheck/isBlockGroupOfType.ts.html @@ -121,7 +121,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelApi/typeCheck/isGeneralSegment.ts.html b/coverage/roosterjs-content-model-dom/lib/modelApi/typeCheck/isGeneralSegment.ts.html index 9abd83866bb..89a12ec7ae3 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelApi/typeCheck/isGeneralSegment.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelApi/typeCheck/isGeneralSegment.ts.html @@ -86,7 +86,7 @@

All files / rooste 1x     -225x +224x       @@ -115,7 +115,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts.html index 5ac0843e04e..cfef4dcaa68 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts.html @@ -388,7 +388,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts.html index de4a340d5f0..90b89572e29 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts.html @@ -469,7 +469,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/context/defaultContentModelHandlers.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/context/defaultContentModelHandlers.ts.html index a8a0b23866d..23f77b0f43f 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/context/defaultContentModelHandlers.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/context/defaultContentModelHandlers.ts.html @@ -181,7 +181,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/context/index.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/context/index.html index 8b105dadc8f..41646b3240b 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/context/index.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/context/index.html @@ -110,7 +110,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlock.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlock.ts.html index f4e2199ed2b..20c506009ab 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlock.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlock.ts.html @@ -217,7 +217,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlockGroupChildren.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlockGroupChildren.ts.html index 22c5b930b4f..b90ece7106b 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlockGroupChildren.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBlockGroupChildren.ts.html @@ -205,7 +205,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBr.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBr.ts.html index 347ba432863..75f64b4ca32 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBr.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleBr.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleDivider.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleDivider.ts.html index b946584c911..0829997f300 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleDivider.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleDivider.ts.html @@ -190,7 +190,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleEntity.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleEntity.ts.html index 19f97ce6665..5c03b2d4c77 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleEntity.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleEntity.ts.html @@ -343,7 +343,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleFormatContainer.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleFormatContainer.ts.html index 2f4051fd424..7ffe12615f8 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleFormatContainer.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleFormatContainer.ts.html @@ -277,7 +277,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleGeneralModel.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleGeneralModel.ts.html index 16cbab72b52..fd243a29999 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleGeneralModel.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleGeneralModel.ts.html @@ -262,7 +262,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleImage.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleImage.ts.html index cb18d08c7da..d6c1da82521 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleImage.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleImage.ts.html @@ -229,7 +229,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleList.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleList.ts.html index 2c2699a6968..dc6ea95f8a5 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleList.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleList.ts.html @@ -265,7 +265,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleListItem.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleListItem.ts.html index 8b9414469f2..89f45fd4d5b 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleListItem.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleListItem.ts.html @@ -235,7 +235,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleParagraph.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleParagraph.ts.html index 4b0f16ae5ba..37a1813da16 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleParagraph.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleParagraph.ts.html @@ -448,7 +448,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegment.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegment.ts.html index c2081cc2483..214ec4c6e8a 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegment.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegment.ts.html @@ -226,7 +226,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegmentDecorator.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegmentDecorator.ts.html index 7e1353bedc9..e3973759d31 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegmentDecorator.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleSegmentDecorator.ts.html @@ -202,7 +202,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleTable.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleTable.ts.html index 83c57dff432..78ca7879ae6 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleTable.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleTable.ts.html @@ -529,7 +529,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleText.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleText.ts.html index cf205deeb59..1f6d3ac37a3 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleText.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/handleText.ts.html @@ -133,7 +133,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/index.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/index.html index df4fb478ada..2f39ae66410 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/index.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/handlers/index.html @@ -305,7 +305,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/index.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/index.html index b8ee827dc56..1621611e94f 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/index.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-dom/lib/ diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/index.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/index.html index 1e4eacc5697..084dbf2ef93 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/index.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/index.html @@ -125,7 +125,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/mergeNode.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/mergeNode.ts.html index f0592fd1916..62474d66981 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/mergeNode.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/mergeNode.ts.html @@ -202,7 +202,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/optimize.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/optimize.ts.html index 8462c726660..e208c7d02d6 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/optimize.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/optimize.ts.html @@ -130,7 +130,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/removeUnnecessarySpan.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/removeUnnecessarySpan.ts.html index 9bad197754f..d211db650ef 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/removeUnnecessarySpan.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/optimizers/removeUnnecessarySpan.ts.html @@ -148,7 +148,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/applyFormat.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/applyFormat.ts.html index 3aaee1deb7d..a03e2e36afe 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/applyFormat.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/applyFormat.ts.html @@ -136,7 +136,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/applyMetadata.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/applyMetadata.ts.html index eeed1063a39..58b194dd1f0 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/applyMetadata.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/applyMetadata.ts.html @@ -148,7 +148,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts.html index 26aaf6760f1..f7967129dae 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts.html @@ -145,7 +145,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/index.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/index.html index 7178d93f046..5b692225e6a 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/index.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/index.html @@ -140,7 +140,7 @@

All files roosterjs-content-model-dom/l diff --git a/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/stackFormat.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/stackFormat.ts.html index 7fc9fa83939..20fcded114e 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/stackFormat.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToDom/utils/stackFormat.ts.html @@ -175,7 +175,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-dom/lib/modelToText/contentModelToText.ts.html b/coverage/roosterjs-content-model-dom/lib/modelToText/contentModelToText.ts.html index d6aa25b1e2b..b7ce75ee1df 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToText/contentModelToText.ts.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToText/contentModelToText.ts.html @@ -298,7 +298,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-dom/lib/modelToText/index.html b/coverage/roosterjs-content-model-dom/lib/modelToText/index.html index eea4c908448..d671288e1f8 100644 --- a/coverage/roosterjs-content-model-dom/lib/modelToText/index.html +++ b/coverage/roosterjs-content-model-dom/lib/modelToText/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-dom/lib/ diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts.html index 4ddaa966f0d..6dbeeffb65d 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts.html @@ -643,7 +643,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/hyphen/index.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/hyphen/index.html index 738d6e37d86..7358c58cfaa 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/hyphen/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/hyphen/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/hyphen/transformHyphen.ts.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/hyphen/transformHyphen.ts.html index 4cdba292c20..9dd05c68350 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/hyphen/transformHyphen.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/hyphen/transformHyphen.ts.html @@ -202,7 +202,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/index.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/index.html index 0a8ec401262..6900933186e 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugins/ diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/createLink.ts.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/createLink.ts.html index f967541cc71..5963f1368fb 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/createLink.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/createLink.ts.html @@ -133,7 +133,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/createLinkAfterSpace.ts.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/createLinkAfterSpace.ts.html index 92b88cbd296..9c2b673e1c8 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/createLinkAfterSpace.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/createLinkAfterSpace.ts.html @@ -187,7 +187,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/index.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/index.html index 5dec8f18cea..482fe2f6d09 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/index.html @@ -125,7 +125,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/unlink.ts.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/unlink.ts.html index 64fdcd04633..f8061f3a24a 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/unlink.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/link/unlink.ts.html @@ -118,7 +118,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/convertAlphaToDecimals.ts.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/convertAlphaToDecimals.ts.html index ef2c1861228..61b684d6226 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/convertAlphaToDecimals.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/convertAlphaToDecimals.ts.html @@ -121,7 +121,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/getIndex.ts.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/getIndex.ts.html index 0d9b6a01aed..8898f0e5b36 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/getIndex.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/getIndex.ts.html @@ -94,7 +94,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts.html index 65546bef476..7aa019b3644 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts.html @@ -457,7 +457,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/getNumberingListStyle.ts.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/getNumberingListStyle.ts.html index aaa326e5bef..7f3e17abaf1 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/getNumberingListStyle.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/getNumberingListStyle.ts.html @@ -607,7 +607,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/index.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/index.html index c6475909b89..5efe3c5e90d 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/index.html @@ -155,7 +155,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/keyboardListTrigger.ts.html b/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/keyboardListTrigger.ts.html index 396dc1d0b80..3e98b7391e7 100644 --- a/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/keyboardListTrigger.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/autoFormat/list/keyboardListTrigger.ts.html @@ -250,7 +250,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/contextMenuBase/ContextMenuPluginBase.ts.html b/coverage/roosterjs-content-model-plugins/lib/contextMenuBase/ContextMenuPluginBase.ts.html index 9f15dd1d879..01d5d8a2ae3 100644 --- a/coverage/roosterjs-content-model-plugins/lib/contextMenuBase/ContextMenuPluginBase.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/contextMenuBase/ContextMenuPluginBase.ts.html @@ -400,7 +400,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/contextMenuBase/index.html b/coverage/roosterjs-content-model-plugins/lib/contextMenuBase/index.html index 90655e1224f..964c967bdd1 100644 --- a/coverage/roosterjs-content-model-plugins/lib/contextMenuBase/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/contextMenuBase/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugins/ diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/EditPlugin.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/EditPlugin.ts.html index b6e33036292..e3b0ef1cf28 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/EditPlugin.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/EditPlugin.ts.html @@ -532,7 +532,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteAllSegmentBefore.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteAllSegmentBefore.ts.html index fbf517a3a77..f598060b3ec 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteAllSegmentBefore.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteAllSegmentBefore.ts.html @@ -136,7 +136,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteCollapsedSelection.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteCollapsedSelection.ts.html index 499573498b7..5953a632526 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteCollapsedSelection.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteCollapsedSelection.ts.html @@ -502,7 +502,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteEmptyQuote.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteEmptyQuote.ts.html index 98bbbee59e5..5d9b895cf5e 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteEmptyQuote.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteEmptyQuote.ts.html @@ -325,7 +325,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteList.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteList.ts.html index 0ba58a1233a..eff0c077271 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteList.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteList.ts.html @@ -163,7 +163,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteWordSelection.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteWordSelection.ts.html index 457b3c83b31..2dad0801977 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteWordSelection.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/deleteWordSelection.ts.html @@ -637,7 +637,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/index.html b/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/index.html index 64eaadb2ccc..396cdbc9b94 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/deleteSteps/index.html @@ -155,7 +155,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/handleKeyboardEventCommon.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/handleKeyboardEventCommon.ts.html index 1067fd96677..cddc7c668d6 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/handleKeyboardEventCommon.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/handleKeyboardEventCommon.ts.html @@ -280,7 +280,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/index.html b/coverage/roosterjs-content-model-plugins/lib/edit/index.html index 05f8e2a15bb..d19f91d088d 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/index.html @@ -155,7 +155,7 @@

All files roosterjs-content-model-plugins/ diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/inputSteps/handleEnterOnList.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/inputSteps/handleEnterOnList.ts.html index 49637f7ad3a..868fd0c7b87 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/inputSteps/handleEnterOnList.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/inputSteps/handleEnterOnList.ts.html @@ -514,7 +514,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/inputSteps/index.html b/coverage/roosterjs-content-model-plugins/lib/edit/inputSteps/index.html index 2899958b68e..6b7d880f42f 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/inputSteps/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/inputSteps/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/keyboardDelete.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/keyboardDelete.ts.html index 5fe26eed2db..de39d21009a 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/keyboardDelete.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/keyboardDelete.ts.html @@ -388,7 +388,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/keyboardInput.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/keyboardInput.ts.html index ac971ff75ae..bdf585a3173 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/keyboardInput.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/keyboardInput.ts.html @@ -274,7 +274,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/keyboardTab.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/keyboardTab.ts.html index 88edb4902c8..12017b86e24 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/keyboardTab.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/keyboardTab.ts.html @@ -277,7 +277,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnList.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnList.ts.html index df8657a7caf..4b0e903d67c 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnList.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnList.ts.html @@ -187,7 +187,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnParagraph.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnParagraph.ts.html index 6f0c8d61a72..13838d03509 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnParagraph.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnParagraph.ts.html @@ -358,7 +358,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnTable.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnTable.ts.html index 37118fe0c3f..b5ca154a475 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnTable.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnTable.ts.html @@ -136,7 +136,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnTableCell.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnTableCell.ts.html index 3fed6445f5f..fa13690c710 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnTableCell.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/handleTabOnTableCell.ts.html @@ -223,7 +223,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/index.html b/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/index.html index 40f93d41964..562c86c2b55 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/tabUtils/index.html @@ -140,7 +140,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/utils/getLeafSiblingBlock.ts.html b/coverage/roosterjs-content-model-plugins/lib/edit/utils/getLeafSiblingBlock.ts.html index 5b595e18e92..3e004534a56 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/utils/getLeafSiblingBlock.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/utils/getLeafSiblingBlock.ts.html @@ -367,7 +367,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/edit/utils/index.html b/coverage/roosterjs-content-model-plugins/lib/edit/utils/index.html index 6bd3b835697..89cfdd7f92a 100644 --- a/coverage/roosterjs-content-model-plugins/lib/edit/utils/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/edit/utils/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/hyperlink/HyperlinkPlugin.ts.html b/coverage/roosterjs-content-model-plugins/lib/hyperlink/HyperlinkPlugin.ts.html index af6f6e17178..16910e0957b 100644 --- a/coverage/roosterjs-content-model-plugins/lib/hyperlink/HyperlinkPlugin.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/hyperlink/HyperlinkPlugin.ts.html @@ -556,7 +556,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/hyperlink/index.html b/coverage/roosterjs-content-model-plugins/lib/hyperlink/index.html index 04a1cd5815f..5d33bf68d8e 100644 --- a/coverage/roosterjs-content-model-plugins/lib/hyperlink/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/hyperlink/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugins/ diff --git a/coverage/roosterjs-content-model-plugins/lib/index.html b/coverage/roosterjs-content-model-plugins/lib/index.html index f39d4e8df9e..ba732748e18 100644 --- a/coverage/roosterjs-content-model-plugins/lib/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/index.html @@ -25,7 +25,7 @@

All files roosterjs-content-model-plugins/lib
100% Statements - 33/33 + 37/37
@@ -37,16 +37,16 @@

All files roosterjs-content-model-plugins/lib
- 13.04% + 12% Functions - 3/23 + 3/25
100% Lines - 24/24 + 26/26
@@ -78,13 +78,13 @@

All files roosterjs-content-model-plugins/lib
100% - 33/33 + 37/37 100% 0/0 - 13.04% - 3/23 + 12% + 3/25 100% - 24/24 + 26/26 @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugins/lib diff --git a/coverage/roosterjs-content-model-plugins/lib/index.ts.html b/coverage/roosterjs-content-model-plugins/lib/index.ts.html index 44034f3288a..d7f3fe88d99 100644 --- a/coverage/roosterjs-content-model-plugins/lib/index.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/index.ts.html @@ -25,7 +25,7 @@

All files / roosterjs-co
100% Statements - 33/33 + 37/37
@@ -37,16 +37,16 @@

All files / roosterjs-co
- 13.04% + 12% Functions - 3/23 + 3/25
100% Lines - 24/24 + 26/26
@@ -86,7 +86,12 @@

All files / roosterjs-co 27 28 29 -301x +30 +31 +32 +33 +34 +351x 4x 4x 1x @@ -115,6 +120,11 @@

All files / roosterjs-co 1x 1x   +1x +  +  +  +1x  
export { TableEditPlugin } from './tableEdit/TableEditPlugin';
 export { PastePlugin } from './paste/PastePlugin';
 export { EditPlugin } from './edit/EditPlugin';
@@ -144,6 +154,11 @@ 

All files / roosterjs-co export { MarkdownPlugin, MarkdownOptions } from './markdown/MarkdownPlugin'; export { HyperlinkPlugin } from './hyperlink/HyperlinkPlugin'; export { HyperlinkToolTip } from './hyperlink/HyperlinkToolTip'; +export { PickerPlugin } from './picker/PickerPlugin'; +export { PickerHelper } from './picker/PickerHelper'; +export { PickerSelectionChangMode, PickerDirection, PickerHandler } from './picker/PickerHandler'; +  +export { getDOMInsertPointRect } from './pluginUtils/Rect/getDOMInsertPointRect';  

@@ -151,7 +166,7 @@

All files / roosterjs-co diff --git a/coverage/roosterjs-content-model-plugins/lib/markdown/MarkdownPlugin.ts.html b/coverage/roosterjs-content-model-plugins/lib/markdown/MarkdownPlugin.ts.html index 1237d696135..8e72faa160a 100644 --- a/coverage/roosterjs-content-model-plugins/lib/markdown/MarkdownPlugin.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/markdown/MarkdownPlugin.ts.html @@ -712,7 +712,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/markdown/index.html b/coverage/roosterjs-content-model-plugins/lib/markdown/index.html index 2351033f082..7cdd37d55cc 100644 --- a/coverage/roosterjs-content-model-plugins/lib/markdown/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/markdown/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugins/ diff --git a/coverage/roosterjs-content-model-plugins/lib/markdown/utils/index.html b/coverage/roosterjs-content-model-plugins/lib/markdown/utils/index.html index e8d45ed2c2f..7bec223e0ad 100644 --- a/coverage/roosterjs-content-model-plugins/lib/markdown/utils/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/markdown/utils/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/markdown/utils/setFormat.ts.html b/coverage/roosterjs-content-model-plugins/lib/markdown/utils/setFormat.ts.html index 11152ce9362..b91ed054e64 100644 --- a/coverage/roosterjs-content-model-plugins/lib/markdown/utils/setFormat.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/markdown/utils/setFormat.ts.html @@ -247,7 +247,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/Excel/index.html b/coverage/roosterjs-content-model-plugins/lib/paste/Excel/index.html index 892b07911a0..8121b8f2baa 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/Excel/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/Excel/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/Excel/processPastedContentFromExcel.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/Excel/processPastedContentFromExcel.ts.html index 8b8b2be2106..414350efb2d 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/Excel/processPastedContentFromExcel.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/Excel/processPastedContentFromExcel.ts.html @@ -397,7 +397,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/PastePlugin.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/PastePlugin.ts.html index 9f71047b47e..14c58fed824 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/PastePlugin.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/PastePlugin.ts.html @@ -290,8 +290,8 @@

All files / roosterjs     1x -103x -79x +102x +78x     24x @@ -553,7 +553,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/PowerPoint/index.html b/coverage/roosterjs-content-model-plugins/lib/paste/PowerPoint/index.html index 5100f1cb194..6e282b802cb 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/PowerPoint/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/PowerPoint/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/PowerPoint/processPastedContentFromPowerPoint.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/PowerPoint/processPastedContentFromPowerPoint.ts.html index 41a50c6fe04..0315bc9d3b7 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/PowerPoint/processPastedContentFromPowerPoint.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/PowerPoint/processPastedContentFromPowerPoint.ts.html @@ -142,7 +142,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/WacComponents/constants.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/WacComponents/constants.ts.html index 79499a0d893..73db59e5359 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/WacComponents/constants.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/WacComponents/constants.ts.html @@ -244,7 +244,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/WacComponents/index.html b/coverage/roosterjs-content-model-plugins/lib/paste/WacComponents/index.html index 4677b782aaf..ea61c46f64b 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/WacComponents/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/WacComponents/index.html @@ -110,7 +110,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/WacComponents/processPastedContentWacComponents.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/WacComponents/processPastedContentWacComponents.ts.html index 03bd40db766..5561b9a26b7 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/WacComponents/processPastedContentWacComponents.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/WacComponents/processPastedContentWacComponents.ts.html @@ -883,7 +883,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/getStyleMetadata.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/getStyleMetadata.ts.html index 1c3da33c27e..3d45854a04b 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/getStyleMetadata.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/getStyleMetadata.ts.html @@ -316,7 +316,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/index.html b/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/index.html index be9e33f2304..f8bebe6e7fa 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/index.html @@ -155,7 +155,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/processPastedContentFromWordDesktop.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/processPastedContentFromWordDesktop.ts.html index a217ac3bba7..83ff0b26fa2 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/processPastedContentFromWordDesktop.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/processPastedContentFromWordDesktop.ts.html @@ -274,7 +274,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordComments.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordComments.ts.html index d6065f04fe4..69a546ce3a1 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordComments.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordComments.ts.html @@ -127,7 +127,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordLists.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordLists.ts.html index 3e078446062..52d8f48d650 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordLists.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordLists.ts.html @@ -841,7 +841,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/removeNegativeTextIndentParser.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/removeNegativeTextIndentParser.ts.html index d4b0ab3ef7d..b687131997d 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/removeNegativeTextIndentParser.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/WordDesktop/removeNegativeTextIndentParser.ts.html @@ -94,7 +94,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/index.html b/coverage/roosterjs-content-model-plugins/lib/paste/index.html index ec5c16bf00a..4a78636a52f 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugins/ diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/constants.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/constants.ts.html index 8eb2a4aab58..a8adb53330f 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/constants.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/constants.ts.html @@ -121,7 +121,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/documentContainWacElements.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/documentContainWacElements.ts.html index 012d1c82e1b..cae6e9718e2 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/documentContainWacElements.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/documentContainWacElements.ts.html @@ -103,7 +103,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/getPasteSource.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/getPasteSource.ts.html index 04e8ec43a48..804220a4091 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/getPasteSource.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/getPasteSource.ts.html @@ -295,7 +295,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/index.html b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/index.html index d5646e11094..eb4ff79e210 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/index.html @@ -215,7 +215,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isExcelDesktopDocument.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isExcelDesktopDocument.ts.html index 903fbe6d1b3..b3609d05520 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isExcelDesktopDocument.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isExcelDesktopDocument.ts.html @@ -112,7 +112,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isExcelOnlineDocument.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isExcelOnlineDocument.ts.html index dbd13875465..28a6990adb2 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isExcelOnlineDocument.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isExcelOnlineDocument.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isGoogleSheetDocument.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isGoogleSheetDocument.ts.html index 80a7be57a7a..e2cd9c276ba 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isGoogleSheetDocument.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isGoogleSheetDocument.ts.html @@ -103,7 +103,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.ts.html index 6b66bc254f6..e500e3bd8ab 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isPowerPointDesktopDocument.ts.html @@ -106,7 +106,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isWordDesktopDocument.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isWordDesktopDocument.ts.html index 52daf02ad60..fbb977af43b 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isWordDesktopDocument.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isWordDesktopDocument.ts.html @@ -124,7 +124,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.ts.html index 869ac802753..848974ec861 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/shouldConvertToSingleImage.ts.html @@ -115,7 +115,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/utils/addParser.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/utils/addParser.ts.html index 5b7fdb553eb..c1317e8cd7c 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/utils/addParser.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/utils/addParser.ts.html @@ -136,7 +136,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/utils/deprecatedColorParser.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/utils/deprecatedColorParser.ts.html index 8362e42bf25..79d990c3dbc 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/utils/deprecatedColorParser.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/utils/deprecatedColorParser.ts.html @@ -127,7 +127,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/utils/getStyles.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/utils/getStyles.ts.html index ed453604471..451ed8786b6 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/utils/getStyles.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/utils/getStyles.ts.html @@ -118,7 +118,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/utils/index.html b/coverage/roosterjs-content-model-plugins/lib/paste/utils/index.html index f8e823adaf4..56681300364 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/utils/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/utils/index.html @@ -155,7 +155,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/utils/linkParser.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/utils/linkParser.ts.html index 2ac2ab4da03..be0fbd583e8 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/utils/linkParser.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/utils/linkParser.ts.html @@ -151,7 +151,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts.html b/coverage/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts.html index f83268ea548..ae1c3fe696b 100644 --- a/coverage/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts.html @@ -112,7 +112,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/picker/PickerHelperImpl.ts.html b/coverage/roosterjs-content-model-plugins/lib/picker/PickerHelperImpl.ts.html new file mode 100644 index 00000000000..d1e579e1c60 --- /dev/null +++ b/coverage/roosterjs-content-model-plugins/lib/picker/PickerHelperImpl.ts.html @@ -0,0 +1,296 @@ + + + + + + Code coverage report for roosterjs-content-model-plugins/lib/picker/PickerHelperImpl.ts + + + + + + + + + +
+
+

All files / roosterjs-content-model-plugins/lib/picker PickerHelperImpl.ts

+
+ +
+ 100% + Statements + 27/27 +
+ + +
+ 100% + Branches + 8/8 +
+ + +
+ 100% + Functions + 6/6 +
+ + +
+ 100% + Lines + 24/24 +
+ + +
+

+ 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 +731x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +1x +64x +  +  +64x +64x +64x +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +2x +  +2x +  +  +2x +2x +  +  +  +  +  +  +2x +1x +1x +1x +1x +  +1x +  +  +  +  +  +  +  +  +  +1x +7x +6x +6x +  +  +1x + 
import { formatTextSegmentBeforeSelectionMarker } from 'roosterjs-content-model-api';
+import { getQueryString } from './getQueryString';
+import { mergeModel } from 'roosterjs-content-model-dom';
+import type {
+    ContentModelDocument,
+    ContentModelText,
+    FormatContentModelOptions,
+    IEditor,
+} from 'roosterjs-content-model-types';
+import type { PickerDirection, PickerHandler } from './PickerHandler';
+import type { PickerHelper } from './PickerHelper';
+ 
+/**
+ * @internal
+ */
+export class PickerHelperImpl implements PickerHelper {
+    public direction: PickerDirection | null = null;
+ 
+    constructor(
+        public readonly editor: IEditor,
+        public readonly handler: PickerHandler,
+        private triggerCharacter: string
+    ) {}
+ 
+    /**
+     * Replace the query string with a given Content Model.
+     * This is used for commit a change from picker and insert the committed content into editor.
+     * @param model The Content Model to insert
+     * @param options Options for formatting content model
+     * @param canUndoByBackspace Whether this change can be undone using Backspace key
+     */
+    replaceQueryString(
+        model: ContentModelDocument,
+        options?: FormatContentModelOptions,
+        canUndoByBackspace?: boolean
+    ): void {
+        this.editor.focus();
+ 
+        formatTextSegmentBeforeSelectionMarker(
+            this.editor,
+            (target, previousSegment, paragraph, _, context) => {
+                const potentialSegments: ContentModelText[] = [];
+                const queryString = getQueryString(
+                    this.triggerCharacter,
+                    paragraph,
+                    previousSegment,
+                    potentialSegments
+                );
+ 
+                if (queryString) {
+                    potentialSegments.forEach(x => (x.isSelected = true));
+                    mergeModel(target, model, context);
+                    context.canUndoByBackspace = canUndoByBackspace;
+                    return true;
+                } else {
+                    return false;
+                }
+            },
+            options
+        );
+    }
+ 
+    /**
+     * Notify Picker Plugin that picker is closed from the handler code, so picker plugin can quit the suggesting state
+     */
+    closePicker() {
+        if (this.direction) {
+            this.direction = null;
+            this.handler.onClosePicker?.();
+        }
+    }
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/coverage/roosterjs-content-model-plugins/lib/picker/PickerPlugin.ts.html b/coverage/roosterjs-content-model-plugins/lib/picker/PickerPlugin.ts.html new file mode 100644 index 00000000000..03675457539 --- /dev/null +++ b/coverage/roosterjs-content-model-plugins/lib/picker/PickerPlugin.ts.html @@ -0,0 +1,839 @@ + + + + + + Code coverage report for roosterjs-content-model-plugins/lib/picker/PickerPlugin.ts + + + + + + + + + +
+
+

All files / roosterjs-content-model-plugins/lib/picker PickerPlugin.ts

+
+ +
+ 93.55% + Statements + 87/93 +
+ + +
+ 82.05% + Branches + 96/117 +
+ + +
+ 83.33% + Functions + 10/12 +
+ + +
+ 93.26% + Lines + 83/89 +
+ + +
+

+ 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 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +2541x +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +59x +59x +59x +  +  +  +  +  +  +59x +  +  +  +  +1x +  +  +  +  +  +  +  +1x +59x +59x +59x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +1x +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +117x +  +  +  +117x +  +4x +3x +2x +  +1x +  +  +4x +  +  +53x +52x +  +53x +  +  +58x +1x +  +57x +  +58x +  +  +2x +1x +  +2x +  +  +  +1x +52x +  +  +10x +8x +  +8x +4x +  +  +8x +  +  +10x +10x +  +  +  +10x +  +10x +6x +  +  +  +  +  +  +  +  +  +  +  +10x +10x +  +  +10x +  +  +  +10x +10x +  +  +20x +20x +  +  +  +  +  +  +  +  +  +20x +20x +  +1x +1x +1x +  +  +  +1x +1x +1x +  +  +  +2x +2x +  +2x +  +  +  +  +2x +  +2x +  +  +  +  +  +  +2x +2x +  +  +  +  +2x +  +  +  +  +  +  +57x +57x +57x +57x +57x +  +57x +  +  +  +  +57x +  +57x +  +  +  +  +  +  +57x +57x +57x +  +  +  +  +57x +  +  +  +1x + 
import { ChangeSource, isCursorMovingKey, isPunctuation } from 'roosterjs-content-model-dom';
+import { formatTextSegmentBeforeSelectionMarker } from 'roosterjs-content-model-api';
+import { getQueryString } from './getQueryString';
+import { PickerHelperImpl } from './PickerHelperImpl';
+import type { PickerHandler } from './PickerHandler';
+import type {
+    DOMInsertPoint,
+    EditorPlugin,
+    IEditor,
+    PluginEvent,
+} from 'roosterjs-content-model-types';
+ 
+/**
+ * PickerPlugin represents a plugin of editor which can handle picker related behaviors, including
+ * - Show picker when special trigger key is pressed
+ * - Hide picker
+ * - Change selection in picker by Up/Down/Left/Right
+ * - Apply selected item in picker
+ *
+ * PickerPlugin doesn't provide any UI, it just wraps related DOM events and invoke callback functions.
+ */
+export class PickerPlugin implements EditorPlugin {
+    private isMac: boolean = false;
+    private lastQueryString = '';
+    private helper: PickerHelperImpl | null = null;
+ 
+    /**
+     * Construct a new instance of PickerPlugin class
+     * @param triggerCharacter The character to trigger a picker to be shown
+     * @param handler Picker handler for receiving picker state change events
+     */
+    constructor(private triggerCharacter: string, private readonly handler: PickerHandler) {}
+ 
+    /**
+     * Get a friendly name
+     */
+    getName() {
+        return 'Picker';
+    }
+ 
+    /**
+     * Initialize this plugin. This should only be called from Editor
+     * @param editor Editor instance
+     */
+    initialize(editor: IEditor) {
+        this.isMac = !!editor.getEnvironment().isMac;
+        this.helper = new PickerHelperImpl(editor, this.handler, this.triggerCharacter);
+        this.handler.onInitialize(this.helper);
+    }
+ 
+    /**
+     * Dispose this plugin
+     */
+    dispose() {
+        this.handler.onDispose();
+        this.helper = null;
+    }
+ 
+    /**
+     * Check if the plugin should handle the given event exclusively.
+     * Handle an event exclusively means other plugin will not receive this event in
+     * onPluginEvent method.
+     * If two plugins will return true in willHandleEventExclusively() for the same event,
+     * the final result depends on the order of the plugins are added into editor
+     * @param event The event to check
+     */
+    willHandleEventExclusively(event: PluginEvent) {
+        return (
+            !!this.helper?.direction &&
+            event.eventType == 'keyDown' &&
+            (isCursorMovingKey(event.rawEvent) ||
+                event.rawEvent.key == 'Enter' ||
+                event.rawEvent.key == 'Tab' ||
+                event.rawEvent.key == 'Escape')
+        );
+    }
+ 
+    /**
+     * Handle events triggered from editor
+     * @param event PluginEvent object
+     */
+    onPluginEvent(event: PluginEvent) {
+        Iif (!this.helper) {
+            return;
+        }
+ 
+        switch (event.eventType) {
+            case 'contentChanged':
+                if (this.helper.direction) {
+                    if (event.source == ChangeSource.SetContent) {
+                        this.helper.closePicker();
+                    } else {
+                        this.onSuggestingInput(this.helper);
+                    }
+                }
+                break;
+ 
+            case 'keyDown':
+                if (this.helper.direction) {
+                    this.onSuggestingKeyDown(this.helper, event.rawEvent);
+                }
+                break;
+ 
+            case 'input':
+                if (this.helper.direction) {
+                    this.onSuggestingInput(this.helper);
+                } else {
+                    this.onInput(this.helper, event.rawEvent);
+                }
+                break;
+ 
+            case 'mouseUp':
+                if (this.helper.direction) {
+                    this.helper.closePicker();
+                }
+                break;
+        }
+    }
+ 
+    private onSuggestingKeyDown(helper: PickerHelperImpl, event: KeyboardEvent) {
+        switch (event.key) {
+            case 'ArrowLeft':
+            case 'ArrowRight':
+                if (helper.direction == 'horizontal' || helper.direction == 'both') {
+                    let isIncrement = event.key == 'ArrowRight';
+ 
+                    if (helper.editor.getDOMHelper().isRightToLeft()) {
+                        isIncrement = !isIncrement;
+                    }
+ 
+                    this.handler.onSelectionChanged?.(isIncrement ? 'next' : 'previous');
+                }
+ 
+                event.preventDefault();
+                break;
+            case 'ArrowUp':
+            case 'ArrowDown':
+                {
+                    const isIncrement = event.key == 'ArrowDown';
+ 
+                    if (helper.direction != 'horizontal') {
+                        this.handler.onSelectionChanged?.(
+                            helper.direction == 'both'
+                                ? isIncrement
+                                    ? 'nextRow'
+                                    : 'previousRow'
+                                : isIncrement
+                                ? 'next'
+                                : 'previous'
+                        );
+                    }
+                }
+ 
+                event.preventDefault();
+                break;
+            case 'PageUp':
+            case 'PageDown':
+                this.handler.onSelectionChanged?.(
+                    event.key == 'PageDown' ? 'nextPage' : 'previousPage'
+                );
+ 
+                event.preventDefault();
+                break;
+            case 'Home':
+            case 'End':
+                const hasCtrl = this.isMac ? event.metaKey : event.ctrlKey;
+                this.handler.onSelectionChanged?.(
+                    event.key == 'Home'
+                        ? hasCtrl
+                            ? 'first'
+                            : 'firstInRow'
+                        : hasCtrl
+                        ? 'last'
+                        : 'lastInRow'
+                );
+ 
+                event.preventDefault();
+                break;
+            case 'Escape':
+                helper.closePicker();
+                event.preventDefault();
+                break;
+ 
+            case 'Enter':
+            case 'Tab':
+                this.handler.onSelect?.();
+                event.preventDefault();
+                break;
+        }
+    }
+ 
+    private onSuggestingInput(helper: PickerHelperImpl) {
+        Iif (
+            !formatTextSegmentBeforeSelectionMarker(helper.editor, (_, segment, paragraph) => {
+                const newQueryString = getQueryString(
+                    this.triggerCharacter,
+                    paragraph,
+                    segment
+                ).replace(/[\u0020\u00A0]/g, ' ');
+                const oldQueryString = this.lastQueryString;
+ 
+                Eif (
+                    newQueryString &&
+                    ((newQueryString.length >= oldQueryString.length &&
+                        newQueryString.indexOf(oldQueryString) == 0) ||
+                        (newQueryString.length < oldQueryString.length &&
+                            oldQueryString.indexOf(newQueryString) == 0))
+                ) {
+                    this.lastQueryString = newQueryString;
+                    this.handler.onQueryStringChanged?.(newQueryString);
+                } else {
+                    helper.closePicker();
+                }
+ 
+                return false;
+            })
+        ) {
+            helper.closePicker();
+        }
+    }
+ 
+    private onInput(helper: PickerHelperImpl, event: InputEvent) {
+        Eif (event.inputType == 'insertText' && event.data == this.triggerCharacter) {
+            formatTextSegmentBeforeSelectionMarker(helper.editor, (_, segment) => {
+                Eif (segment.text.endsWith(this.triggerCharacter)) {
+                    const charBeforeTrigger = segment.text[segment.text.length - 2];
+ 
+                    Eif (
+                        !charBeforeTrigger ||
+                        !charBeforeTrigger.trim() ||
+                        isPunctuation(charBeforeTrigger)
+                    ) {
+                        const selection = helper.editor.getDOMSelection();
+                        const pos: DOMInsertPoint | null =
+                            selection?.type == 'range' && selection.range.collapsed
+                                ? {
+                                      node: selection.range.startContainer,
+                                      offset: selection.range.startOffset,
+                                  }
+                                : null;
+ 
+                        Eif (pos) {
+                            this.lastQueryString = this.triggerCharacter;
+                            helper.direction = this.handler.onTrigger(this.lastQueryString, pos);
+                        }
+                    }
+                }
+ 
+                return false;
+            });
+        }
+    }
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/coverage/roosterjs-content-model-plugins/lib/picker/getQueryString.ts.html b/coverage/roosterjs-content-model-plugins/lib/picker/getQueryString.ts.html new file mode 100644 index 00000000000..83a0668b701 --- /dev/null +++ b/coverage/roosterjs-content-model-plugins/lib/picker/getQueryString.ts.html @@ -0,0 +1,224 @@ + + + + + + Code coverage report for roosterjs-content-model-plugins/lib/picker/getQueryString.ts + + + + + + + + + +
+
+

All files / roosterjs-content-model-plugins/lib/picker getQueryString.ts

+
+ +
+ 100% + Statements + 19/19 +
+ + +
+ 87.5% + Branches + 14/16 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 19/19 +
+ + +
+

+ 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 +491x +  +  +  +  +  +1x +  +  +  +  +  +9x +9x +  +9x +12x +  +12x +1x +1x +  +  +11x +  +11x +4x +  +4x +  +  +  +  +  +4x +  +7x +  +7x +  +  +  +9x +4x +  +  +9x +  + 
import { splitTextSegment } from '../pluginUtils/splitTextSegment';
+import type { ContentModelParagraph, ContentModelText } from 'roosterjs-content-model-types';
+ 
+/**
+ * @internal
+ */
+export function getQueryString(
+    triggerCharacter: string,
+    paragraph: ContentModelParagraph,
+    previousSegment: ContentModelText,
+    splittedSegmentResult?: ContentModelText[]
+): string {
+    let result = '';
+    let i = paragraph.segments.indexOf(previousSegment);
+ 
+    for (; i >= 0; i--) {
+        const segment = paragraph.segments[i];
+ 
+        if (segment.segmentType != 'Text') {
+            result = '';
+            break;
+        }
+ 
+        const index = segment.text.lastIndexOf(triggerCharacter);
+ 
+        if (index >= 0) {
+            result = segment.text.substring(index) + result;
+ 
+            splittedSegmentResult?.unshift(
+                index > 0
+                    ? splitTextSegment(segment, paragraph, index, segment.text.length)
+                    : segment
+            );
+ 
+            break;
+        } else {
+            result = segment.text + result;
+ 
+            splittedSegmentResult?.unshift(segment);
+        }
+    }
+ 
+    if (i < 0) {
+        result = '';
+    }
+ 
+    return result;
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/coverage/roosterjs-content-model-plugins/lib/picker/index.html b/coverage/roosterjs-content-model-plugins/lib/picker/index.html new file mode 100644 index 00000000000..8b9e2d36414 --- /dev/null +++ b/coverage/roosterjs-content-model-plugins/lib/picker/index.html @@ -0,0 +1,141 @@ + + + + + + Code coverage report for roosterjs-content-model-plugins/lib/picker + + + + + + + + + +
+
+

All files roosterjs-content-model-plugins/lib/picker

+
+ +
+ 95.68% + Statements + 133/139 +
+ + +
+ 83.69% + Branches + 118/141 +
+ + +
+ 89.47% + Functions + 17/19 +
+ + +
+ 95.45% + Lines + 126/132 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
PickerHelperImpl.ts +
+
100%27/27100%8/8100%6/6100%24/24
PickerPlugin.ts +
+
93.55%87/9382.05%96/11783.33%10/1293.26%83/89
getQueryString.ts +
+
100%19/1987.5%14/16100%1/1100%19/19
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/CreateElement/createElement.ts.html b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/CreateElement/createElement.ts.html index d9f85094bfa..68abc16d69b 100644 --- a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/CreateElement/createElement.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/CreateElement/createElement.ts.html @@ -229,7 +229,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/CreateElement/index.html b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/CreateElement/index.html index b171bf58117..9893e6c4e33 100644 --- a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/CreateElement/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/CreateElement/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/DragAndDropHelper.ts.html b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/DragAndDropHelper.ts.html index 94333f8da21..337ddad45df 100644 --- a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/DragAndDropHelper.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/DragAndDropHelper.ts.html @@ -511,7 +511,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/index.html b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/index.html index df07439b5b7..b0ad8a905a4 100644 --- a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/Rect/getDOMInsertPointRect.ts.html b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/Rect/getDOMInsertPointRect.ts.html new file mode 100644 index 00000000000..1a1aa117573 --- /dev/null +++ b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/Rect/getDOMInsertPointRect.ts.html @@ -0,0 +1,269 @@ + + + + + + Code coverage report for roosterjs-content-model-plugins/lib/pluginUtils/Rect/getDOMInsertPointRect.ts + + + + + + + + + +
+
+

All files / roosterjs-content-model-plugins/lib/pluginUtils/Rect getDOMInsertPointRect.ts

+
+ +
+ 6.45% + Statements + 2/31 +
+ + +
+ 0% + Branches + 0/26 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 6.45% + Lines + 2/31 +
+ + +
+

+ 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 +641x +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { isNodeOfType, normalizeRect } from 'roosterjs-content-model-dom';
+import type { DOMInsertPoint, Rect } from 'roosterjs-content-model-types';
+ 
+/**
+ * Get bounding rect of the given DOM insert point
+ * @param doc The document object
+ * @param pos The input DOM insert point
+ */
+export function getDOMInsertPointRect(doc: Document, pos: DOMInsertPoint): Rect | null {
+    let { node, offset } = pos;
+    const range = doc.createRange();
+ 
+    range.setStart(node, offset);
+ 
+    // 1) try to get rect using range.getBoundingClientRect()
+    let rect = normalizeRect(range.getBoundingClientRect());
+ 
+    if (rect) {
+        return rect;
+    }
+ 
+    // 2) try to get rect using range.getClientRects
+    while (node.lastChild) {
+        if (offset == node.childNodes.length) {
+            node = node.lastChild;
+            offset = node.childNodes.length;
+        } else {
+            node = node.childNodes[offset];
+            offset = 0;
+        }
+    }
+ 
+    const rects = range.getClientRects && range.getClientRects();
+    rect = rects && rects.length == 1 ? normalizeRect(rects[0]) : null;
+    if (rect) {
+        return rect;
+    }
+ 
+    // 3) if node is text node, try inserting a SPAN and get the rect of SPAN for others
+    if (isNodeOfType(node, 'TEXT_NODE')) {
+        const span = node.ownerDocument.createElement('span');
+ 
+        span.textContent = '\u200b';
+        range.insertNode(span);
+        rect = normalizeRect(span.getBoundingClientRect());
+        span.parentNode?.removeChild(span);
+ 
+        if (rect) {
+            return rect;
+        }
+    }
+ 
+    // 4) try getBoundingClientRect on element
+    if (isNodeOfType(node, 'ELEMENT_NODE') && node.getBoundingClientRect) {
+        rect = normalizeRect(node.getBoundingClientRect());
+ 
+        if (rect) {
+            return rect;
+        }
+    }
+ 
+    return null;
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/Rect/getIntersectedRect.ts.html b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/Rect/getIntersectedRect.ts.html index fd16cc8075d..a501bccbe54 100644 --- a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/Rect/getIntersectedRect.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/Rect/getIntersectedRect.ts.html @@ -202,7 +202,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/Rect/index.html b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/Rect/index.html index dde03863929..797fb459d7b 100644 --- a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/Rect/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/Rect/index.html @@ -23,30 +23,30 @@

All files roosterjs-content-model-plugi
- 100% + 32.56% Statements - 12/12 + 14/43
- 66.67% + 12.5% Branches - 4/6 + 4/32
- 100% + 87.5% Functions - 7/7 + 7/8
- 100% + 32.56% Lines - 12/12 + 14/43
@@ -55,7 +55,7 @@

All files roosterjs-content-model-plugi Press n or j to go to the next uncovered block, b, p or k for the previous block.

-
+
@@ -73,6 +73,21 @@

All files roosterjs-content-model-plugi

+ + + + + + + + + + + + +
getDOMInsertPointRect.ts +
+
6.45%2/310%0/260%0/16.45%2/31
getIntersectedRect.ts
@@ -95,7 +110,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/index.html b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/index.html index 48c1d70b208..44b912facfa 100644 --- a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugins/ diff --git a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/splitTextSegment.ts.html b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/splitTextSegment.ts.html index c80de6a1abd..eb3475c0bc0 100644 --- a/coverage/roosterjs-content-model-plugins/lib/pluginUtils/splitTextSegment.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/pluginUtils/splitTextSegment.ts.html @@ -112,18 +112,18 @@

All files / roosterjs       -25x -25x -25x +27x +27x +27x             -25x -25x -10x +27x +27x +12x       @@ -132,16 +132,16 @@

All files / roosterjs       -25x +27x 13x         -48x -25x +52x +27x   -25x +27x    

import { createText } from 'roosterjs-content-model-dom';
 import type { ContentModelParagraph, ContentModelText } from 'roosterjs-content-model-types';
@@ -193,7 +193,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/shortcut/ShortcutPlugin.ts.html b/coverage/roosterjs-content-model-plugins/lib/shortcut/ShortcutPlugin.ts.html index 49934847914..7bfa064dde6 100644 --- a/coverage/roosterjs-content-model-plugins/lib/shortcut/ShortcutPlugin.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/shortcut/ShortcutPlugin.ts.html @@ -526,7 +526,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/shortcut/index.html b/coverage/roosterjs-content-model-plugins/lib/shortcut/index.html index 96b194e0656..c4cb8b5bc24 100644 --- a/coverage/roosterjs-content-model-plugins/lib/shortcut/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/shortcut/index.html @@ -110,7 +110,7 @@

All files roosterjs-content-model-plugins/ diff --git a/coverage/roosterjs-content-model-plugins/lib/shortcut/shortcuts.ts.html b/coverage/roosterjs-content-model-plugins/lib/shortcut/shortcuts.ts.html index 57aa2ade9ab..13aa5e55bc1 100644 --- a/coverage/roosterjs-content-model-plugins/lib/shortcut/shortcuts.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/shortcut/shortcuts.ts.html @@ -763,7 +763,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/shortcut/utils/index.html b/coverage/roosterjs-content-model-plugins/lib/shortcut/utils/index.html index b7748f058c7..d35ffb824ef 100644 --- a/coverage/roosterjs-content-model-plugins/lib/shortcut/utils/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/shortcut/utils/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/shortcut/utils/setShortcutIndentationCommand.ts.html b/coverage/roosterjs-content-model-plugins/lib/shortcut/utils/setShortcutIndentationCommand.ts.html index 74271d6685c..80269d35816 100644 --- a/coverage/roosterjs-content-model-plugins/lib/shortcut/utils/setShortcutIndentationCommand.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/shortcut/utils/setShortcutIndentationCommand.ts.html @@ -130,7 +130,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/tableEdit/TableEditPlugin.ts.html b/coverage/roosterjs-content-model-plugins/lib/tableEdit/TableEditPlugin.ts.html index 8bd85b0880f..820cb9a6a72 100644 --- a/coverage/roosterjs-content-model-plugins/lib/tableEdit/TableEditPlugin.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/tableEdit/TableEditPlugin.ts.html @@ -307,7 +307,7 @@

All files / roosterjs     1x -83x +81x       @@ -589,7 +589,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/TableEditor.ts.html b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/TableEditor.ts.html index 63001ddf926..2e533f89418 100644 --- a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/TableEditor.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/TableEditor.ts.html @@ -1216,7 +1216,7 @@

All files / rooste diff --git a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/CellResizer.ts.html b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/CellResizer.ts.html index 3f06a643e3d..00d23a97d6e 100644 --- a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/CellResizer.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/CellResizer.ts.html @@ -796,7 +796,7 @@

All files / roo diff --git a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableEditFeature.ts.html b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableEditFeature.ts.html index 8dddf70ae05..bef772bc177 100644 --- a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableEditFeature.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableEditFeature.ts.html @@ -130,7 +130,7 @@

All files / roo diff --git a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableInserter.ts.html b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableInserter.ts.html index 28095269c52..a1bf8a8394c 100644 --- a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableInserter.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableInserter.ts.html @@ -580,7 +580,7 @@

All files / roo diff --git a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableMover.ts.html b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableMover.ts.html index a7b88387f72..7bf799ad7a6 100644 --- a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableMover.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableMover.ts.html @@ -469,7 +469,7 @@

All files / roo diff --git a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableResizer.ts.html b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableResizer.ts.html index 87a6d8affd7..7af4b8d88dc 100644 --- a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableResizer.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableResizer.ts.html @@ -829,7 +829,7 @@

All files / roo diff --git a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/index.html b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/index.html index 4d7536bd682..a950756fbb1 100644 --- a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/features/index.html @@ -155,7 +155,7 @@

All files roosterjs-content-model-pl diff --git a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/index.html b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/index.html index 6e5142eefa0..c60eca16cdb 100644 --- a/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/tableEdit/editors/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugi diff --git a/coverage/roosterjs-content-model-plugins/lib/tableEdit/index.html b/coverage/roosterjs-content-model-plugins/lib/tableEdit/index.html index 76386a4ac26..25189a7e68d 100644 --- a/coverage/roosterjs-content-model-plugins/lib/tableEdit/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/tableEdit/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-plugins/ diff --git a/coverage/roosterjs-content-model-plugins/lib/watermark/WatermarkPlugin.ts.html b/coverage/roosterjs-content-model-plugins/lib/watermark/WatermarkPlugin.ts.html index 06770212fdf..dcf3e6d9b56 100644 --- a/coverage/roosterjs-content-model-plugins/lib/watermark/WatermarkPlugin.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/watermark/WatermarkPlugin.ts.html @@ -394,7 +394,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-plugins/lib/watermark/index.html b/coverage/roosterjs-content-model-plugins/lib/watermark/index.html index 81a681f6341..b149ef639c6 100644 --- a/coverage/roosterjs-content-model-plugins/lib/watermark/index.html +++ b/coverage/roosterjs-content-model-plugins/lib/watermark/index.html @@ -110,7 +110,7 @@

All files roosterjs-content-model-plugins/ diff --git a/coverage/roosterjs-content-model-plugins/lib/watermark/isModelEmptyFast.ts.html b/coverage/roosterjs-content-model-plugins/lib/watermark/isModelEmptyFast.ts.html index 9f3f3c857b2..eafaee270e7 100644 --- a/coverage/roosterjs-content-model-plugins/lib/watermark/isModelEmptyFast.ts.html +++ b/coverage/roosterjs-content-model-plugins/lib/watermark/isModelEmptyFast.ts.html @@ -157,7 +157,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-content-model-types/lib/index.html b/coverage/roosterjs-content-model-types/lib/index.html index 3d02ab6e820..407a23ee636 100644 --- a/coverage/roosterjs-content-model-types/lib/index.html +++ b/coverage/roosterjs-content-model-types/lib/index.html @@ -95,7 +95,7 @@

All files roosterjs-content-model-types/lib Code coverage generated by istanbul - at Tue Apr 16 2024 17:17:51 GMT+0000 (Coordinated Universal Time) + at Tue Apr 16 2024 17:40:39 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/roosterjs-content-model-types/lib/index.ts.html b/coverage/roosterjs-content-model-types/lib/index.ts.html index d22a9caa7da..23055005302 100644 --- a/coverage/roosterjs-content-model-types/lib/index.ts.html +++ b/coverage/roosterjs-content-model-types/lib/index.ts.html @@ -1096,7 +1096,7 @@

All files / roosterjs-co diff --git a/coverage/roosterjs-editor-adapter/lib/corePlugins/BridgePlugin.ts.html b/coverage/roosterjs-editor-adapter/lib/corePlugins/BridgePlugin.ts.html index feeee793dc5..e9c2bb7b6e0 100644 --- a/coverage/roosterjs-editor-adapter/lib/corePlugins/BridgePlugin.ts.html +++ b/coverage/roosterjs-editor-adapter/lib/corePlugins/BridgePlugin.ts.html @@ -670,7 +670,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-adapter/lib/corePlugins/EditPlugin.ts.html b/coverage/roosterjs-editor-adapter/lib/corePlugins/EditPlugin.ts.html index 9e813df3a9d..7e6211dea6a 100644 --- a/coverage/roosterjs-editor-adapter/lib/corePlugins/EditPlugin.ts.html +++ b/coverage/roosterjs-editor-adapter/lib/corePlugins/EditPlugin.ts.html @@ -373,7 +373,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-adapter/lib/corePlugins/index.html b/coverage/roosterjs-editor-adapter/lib/corePlugins/index.html index 588d8be5560..3c7c5e29ce8 100644 --- a/coverage/roosterjs-editor-adapter/lib/corePlugins/index.html +++ b/coverage/roosterjs-editor-adapter/lib/corePlugins/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-adapter/lib/cor diff --git a/coverage/roosterjs-editor-adapter/lib/editor/DarkColorHandlerImpl.ts.html b/coverage/roosterjs-editor-adapter/lib/editor/DarkColorHandlerImpl.ts.html index f92bd9bbf85..a20cccf7eb9 100644 --- a/coverage/roosterjs-editor-adapter/lib/editor/DarkColorHandlerImpl.ts.html +++ b/coverage/roosterjs-editor-adapter/lib/editor/DarkColorHandlerImpl.ts.html @@ -505,7 +505,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-adapter/lib/editor/EditorAdapter.ts.html b/coverage/roosterjs-editor-adapter/lib/editor/EditorAdapter.ts.html index 5c4625014b7..ae259e35be8 100644 --- a/coverage/roosterjs-editor-adapter/lib/editor/EditorAdapter.ts.html +++ b/coverage/roosterjs-editor-adapter/lib/editor/EditorAdapter.ts.html @@ -3502,7 +3502,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-adapter/lib/editor/IgnoredPluginNames.ts.html b/coverage/roosterjs-editor-adapter/lib/editor/IgnoredPluginNames.ts.html index 35785f5db56..379604a99e6 100644 --- a/coverage/roosterjs-editor-adapter/lib/editor/IgnoredPluginNames.ts.html +++ b/coverage/roosterjs-editor-adapter/lib/editor/IgnoredPluginNames.ts.html @@ -85,7 +85,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-adapter/lib/editor/index.html b/coverage/roosterjs-editor-adapter/lib/editor/index.html index c604ea4d045..84e9654d797 100644 --- a/coverage/roosterjs-editor-adapter/lib/editor/index.html +++ b/coverage/roosterjs-editor-adapter/lib/editor/index.html @@ -125,7 +125,7 @@

All files roosterjs-editor-adapter/lib/edi diff --git a/coverage/roosterjs-editor-adapter/lib/editor/utils/buildRangeEx.ts.html b/coverage/roosterjs-editor-adapter/lib/editor/utils/buildRangeEx.ts.html index b0ec3c4e8c4..6657a2477aa 100644 --- a/coverage/roosterjs-editor-adapter/lib/editor/utils/buildRangeEx.ts.html +++ b/coverage/roosterjs-editor-adapter/lib/editor/utils/buildRangeEx.ts.html @@ -391,7 +391,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-adapter/lib/editor/utils/createTableRanges.ts.html b/coverage/roosterjs-editor-adapter/lib/editor/utils/createTableRanges.ts.html index 64267263051..e07df123560 100644 --- a/coverage/roosterjs-editor-adapter/lib/editor/utils/createTableRanges.ts.html +++ b/coverage/roosterjs-editor-adapter/lib/editor/utils/createTableRanges.ts.html @@ -151,7 +151,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-adapter/lib/editor/utils/eventConverter.ts.html b/coverage/roosterjs-editor-adapter/lib/editor/utils/eventConverter.ts.html index e750a3a078d..dc93da3ab55 100644 --- a/coverage/roosterjs-editor-adapter/lib/editor/utils/eventConverter.ts.html +++ b/coverage/roosterjs-editor-adapter/lib/editor/utils/eventConverter.ts.html @@ -1753,7 +1753,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-adapter/lib/editor/utils/index.html b/coverage/roosterjs-editor-adapter/lib/editor/utils/index.html index 24765ca83a3..5f12cee0fe8 100644 --- a/coverage/roosterjs-editor-adapter/lib/editor/utils/index.html +++ b/coverage/roosterjs-editor-adapter/lib/editor/utils/index.html @@ -155,7 +155,7 @@

All files roosterjs-editor-adapter/lib/ diff --git a/coverage/roosterjs-editor-adapter/lib/editor/utils/insertNode.ts.html b/coverage/roosterjs-editor-adapter/lib/editor/utils/insertNode.ts.html index b3372112480..da0cdf234f0 100644 --- a/coverage/roosterjs-editor-adapter/lib/editor/utils/insertNode.ts.html +++ b/coverage/roosterjs-editor-adapter/lib/editor/utils/insertNode.ts.html @@ -664,7 +664,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-adapter/lib/editor/utils/selectionConverter.ts.html b/coverage/roosterjs-editor-adapter/lib/editor/utils/selectionConverter.ts.html index cc7a8cd96d5..55d4dbfa655 100644 --- a/coverage/roosterjs-editor-adapter/lib/editor/utils/selectionConverter.ts.html +++ b/coverage/roosterjs-editor-adapter/lib/editor/utils/selectionConverter.ts.html @@ -325,7 +325,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-api/lib/format/changeCapitalization.ts.html b/coverage/roosterjs-editor-api/lib/format/changeCapitalization.ts.html index b69efc8652c..a6a82ff3bfe 100644 --- a/coverage/roosterjs-editor-api/lib/format/changeCapitalization.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/changeCapitalization.ts.html @@ -23,30 +23,30 @@

All files / roosterjs -
+

-	
-	
+	
-	
-	
-	
-	
-	
-	
-	
-	
+	
+	
+	
+	
+	
+	
+	
+	
@@ -118,18 +118,18 @@ 

All files roosterjs-editor-api/lib/format<

- - + - - - - - - - - + + + + + + + + @@ -239,17 +239,17 @@

All files roosterjs-editor-api/lib/format<

- - - - - - - - - + + + + + + + + @@ -304,8 +304,8 @@

All files roosterjs-editor-api/lib/format<

- - + + @@ -545,7 +545,7 @@

All files roosterjs-editor-api/lib/format< diff --git a/coverage/roosterjs-editor-api/lib/format/insertEntity.ts.html b/coverage/roosterjs-editor-api/lib/format/insertEntity.ts.html index a92f1bcf0f4..fa43972b36b 100644 --- a/coverage/roosterjs-editor-api/lib/format/insertEntity.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/insertEntity.ts.html @@ -544,7 +544,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/insertImage.ts.html b/coverage/roosterjs-editor-api/lib/format/insertImage.ts.html index 61fbd22a6e6..079160e650c 100644 --- a/coverage/roosterjs-editor-api/lib/format/insertImage.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/insertImage.ts.html @@ -193,7 +193,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/removeLink.ts.html b/coverage/roosterjs-editor-api/lib/format/removeLink.ts.html index 9687a25b115..03bc8c9306e 100644 --- a/coverage/roosterjs-editor-api/lib/format/removeLink.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/removeLink.ts.html @@ -136,7 +136,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/replaceWithNode.ts.html b/coverage/roosterjs-editor-api/lib/format/replaceWithNode.ts.html index 6e7a83edd81..1396110cc78 100644 --- a/coverage/roosterjs-editor-api/lib/format/replaceWithNode.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/replaceWithNode.ts.html @@ -307,7 +307,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/rotateElement.ts.html b/coverage/roosterjs-editor-api/lib/format/rotateElement.ts.html index 9af192a2b8d..a86454fe286 100644 --- a/coverage/roosterjs-editor-api/lib/format/rotateElement.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/rotateElement.ts.html @@ -124,7 +124,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/setAlignment.ts.html b/coverage/roosterjs-editor-api/lib/format/setAlignment.ts.html index 9fed76e6305..307d93e90b1 100644 --- a/coverage/roosterjs-editor-api/lib/format/setAlignment.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/setAlignment.ts.html @@ -23,30 +23,30 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/setBackgroundColor.ts.html b/coverage/roosterjs-editor-api/lib/format/setBackgroundColor.ts.html index c5cd4f0e537..ba2607925cf 100644 --- a/coverage/roosterjs-editor-api/lib/format/setBackgroundColor.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/setBackgroundColor.ts.html @@ -154,7 +154,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/setDirection.ts.html b/coverage/roosterjs-editor-api/lib/format/setDirection.ts.html index e1f503c2c2a..f1fdce44b1a 100644 --- a/coverage/roosterjs-editor-api/lib/format/setDirection.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/setDirection.ts.html @@ -151,7 +151,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/setFontName.ts.html b/coverage/roosterjs-editor-api/lib/format/setFontName.ts.html index ec646988907..6693413b2ee 100644 --- a/coverage/roosterjs-editor-api/lib/format/setFontName.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/setFontName.ts.html @@ -90,11 +90,11 @@

All files / roosterjs 1x     -3x +15x       -4x +40x       @@ -127,7 +127,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/setFontSize.ts.html b/coverage/roosterjs-editor-api/lib/format/setFontSize.ts.html index 971aaf6a2b1..efc07abaaa9 100644 --- a/coverage/roosterjs-editor-api/lib/format/setFontSize.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/setFontSize.ts.html @@ -30,9 +30,9 @@

All files / roosterjs
- 50% + 66.67% Branches - 3/6 + 4/6
@@ -96,13 +96,13 @@

All files / roosterjs 1x     -3x +15x       -4x -4x -4x +40x +40x +40x       @@ -128,7 +128,7 @@

All files / roosterjs (element, isInnerNode) => { element.style.fontSize = isInnerNode ? '' : fontSize; const lineHeight = getComputedStyle(element, 'line-height'); - Iif (lineHeight && lineHeight != 'normal') { + Iif (lineHeight && lineHeight != 'normal') { element.style.lineHeight = 'normal'; } }, @@ -142,7 +142,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/setHeadingLevel.ts.html b/coverage/roosterjs-editor-api/lib/format/setHeadingLevel.ts.html index 45105162f82..8f24fef0862 100644 --- a/coverage/roosterjs-editor-api/lib/format/setHeadingLevel.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/setHeadingLevel.ts.html @@ -235,7 +235,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/setImageAltText.ts.html b/coverage/roosterjs-editor-api/lib/format/setImageAltText.ts.html index e974e4c3da1..888f684f852 100644 --- a/coverage/roosterjs-editor-api/lib/format/setImageAltText.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/setImageAltText.ts.html @@ -142,7 +142,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/setIndentation.ts.html b/coverage/roosterjs-editor-api/lib/format/setIndentation.ts.html index 499b40ecd37..d2c89ad8b31 100644 --- a/coverage/roosterjs-editor-api/lib/format/setIndentation.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/setIndentation.ts.html @@ -261,23 +261,23 @@

All files / roosterjs       -8x +18x   -8x +18x     -5x -5x +15x +15x   -5x -6x -6x +15x +17x +17x           -6x +17x 4x     @@ -316,15 +316,15 @@

All files / roosterjs       -2x +13x       -9x +19x     -8x -8x +18x +18x       @@ -340,16 +340,16 @@

All files / roosterjs 3x     -5x +15x           -4x -4x -4x -4x +14x +14x +14x +14x       @@ -562,7 +562,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/setOrderedListNumbering.ts.html b/coverage/roosterjs-editor-api/lib/format/setOrderedListNumbering.ts.html index 670548c57c9..18acde7ce64 100644 --- a/coverage/roosterjs-editor-api/lib/format/setOrderedListNumbering.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/setOrderedListNumbering.ts.html @@ -181,7 +181,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/setTextColor.ts.html b/coverage/roosterjs-editor-api/lib/format/setTextColor.ts.html index c536d23da6e..976901e2b67 100644 --- a/coverage/roosterjs-editor-api/lib/format/setTextColor.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/setTextColor.ts.html @@ -178,7 +178,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/toggleBlockQuote.ts.html b/coverage/roosterjs-editor-api/lib/format/toggleBlockQuote.ts.html index 7d64b1596d6..227cb363cd7 100644 --- a/coverage/roosterjs-editor-api/lib/format/toggleBlockQuote.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/toggleBlockQuote.ts.html @@ -107,13 +107,13 @@

All files / roosterjs     1x -18x +19x     -20x -20x +21x +21x   -18x +19x       @@ -154,7 +154,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/toggleBold.ts.html b/coverage/roosterjs-editor-api/lib/format/toggleBold.ts.html index 96e9ddfd0bc..6c25e1dd06c 100644 --- a/coverage/roosterjs-editor-api/lib/format/toggleBold.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/toggleBold.ts.html @@ -85,7 +85,7 @@

All files / roosterjs     1x -2x +11x    

1 2 @@ -151,19 +151,19 @@

All files / roosterjs       -  +20x     -  -  +24x +24x       -  -  -  +24x +24x +24x   -  +1x       @@ -175,32 +175,32 @@

All files / roosterjs       -  +25x     -  +25x   -  +3x   -  +14x   -  -  -  +6x +5x +14x     -  +5x     -  +2x           -  -  -  +2x +2x +6x       @@ -221,24 +221,24 @@

All files / roosterjs * Identifying Languages". For example: 'en' or 'en-US' for English, 'tr' for Turkish. * Default is the host environment’s current locale. */ -export default function changeCapitalization( +export default function changeCapitalization( editor: IEditor, capitalization: Capitalization | CompatibleCapitalization, language?: string ) { - applyInlineStyle( + applyInlineStyle( editor, - element => { - for ( - let node = getFirstLeafNode(element); + element => { + for ( + let node = getFirstLeafNode(element); node; node = getNextLeafSibling(element, node) ) { - if (node.nodeType == NodeType.Text) { - try { - node.textContent = getCapitalizedText(node.textContent, language); + Eif (node.nodeType == NodeType.Text) { + try { + node.textContent = getCapitalizedText(node.textContent, language); } catch { - node.textContent = getCapitalizedText(node.textContent, undefined); + node.textContent = getCapitalizedText(node.textContent, undefined); } } } @@ -246,38 +246,38 @@

All files / roosterjs 'changeCapitalization' );   - function getCapitalizedText( + function getCapitalizedText( originalText: string | null, language: string | undefined ): string | null { - if (originalText === null) { + Iif (originalText === null) { return originalText; } - switch (capitalization) { + switch (capitalization) { case Capitalization.Lowercase: - return originalText.toLocaleLowerCase(language); + return originalText.toLocaleLowerCase(language); case Capitalization.Uppercase: - return originalText.toLocaleUpperCase(language); + return originalText.toLocaleUpperCase(language); case Capitalization.CapitalizeEachWord: - const wordArray = originalText.toLocaleLowerCase(language).split(' '); - for (let i = 0; i < wordArray.length; i++) { - wordArray[i] = + const wordArray = originalText.toLocaleLowerCase(language).split(' '); + for (let i = 0; i < wordArray.length; i++) { + wordArray[i] = wordArray[i].charAt(0).toLocaleUpperCase(language) + wordArray[i].slice(1); } - return wordArray.join(' '); + return wordArray.join(' '); case Capitalization.Sentence: // TODO: Add rules on punctuation for internationalization - TASK 104769 - const punctuationMarks = '[\\.\\!\\?]'; + const punctuationMarks = '[\\.\\!\\?]'; // Find a match of a word character either: // - At the beginning of a string with or without preceding whitespace, for // example: ' hello world' and 'hello world' strings would both match 'h'. // - Or preceded by a punctuation mark and at least one whitespace, for // example 'yes. hello world' would match 'y' and 'h'. - const regex = new RegExp('^\\s*\\w|' + punctuationMarks + '\\s+\\w', 'g'); - return originalText.toLocaleLowerCase(language).replace(regex, match => { - return match.toLocaleUpperCase(language); + const regex = new RegExp('^\\s*\\w|' + punctuationMarks + '\\s+\\w', 'g'); + return originalText.toLocaleLowerCase(language).replace(regex, match => { + return match.toLocaleUpperCase(language); }); - default: + default: return originalText; } } @@ -289,7 +289,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/changeFontSize.ts.html b/coverage/roosterjs-editor-api/lib/format/changeFontSize.ts.html index 81daf9a5d61..dd4d4f0e122 100644 --- a/coverage/roosterjs-editor-api/lib/format/changeFontSize.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/changeFontSize.ts.html @@ -283,7 +283,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/clearBlockFormat.ts.html b/coverage/roosterjs-editor-api/lib/format/clearBlockFormat.ts.html index 137a0a9cefb..d0e29a66027 100644 --- a/coverage/roosterjs-editor-api/lib/format/clearBlockFormat.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/clearBlockFormat.ts.html @@ -77,7 +77,7 @@

All files / roosterjs     1x -14x +15x    

import clearFormat from './clearFormat';
 import { ClearFormatMode } from 'roosterjs-editor-types';
@@ -97,7 +97,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/clearFormat.ts.html b/coverage/roosterjs-editor-api/lib/format/clearFormat.ts.html index 4c1353cf182..c13473bc773 100644 --- a/coverage/roosterjs-editor-api/lib/format/clearFormat.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/clearFormat.ts.html @@ -23,30 +23,30 @@

All files / roosterjs -
+
1 2 @@ -450,60 +450,60 @@

All files / roosterjs       -  -  -  +12x +12x +12x       -  +12x     -  +12x         -84x -84x -84x +228x +228x +228x     -84x -84x -47x +228x +228x +144x           -29x -6x +100x +30x   -29x +100x     -18x +44x       -84x +228x       -18x -18x +44x +44x   -18x -5x +44x +7x   -5x +7x   -5x +7x       -3x +5x       @@ -550,23 +550,23 @@

All files / roosterjs       -  -  -  -  -  +6x +6x +12x +4x +2x   -  -  -  -  +2x +2x +4x +2x     -  +2x   -  +8x   -  +2x       @@ -576,20 +576,20 @@

All files / roosterjs       -  -  -  -  +12x +12x +8x +8x   -  +8x     -  -  -  +8x +4x +4x     -  +8x       @@ -598,14 +598,14 @@

All files / roosterjs       -14x +23x     -14x -15x -15x +23x +24x +24x   -15x +24x     4x @@ -615,53 +615,53 @@

All files / roosterjs       -15x +24x         -7x -7x +11x +11x     -15x +24x   -14x +23x             -2x -2x -2x -2x +11x +11x +11x +11x       -2x +11x   -2x +11x       -4x -2x +18x +9x     -2x +13x           -16x -16x -16x -2x -2x -2x +34x +34x +34x +4x +4x +4x       @@ -674,14 +674,14 @@

All files / roosterjs       -16x -2x -2x +34x +14x +14x   -2x -2x +14x +14x   -2x +14x       @@ -698,34 +698,34 @@

All files / roosterjs       -2x +14x             -2x -  +14x +5x   -2x +9x   -2x +14x     -2x +14x             -2x -8x +4x +16x       -2x +4x       @@ -740,17 +740,17 @@

All files / roosterjs   1x   -18x +49x   -16x +38x   -2x -2x +11x +11x   -14x -14x +15x +15x   -  +12x      

import applyListItemStyleWrap from '../utils/applyListItemWrap';
@@ -797,17 +797,17 @@ 

All files / roosterjs * @param editor The editor instance * @returns if the current selection is composed of two or more block elements */ -function isMultiBlockSelection(editor: IEditor): boolean { - const transverser = editor.getSelectionTraverser(); - const blockElement = transverser?.currentBlockElement; - if (!blockElement) { +function isMultiBlockSelection(editor: IEditor): boolean { + const transverser = editor.getSelectionTraverser(); + const blockElement = transverser?.currentBlockElement; + Iif (!blockElement) { return false; }   - const nextBlockElement = transverser?.getNextBlockElement(); + const nextBlockElement = transverser?.getNextBlockElement();   //At least two blocks are selected - return !!nextBlockElement; + return !!nextBlockElement; }   function clearNodeFormat(node: Node): boolean { @@ -897,24 +897,24 @@

All files / roosterjs * Ignoring the children of contentDiv and returning true if any node is LI * @returns `true` if this node, and its parents (minus the children of the contentDiv) have no siblings with text content */ -function isNodeWholeBlock(node: Node, editor: IEditor) { - let currentNode: ParentNode | Node | null = node; - while (currentNode && editor.contains(currentNode.parentNode)) { - if (currentNode.nextSibling || currentNode.previousSibling) { - if (safeInstanceOf(currentNode, 'HTMLLIElement')) { - return true; +function isNodeWholeBlock(node: Node, editor: IEditor) { + let currentNode: ParentNode | Node | null = node; + while (currentNode && editor.contains(currentNode.parentNode)) { + if (currentNode.nextSibling || currentNode.previousSibling) { + if (safeInstanceOf(currentNode, 'HTMLLIElement')) { + return true; } - let isOnlySiblingWithContent = true; - currentNode.parentNode?.childNodes.forEach(node => { - if (node != currentNode && node.textContent?.length) { - isOnlySiblingWithContent = false; + let isOnlySiblingWithContent = true; + currentNode.parentNode?.childNodes.forEach(node => { + if (node != currentNode && node.textContent?.length) { + isOnlySiblingWithContent = false; } }); - return isOnlySiblingWithContent; + return isOnlySiblingWithContent; } - currentNode = currentNode.parentNode; + currentNode = currentNode.parentNode; } - return true; + return true; }   /** @@ -923,21 +923,21 @@

All files / roosterjs * If the current selection is compose of a partial inline element then only the text format is removed from the current selection * @param editor The editor instance */ -function clearAutoDetectFormat(editor: IEditor) { - const isMultiBlock = isMultiBlockSelection(editor); - if (!isMultiBlock) { - const transverser = editor.getSelectionTraverser(); - const inlineElement = transverser?.currentInlineElement; +function clearAutoDetectFormat(editor: IEditor) { + const isMultiBlock = isMultiBlockSelection(editor); + if (!isMultiBlock) { + const transverser = editor.getSelectionTraverser(); + const inlineElement = transverser?.currentInlineElement; const isPartial = - inlineElement instanceof PartialInlineElement || + inlineElement instanceof PartialInlineElement || (inlineElement instanceof NodeInlineElement && !isNodeWholeBlock(inlineElement.getContainerNode(), editor)); - if (isPartial) { - clearFormat(editor); - return; + if (isPartial) { + clearFormat(editor); + return; } } - clearBlockFormat(editor); + clearBlockFormat(editor); }   /** @@ -1053,8 +1053,8 @@

All files / roosterjs setBackgroundColor(editor, defaultFormat.backgroundColor); } } - Iif (defaultFormat.bold) { - toggleBold(editor); + if (defaultFormat.bold) { + toggleBold(editor); } else { setDefaultFontWeight(editor); } @@ -1097,8 +1097,8 @@

All files / roosterjs case ClearFormatMode.Block: clearBlockFormat(editor); break; - default: - clearAutoDetectFormat(editor); + default: + clearAutoDetectFormat(editor); } }  

@@ -1108,7 +1108,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/createLink.ts.html b/coverage/roosterjs-editor-api/lib/format/createLink.ts.html index 6a8f434735c..8a398f54edd 100644 --- a/coverage/roosterjs-editor-api/lib/format/createLink.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/createLink.ts.html @@ -538,7 +538,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/getFormatState.ts.html b/coverage/roosterjs-editor-api/lib/format/getFormatState.ts.html index 387d897eb74..12d8762742f 100644 --- a/coverage/roosterjs-editor-api/lib/format/getFormatState.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/getFormatState.ts.html @@ -373,7 +373,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/index.html b/coverage/roosterjs-editor-api/lib/format/index.html index d2c288dbea7..93c2d8a3fb5 100644 --- a/coverage/roosterjs-editor-api/lib/format/index.html +++ b/coverage/roosterjs-editor-api/lib/format/index.html @@ -23,30 +23,30 @@

All files roosterjs-editor-api/lib/format<
- 64.03% + 71.47% Statements - 404/631 + 451/631
- 46.28% + 55.41% Branches - 218/471 + 261/471
- 66.67% + 74.56% Functions - 76/114 + 85/114
- 63.64% + 71.1% Lines - 392/616 + 438/616
@@ -73,18 +73,18 @@

All files roosterjs-editor-api/lib/format<

changeCapitalization.ts -
+
changeCapitalization.ts +
12%3/250%0/90%0/412.5%3/2492%23/2566.67%6/9100%4/491.67%22/24
clearFormat.ts -
+
clearFormat.ts +
65.13%99/15241.03%48/11765.52%19/2963.7%93/14683.55%127/15272.65%85/11779.31%23/2982.88%121/146
setAlignment.ts -
+
+
95.74%45/4787.1%27/3187.5%7/895.74%45/4793.62%44/4783.87%26/31100%8/893.62%44/47
87.5% 7/850%3/666.67%4/6 100% 2/2 87.5%
import execCommand from '../utils/execCommand';
 import { DocumentCommand } from 'roosterjs-editor-types';
@@ -109,7 +109,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/toggleBullet.ts.html b/coverage/roosterjs-editor-api/lib/format/toggleBullet.ts.html index 71ab5f000e1..c562822d91d 100644 --- a/coverage/roosterjs-editor-api/lib/format/toggleBullet.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/toggleBullet.ts.html @@ -154,7 +154,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/toggleCodeBlock.ts.html b/coverage/roosterjs-editor-api/lib/format/toggleCodeBlock.ts.html index 5b096351c35..495a9887c02 100644 --- a/coverage/roosterjs-editor-api/lib/format/toggleCodeBlock.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/toggleCodeBlock.ts.html @@ -181,7 +181,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/toggleItalic.ts.html b/coverage/roosterjs-editor-api/lib/format/toggleItalic.ts.html index fd25d35c6c1..42d940ebba9 100644 --- a/coverage/roosterjs-editor-api/lib/format/toggleItalic.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/toggleItalic.ts.html @@ -85,7 +85,7 @@

All files / roosterjs     1x -2x +6x    

import execCommand from '../utils/execCommand';
 import { DocumentCommand } from 'roosterjs-editor-types';
@@ -109,7 +109,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/toggleNumbering.ts.html b/coverage/roosterjs-editor-api/lib/format/toggleNumbering.ts.html index 300df6279f0..10ae986bf2e 100644 --- a/coverage/roosterjs-editor-api/lib/format/toggleNumbering.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/toggleNumbering.ts.html @@ -160,7 +160,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/toggleStrikethrough.ts.html b/coverage/roosterjs-editor-api/lib/format/toggleStrikethrough.ts.html index 6ffd5a2341f..4b58cb80442 100644 --- a/coverage/roosterjs-editor-api/lib/format/toggleStrikethrough.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/toggleStrikethrough.ts.html @@ -109,7 +109,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/toggleSubscript.ts.html b/coverage/roosterjs-editor-api/lib/format/toggleSubscript.ts.html index 0d7b8779505..8093772dea9 100644 --- a/coverage/roosterjs-editor-api/lib/format/toggleSubscript.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/toggleSubscript.ts.html @@ -115,7 +115,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/toggleSuperscript.ts.html b/coverage/roosterjs-editor-api/lib/format/toggleSuperscript.ts.html index d3503492a81..e611186c0b3 100644 --- a/coverage/roosterjs-editor-api/lib/format/toggleSuperscript.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/toggleSuperscript.ts.html @@ -115,7 +115,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/format/toggleUnderline.ts.html b/coverage/roosterjs-editor-api/lib/format/toggleUnderline.ts.html index eadc20aa589..67ad46696cc 100644 --- a/coverage/roosterjs-editor-api/lib/format/toggleUnderline.ts.html +++ b/coverage/roosterjs-editor-api/lib/format/toggleUnderline.ts.html @@ -85,7 +85,7 @@

All files / roosterjs     1x -2x +6x    

import execCommand from '../utils/execCommand';
 import { DocumentCommand } from 'roosterjs-editor-types';
@@ -109,7 +109,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/index.html b/coverage/roosterjs-editor-api/lib/index.html index 21f320424e7..d679892bd15 100644 --- a/coverage/roosterjs-editor-api/lib/index.html +++ b/coverage/roosterjs-editor-api/lib/index.html @@ -95,7 +95,7 @@

All files roosterjs-editor-api/lib

diff --git a/coverage/roosterjs-editor-api/lib/index.ts.html b/coverage/roosterjs-editor-api/lib/index.ts.html index a6d9072a0de..fc13614d1b6 100644 --- a/coverage/roosterjs-editor-api/lib/index.ts.html +++ b/coverage/roosterjs-editor-api/lib/index.ts.html @@ -116,7 +116,7 @@

All files / roosterjs-ed 1x 1x 1x -7x +17x 1x 2x 2x @@ -181,7 +181,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-api/lib/table/applyCellShading.ts.html b/coverage/roosterjs-editor-api/lib/table/applyCellShading.ts.html index c5bc570bf30..d864cef8af5 100644 --- a/coverage/roosterjs-editor-api/lib/table/applyCellShading.ts.html +++ b/coverage/roosterjs-editor-api/lib/table/applyCellShading.ts.html @@ -187,7 +187,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/table/editTable.ts.html b/coverage/roosterjs-editor-api/lib/table/editTable.ts.html index 98464165457..57ebea5af37 100644 --- a/coverage/roosterjs-editor-api/lib/table/editTable.ts.html +++ b/coverage/roosterjs-editor-api/lib/table/editTable.ts.html @@ -310,7 +310,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/table/formatTable.ts.html b/coverage/roosterjs-editor-api/lib/table/formatTable.ts.html index 0143cfacd18..2a15b4cac7f 100644 --- a/coverage/roosterjs-editor-api/lib/table/formatTable.ts.html +++ b/coverage/roosterjs-editor-api/lib/table/formatTable.ts.html @@ -175,7 +175,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/table/index.html b/coverage/roosterjs-editor-api/lib/table/index.html index 792933225ff..d94aa9b7f07 100644 --- a/coverage/roosterjs-editor-api/lib/table/index.html +++ b/coverage/roosterjs-editor-api/lib/table/index.html @@ -140,7 +140,7 @@

All files roosterjs-editor-api/lib/table Code coverage generated by istanbul - at Tue Apr 16 2024 17:17:51 GMT+0000 (Coordinated Universal Time) + at Tue Apr 16 2024 17:40:39 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/roosterjs-editor-api/lib/table/insertTable.ts.html b/coverage/roosterjs-editor-api/lib/table/insertTable.ts.html index a6d061f21c5..2cafa89cfbc 100644 --- a/coverage/roosterjs-editor-api/lib/table/insertTable.ts.html +++ b/coverage/roosterjs-editor-api/lib/table/insertTable.ts.html @@ -265,7 +265,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/utils/applyInlineStyle.ts.html b/coverage/roosterjs-editor-api/lib/utils/applyInlineStyle.ts.html index 97e20604969..21a0c32efc8 100644 --- a/coverage/roosterjs-editor-api/lib/utils/applyInlineStyle.ts.html +++ b/coverage/roosterjs-editor-api/lib/utils/applyInlineStyle.ts.html @@ -157,13 +157,13 @@

All files / roosterjs       -25x -25x +76x +76x   -25x -25x +76x +132x   -25x +76x 13x 13x   @@ -185,30 +185,30 @@

All files / roosterjs       -12x +63x         -12x -12x -12x +63x +63x +63x     -12x -12x -24x -24x -24x -24x -24x +63x +63x +134x +134x +131x +131x +131x   -24x +134x       -12x -12x +63x +63x       @@ -301,7 +301,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/utils/applyListItemWrap.ts.html b/coverage/roosterjs-editor-api/lib/utils/applyListItemWrap.ts.html index ce129e9a5ed..034c0a866e4 100644 --- a/coverage/roosterjs-editor-api/lib/utils/applyListItemWrap.ts.html +++ b/coverage/roosterjs-editor-api/lib/utils/applyListItemWrap.ts.html @@ -23,30 +23,30 @@

All files / roosterjs -
+

-	
-	
-	
-	
-	
-	
-	
-	
-	
+	
+	
+	
+	
+	
+	
+	
+	
@@ -260,7 +260,7 @@ 

All files roosterjs-editor-core/lib/corePl diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/utils/forEachSelectedCell.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/utils/forEachSelectedCell.ts.html index fa0adbda4c9..3c888054931 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/utils/forEachSelectedCell.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/utils/forEachSelectedCell.ts.html @@ -130,7 +130,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/utils/index.html b/coverage/roosterjs-editor-core/lib/corePlugins/utils/index.html index 508490eb35e..30371e3ed2b 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/utils/index.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/utils/index.html @@ -125,7 +125,7 @@

All files roosterjs-editor-core/lib/cor diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/utils/inlineEntityOnPluginEvent.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/utils/inlineEntityOnPluginEvent.ts.html index 37c521f08a3..f5020383f92 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/utils/inlineEntityOnPluginEvent.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/utils/inlineEntityOnPluginEvent.ts.html @@ -382,38 +382,38 @@

All files / rooste     1x -14634x +15503x   -536x -353x +713x +431x   -536x +713x   -6531x -6531x +6750x +6750x     -24x -12x +22x +11x   -12x -12x +11x +11x         -12x +11x       -124x +190x 8x 4x   4x     -124x +190x     31x @@ -456,12 +456,12 @@

All files / rooste     1x -6884x -6884x +7181x +7181x       -6896x +7192x 7x 4x   @@ -489,7 +489,7 @@

All files / rooste       -6884x +7181x 4x 4x   @@ -937,7 +937,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/utils/removeCellsOutsideSelection.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/utils/removeCellsOutsideSelection.ts.html index 1712eb67683..2b5761ca948 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/utils/removeCellsOutsideSelection.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/utils/removeCellsOutsideSelection.ts.html @@ -175,7 +175,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-core/lib/editor/DarkColorHandlerImpl.ts.html b/coverage/roosterjs-editor-core/lib/editor/DarkColorHandlerImpl.ts.html index d19d107e88f..62a94fc6fbd 100644 --- a/coverage/roosterjs-editor-core/lib/editor/DarkColorHandlerImpl.ts.html +++ b/coverage/roosterjs-editor-core/lib/editor/DarkColorHandlerImpl.ts.html @@ -259,16 +259,16 @@

All files / roosterjs     1x -6749x +6974x   -6749x +6974x           1x -6899x +7216x       @@ -279,16 +279,16 @@

All files / roosterjs     1x -19612x +20306x     -19612x -19612x -19612x -19612x +20306x +20306x +20306x +20306x     -19612x +20306x 12x     @@ -301,16 +301,16 @@

All files / roosterjs   12x   -19600x +20294x             -6507x -6507x -6507x +6714x +6714x +6714x       @@ -322,13 +322,13 @@

All files / roosterjs   1x   -20654x +22028x     -20654x -19664x +22028x +20401x   -19664x +20401x 10x 9x 9x @@ -336,7 +336,7 @@

All files / roosterjs   1x   -19654x +20391x       @@ -346,11 +346,11 @@

All files / roosterjs 1x     -19648x +20385x       -20654x +22028x       @@ -386,19 +386,19 @@

All files / roosterjs       -515x -515x -1030x +853x +853x +1706x           -1030x -1030x +1706x +1706x   -1030x -37x +1706x +76x       @@ -583,7 +583,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/editor/Editor.ts.html b/coverage/roosterjs-editor-core/lib/editor/Editor.ts.html index c80fcab4573..d623dceda1d 100644 --- a/coverage/roosterjs-editor-core/lib/editor/Editor.ts.html +++ b/coverage/roosterjs-editor-core/lib/editor/Editor.ts.html @@ -87,8 +87,8 @@

All files / roosterjs       -6525x -6524x +6744x +6743x   1x  

- - - - - - - - - + + + + + + + + @@ -155,7 +155,7 @@

All files roosterjs-editor-core/lib/editor diff --git a/coverage/roosterjs-editor-core/lib/editor/isFeatureEnabled.ts.html b/coverage/roosterjs-editor-core/lib/editor/isFeatureEnabled.ts.html index ca627c4eb64..416bdb23a98 100644 --- a/coverage/roosterjs-editor-core/lib/editor/isFeatureEnabled.ts.html +++ b/coverage/roosterjs-editor-core/lib/editor/isFeatureEnabled.ts.html @@ -109,7 +109,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/index.html b/coverage/roosterjs-editor-core/lib/index.html index 4b309a0b71d..b6c8b2a542d 100644 --- a/coverage/roosterjs-editor-core/lib/index.html +++ b/coverage/roosterjs-editor-core/lib/index.html @@ -95,7 +95,7 @@

All files roosterjs-editor-core/lib

diff --git a/coverage/roosterjs-editor-core/lib/index.ts.html b/coverage/roosterjs-editor-core/lib/index.ts.html index 264d2bd01f7..516c9d63957 100644 --- a/coverage/roosterjs-editor-core/lib/index.ts.html +++ b/coverage/roosterjs-editor-core/lib/index.ts.html @@ -63,7 +63,7 @@

All files / roosterjs-ed 4 5 6

- - - - - + + + + - - + + @@ -119,17 +119,17 @@

All files roosterjs-editor-dom/lib/content

- - - - - + + + + - - + + @@ -155,7 +155,7 @@

All files roosterjs-editor-dom/lib/content diff --git a/coverage/roosterjs-editor-dom/lib/delimiter/addDelimiters.ts.html b/coverage/roosterjs-editor-dom/lib/delimiter/addDelimiters.ts.html index acab26e1f05..5517e756f70 100644 --- a/coverage/roosterjs-editor-dom/lib/delimiter/addDelimiters.ts.html +++ b/coverage/roosterjs-editor-dom/lib/delimiter/addDelimiters.ts.html @@ -274,7 +274,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/delimiter/getDelimiterFromElement.ts.html b/coverage/roosterjs-editor-dom/lib/delimiter/getDelimiterFromElement.ts.html index 84b435e59f4..b0bfa05c87f 100644 --- a/coverage/roosterjs-editor-dom/lib/delimiter/getDelimiterFromElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/delimiter/getDelimiterFromElement.ts.html @@ -139,7 +139,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/delimiter/index.html b/coverage/roosterjs-editor-dom/lib/delimiter/index.html index adbddad70f5..27b12b62e46 100644 --- a/coverage/roosterjs-editor-dom/lib/delimiter/index.html +++ b/coverage/roosterjs-editor-dom/lib/delimiter/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-dom/lib/delimit diff --git a/coverage/roosterjs-editor-dom/lib/edit/adjustInsertPosition.ts.html b/coverage/roosterjs-editor-dom/lib/edit/adjustInsertPosition.ts.html index de80352e97b..5bebb1ac194 100644 --- a/coverage/roosterjs-editor-dom/lib/edit/adjustInsertPosition.ts.html +++ b/coverage/roosterjs-editor-dom/lib/edit/adjustInsertPosition.ts.html @@ -23,30 +23,30 @@

All files / roosterjs
- 70.08% + 70.87% Statements - 89/127 + 90/127
- 45.83% + 54.17% Branches - 55/120 + 65/120
- 83.33% + 91.67% Functions - 10/12 + 11/12
- 70.08% + 70.87% Lines - 89/127 + 90/127
@@ -459,21 +459,21 @@

All files / roosterjs       -24x +40x   -24x +40x     -22x +32x           -  +2x     -22x +32x       @@ -481,7 +481,7 @@

All files / roosterjs       -22x +32x       @@ -512,7 +512,7 @@

All files / roosterjs       -24x +40x       @@ -524,30 +524,30 @@

All files / roosterjs       -24x -24x +40x +40x   -24x -6x -6x -8x +40x +11x +11x +12x   -6x +11x     -24x +40x   -24x -24x -24x -24x +40x +40x +40x +40x   -24x +40x         -24x +40x       @@ -573,7 +573,7 @@

All files / roosterjs       -24x +40x       @@ -584,7 +584,7 @@

All files / roosterjs       -24x +40x       @@ -597,7 +597,7 @@

All files / roosterjs       -24x +40x       @@ -607,7 +607,7 @@

All files / roosterjs       -24x +40x       @@ -620,13 +620,13 @@

All files / roosterjs       -24x +40x           -24x +40x       @@ -639,17 +639,17 @@

All files / roosterjs       -24x -24x -24x -24x -24x +40x +36x +36x +36x +36x   -24x -1x +36x +3x     -24x +40x       @@ -661,17 +661,17 @@

All files / roosterjs       -25x -1x -1x +42x +2x +2x           -1x -1x -1x +2x +2x +2x       @@ -680,13 +680,13 @@

All files / roosterjs       -1x -1x -1x +2x +2x +2x       -24x +40x       @@ -698,7 +698,7 @@

All files / roosterjs       -24x +40x       @@ -734,7 +734,7 @@

All files / roosterjs       -24x +40x       @@ -752,10 +752,10 @@

All files / roosterjs       -24x -168x +40x +280x   -24x +40x       @@ -822,10 +822,10 @@

All files / roosterjs null /*forEachCallback*/, QueryScope.OnSelection, createRange(position) - ).filter((a: HTMLElement) => blockElement!.contains(a))[0]; + ).filter((a: HTMLElement) => blockElement!.contains(a))[0];   // If this is about to insert node to an empty A tag, clear the A tag and reset position - Iif (anchor && isNodeEmpty(anchor)) { + Iif (anchor && isNodeEmpty(anchor)) { position = new Position(anchor, PositionType.Before); safeRemove(anchor); anchor = null; @@ -835,8 +835,8 @@

All files / roosterjs // otherwise we will have nested A tags which is a wrong HTML structure Iif ( anchor && - (<ParentNode>(nodeToInsert as HTMLElement))?.querySelector && - (<ParentNode>(nodeToInsert as HTMLElement))?.querySelector('a[href]') + (<ParentNode>(nodeToInsert as HTMLElement))?.querySelector && + (<ParentNode>(nodeToInsert as HTMLElement))?.querySelector('a[href]') ) { const normalizedPosition = position.normalize(); const parentNode = normalizedPosition.node.parentNode!; @@ -991,7 +991,7 @@

All files / roosterjs position: NodePosition, range: Range ): NodePosition { - Eif (range && range.collapsed) { + if (range && range.collapsed) { const searcher = new PositionContentSearcher(root, Position.getStart(range)); const inlineElementBefore = searcher.getInlineElementBefore(); const inlineElementAfter = searcher.getInlineElementAfter(); @@ -1120,7 +1120,7 @@

All files / roosterjs

diff --git a/coverage/roosterjs-editor-dom/lib/edit/deleteSelectedContent.ts.html b/coverage/roosterjs-editor-dom/lib/edit/deleteSelectedContent.ts.html index 90570aca118..7d483a1bf25 100644 --- a/coverage/roosterjs-editor-dom/lib/edit/deleteSelectedContent.ts.html +++ b/coverage/roosterjs-editor-dom/lib/edit/deleteSelectedContent.ts.html @@ -478,7 +478,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/edit/getTextContent.ts.html b/coverage/roosterjs-editor-dom/lib/edit/getTextContent.ts.html index cf2a8bf5574..1a497a0d183 100644 --- a/coverage/roosterjs-editor-dom/lib/edit/getTextContent.ts.html +++ b/coverage/roosterjs-editor-dom/lib/edit/getTextContent.ts.html @@ -121,7 +121,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/edit/index.html b/coverage/roosterjs-editor-dom/lib/edit/index.html index a2a3894503f..66ed1049b00 100644 --- a/coverage/roosterjs-editor-dom/lib/edit/index.html +++ b/coverage/roosterjs-editor-dom/lib/edit/index.html @@ -23,30 +23,30 @@

All files roosterjs-editor-dom/lib/edit
- 72.77% + 73.3% Statements - 139/191 + 140/191
- 54.17% + 60.12% Branches - 91/168 + 101/168
- 84.21% + 89.47% Functions - 16/19 + 17/19
- 72.19% + 72.73% Lines - 135/187 + 136/187
@@ -74,17 +74,17 @@

All files roosterjs-editor-dom/lib/edit

- - - - - - - - - + + + + + + + + @@ -125,7 +125,7 @@

All files roosterjs-editor-dom/lib/edit Code coverage generated by istanbul - at Tue Apr 16 2024 17:17:51 GMT+0000 (Coordinated Universal Time) + at Tue Apr 16 2024 17:40:39 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/roosterjs-editor-dom/lib/entity/commitEntity.ts.html b/coverage/roosterjs-editor-dom/lib/entity/commitEntity.ts.html index 41a7bf259bf..54df981424d 100644 --- a/coverage/roosterjs-editor-dom/lib/entity/commitEntity.ts.html +++ b/coverage/roosterjs-editor-dom/lib/entity/commitEntity.ts.html @@ -157,7 +157,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/entity/entityPlaceholderUtils.ts.html b/coverage/roosterjs-editor-dom/lib/entity/entityPlaceholderUtils.ts.html index a2e6cead6f2..88be0e19cbd 100644 --- a/coverage/roosterjs-editor-dom/lib/entity/entityPlaceholderUtils.ts.html +++ b/coverage/roosterjs-editor-dom/lib/entity/entityPlaceholderUtils.ts.html @@ -289,15 +289,15 @@

All files / roosterjs       -411x +489x   -411x +489x   -411x -600x -600x +489x +711x +711x   -600x +711x 10x   10x @@ -306,11 +306,11 @@

All files / roosterjs 1x     -590x -590x +701x +701x   -590x -460x +701x +570x 2x   2x @@ -320,19 +320,19 @@

All files / roosterjs       -600x +711x     -411x +489x       -421x -387x -387x -387x +499x +465x +465x +465x   -421x +499x       @@ -340,12 +340,12 @@

All files / roosterjs       -602x +713x     -602x +713x   -602x +713x       @@ -517,7 +517,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/entity/getEntityFromElement.ts.html b/coverage/roosterjs-editor-dom/lib/entity/getEntityFromElement.ts.html index 8497f3a3f53..4f145d62bb6 100644 --- a/coverage/roosterjs-editor-dom/lib/entity/getEntityFromElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/entity/getEntityFromElement.ts.html @@ -169,7 +169,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/entity/getEntitySelector.ts.html b/coverage/roosterjs-editor-dom/lib/entity/getEntitySelector.ts.html index cae630386a0..ad619236237 100644 --- a/coverage/roosterjs-editor-dom/lib/entity/getEntitySelector.ts.html +++ b/coverage/roosterjs-editor-dom/lib/entity/getEntitySelector.ts.html @@ -77,9 +77,9 @@

All files / roosterjs     1x -7727x -7727x -7727x +8266x +8266x +8266x    

- - + + @@ -95,7 +95,7 @@

All files roosterjs-editor-dom/lib

diff --git a/coverage/roosterjs-editor-dom/lib/index.ts.html b/coverage/roosterjs-editor-dom/lib/index.ts.html index d7e8913de20..98201469c82 100644 --- a/coverage/roosterjs-editor-dom/lib/index.ts.html +++ b/coverage/roosterjs-editor-dom/lib/index.ts.html @@ -37,9 +37,9 @@

All files / roosterjs-ed
- 73.13% + 74.63% Functions - 98/134 + 100/134
@@ -215,11 +215,11 @@

All files / roosterjs-ed 156 157 158 -159

- - + + @@ -245,7 +245,7 @@

All files roosterjs-editor-dom/lib/list Code coverage generated by istanbul - at Tue Apr 16 2024 17:17:51 GMT+0000 (Coordinated Universal Time) + at Tue Apr 16 2024 17:40:39 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts.html b/coverage/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts.html index 2cc9f10f735..4567327e3c8 100644 --- a/coverage/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts.html +++ b/coverage/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts.html @@ -148,7 +148,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/list/setListItemStyle.ts.html b/coverage/roosterjs-editor-dom/lib/list/setListItemStyle.ts.html index 2bfe1266ae2..eb0baff66da 100644 --- a/coverage/roosterjs-editor-dom/lib/list/setListItemStyle.ts.html +++ b/coverage/roosterjs-editor-dom/lib/list/setListItemStyle.ts.html @@ -30,9 +30,9 @@

All files / roosterjs
- 84.31% + 88.24% Branches - 43/51 + 45/51
@@ -162,22 +162,22 @@

All files / roosterjs 1x     -294x +302x   -294x +299x   -294x -1021x -192x +299x +1031x +205x     -1021x +1031x         -26x -24x +29x +27x   2x   @@ -186,56 +186,56 @@

All files / roosterjs       -294x -294x -294x +299x +299x +299x   -294x -280x -280x -280x +299x +291x +291x +291x   -280x +291x       -280x +291x           -64x +72x   -64x -202x +72x +215x       -202x -60x +215x +68x     -202x -75x +215x +83x       -64x -33x +72x +35x   -31x +37x       -280x -60x +291x +68x     -280x +291x     -294x +299x    

\n \n \n \n );\n }\n\n private renderInputBox(\n label: string,\n ref: React.RefObject,\n value: string,\n placeholder: string,\n onChange: (state: BuildInPluginState, value: string) => void\n ): JSX.Element {\n return (\n
\n {label}\n \n this.props.resetState(state => onChange(state, ref.current.value), false)\n }\n onBlur={() => this.props.resetState(null, true)}\n />\n
\n );\n }\n\n private renderCheckBox(\n label: string,\n ref: React.RefObject,\n value: boolean,\n onChange: (state: BuildInPluginState, value: boolean) => void\n ): JSX.Element {\n return (\n
\n \n this.props.resetState(state => onChange(state, ref.current.checked), true)\n }\n onBlur={() => this.props.resetState(null, true)}\n />\n {label}\n
\n );\n }\n\n private onPluginClick = (id: PluginItemId) => {\n this.props.resetState(state => {\n let checkbox = document.getElementById(id) as HTMLInputElement;\n state.pluginList[id] = checkbox.checked;\n }, true);\n };\n}\n","import CodeElement from './CodeElement';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\n\nconst codeMap: { [id: string]: string } = {\n buttonB: 'roosterjsLegacy.toggleBold(editor)',\n buttonI: 'roosterjsLegacy.toggleItalic(editor)',\n buttonU: 'roosterjsLegacy.toggleUnderline(editor)',\n buttonBullet: 'roosterjsLegacy.toggleBullet(editor)',\n buttonNumbering: 'roosterjsLegacy.toggleNumbering(editor)',\n buttonUndo: 'editor.undo()',\n buttonRedo: 'editor.redo()',\n};\nconst buttonDark = 'editor.setDarkModeState(!editor.isDarkMode())';\n\nexport default class ButtonsCode extends CodeElement {\n getCode() {\n const map = { ...codeMap, buttonDark: buttonDark };\n return getObjectKeys(map)\n .map(\n id =>\n `document.getElementById('${id}').addEventListener('click', () => ${map[id]});\\n`\n )\n .join('');\n }\n}\n","export default abstract class CodeElement {\n abstract getCode(): string;\n\n protected encode(src: string): string {\n return src.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\");\n }\n\n protected indent(src: string): string {\n return src\n .split('\\n')\n .map(line => (line == '' ? '' : ' ' + line + '\\n'))\n .join('');\n }\n}\n","import CodeElement from './CodeElement';\nimport ContentEditFeaturesCode from './ContentEditFeaturesCode';\nimport { ContentEditFeatureSettings } from 'roosterjs-editor-types';\n\nexport default class ContentEditCode extends CodeElement {\n private features: ContentEditFeaturesCode;\n constructor(settings: ContentEditFeatureSettings) {\n super();\n this.features = new ContentEditFeaturesCode(settings);\n }\n\n getCode() {\n return 'new roosterjsLegacy.ContentEdit(' + this.features.getCode() + ')';\n }\n}\n","import CodeElement from './CodeElement';\nimport getDefaultContentEditFeatureSettings from '../getDefaultContentEditFeatureSettings';\nimport { ContentEditFeatureSettings } from 'roosterjs-editor-types';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\n\nexport default class ContentEditFeaturesCode extends CodeElement {\n constructor(private state: ContentEditFeatureSettings) {\n super();\n }\n\n getCode() {\n let defaultValues = getDefaultContentEditFeatureSettings();\n let features = getObjectKeys(defaultValues)\n .map(key => {\n let checked = this.state[key];\n\n return typeof checked != 'boolean' || checked == defaultValues[key]\n ? null\n : `${key}: ${checked ? 'true' : 'false'},\\n`;\n })\n .filter(line => !!line);\n return features.length > 0 ? '{\\n' + this.indent(features.join('')) + '}' : '';\n }\n}\n","import CodeElement from './CodeElement';\n\nexport default class DarkModeCode extends CodeElement {\n getCode() {\n return 'roosterjsLegacy.getDarkColor';\n }\n}\n","import CodeElement from './CodeElement';\nimport { DefaultFormat } from 'roosterjs-editor-types';\n\nexport default class DefaultFormatCode extends CodeElement {\n constructor(private defaultFormat: DefaultFormat) {\n super();\n }\n\n getCode() {\n let {\n bold,\n italic,\n underline,\n fontFamily,\n fontSize,\n textColor,\n backgroundColor,\n } = this.defaultFormat;\n let lines = [\n bold ? 'bold: true,\\n' : null,\n italic ? 'italic: true,\\n' : null,\n underline ? 'underline: true,\\n' : null,\n fontFamily ? `fontFamily: '${this.encode(fontFamily)}',\\n` : null,\n fontSize ? `fontSize: '${this.encode(fontSize)}',\\n` : null,\n textColor ? `textColor: '${this.encode(textColor)}',\\n` : null,\n backgroundColor ? `backgroundColor: '${this.encode(backgroundColor)}',\\n` : null,\n ].filter(line => !!line);\n\n return lines.length > 0 ? '{\\n' + this.indent(lines.join('')) + '}' : '';\n }\n}\n","import BuildInPluginState from '../../../BuildInPluginState';\nimport ButtonsCode from './ButtonsCode';\nimport CodeElement from './CodeElement';\nimport DarkModeCode from './DarkModeCode';\nimport DefaultFormatCode from './DefaultFormatCode';\nimport ExperimentalFeaturesCode from './ExperimentalFeaturesCode';\nimport PluginsCode from './PluginsCode';\n\nexport default class EditorCode extends CodeElement {\n private plugins: PluginsCode;\n private defaultFormat: DefaultFormatCode;\n private buttons: ButtonsCode;\n private experimentalFeatures: ExperimentalFeaturesCode;\n private darkMode: DarkModeCode;\n\n constructor(state: BuildInPluginState) {\n super();\n\n this.plugins = new PluginsCode(state);\n this.defaultFormat = new DefaultFormatCode(state.defaultFormat);\n this.buttons = new ButtonsCode();\n this.experimentalFeatures = new ExperimentalFeaturesCode(state.experimentalFeatures);\n this.darkMode = new DarkModeCode();\n }\n\n getCode() {\n let defaultFormat = this.defaultFormat.getCode();\n let expermientalFeatures = this.experimentalFeatures.getCode();\n let darkMode = this.darkMode.getCode();\n let code = \"let contentDiv = document.getElementById('contentDiv');\\n\";\n code += `let plugins = ${this.plugins.getCode()};\\n`;\n code += defaultFormat ? `let defaultFormat: DefaultFormat = ${defaultFormat};\\n` : '';\n code += 'let options = {\\n';\n code += this.indent('plugins: plugins,\\n');\n code += defaultFormat ? this.indent('defaultFormat: defaultFormat,\\n') : '';\n code += expermientalFeatures\n ? this.indent(`experimentalFeatures: [\\n${expermientalFeatures}],\\n`)\n : '';\n code += darkMode ? this.indent(`getDarkColor: ${darkMode},\\n`) : '';\n code += '};\\n';\n code += 'let editor = new roosterjsLegacy.Editor(contentDiv, options);\\n';\n code += this.buttons ? this.buttons.getCode() : '';\n\n return code;\n }\n}\n","import CodeElement from './CodeElement';\nimport { ExperimentalFeatures } from 'roosterjs-editor-types';\n\nexport default class ExperimentalFeaturesCode extends CodeElement {\n constructor(private experimentalFeatures: ExperimentalFeatures[]) {\n super();\n }\n\n getCode() {\n return (this.experimentalFeatures || [])\n .map(name => this.indent(\"'\" + name + \"',\"))\n .join('\\n');\n }\n}\n","import CodeElement from './CodeElement';\nimport { UrlPlaceholder } from '../../../BuildInPluginState';\n\nexport default class HyperLinkCode extends CodeElement {\n constructor(private linkTitle: string) {\n super();\n }\n\n getCode() {\n return 'new roosterjsLegacy.HyperLink(' + this.getLinkCallback() + ')';\n }\n\n private getLinkCallback() {\n if (!this.linkTitle) {\n return '';\n }\n\n let index = this.linkTitle.indexOf(UrlPlaceholder);\n if (index >= 0) {\n let left = this.linkTitle.substr(0, index);\n let right = this.linkTitle.substr(index + UrlPlaceholder.length);\n return (\n 'url => ' +\n (left ? `'${this.encode(left)}' + ` : '') +\n 'url' +\n (right ? ` + '${this.encode(right)}'` : '')\n );\n } else {\n return `() => '${this.linkTitle}'`;\n }\n }\n}\n","import BuildInPluginState from '../../../BuildInPluginState';\nimport CodeElement from './CodeElement';\nimport ContentEditCode from './ContentEditCode';\nimport HyperLinkCode from './HyperLinkCode';\nimport TableCellSelectionCode from './TableCellSelectionCode';\nimport WatermarkCode from './WatermarkCode';\nimport { CustomReplaceCode, CutPasteListChainCode, ImageEditCode } from './SimplePluginCode';\n\nexport default class PluginsCode extends CodeElement {\n private plugins: CodeElement[];\n\n constructor(private state: BuildInPluginState, private additionalPlugins?: string[]) {\n super();\n\n let pluginList = state.pluginList;\n this.plugins = [\n pluginList.contentEdit && new ContentEditCode(state.contentEditFeatures),\n pluginList.hyperlink && new HyperLinkCode(state.linkTitle),\n pluginList.watermark && new WatermarkCode(this.state.watermarkText),\n pluginList.imageEdit && new ImageEditCode(),\n pluginList.cutPasteListChain && new CutPasteListChainCode(),\n pluginList.customReplace && new CustomReplaceCode(),\n pluginList.tableCellSelection && new TableCellSelectionCode(),\n ].filter(plugin => !!plugin);\n }\n\n getCode() {\n let code = '[\\n';\n code += this.indent(this.plugins.map(plugin => plugin.getCode() + ',\\n').join(''));\n\n if (this.additionalPlugins) {\n code += this.indent(this.additionalPlugins.map(p => p + ',\\n').join(''));\n }\n code += ']';\n return code;\n }\n}\n","import BuildInPluginState from '../../../BuildInPluginState';\nimport CodeElement from './CodeElement';\nimport DarkModeCode from './DarkModeCode';\nimport DefaultFormatCode from './DefaultFormatCode';\nimport ExperimentalFeaturesCode from './ExperimentalFeaturesCode';\nimport PluginsCode from './PluginsCode';\nimport RibbonButtonCode from './RibbonButtonCode';\nimport RibbonCode from './RibbonCode';\n\nconst RibbonPluginVarName = 'ribbonPlugin';\n\nexport default class ReactEditorCode extends CodeElement {\n private plugins: PluginsCode;\n private defaultFormat: DefaultFormatCode;\n private ribbon: RibbonCode;\n private ribbonButton: RibbonButtonCode;\n private experimentalFeatures: ExperimentalFeaturesCode;\n private darkMode: DarkModeCode;\n private isRtl: boolean;\n\n constructor(state: BuildInPluginState) {\n super();\n\n this.ribbonButton = new RibbonButtonCode();\n this.ribbon = new RibbonCode(state, this.ribbonButton);\n this.plugins = new PluginsCode(state, this.ribbon ? [RibbonPluginVarName] : undefined);\n this.defaultFormat = new DefaultFormatCode(state.defaultFormat);\n this.experimentalFeatures = new ExperimentalFeaturesCode(state.experimentalFeatures);\n this.darkMode = new DarkModeCode();\n this.isRtl = state.isRtl;\n }\n\n getCode() {\n let defaultFormat = this.defaultFormat.getCode();\n let expermientalFeatures = this.experimentalFeatures.getCode();\n let darkMode = this.darkMode.getCode();\n let code = \"let root = document.getElementById('root');\\n\";\n\n if (this.ribbonButton) {\n code += `let ${RibbonPluginVarName} = roosterjsReact.createRibbonPlugin();\\n`;\n }\n\n code += `let plugins = ${this.plugins.getCode()};\\n`;\n code += defaultFormat ? `let defaultFormat = ${defaultFormat};\\n` : '';\n code += 'let options = {\\n';\n code += this.indent('plugins: plugins,\\n');\n code += defaultFormat ? this.indent('defaultFormat: defaultFormat,\\n') : '';\n code += expermientalFeatures\n ? this.indent(`experimentalFeatures: [\\n${expermientalFeatures}],\\n`)\n : '';\n code += darkMode ? this.indent(`getDarkColor: ${darkMode},\\n`) : '';\n code += '};\\n';\n\n code += `let editor = ;\\n`;\n let componentCode: string;\n\n if (this.ribbon && this.ribbonButton) {\n code += this.ribbonButton.getCode();\n code += 'let ribbon = ' + this.ribbon.getCode();\n componentCode = '<>{ribbon}{editor}';\n } else {\n componentCode = 'editor';\n }\n\n code += 'ReactDOM.render(' + componentCode + ', root);\\n';\n\n return code;\n }\n}\n","import CodeElement from './CodeElement';\n\nconst ButtonVarName = 'buttons';\n\nexport default class RibbonButtonCode extends CodeElement {\n private supportDarkMode: boolean;\n\n getCode() {\n let code = `let ${ButtonVarName} = roosterjsReact.getButtons();\\n`;\n\n if (this.supportDarkMode) {\n code += `${ButtonVarName}.push({\\n`;\n code += this.indent('key: \"buttonNameDarkMode\",\\n');\n code += this.indent('unlocalizedText: \"Dark Mode\",\\n');\n code += this.indent('iconName: \"ClearNight\",\\n');\n code += this.indent('isChecked: formatState => formatState.isDarkMode,\\n');\n code += this.indent('onClick: editor => {\\n');\n code += this.indent(' editor.setDarkModeState(!editor.isDarkMode());\\n');\n code += this.indent(' editor.focus();\\n');\n code += this.indent('},\\n');\n code += '});\\n';\n }\n\n return code;\n }\n\n getButtonVarName() {\n return ButtonVarName;\n }\n}\n","import BuildInPluginState from '../../../BuildInPluginState';\nimport CodeElement from './CodeElement';\nimport RibbonButtonCode from './RibbonButtonCode';\n\nexport default class RibbonCode extends CodeElement {\n private buttonsVarName: string;\n private isRtl: boolean;\n\n constructor(state: BuildInPluginState, ribbonButton: RibbonButtonCode) {\n super();\n this.buttonsVarName = ribbonButton.getButtonVarName();\n this.isRtl = state.isRtl;\n }\n\n getCode() {\n return `;\\n`;\n }\n}\n","import CodeElement from './CodeElement';\n\nclass SimplePluginCode extends CodeElement {\n constructor(private name: string, private namespace: string = 'roosterjsLegacy') {\n super();\n }\n\n getCode() {\n return `new ${this.namespace}.${this.name}()`;\n }\n}\n\nexport class PasteCode extends SimplePluginCode {\n constructor() {\n super('Paste');\n }\n}\n\nexport class ImageEditCode extends SimplePluginCode {\n constructor() {\n super('ImageEdit');\n }\n}\n\nexport class CutPasteListChainCode extends SimplePluginCode {\n constructor() {\n super('CutPasteListChain');\n }\n}\n\nexport class TableResizeCode extends SimplePluginCode {\n constructor() {\n super('TableResize');\n }\n}\n\nexport class CustomReplaceCode extends SimplePluginCode {\n constructor() {\n super('CustomReplace');\n }\n}\n","import CodeElement from './CodeElement';\n\nexport default class TableCellSelectionCode extends CodeElement {\n constructor() {\n super();\n }\n\n getCode() {\n return 'new roosterjsLegacy.TableCellSelection()';\n }\n}\n","import CodeElement from './CodeElement';\n\nexport default class WatermarkCode extends CodeElement {\n constructor(private watermarkText: string) {\n super();\n }\n\n getCode() {\n return `new roosterjsLegacy.Watermark('${this.encode(this.watermarkText)}')`;\n }\n}\n","import { ContentEditFeatureSettings } from 'roosterjs-editor-types';\nimport { getAllFeatures } from 'roosterjs-editor-plugins/lib/ContentEdit';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\n\nexport default function getDefaultContentEditFeatureSettings(): ContentEditFeatureSettings {\n const allFeatures = getAllFeatures();\n\n return {\n ...getObjectKeys(allFeatures).reduce((settings, key) => {\n settings[key] = !allFeatures[key].defaultDisabled;\n return settings;\n }, {}),\n };\n}\n","import * as React from 'react';\nimport { EntityOperation, PluginEvent, PluginEventType } from 'roosterjs-editor-types';\nimport { SidePaneElementProps } from '../SidePaneElement';\nimport {\n getObjectKeys,\n getTagOfNode,\n HtmlSanitizer,\n readFile,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\n\nconst styles = require('./EventViewPane.scss');\n\nexport interface EventEntry {\n index: number;\n time: Date;\n event: PluginEvent;\n}\n\nexport interface EventViewPaneState {\n displayCount: number;\n currentIndex: number;\n}\n\nconst EventTypeMap: { [key in PluginEventType]: string } = {\n [PluginEventType.BeforeDispose]: 'BeforeDispose',\n [PluginEventType.BeforePaste]: 'BeforePaste',\n [PluginEventType.CompositionEnd]: 'CompositionEnd',\n [PluginEventType.ContentChanged]: 'ContentChanged',\n [PluginEventType.EditorReady]: 'EditorReady',\n [PluginEventType.EntityOperation]: 'EntityOperation',\n [PluginEventType.ExtractContentWithDom]: 'ExtractContentWithDom',\n [PluginEventType.KeyDown]: 'KeyDown',\n [PluginEventType.KeyPress]: 'KeyPress',\n [PluginEventType.KeyUp]: 'KeyUp',\n [PluginEventType.MouseDown]: 'MouseDown',\n [PluginEventType.MouseUp]: 'MouseUp',\n [PluginEventType.Input]: 'Input',\n [PluginEventType.PendingFormatStateChanged]: 'PendingFormatStateChanged',\n [PluginEventType.Scroll]: 'Scroll',\n [PluginEventType.BeforeCutCopy]: 'BeforeCutCopy',\n [PluginEventType.ContextMenu]: 'ContextMenu',\n [PluginEventType.EnteredShadowEdit]: 'EnteredShadowEdit',\n [PluginEventType.LeavingShadowEdit]: 'LeavingShadowEdit',\n [PluginEventType.EditImage]: 'EditImage',\n [PluginEventType.BeforeSetContent]: 'BeforeSetContent',\n [PluginEventType.ZoomChanged]: 'ZoomChanged',\n [PluginEventType.SelectionChanged]: 'SelectionChanged',\n [PluginEventType.BeforeKeyboardEditing]: 'BeforeKeyboardEditing',\n};\n\nconst EntityOperationMap: { [key in EntityOperation]: string } = {\n [EntityOperation.AddShadowRoot]: 'AddShadowRoot',\n [EntityOperation.RemoveShadowRoot]: 'RemoveShadowRoot',\n [EntityOperation.Click]: 'Click',\n [EntityOperation.ContextMenu]: 'ContextMenu',\n [EntityOperation.Escape]: 'Escape',\n [EntityOperation.NewEntity]: 'NewEntity',\n [EntityOperation.Overwrite]: 'Overwrite',\n [EntityOperation.PartialOverwrite]: 'PartialOverwrite',\n [EntityOperation.RemoveFromEnd]: 'RemoveFromEnd',\n [EntityOperation.RemoveFromStart]: 'RemoveFromStart',\n [EntityOperation.ReplaceTemporaryContent]: 'ReplaceTemporaryContent',\n [EntityOperation.UpdateEntityState]: 'UpdateEntityState',\n};\n\nexport default class EventViewPane extends React.Component<\n SidePaneElementProps,\n EventViewPaneState\n> {\n private events: EventEntry[] = [];\n private displayCount = React.createRef();\n private lastIndex = 0;\n\n constructor(props: SidePaneElementProps) {\n super(props);\n this.state = {\n displayCount: 20,\n currentIndex: -1,\n };\n }\n\n render() {\n let displayCount = Math.min(this.events.length, this.state.displayCount);\n let displayedEvents =\n displayCount > 0 ? this.events.slice(this.events.length - displayCount) : [];\n displayedEvents = displayedEvents.reverse();\n\n return (\n <>\n
\n Show item count:\n \n \n \n \n \n {' '}\n \n
\n
\n {displayedEvents.map(event => (\n
\n \n {`${event.time.getHours()}:${event.time.getMinutes()}:${event.time.getSeconds()}.${event.time.getMilliseconds()} `}\n {EventTypeMap[event.event.eventType]}\n \n
\n {this.renderEvent(event.event)}\n
\n
\n ))}\n
\n \n );\n }\n\n addEvent(event: PluginEvent) {\n if (this.state.displayCount > 0) {\n if (event.eventType == PluginEventType.BeforePaste) {\n const sanitizer = new HtmlSanitizer(event.sanitizingOption);\n const fragment = event.fragment.cloneNode(true /*deep*/) as DocumentFragment;\n\n sanitizer.convertGlobalCssToInlineCss(fragment);\n sanitizer.sanitize(fragment);\n (event.clipboardData as any).html = this.getHtml(fragment);\n }\n\n this.events.push({\n time: new Date(),\n event: event,\n index: this.lastIndex++,\n });\n\n while (this.events.length > 100) {\n this.events.shift();\n }\n this.setState({\n currentIndex: this.lastIndex,\n });\n }\n }\n\n private renderEvent(event: PluginEvent): JSX.Element {\n switch (event.eventType) {\n case PluginEventType.KeyDown:\n case PluginEventType.KeyPress:\n case PluginEventType.KeyUp:\n return (\n \n Key=\n {event.rawEvent.which}\n \n );\n\n case PluginEventType.MouseDown:\n case PluginEventType.MouseUp:\n case PluginEventType.ContextMenu:\n return (\n \n Button=\n {event.rawEvent.button}, SrcElement=\n {event.rawEvent.target && getTagOfNode(event.rawEvent.target as Node)},\n PageX=\n {event.rawEvent.pageX}, PageY=\n {event.rawEvent.pageY}\n \n );\n\n case PluginEventType.ContentChanged:\n return (\n \n Source=\n {event.source}, Data=\n {event.data && event.data.toString && event.data.toString()}\n \n );\n\n case PluginEventType.BeforePaste:\n return (\n \n Types=\n {event.clipboardData.types.join()}\n {this.renderPasteContent('Plain text', event.clipboardData.text)}\n {this.renderPasteContent(\n 'Sanitized HTML',\n (event.clipboardData as any).html\n )}\n {this.renderPasteContent('Original HTML', event.clipboardData.rawHtml)}\n {this.renderPasteContent('Image', event.clipboardData.image, img => (\n ref && this.renderImage(ref, img)}\n className={styles.img}\n />\n ))}\n {this.renderPasteContent(\n 'LinkPreview',\n event.clipboardData.linkPreview\n ? JSON.stringify(event.clipboardData.linkPreview)\n : ''\n )}\n Paste from keyboard or native context menu:\n {event.clipboardData.pasteNativeEvent ? ' true' : ' false'}\n {getObjectKeys(event.clipboardData.customValues).map(contentType =>\n this.renderPasteContent(\n contentType,\n event.clipboardData.customValues[contentType]\n )\n )}\n \n );\n case PluginEventType.PendingFormatStateChanged:\n const formatState = event.formatState;\n const keys = getObjectKeys(formatState);\n return {keys.map(key => `${key}=${event.formatState[key]}; `)};\n\n case PluginEventType.EntityOperation:\n const {\n operation,\n entity: { id, type },\n } = event;\n return (\n \n Operation={EntityOperationMap[operation]} Type={type}; Id={id}\n \n );\n\n case PluginEventType.BeforeCutCopy:\n const { isCut } = event;\n return isCut={isCut ? 'true' : 'false'};\n\n case PluginEventType.EditImage:\n return (\n <>\n new src={event.newSrc.substr(0, 100)}\n \n );\n\n case PluginEventType.ZoomChanged:\n return (\n \n Old value={event.oldZoomScale} New value={event.newZoomScale}\n \n );\n\n case PluginEventType.BeforeKeyboardEditing:\n return Key code={event.rawEvent.which};\n\n default:\n return null;\n }\n }\n\n private clear = () => {\n this.events = [];\n this.setState({\n currentIndex: -1,\n });\n };\n\n private renderImage = (img: HTMLImageElement, imageFile: File) => {\n readFile(imageFile, dataUrl => (img.src = dataUrl));\n };\n\n private onDisplayCountChanged = () => {\n let value = parseInt(this.displayCount.current.value);\n this.setState({\n displayCount: value,\n });\n };\n\n private renderPasteContent(\n title: string,\n content: any,\n renderer: (content: any) => JSX.Element = content => {content}\n ): JSX.Element {\n return (\n content && (\n
\n {title}\n
{renderer(content)}
\n
\n )\n );\n }\n\n private getHtml(fragment: DocumentFragment) {\n const stringArray: string[] = [];\n for (let child = fragment.firstChild; child; child = child.nextSibling) {\n stringArray.push(\n safeInstanceOf(child, 'HTMLElement')\n ? child.outerHTML\n : safeInstanceOf(child, 'Text')\n ? child.nodeValue\n : ''\n );\n }\n\n return stringArray.join('');\n }\n}\n","import EventViewPane from './EventViewPane';\nimport SidePanePluginImpl from '../SidePanePluginImpl';\nimport { PluginEvent } from 'roosterjs-editor-types';\nimport { SidePaneElementProps } from '../SidePaneElement';\n\nexport default class EventViewPlugin extends SidePanePluginImpl<\n EventViewPane,\n SidePaneElementProps\n> {\n constructor() {\n super(EventViewPane, 'event', 'Event Viewer');\n }\n\n onPluginEvent(e: PluginEvent) {\n this.getComponent(component => component.addEvent(e));\n }\n\n getComponentProps(base: SidePaneElementProps) {\n return base;\n }\n}\n","import * as React from 'react';\nimport { Browser } from 'roosterjs-editor-dom';\nimport { FormatState } from 'roosterjs-editor-types';\nimport { SidePaneElementProps } from '../SidePaneElement';\n\nconst styles = require('./FormatStatePane.scss');\n\nexport interface FormatStatePaneState {\n format: FormatState;\n inIME: boolean;\n x: number;\n y: number;\n}\nexport interface FormatStatePaneProps extends FormatStatePaneState, SidePaneElementProps {}\n\nexport default class FormatStatePane extends React.Component<\n FormatStatePaneProps,\n FormatStatePaneState\n> {\n constructor(props: FormatStatePaneProps) {\n super(props);\n this.state = {\n format: props.format,\n inIME: props.inIME,\n x: props.x,\n y: props.y,\n };\n }\n\n setFormatState(state: FormatStatePaneState) {\n this.setState(state);\n }\n\n render() {\n let { format, x, y } = this.state;\n return format ? (\n
1 2 @@ -121,21 +121,21 @@

All files / roosterjs       -9x -9x +40x +40x     -12x +95x   -12x -12x -  +95x +95x +3x           -9x +40x       @@ -145,9 +145,9 @@

All files / roosterjs       -9x -  -  +40x +3x +3x       @@ -175,8 +175,8 @@

All files / roosterjs formatCallback(element, isInnerNode);   const parent = editor.getElementAtCursor('LI', element); - Iif (parent && parentNodes.indexOf(parent) === -1) { - parentNodes.push(parent); + if (parent && parentNodes.indexOf(parent) === -1) { + parentNodes.push(parent); } }, apiName @@ -192,9 +192,9 @@

All files / roosterjs * @param styles styles to apply to the List Item Element */ function applyStyleToListItems(parentNodes: Node[], styles: string[]) { - parentNodes.forEach(node => { - if (safeInstanceOf(node, 'HTMLLIElement')) { - setListItemStyle(node, styles); + parentNodes.forEach(node => { + Eif (safeInstanceOf(node, 'HTMLLIElement')) { + setListItemStyle(node, styles); } }); } @@ -205,7 +205,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/utils/blockFormat.ts.html b/coverage/roosterjs-editor-api/lib/utils/blockFormat.ts.html index 3e683079628..313c54ca67a 100644 --- a/coverage/roosterjs-editor-api/lib/utils/blockFormat.ts.html +++ b/coverage/roosterjs-editor-api/lib/utils/blockFormat.ts.html @@ -120,22 +120,22 @@

All files / roosterjs       -51x -51x +71x +71x   -51x +71x     -51x -45x -45x -45x -51x -45x +71x +65x +65x +65x +71x +65x     -51x -48x +71x +68x   3x   @@ -193,7 +193,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/utils/blockWrap.ts.html b/coverage/roosterjs-editor-api/lib/utils/blockWrap.ts.html index 48d523fbdec..2ab7ee11dd2 100644 --- a/coverage/roosterjs-editor-api/lib/utils/blockWrap.ts.html +++ b/coverage/roosterjs-editor-api/lib/utils/blockWrap.ts.html @@ -143,22 +143,22 @@

All files / roosterjs       -18x +19x     -20x -20x -20x -20x -12x -12x +21x +21x +21x +21x +13x +13x   -12x +13x         -20x +21x       @@ -168,7 +168,7 @@

All files / roosterjs       -20x +21x       @@ -241,7 +241,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/utils/collapseSelectedBlocks.ts.html b/coverage/roosterjs-editor-api/lib/utils/collapseSelectedBlocks.ts.html index dda44215ca2..b54d5c8076e 100644 --- a/coverage/roosterjs-editor-api/lib/utils/collapseSelectedBlocks.ts.html +++ b/coverage/roosterjs-editor-api/lib/utils/collapseSelectedBlocks.ts.html @@ -190,7 +190,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/utils/commitListChains.ts.html b/coverage/roosterjs-editor-api/lib/utils/commitListChains.ts.html index 0d201d72700..c4b3bd6c32f 100644 --- a/coverage/roosterjs-editor-api/lib/utils/commitListChains.ts.html +++ b/coverage/roosterjs-editor-api/lib/utils/commitListChains.ts.html @@ -105,7 +105,7 @@

All files / roosterjs     1x -45x +65x 8x 8x 8x @@ -175,7 +175,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/utils/execCommand.ts.html b/coverage/roosterjs-editor-api/lib/utils/execCommand.ts.html index 8438149d47c..86f75aa16df 100644 --- a/coverage/roosterjs-editor-api/lib/utils/execCommand.ts.html +++ b/coverage/roosterjs-editor-api/lib/utils/execCommand.ts.html @@ -23,30 +23,30 @@

All files / roosterjs -
+

-	
-	
+	
-	
-	
-	
-	
-	
-	
-	
-	
+	
+	
+	
+	
+	
+	
+	
+	
@@ -163,18 +163,18 @@ 

All files roosterjs-editor-api/lib/utils

- - + - - - - - - - - + + + + + + + + @@ -230,7 +230,7 @@

All files roosterjs-editor-api/lib/utils Code coverage generated by istanbul - at Tue Apr 16 2024 17:17:51 GMT+0000 (Coordinated Universal Time) + at Tue Apr 16 2024 17:40:39 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/roosterjs-editor-api/lib/utils/normalizeBlockquote.ts.html b/coverage/roosterjs-editor-api/lib/utils/normalizeBlockquote.ts.html index 809be4c66d0..ddec0f15593 100644 --- a/coverage/roosterjs-editor-api/lib/utils/normalizeBlockquote.ts.html +++ b/coverage/roosterjs-editor-api/lib/utils/normalizeBlockquote.ts.html @@ -117,24 +117,24 @@

All files / roosterjs     1x -10x -10x +21x +21x   -10x -10x +21x +21x 3x   -7x +18x   -7x -7x -1x +18x +18x +2x   -6x +16x     -6x -6x +16x +16x 2x 1x 1x @@ -143,11 +143,11 @@

All files / roosterjs 1x     -4x -4x +14x +14x     -6x +16x       @@ -157,7 +157,7 @@

All files / roosterjs       -7x +18x    

- - - - - - - - - + + + + + + + + @@ -284,17 +284,17 @@

All files roosterjs-editor-core/lib/coreAp

- - - - - + + + + - - + + @@ -410,7 +410,7 @@

All files roosterjs-editor-core/lib/coreAp diff --git a/coverage/roosterjs-editor-core/lib/coreApi/insertNode.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/insertNode.ts.html index ded738f0fac..7cf43f8a2c1 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/insertNode.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/insertNode.ts.html @@ -23,30 +23,30 @@

All files / roosterjs

1 2 @@ -141,12 +141,12 @@

All files / roosterjs       -14x +40x   -14x +40x   -14x -14x +40x +40x 14x 14x 14x @@ -161,19 +161,19 @@

All files / roosterjs       -  +26x     -  +26x   -  -  +26x +26x     -  +26x     -  +26x       @@ -208,7 +208,7 @@

All files / roosterjs const formatter = () => editor.getDocument().execCommand(command, false, undefined);   const selection = editor.getSelectionRangeEx(); - Eif (selection && selection.areAllCollapsed) { + if (selection && selection.areAllCollapsed) { editor.addUndoSnapshot(); const formatState = editor.getPendableFormatState(false /* forceGetStateFromDom */); formatter(); @@ -223,19 +223,19 @@

All files / roosterjs }); } } else { - formatUndoSnapshot( + formatUndoSnapshot( editor, - () => { - const needToSwitchSelection = selection.type != SelectionRangeTypes.Normal; + () => { + const needToSwitchSelection = selection.type != SelectionRangeTypes.Normal;   - selection.ranges.forEach(range => { - if (needToSwitchSelection) { + selection.ranges.forEach(range => { + Iif (needToSwitchSelection) { editor.select(range); } - formatter(); + formatter(); });   - if (needToSwitchSelection) { + Iif (needToSwitchSelection) { editor.select(selection); } }, @@ -250,7 +250,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts.html b/coverage/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts.html index d4af6b01eda..3c2912cc758 100644 --- a/coverage/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts.html +++ b/coverage/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts.html @@ -100,7 +100,7 @@

All files / roosterjs       -111x +217x       @@ -145,7 +145,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/utils/index.html b/coverage/roosterjs-editor-api/lib/utils/index.html index 0ed2da39a9f..981d620192c 100644 --- a/coverage/roosterjs-editor-api/lib/utils/index.html +++ b/coverage/roosterjs-editor-api/lib/utils/index.html @@ -23,30 +23,30 @@

All files roosterjs-editor-api/lib/utils
- 88.27% + 93.3% Statements - 158/179 + 167/179
- 70.32% + 74.19% Branches - 109/155 + 115/155
- 87.5% + 96.88% Functions - 28/32 + 31/32
- 88.64% + 93.75% Lines - 156/176 + 165/176
@@ -88,18 +88,18 @@

All files roosterjs-editor-api/lib/utils

applyListItemWrap.ts -
+
applyListItemWrap.ts +
76.92%10/1333.33%2/675%3/476.92%10/13100%13/1383.33%5/6100%4/4100%13/13
execCommand.ts -
+
execCommand.ts +
66.67%16/2450%5/1060%3/565.22%15/2391.67%22/2480%8/10100%5/591.3%21/23
import { findClosestElementAncestor, getComputedStyle, safeInstanceOf } from 'roosterjs-editor-dom';
  
@@ -217,7 +217,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-api/lib/utils/toggleListType.ts.html b/coverage/roosterjs-editor-api/lib/utils/toggleListType.ts.html index 39d823f9dc6..98b23a8a9f3 100644 --- a/coverage/roosterjs-editor-api/lib/utils/toggleListType.ts.html +++ b/coverage/roosterjs-editor-api/lib/utils/toggleListType.ts.html @@ -319,7 +319,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/addUndoSnapshot.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/addUndoSnapshot.ts.html index 9aa884f4761..437a945d526 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/addUndoSnapshot.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/addUndoSnapshot.ts.html @@ -226,50 +226,50 @@

All files / roosterjs       -6764x -6764x +7096x +7096x     -6764x -6736x +7096x +7004x       -6736x -6735x +7004x +7003x       -6764x -6764x -189x -189x +7096x +7096x +302x +302x         -188x -166x -166x +301x +215x +215x       -6764x -6736x +7096x +7004x       -6763x -172x +7095x +271x           -172x +271x     -6763x +7095x 19x   19x @@ -284,12 +284,12 @@

All files / roosterjs       -6901x -6899x -6899x -6899x +7218x +7216x +7216x +7216x   -6899x +7216x       @@ -298,7 +298,7 @@

All files / roosterjs       -6899x +7216x       @@ -307,7 +307,7 @@

All files / roosterjs       -6899x +7216x   22x   @@ -316,13 +316,13 @@

All files / roosterjs       -47x +17x           -6830x +7177x       @@ -475,7 +475,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/attachDomEvent.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/attachDomEvent.ts.html index 77594066603..56ad45138ae 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/attachDomEvent.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/attachDomEvent.ts.html @@ -142,15 +142,15 @@

All files / roosterjs       -13097x -97943x -97943x -97943x -683x -655x +13535x +101228x +101228x +101228x +280x +252x   -683x -41x +280x +66x       @@ -161,29 +161,29 @@

All files / roosterjs       -97943x +101228x   -97943x -97661x +101228x +100766x     -97661x +100766x       -97943x +101228x         -97943x -6529x -91414x -65319x -26095x -26095x +101228x +6748x +94480x +67509x +26971x +26971x   -97943x +101228x    

import { getObjectKeys } from 'roosterjs-editor-dom';
 import type {
@@ -256,7 +256,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/coreApiMap.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/coreApiMap.ts.html index 8e55fab20ba..e9ccaa0c07f 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/coreApiMap.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/coreApiMap.ts.html @@ -211,7 +211,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/createPasteFragment.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/createPasteFragment.ts.html index 3184250af22..43c27d98091 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/createPasteFragment.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/createPasteFragment.ts.html @@ -322,11 +322,11 @@

All files / roosterjs   25x   -2x -23x -10x +3x +22x +9x   -10x +9x       @@ -520,7 +520,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/ensureTypeInContainer.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/ensureTypeInContainer.ts.html index 127d71474e3..8cff021d29f 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/ensureTypeInContainer.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/ensureTypeInContainer.ts.html @@ -168,18 +168,18 @@

All files / roosterjs       -6537x +6756x     -6537x +6756x 1x   -6537x +6756x   -6537x +6756x     -6537x +6756x 11x 11x 2x @@ -196,11 +196,11 @@

All files / roosterjs       -6526x +6745x       -6526x +6745x       @@ -208,11 +208,11 @@

All files / roosterjs       -6526x +6745x     -6537x -6526x +6756x +6745x       @@ -221,7 +221,7 @@

All files / roosterjs       -6537x +6756x 5x     @@ -328,7 +328,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/focus.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/focus.ts.html index 64850324d39..8ca7b1df079 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/focus.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/focus.ts.html @@ -113,8 +113,8 @@

All files / roosterjs     1x -311x -311x +440x +440x       @@ -125,12 +125,12 @@

All files / roosterjs       -175x +185x       -174x -174x +184x +184x       @@ -139,13 +139,13 @@

All files / roosterjs       -311x -311x +440x +440x       -311x -2x +440x +1x       @@ -202,7 +202,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/getContent.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/getContent.ts.html index fffd206cae8..ee59c12e904 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/getContent.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/getContent.ts.html @@ -170,33 +170,33 @@

All files / roosterjs       -128x -128x -128x +194x +194x +194x       -128x +194x   -128x +194x 1x -127x +193x     -127x -127x +193x +193x   -127x -127x +193x +193x             -127x +193x   -127x +193x       @@ -206,8 +206,8 @@

All files / roosterjs       -127x -121x +193x +187x       @@ -216,7 +216,7 @@

All files / roosterjs       -121x +187x 6x   3x @@ -225,19 +225,19 @@

All files / roosterjs       -128x +194x         -127x +193x 2x 2x   -125x +191x     -127x +193x    

import { ColorTransformDirection, GetContentMode, PluginEventType } from 'roosterjs-editor-types';
 import type { EditorCore, GetContent } from 'roosterjs-editor-types';
@@ -337,7 +337,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/getPendableFormatState.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/getPendableFormatState.ts.html index f24d196fb94..e79ae197fae 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/getPendableFormatState.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/getPendableFormatState.ts.html @@ -367,7 +367,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/getSelectionRange.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/getSelectionRange.ts.html index a219e76edfa..9f0a9c816e9 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/getSelectionRange.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/getSelectionRange.ts.html @@ -115,9 +115,9 @@

All files / roosterjs       -1047x +1095x   -1047x +1095x       @@ -128,21 +128,21 @@

All files / roosterjs       -1047x -953x -953x -953x -953x -942x +1095x +1014x +1014x +1014x +1014x +1013x         -1047x -96x +1095x +81x     -1047x +1095x      

import { contains, createRange } from 'roosterjs-editor-dom';
@@ -196,7 +196,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/getSelectionRangeEx.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/getSelectionRangeEx.ts.html index aa3ba80eb5c..e55e1581ef9 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/getSelectionRangeEx.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/getSelectionRangeEx.ts.html @@ -169,8 +169,8 @@

All files / roosterjs     1x -7473x -7473x +7967x +7967x   2x 2x @@ -220,25 +220,25 @@

All files / roosterjs 1x     -7471x -732x +7965x +1035x 104x     -628x +931x 30x     -598x -598x -598x -598x -598x +901x +901x +901x +901x +901x         -6739x +6930x       @@ -249,7 +249,7 @@

All files / roosterjs       -7307x +7831x       @@ -257,7 +257,7 @@

All files / roosterjs       -7308x +7832x    

import { contains, createRange, findClosestElementAncestor } from 'roosterjs-editor-dom';
 import { SelectionRangeTypes } from 'roosterjs-editor-types';
@@ -367,7 +367,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/getStyleBasedFormatState.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/getStyleBasedFormatState.ts.html index 32804abf934..af8acf496ee 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/getStyleBasedFormatState.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/getStyleBasedFormatState.ts.html @@ -352,7 +352,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/hasFocus.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/hasFocus.ts.html index 14c1b109392..3346d35b82c 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/hasFocus.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/hasFocus.ts.html @@ -82,8 +82,8 @@

All files / roosterjs     1x -9441x -9441x +10556x +10556x       @@ -109,7 +109,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/index.html b/coverage/roosterjs-editor-core/lib/coreApi/index.html index 85ddd0a7a56..1e271675e3d 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/index.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/index.html @@ -23,30 +23,30 @@

All files roosterjs-editor-core/lib/coreAp
- 94.58% + 95.83% Statements - 681/720 + 690/720
- 85.93% + 86.61% Branches - 629/732 + 634/732
- 93% + 94% Functions - 93/100 + 94/100
- 94.56% + 95.88% Lines - 643/680 + 652/680
@@ -254,17 +254,17 @@

All files roosterjs-editor-core/lib/coreAp

insertNode.ts -
+
+
85.71%72/8476.29%74/9780%4/585.19%69/8195.24%80/8480.41%78/97100%5/595.06%77/81
select.ts -
+
+
97.96%48/4987.93%51/58100%49/4989.66%52/58 100% 7/797.92%47/48100%48/48
import type {
     BlockElement,
@@ -694,11 +694,11 @@ 

All files / roosterjs   if (option.insertOnNewLine && option.insertToRegionRoot) { pos = adjustInsertPositionRegionRoot(core, range, pos); - } else Iif ( + } else if ( option.insertOnNewLine && - (blockElement = getBlockElementAtNode(contentDiv, pos.normalize().node)) + (blockElement = getBlockElementAtNode(contentDiv, pos.normalize().node)) ) { - pos = adjustInsertPositionNewLine(blockElement, core, pos); + pos = adjustInsertPositionNewLine(blockElement, core, pos); } else { pos = adjustInsertPosition(contentDiv, node, pos, range); } @@ -752,15 +752,15 @@

All files / roosterjs return position; }   -function adjustInsertPositionNewLine(blockElement: BlockElement, core: EditorCore, pos: Position) { - let tempPos = new Position(blockElement.getEndNode(), PositionType.After); - if (safeInstanceOf(tempPos.node, 'HTMLTableRowElement')) { - const div = core.contentDiv.ownerDocument.createElement('div'); - const range = createRange(pos); - range.insertNode(div); - tempPos = new Position(div, PositionType.Begin); +function adjustInsertPositionNewLine(blockElement: BlockElement, core: EditorCore, pos: Position) { + let tempPos = new Position(blockElement.getEndNode(), PositionType.After); + if (safeInstanceOf(tempPos.node, 'HTMLTableRowElement')) { + const div = core.contentDiv.ownerDocument.createElement('div'); + const range = createRange(pos); + range.insertNode(div); + tempPos = new Position(div, PositionType.Begin); } - return tempPos; + return tempPos; }  

@@ -769,7 +769,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/restoreUndoSnapshot.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/restoreUndoSnapshot.ts.html index 7ff9b221346..e6c2a35e413 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/restoreUndoSnapshot.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/restoreUndoSnapshot.ts.html @@ -271,7 +271,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/select.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/select.ts.html index 58f756b192b..1459a682f00 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/select.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/select.ts.html @@ -23,16 +23,16 @@

All files / roosterjs
- 97.96% + 100% Statements - 48/49 + 49/49
- 87.93% + 89.66% Branches - 51/58 + 52/58
@@ -44,9 +44,9 @@

All files / roosterjs
- 97.92% + 100% Lines - 47/48 + 48/48
@@ -259,26 +259,26 @@

All files / roosterjs     1x -7048x +7357x   -7048x -447x +7357x +549x       -447x +549x   -447x -447x +549x +549x   -447x +549x     -6601x -6601x +6808x +6808x     -7048x +7357x       @@ -288,11 +288,11 @@

All files / roosterjs       -7048x +7357x   -7048x +7357x 3x -7045x +7354x 69x     @@ -300,7 +300,7 @@

All files / roosterjs       -6976x +7285x 56x     @@ -308,7 +308,7 @@

All files / roosterjs       -6920x +7229x       @@ -323,7 +323,7 @@

All files / roosterjs       -6920x +7229x       @@ -332,11 +332,11 @@

All files / roosterjs       -7048x +7357x       -447x +549x   72x 72x @@ -356,18 +356,18 @@

All files / roosterjs   56x   -319x -319x +421x +421x   -319x -319x +421x +419x   -  +2x   -319x +421x     -447x +549x       @@ -378,8 +378,8 @@

All files / roosterjs       -7048x -7048x +7357x +7357x       @@ -400,15 +400,15 @@

All files / roosterjs       -202x +283x   -202x +283x       -202x +283x   -202x +283x       @@ -538,10 +538,10 @@

All files / roosterjs core.domEvent.tableSelectionRange = core.api.selectTable(core, null); core.domEvent.imageSelectionRange = core.api.selectImage(core, null);   - Eif (contains(core.contentDiv, rangeEx.ranges[0])) { + if (contains(core.contentDiv, rangeEx.ranges[0])) { core.api.selectRange(core, rangeEx.ranges[0]); } else { - rangeEx = null; + rangeEx = null; } break; } @@ -601,7 +601,7 @@

All files / roosterjs

diff --git a/coverage/roosterjs-editor-core/lib/coreApi/selectImage.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/selectImage.ts.html index 156041adc4a..11d5e92c306 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/selectImage.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/selectImage.ts.html @@ -145,11 +145,11 @@

All files / roosterjs     1x -7152x +7462x   -7152x +7462x   -7152x +7462x 60x   60x @@ -167,7 +167,7 @@

All files / roosterjs       -7152x +7462x     1x @@ -184,8 +184,8 @@

All files / roosterjs     1x -7152x -7152x +7462x +7462x    

import addUniqueId from './utils/addUniqueId';
 import { PositionType, SelectionRangeTypes } from 'roosterjs-editor-types';
@@ -259,7 +259,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/selectRange.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/selectRange.ts.html index fd32922964f..14c2f10b90f 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/selectRange.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/selectRange.ts.html @@ -156,20 +156,20 @@

All files / roosterjs       -762x -758x +894x +890x   -758x -56x +890x +50x     -758x +890x     -618x +666x     -758x +890x   4x   @@ -183,9 +183,9 @@

All files / roosterjs       -1854x +1998x   -618x +666x 1x 1x 1x @@ -286,7 +286,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/selectTable.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/selectTable.ts.html index 46d0e533ff1..887916623d0 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/selectTable.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/selectTable.ts.html @@ -361,9 +361,9 @@

All files / roosterjs       -7166x +7476x   -7166x +7476x 79x 79x   @@ -391,7 +391,7 @@

All files / roosterjs       -7087x +7397x       @@ -539,8 +539,8 @@

All files / roosterjs     1x -7166x -7166x +7476x +7476x       @@ -573,7 +573,7 @@

All files / roosterjs       -7166x +7476x 86x 86x 84x @@ -582,7 +582,7 @@

All files / roosterjs       -7082x +7392x       @@ -868,7 +868,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/setContent.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/setContent.ts.html index de42d5f9317..3e2f66a4970 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/setContent.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/setContent.ts.html @@ -207,9 +207,9 @@

All files / roosterjs       -6930x -6930x -396x +7227x +7227x +474x       @@ -218,24 +218,24 @@

All files / roosterjs       -396x -396x -396x +474x +474x +474x         -396x +474x   -396x -396x -396x -396x +474x +474x +474x +474x     -6930x +7227x   -6930x +7227x 5x     @@ -248,8 +248,8 @@

All files / roosterjs 5x     -6930x -390x +7227x +468x       @@ -261,19 +261,19 @@

All files / roosterjs       -396x -101x +474x +102x +102x +102x +  +102x +  101x 101x   101x -  -100x -100x -  -100x -100x -100x +101x +101x       @@ -424,7 +424,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/switchShadowEdit.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/switchShadowEdit.ts.html index db602515cb8..c62b6a244a0 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/switchShadowEdit.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/switchShadowEdit.ts.html @@ -397,7 +397,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/transformColor.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/transformColor.ts.html index e1b9533ebc9..4d5fe0b2568 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/transformColor.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/transformColor.ts.html @@ -148,26 +148,26 @@

All files / roosterjs       -13300x +13843x         -13434x -6717x -6717x -140x +14042x +7021x +7021x +204x         -505x +843x     -140x +204x     -6717x +7021x       @@ -175,16 +175,16 @@

All files / roosterjs       -904x -8x +1459x +6x     -904x -764x -497x +1459x +1255x +837x     -764x +1255x       @@ -192,8 +192,8 @@

All files / roosterjs       -772x -772x +1261x +1261x    

import { ColorTransformDirection } from 'roosterjs-editor-types';
 import type { EditorCore, TransformColor } from 'roosterjs-editor-types';
@@ -271,7 +271,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/triggerEvent.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/triggerEvent.ts.html index 2fb01d5b2cc..026c6c57023 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/triggerEvent.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/triggerEvent.ts.html @@ -124,26 +124,26 @@

All files / roosterjs       -14708x +15577x     -5656x +6740x   -14706x -161465x -132233x +15575x +171001x +140031x             -5656x +6740x 1x 1x     -5655x +6739x    

import { PluginEventType } from 'roosterjs-editor-types';
 import type { EditorCore, EditorPlugin, PluginEvent, TriggerEvent } from 'roosterjs-editor-types';
@@ -196,7 +196,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/coreApi/utils/addUniqueId.ts.html b/coverage/roosterjs-editor-core/lib/coreApi/utils/addUniqueId.ts.html index 3aeb2403838..0a69cb0ce2a 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/utils/addUniqueId.ts.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/utils/addUniqueId.ts.html @@ -157,7 +157,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-core/lib/coreApi/utils/index.html b/coverage/roosterjs-editor-core/lib/coreApi/utils/index.html index 73cd1dbca28..bbf73818570 100644 --- a/coverage/roosterjs-editor-core/lib/coreApi/utils/index.html +++ b/coverage/roosterjs-editor-core/lib/coreApi/utils/index.html @@ -95,7 +95,7 @@

All files roosterjs-editor-core/lib/cor diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/CopyPastePlugin.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/CopyPastePlugin.ts.html index 5d884d60880..d218cdc8e5e 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/CopyPastePlugin.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/CopyPastePlugin.ts.html @@ -388,16 +388,16 @@

All files / roosterjs     1x -6718x -6718x +6945x +6945x             -6718x -6718x +6945x +6945x       @@ -413,9 +413,9 @@

All files / roosterjs       -6531x -6531x -6531x +6750x +6750x +6750x 2x 2x 2x @@ -426,18 +426,18 @@

All files / roosterjs     1x -6513x -6510x +6720x +6717x   -6513x -6513x +6720x +6720x           1x -6708x +6935x     4x @@ -514,7 +514,7 @@

All files / roosterjs       -6718x +6945x 2x 2x 2x @@ -952,7 +952,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/DOMEventPlugin.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/DOMEventPlugin.ts.html index 365adfd1d0f..de6397d4f09 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/DOMEventPlugin.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/DOMEventPlugin.ts.html @@ -23,30 +23,30 @@

All files / roosterjs
- 73.12% + 70.97% Statements - 68/93 + 66/93
- 48.3% + 45.58% Branches - 71/147 + 67/147
- 73.91% + 69.57% Functions - 17/23 + 16/23
- 71.91% + 69.66% Lines - 64/89 + 62/89
@@ -329,8 +329,8 @@

All files / roosterjs     1x -6720x -6720x +6947x +6947x       @@ -338,8 +338,8 @@

All files / roosterjs       -6720x -6720x +6947x +6947x       @@ -362,12 +362,12 @@

All files / roosterjs       -6536x -6536x +6755x +6755x   -6536x +6755x   -6536x +6755x       @@ -400,50 +400,50 @@

All files / roosterjs       -6536x +6755x   -6536x +6755x           -6536x +6755x     -6536x +6755x     -6536x -6536x -6536x +6755x +6755x +6755x           1x -6518x -6518x +6725x +6725x       -6518x -6518x -6518x -6518x -6518x -6518x +6725x +6725x +6725x +6725x +6725x +6725x           1x -6720x +6947x     -6720x +6947x       @@ -451,32 +451,32 @@

All files / roosterjs       -6720x +6947x 1x 1x       -6720x -311x -228x -228x +6947x +215x +137x +137x   -228x +137x   -228x +137x   -228x +137x 1x       -311x -311x +215x +215x       -6720x +6947x       @@ -484,26 +484,26 @@

All files / roosterjs       -6720x -309x -307x +6947x +  +        -6720x +6947x             -26144x -26144x -16x +27020x +27020x +41x       -26144x +27020x       @@ -511,7 +511,7 @@

All files / roosterjs       -6720x +6947x 2x     @@ -519,11 +519,11 @@

All files / roosterjs       -6720x -14x +6947x +39x     -6720x +6947x       @@ -731,9 +731,9 @@

All files / roosterjs } };   - private cacheSelection = () => { - if (!this.state.selectionRange && this.editor) { - this.state.selectionRange = this.editor.getSelectionRange(false /*tryGetFromCache*/); + private cacheSelection = () => { + if (!this.state.selectionRange && this.editor) { + this.state.selectionRange = this.editor.getSelectionRange(false /*tryGetFromCache*/); } };   @@ -805,7 +805,7 @@

All files / roosterjs

diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/EditPlugin.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/EditPlugin.ts.html index 7dc05080af1..4d1ddfdaaab 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/EditPlugin.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/EditPlugin.ts.html @@ -168,7 +168,7 @@

All files / roosterjs     1x -6717x +6944x       @@ -176,7 +176,7 @@

All files / roosterjs       -6717x +6944x       @@ -193,21 +193,21 @@

All files / roosterjs     1x -6533x +6752x           1x -6515x +6722x           1x -6717x +6944x       @@ -215,12 +215,12 @@

All files / roosterjs     1x -14619x -14619x -14619x -14619x +15488x +15488x +15488x +15488x   -14619x +15488x 22x 22x   @@ -229,11 +229,11 @@

All files / roosterjs 22x     -14597x -529x +15466x +706x     -14619x +15488x 9x 9x   @@ -352,7 +352,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/EntityPlugin.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/EntityPlugin.ts.html index d9a9355d033..7fe6bff7220 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/EntityPlugin.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/EntityPlugin.ts.html @@ -512,14 +512,14 @@

All files / roosterjs     1x -6726x +6953x           -6726x -6726x +6953x +6953x       @@ -536,22 +536,22 @@

All files / roosterjs     1x -6542x +6761x           1x -6524x -6524x +6731x +6731x           1x -6726x +6953x       @@ -559,7 +559,7 @@

All files / roosterjs     1x -14628x +15497x   24x 24x @@ -572,17 +572,17 @@

All files / roosterjs       -7x -7x +6x +6x   -537x -537x +714x +714x   -6526x -6526x +6745x +6745x   -121x -121x +187x +187x   3x 3x @@ -591,8 +591,8 @@

All files / roosterjs 3x     -14628x -14628x +15497x +15497x       @@ -606,7 +606,7 @@

All files / roosterjs       -6726x +6953x       @@ -645,21 +645,21 @@

All files / roosterjs     1x -7x +6x   -7x -3x +6x +2x     -7x -7x +6x +6x       -7063x -7063x +7459x +7459x   -7063x +7459x 12x 12x   @@ -680,7 +680,7 @@

All files / roosterjs       -7063x +7459x     19x @@ -689,7 +689,7 @@

All files / roosterjs       -7063x +7459x 52x   13x @@ -697,7 +697,7 @@

All files / roosterjs 13x     -7063x +7459x       @@ -712,18 +712,18 @@

All files / roosterjs       -121x -121x +187x +187x 2x   2x       -4x -4x -4x -4x +3x +3x +3x +3x 8x 6x   @@ -733,7 +733,7 @@

All files / roosterjs       -4x +3x 2x     @@ -777,7 +777,7 @@

All files / roosterjs     1x -7063x +7459x       @@ -1234,7 +1234,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/ImageSelection.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/ImageSelection.ts.html index 93deb7fbc8e..7806f73021b 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/ImageSelection.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/ImageSelection.ts.html @@ -171,7 +171,7 @@

All files / roosterjs     1x -6717x +6944x       @@ -185,20 +185,20 @@

All files / roosterjs     1x -6533x +6752x           1x -6515x -6515x +6722x +6722x     1x -14674x -14674x +15543x +15543x   24x 24x @@ -367,7 +367,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/LifecyclePlugin.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/LifecyclePlugin.ts.html index b2f2ba9596d..76c5e818423 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/LifecyclePlugin.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/LifecyclePlugin.ts.html @@ -273,11 +273,11 @@

All files / roosterjs     1x -6712x +6939x     -6712x -6712x +6939x +6939x       @@ -285,27 +285,27 @@

All files / roosterjs       -6712x -6712x +6939x +6939x     -6712x -6706x -6526x -6526x +6939x +6933x +6745x +6745x   -6706x -6508x -6508x +6933x +6715x +6715x     -6712x +6939x     -13056x -6528x -6528x -6528x +13494x +6747x +6747x +6747x       @@ -313,7 +313,7 @@

All files / roosterjs       -6528x +6747x       @@ -323,19 +323,19 @@

All files / roosterjs       -6712x -6712x +6939x +6939x   -6712x -6531x -6506x +6939x +6750x +6719x       -6506x +6719x     -6531x +6750x       @@ -344,7 +344,7 @@

All files / roosterjs       -6712x +6939x       @@ -371,28 +371,28 @@

All files / roosterjs     1x -6528x +6747x     -6528x +6747x     -6528x +6747x     -6528x +6747x     -6528x +6747x           -6510x -6510x +6717x +6717x   -6510x +6717x 1x   1x @@ -402,20 +402,20 @@

All files / roosterjs 1x     -6510x -6508x -6508x -6508x +6717x +6715x +6715x +6715x     -6510x +6717x           1x -6710x +6937x       @@ -423,7 +423,7 @@

All files / roosterjs     1x -14611x +15480x       @@ -628,7 +628,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/MouseUpPlugin.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/MouseUpPlugin.ts.html index cea4f557ced..2d71a612b37 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/MouseUpPlugin.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/MouseUpPlugin.ts.html @@ -137,11 +137,11 @@

All files / roosterjs       -6712x -6711x -6711x -6711x -6711x +6939x +6938x +6938x +6938x +6938x       @@ -155,15 +155,15 @@

All files / roosterjs     1x -6527x +6746x           1x -6510x -6510x +6717x +6717x       @@ -171,7 +171,7 @@

All files / roosterjs     1x -14614x +15483x       @@ -185,13 +185,13 @@

All files / roosterjs     1x -6534x +6741x 31x 31x       -6711x +6938x 24x 24x 24x @@ -280,7 +280,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/NormalizeTablePlugin.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/NormalizeTablePlugin.ts.html index 25985d4bcf6..7709bdde1ab 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/NormalizeTablePlugin.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/NormalizeTablePlugin.ts.html @@ -259,7 +259,7 @@

All files / roosterjs     1x -6729x +6956x       @@ -275,7 +275,7 @@

All files / roosterjs     1x -6545x +6764x       @@ -284,7 +284,7 @@

All files / roosterjs     1x -6527x +6734x       @@ -294,17 +294,17 @@

All files / roosterjs     1x -14636x +15505x     -7072x -7072x +7468x +7468x   -7072x +7468x     -7x -7x +6x +6x     28x @@ -317,8 +317,8 @@

All files / roosterjs 18x     -120x -120x +186x +186x       @@ -331,14 +331,14 @@

All files / roosterjs     1x -7114x -170x -170x -170x +7509x +179x +179x +179x   -170x +179x   -170x +179x 25x     @@ -358,13 +358,13 @@

All files / roosterjs 1x     -170x -170x -176x +179x +179x +185x   -176x -243x -243x +185x +261x +261x   43x 20x @@ -377,24 +377,24 @@

All files / roosterjs   43x   -165x +174x 8x 8x 8x 8x   -157x +166x   -165x +174x   -35x -35x +44x +44x       -176x -176x -176x +185x +185x +185x 11x 7x 2x @@ -403,14 +403,14 @@

All files / roosterjs       -170x +179x       -120x -59x +186x +71x   -59x +71x       @@ -604,7 +604,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/PendingFormatStatePlugin.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/PendingFormatStatePlugin.ts.html index c5c0f55464c..2e654b5f35a 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/PendingFormatStatePlugin.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/PendingFormatStatePlugin.ts.html @@ -259,7 +259,7 @@

All files / roosterjs   1x   -6716x +6943x       @@ -268,7 +268,7 @@

All files / roosterjs       -6716x +6943x       @@ -287,22 +287,22 @@

All files / roosterjs     1x -6532x +6751x           1x -6514x -6514x +6721x +6721x           1x -6716x +6943x       @@ -310,7 +310,7 @@

All files / roosterjs     1x -14618x +15487x       @@ -328,8 +328,8 @@

All files / roosterjs       -576x -576x +753x +753x       @@ -344,7 +344,7 @@

All files / roosterjs       -576x +753x       @@ -361,14 +361,14 @@

All files / roosterjs 17x     -576x +753x       1x -6531x -6531x -6531x +6738x +6738x +6738x     1x @@ -616,7 +616,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/TypeInContainerPlugin.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/TypeInContainerPlugin.ts.html index d579dadce76..2d0d14c2369 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/TypeInContainerPlugin.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/TypeInContainerPlugin.ts.html @@ -171,7 +171,7 @@

All files / roosterjs     1x -6713x +6940x       @@ -185,14 +185,14 @@

All files / roosterjs     1x -6529x +6748x           1x -6506x +6713x     1x @@ -211,10 +211,10 @@

All files / roosterjs       -14616x +15485x     -14616x +15485x       @@ -361,7 +361,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/UndoPlugin.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/UndoPlugin.ts.html index c9ee4c26f86..840f959b0c9 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/UndoPlugin.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/UndoPlugin.ts.html @@ -366,8 +366,8 @@

All files / roosterjs     1x -6744x -6744x +6969x +6969x       @@ -375,7 +375,7 @@

All files / roosterjs       -6744x +6969x       @@ -399,21 +399,21 @@

All files / roosterjs     1x -6557x +6774x           1x -6535x +6740x           1x -6740x +6965x       @@ -421,7 +421,7 @@

All files / roosterjs     1x -495x +594x       @@ -435,22 +435,22 @@

All files / roosterjs   1x   -14660x +15521x       -14660x +15521x   -6527x -6527x +6746x +6746x     -6525x +6744x   -6527x +6746x   -49x -49x +41x +41x   7x 7x @@ -459,8 +459,8 @@

All files / roosterjs 1x 1x   -531x -531x +708x +708x   1x 1x @@ -471,31 +471,31 @@

All files / roosterjs       -49x -16x +41x +8x 1x 1x 1x 1x -15x -15x +7x +7x           -15x +7x           -12x +6x       -15x -15x +7x +7x   33x   @@ -549,7 +549,7 @@

All files / roosterjs     1x -531x +708x       @@ -557,19 +557,19 @@

All files / roosterjs       -529x +706x       1x -533x -533x -533x +710x +710x +710x     1x -7x -7x +4x +4x       @@ -577,21 +577,21 @@

All files / roosterjs     1x -6562x -6562x +6775x +6775x   1x     -6737x +6962x   -6737x -13048x +6962x +13486x     -6910x -530x -14x +7227x +707x +11x       @@ -599,7 +599,7 @@

All files / roosterjs       -6739x +6964x   1x   @@ -901,7 +901,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/createCorePlugins.ts.html b/coverage/roosterjs-editor-core/lib/corePlugins/createCorePlugins.ts.html index 880dbc0e398..0cb615790ab 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/createCorePlugins.ts.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/createCorePlugins.ts.html @@ -153,10 +153,10 @@

All files / roosterjs       -6708x +6935x     -6708x +6935x       @@ -179,7 +179,7 @@

All files / roosterjs     1x -6708x +6935x       @@ -262,7 +262,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/corePlugins/index.html b/coverage/roosterjs-editor-core/lib/corePlugins/index.html index 46edef4b4ae..07ec0f2a6e5 100644 --- a/coverage/roosterjs-editor-core/lib/corePlugins/index.html +++ b/coverage/roosterjs-editor-core/lib/corePlugins/index.html @@ -23,30 +23,30 @@

All files roosterjs-editor-core/lib/corePl
- 86.24% + 86% Statements - 702/814 + 700/814
- 70.92% + 70.43% Branches - 578/815 + 574/815
- 87.13% + 86.55% Functions - 149/171 + 148/171
- 85.93% + 85.68% Lines - 684/796 + 682/796
@@ -89,17 +89,17 @@

All files roosterjs-editor-core/lib/corePl

DOMEventPlugin.ts -
+
+
73.12%68/9348.3%71/14773.91%17/2371.91%64/8970.97%66/9345.58%67/14769.57%16/2369.66%62/89
import { createEditorCore } from './createEditorCore';
@@ -115,7 +115,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/editor/EditorBase.ts.html b/coverage/roosterjs-editor-core/lib/editor/EditorBase.ts.html index 6c4417ee67e..a0415ada881 100644 --- a/coverage/roosterjs-editor-core/lib/editor/EditorBase.ts.html +++ b/coverage/roosterjs-editor-core/lib/editor/EditorBase.ts.html @@ -23,30 +23,30 @@

All files / roosterjs
- 78.55% + 78.88% Statements - 238/303 + 239/303
- 62.81% + 62.4% Branches - 152/242 + 151/242
- 77.22% + 78.48% Functions - 61/79 + 62/79
- 77.59% + 77.93% Lines - 225/290 + 226/290
@@ -1175,7 +1175,7 @@

All files / roosterjs   1x   -6524x +6743x       @@ -1184,24 +1184,24 @@

All files / roosterjs       -6524x +6743x           -6524x +6743x         -6524x +6743x     -71879x +74288x     -6524x +6743x       @@ -1210,22 +1210,22 @@

All files / roosterjs     1x -6506x +6713x   -6506x -71668x +6713x +73945x   -71668x -71668x +73945x +73945x     1x       -6506x +6713x   -6506x +6713x       @@ -1251,8 +1251,8 @@

All files / roosterjs     1x -35x -35x +47x +47x       @@ -1262,9 +1262,9 @@

All files / roosterjs   1x   -4x -4x -4x +5x +5x +5x       @@ -1305,39 +1305,39 @@

All files / roosterjs     1x -17x +41x     1x -466x +487x     -466x +487x     1x   -55775x +58574x           -27922x -27922x -27922x -27922x +29335x +29335x +29335x +29335x   -27922x -27922x -63x -63x +29335x +29335x +90x +90x     -27859x +29245x     -63x +90x       @@ -1374,10 +1374,10 @@

All files / roosterjs     1x -240x +372x   -120x -120x +186x +186x       @@ -1385,9 +1385,9 @@

All files / roosterjs       -7220x -6872x -6872x +7595x +7169x +7169x       @@ -1400,25 +1400,25 @@

All files / roosterjs     1x -3x -3x -3x +9x +9x +9x       -3x +9x         -3x +9x       -3x -5x +9x +11x   -3x +9x       @@ -1441,29 +1441,29 @@

All files / roosterjs       -6x +5x   -10x -10x -10x +8x +8x +8x   -6x -6x +5x +5x       -6x +5x   -6x +5x             -6x -6x -6x +5x +5x +5x       @@ -1471,10 +1471,10 @@

All files / roosterjs       -6x -6x -6x -6x +5x +5x +5x +5x       @@ -1490,9 +1490,9 @@

All files / roosterjs       -715x -511x -511x +470x +235x +235x       @@ -1503,8 +1503,8 @@

All files / roosterjs     1x -569x -569x +746x +746x       @@ -1530,8 +1530,8 @@

All files / roosterjs     1x -271x -271x +387x +387x     1x @@ -1540,18 +1540,18 @@

All files / roosterjs       -7048x +7357x   -7048x +7357x           1x -237x -237x -220x +234x +234x +217x     17x @@ -1574,20 +1574,20 @@

All files / roosterjs       -528x +608x         -528x +608x   -528x +608x   -528x -108x -108x +608x +105x +105x   -528x +608x       @@ -1602,23 +1602,23 @@

All files / roosterjs     1x -  +6x           1x -198x +238x   -99x -99x -99x -99x -80x +119x +119x +119x +119x +100x   -99x 119x +139x       @@ -1630,9 +1630,9 @@

All files / roosterjs       -13090x -13090x -13090x +13528x +13528x +13528x       @@ -1647,16 +1647,16 @@

All files / roosterjs 1x     -13252x +13670x   -13141x -13141x +13563x +13563x       -13141x +13563x   -13141x +13563x       @@ -1712,8 +1712,8 @@

All files / roosterjs       -6751x -6751x +7083x +7083x       @@ -1726,8 +1726,8 @@

All files / roosterjs     1x -6524x -6524x +6743x +6743x       @@ -1742,7 +1742,7 @@

All files / roosterjs     1x -13656x +14144x       @@ -1773,7 +1773,7 @@

All files / roosterjs     1x -14621x +15490x       @@ -1781,7 +1781,7 @@

All files / roosterjs     1x -16x +34x       @@ -1797,8 +1797,8 @@

All files / roosterjs     1x -22x -22x +93x +93x       @@ -1823,10 +1823,10 @@

All files / roosterjs       -63x -63x -62x -62x +67x +67x +66x +66x       @@ -1962,8 +1962,8 @@

All files / roosterjs     1x -6524x -6524x +6743x +6743x       @@ -2026,7 +2026,7 @@

All files / roosterjs     1x -6544x +6763x       @@ -2074,7 +2074,7 @@

All files / roosterjs     1x -14x +13x       @@ -2131,10 +2131,10 @@

All files / roosterjs     1x -132413x +138188x     -132413x +138188x       @@ -2531,7 +2531,7 @@

All files / roosterjs * Default value is true * @returns current selection range, or null if editor never got focus before */ - public getSelectionRange(tryGetFromCache: boolean = true): Range | null { + public getSelectionRange(EtryGetFromCache: boolean = true): Range | null { const core = this.getCore(); return core.api.getSelectionRange(core, tryGetFromCache); } @@ -2642,8 +2642,8 @@

All files / roosterjs * @param position The position to check * @returns True if position is at beginning of the editor, otherwise false */ - public isPositionAtBeginning(position: NodePosition): boolean { - return isPositionAtBeginningOf(position, this.getCore().contentDiv); + public isPositionAtBeginning(position: NodePosition): boolean { + return isPositionAtBeginningOf(position, this.getCore().contentDiv); }   /** @@ -3187,7 +3187,7 @@

All files / roosterjs

diff --git a/coverage/roosterjs-editor-core/lib/editor/createEditorCore.ts.html b/coverage/roosterjs-editor-core/lib/editor/createEditorCore.ts.html index c33ef068af8..b2211ed50a6 100644 --- a/coverage/roosterjs-editor-core/lib/editor/createEditorCore.ts.html +++ b/coverage/roosterjs-editor-core/lib/editor/createEditorCore.ts.html @@ -128,23 +128,23 @@

All files / roosterjs     1x -6524x -6524x +6743x +6743x   -6524x -84812x -6524x -6500x +6743x +87659x +6743x +6715x     -78288x +80916x       -6524x -6524x +6743x +6743x   -6524x +6743x   43x   @@ -155,16 +155,16 @@

All files / roosterjs       -6524x +6743x             -78403x +81031x   -362x +444x       @@ -173,7 +173,7 @@

All files / roosterjs       -6524x +6743x    

import createCorePlugins, { getPluginState } from '../corePlugins/createCorePlugins';
 import DarkColorHandlerImpl from './DarkColorHandlerImpl';
@@ -241,7 +241,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-core/lib/editor/index.html b/coverage/roosterjs-editor-core/lib/editor/index.html index e7ef0da0387..f3e6a8c4e35 100644 --- a/coverage/roosterjs-editor-core/lib/editor/index.html +++ b/coverage/roosterjs-editor-core/lib/editor/index.html @@ -23,30 +23,30 @@

All files roosterjs-editor-core/lib/editor
- 83.62% + 83.87% Statements - 337/403 + 338/403
- 69.94% + 69.62% Branches - 221/316 + 220/316
- 81% + 82% Functions - 81/100 + 82/100
- 82.77% + 83.03% Lines - 317/383 + 318/383
@@ -104,17 +104,17 @@

All files roosterjs-editor-core/lib/editor

EditorBase.ts +
78.55%238/30362.81%152/24277.22%61/7977.59%225/29078.88%239/30362.4%151/24278.48%62/7977.93%226/290
  -6490x +6705x 1x 1x 1x @@ -79,7 +79,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-dom/lib/blockElements/NodeBlockElement.ts.html b/coverage/roosterjs-editor-dom/lib/blockElements/NodeBlockElement.ts.html index 4645fb7b66a..dcb65f4ffd8 100644 --- a/coverage/roosterjs-editor-dom/lib/blockElements/NodeBlockElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/blockElements/NodeBlockElement.ts.html @@ -134,7 +134,7 @@

All files / roosterjs     1x -1008x +1316x       @@ -142,7 +142,7 @@

All files / roosterjs     1x -37x +38x       @@ -150,7 +150,7 @@

All files / roosterjs     1x -688x +866x       @@ -158,7 +158,7 @@

All files / roosterjs     1x -567x +775x       @@ -166,7 +166,7 @@

All files / roosterjs   1x   -230x +296x       @@ -174,14 +174,14 @@

All files / roosterjs   1x   -208x +288x           1x -636x +1053x       @@ -265,7 +265,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/blockElements/StartEndBlockElement.ts.html b/coverage/roosterjs-editor-dom/lib/blockElements/StartEndBlockElement.ts.html index b81e10fd66f..bb9348afb79 100644 --- a/coverage/roosterjs-editor-dom/lib/blockElements/StartEndBlockElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/blockElements/StartEndBlockElement.ts.html @@ -190,14 +190,14 @@

All files / roosterjs     1x -967x +1005x   1x -1868x -1868x -2660x +2214x +2214x +3167x   -1868x +2214x       @@ -233,21 +233,21 @@

All files / roosterjs     1x -224x +255x           1x -236x +276x           1x -50x +80x       @@ -257,14 +257,14 @@

All files / roosterjs     1x -57x +80x           1x -1477x +1520x       @@ -397,7 +397,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/blockElements/getBlockElementAtNode.ts.html b/coverage/roosterjs-editor-dom/lib/blockElements/getBlockElementAtNode.ts.html index b686af31710..f8490d6d1ef 100644 --- a/coverage/roosterjs-editor-dom/lib/blockElements/getBlockElementAtNode.ts.html +++ b/coverage/roosterjs-editor-dom/lib/blockElements/getBlockElementAtNode.ts.html @@ -235,25 +235,25 @@

All files / roosterjs       -8934x -7106x +9572x +7398x           -1828x -1828x +2174x +2174x   -1828x -90x +2174x +132x       -1738x -1738x +2042x +2042x   -1738x +2042x       @@ -262,39 +262,39 @@

All files / roosterjs       -1738x +2042x   -1738x +2042x       -1738x -1738x +2042x +2042x   -1738x +2042x   1x     -1737x -1722x -1722x +2041x +2081x +2081x   -1621x +1904x   -801x +1067x   -1621x -101x +1904x +177x   -101x +177x             -1737x +2041x       @@ -309,33 +309,33 @@

All files / roosterjs       -3476x +4084x   -3476x -118x +4084x +125x     -3358x -5171x -5171x -7115x -7115x -3215x +3959x +6059x +6059x +8346x +8346x +3777x       -1956x -4140x -59x -4081x -84x +2282x +4729x +87x +4642x +95x     -3997x -3997x +4547x +4547x     -1813x +2100x       @@ -487,7 +487,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts.html b/coverage/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts.html index b292356949a..ae2e8ef059f 100644 --- a/coverage/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts.html @@ -89,11 +89,11 @@

All files / roosterjs       -6617x -6617x -6714x +6836x +6836x +6933x   -6617x +6836x    

import getBlockElementAtNode from './getBlockElementAtNode';
 import type { BlockElement } from 'roosterjs-editor-types';
@@ -121,7 +121,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/blockElements/index.html b/coverage/roosterjs-editor-dom/lib/blockElements/index.html index c08300cc562..98cf003c5be 100644 --- a/coverage/roosterjs-editor-dom/lib/blockElements/index.html +++ b/coverage/roosterjs-editor-dom/lib/blockElements/index.html @@ -140,7 +140,7 @@

All files roosterjs-editor-dom/lib/blockEl diff --git a/coverage/roosterjs-editor-dom/lib/clipboard/extractClipboardEvent.ts.html b/coverage/roosterjs-editor-dom/lib/clipboard/extractClipboardEvent.ts.html index c7801414903..6602fb672da 100644 --- a/coverage/roosterjs-editor-dom/lib/clipboard/extractClipboardEvent.ts.html +++ b/coverage/roosterjs-editor-dom/lib/clipboard/extractClipboardEvent.ts.html @@ -229,7 +229,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/clipboard/extractClipboardItems.ts.html b/coverage/roosterjs-editor-dom/lib/clipboard/extractClipboardItems.ts.html index 89b52b7f4f1..4f50a1466e3 100644 --- a/coverage/roosterjs-editor-dom/lib/clipboard/extractClipboardItems.ts.html +++ b/coverage/roosterjs-editor-dom/lib/clipboard/extractClipboardItems.ts.html @@ -475,7 +475,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/clipboard/extractClipboardItemsForIE.ts.html b/coverage/roosterjs-editor-dom/lib/clipboard/extractClipboardItemsForIE.ts.html index 7dfe2d0bfba..fad16dd6b0e 100644 --- a/coverage/roosterjs-editor-dom/lib/clipboard/extractClipboardItemsForIE.ts.html +++ b/coverage/roosterjs-editor-dom/lib/clipboard/extractClipboardItemsForIE.ts.html @@ -262,7 +262,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/clipboard/getPasteType.ts.html b/coverage/roosterjs-editor-dom/lib/clipboard/getPasteType.ts.html index 75f158170a8..f695777bff2 100644 --- a/coverage/roosterjs-editor-dom/lib/clipboard/getPasteType.ts.html +++ b/coverage/roosterjs-editor-dom/lib/clipboard/getPasteType.ts.html @@ -136,7 +136,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/clipboard/handleImagePaste.ts.html b/coverage/roosterjs-editor-dom/lib/clipboard/handleImagePaste.ts.html index be5856b0cca..dd92734baa6 100644 --- a/coverage/roosterjs-editor-dom/lib/clipboard/handleImagePaste.ts.html +++ b/coverage/roosterjs-editor-dom/lib/clipboard/handleImagePaste.ts.html @@ -74,10 +74,10 @@

All files / roosterjs     1x -2x -2x -2x -2x +3x +3x +3x +3x    

/**
  * Handles the content when using the Image Paste Option
@@ -97,7 +97,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/clipboard/handleTextPaste.ts.html b/coverage/roosterjs-editor-dom/lib/clipboard/handleTextPaste.ts.html index ae3fc90f371..cca2c6528a4 100644 --- a/coverage/roosterjs-editor-dom/lib/clipboard/handleTextPaste.ts.html +++ b/coverage/roosterjs-editor-dom/lib/clipboard/handleTextPaste.ts.html @@ -268,7 +268,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/clipboard/index.html b/coverage/roosterjs-editor-dom/lib/clipboard/index.html index 7a08348ab9e..510d7c3cf6d 100644 --- a/coverage/roosterjs-editor-dom/lib/clipboard/index.html +++ b/coverage/roosterjs-editor-dom/lib/clipboard/index.html @@ -200,7 +200,7 @@

All files roosterjs-editor-dom/lib/clipboa diff --git a/coverage/roosterjs-editor-dom/lib/clipboard/retrieveMetadataFromClipboard.ts.html b/coverage/roosterjs-editor-dom/lib/clipboard/retrieveMetadataFromClipboard.ts.html index e7c08934634..ca6aff7a34a 100644 --- a/coverage/roosterjs-editor-dom/lib/clipboard/retrieveMetadataFromClipboard.ts.html +++ b/coverage/roosterjs-editor-dom/lib/clipboard/retrieveMetadataFromClipboard.ts.html @@ -153,59 +153,59 @@

All files / roosterjs 50x 25x 25x -13x -13x +12x +12x +10x +10x +  +12x 14x 14x   -13x -18x -18x   +12x +12x   -13x -13x +12x +37x +37x +16x +16x +12x   -13x -46x -46x -21x -21x -17x   +25x +25x +19x   -29x -29x -21x       +12x +6x +6x   -13x -7x -7x   +12x +12x   -13x -13x +12x +5x +5x +5x +5x   -13x -6x -6x -6x -6x         +5x   -6x         -  -19x +17x    

import getTagOfNode from '../utils/getTagOfNode';
 import toArray from '../jsUtils/toArray';
@@ -289,7 +289,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/clipboard/sanitizePasteContent.ts.html b/coverage/roosterjs-editor-dom/lib/clipboard/sanitizePasteContent.ts.html index 635ce63f36d..bf3530e1e0c 100644 --- a/coverage/roosterjs-editor-dom/lib/clipboard/sanitizePasteContent.ts.html +++ b/coverage/roosterjs-editor-dom/lib/clipboard/sanitizePasteContent.ts.html @@ -118,7 +118,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/contentTraverser/BodyScoper.ts.html b/coverage/roosterjs-editor-dom/lib/contentTraverser/BodyScoper.ts.html index 202966bd2b9..f3061311d08 100644 --- a/coverage/roosterjs-editor-dom/lib/contentTraverser/BodyScoper.ts.html +++ b/coverage/roosterjs-editor-dom/lib/contentTraverser/BodyScoper.ts.html @@ -133,8 +133,8 @@

All files / roosterjs       -495x -495x +500x +500x       @@ -150,7 +150,7 @@

All files / roosterjs     1x -431x +436x       @@ -166,7 +166,7 @@

All files / roosterjs     1x -266x +272x   1x  

import contains from '../utils/contains';
@@ -232,7 +232,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/contentTraverser/ContentTraverser.ts.html b/coverage/roosterjs-editor-dom/lib/contentTraverser/ContentTraverser.ts.html index 6a33c34ac83..935bbcc9a20 100644 --- a/coverage/roosterjs-editor-dom/lib/contentTraverser/ContentTraverser.ts.html +++ b/coverage/roosterjs-editor-dom/lib/contentTraverser/ContentTraverser.ts.html @@ -23,16 +23,16 @@

All files / roosterjs

import BodyScoper from './BodyScoper';
 import EmptyInlineElement from '../inlineElements/EmptyInlineElement';
@@ -682,8 +682,8 @@ 

All files / roosterjs const current = this.currentInlineElement || this.currentInline; let newInline: InlineElement | null;   - Iif (!current) { - return null; + if (!current) { + return null; }   if (current instanceof EmptyInlineElement) { @@ -748,7 +748,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/contentTraverser/PositionContentSearcher.ts.html b/coverage/roosterjs-editor-dom/lib/contentTraverser/PositionContentSearcher.ts.html index e4458453799..43214c6d3cf 100644 --- a/coverage/roosterjs-editor-dom/lib/contentTraverser/PositionContentSearcher.ts.html +++ b/coverage/roosterjs-editor-dom/lib/contentTraverser/PositionContentSearcher.ts.html @@ -311,35 +311,35 @@

All files / roosterjs   1x   -140x +156x     -140x +156x     -140x +156x     -140x +156x     -140x +156x     -140x +156x     -140x +156x     -140x +156x             -140x +156x       @@ -359,11 +359,11 @@

All files / roosterjs     1x -28x -28x +40x +40x     -28x +40x       @@ -371,14 +371,14 @@

All files / roosterjs     1x -24x -24x +36x +36x           -24x +36x       @@ -389,12 +389,12 @@

All files / roosterjs       -30x -30x -17x +34x +34x +21x     -30x +34x       @@ -474,52 +474,52 @@

All files / roosterjs     1x -167x +183x     -167x +183x 3x     -164x -164x -200x +180x +180x +223x   -200x -97x +223x +104x     -97x +104x     -97x -97x +104x +104x 13x       -97x -97x +104x +104x     -97x +104x 61x     -103x -103x -103x +119x +119x +119x   -97x +113x           -103x +119x     -36x +43x     1x @@ -763,7 +763,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/contentTraverser/SelectionBlockScoper.ts.html b/coverage/roosterjs-editor-dom/lib/contentTraverser/SelectionBlockScoper.ts.html index c7d252aaff0..41e8a85712b 100644 --- a/coverage/roosterjs-editor-dom/lib/contentTraverser/SelectionBlockScoper.ts.html +++ b/coverage/roosterjs-editor-dom/lib/contentTraverser/SelectionBlockScoper.ts.html @@ -23,16 +23,16 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/contentTraverser/SelectionScoper.ts.html b/coverage/roosterjs-editor-dom/lib/contentTraverser/SelectionScoper.ts.html index bccac23fe13..b6fb013e8c4 100644 --- a/coverage/roosterjs-editor-dom/lib/contentTraverser/SelectionScoper.ts.html +++ b/coverage/roosterjs-editor-dom/lib/contentTraverser/SelectionScoper.ts.html @@ -198,41 +198,41 @@

All files / roosterjs 1x     -156x -156x +247x +247x             -156x -156x -156x +247x +247x +247x           1x -241x -118x +315x +150x     -241x +315x           1x -35x -35x +94x +94x         -35x +94x       @@ -240,21 +240,21 @@

All files / roosterjs     1x -127x +169x     -127x -127x -127x +169x +169x +169x 9x   -118x +160x           -118x +160x       @@ -262,7 +262,7 @@

All files / roosterjs       -127x +169x       @@ -271,32 +271,32 @@

All files / roosterjs     1x -71x +203x         -71x -71x +203x +203x   -71x -4x +203x +18x     -67x -67x +185x +185x   -67x +185x 1x 1x     -67x -23x -23x +185x +25x +25x     -67x +185x       @@ -439,7 +439,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/contentTraverser/index.html b/coverage/roosterjs-editor-dom/lib/contentTraverser/index.html index 851d86609ad..07cc94b0f49 100644 --- a/coverage/roosterjs-editor-dom/lib/contentTraverser/index.html +++ b/coverage/roosterjs-editor-dom/lib/contentTraverser/index.html @@ -23,16 +23,16 @@

All files roosterjs-editor-dom/lib/content
- 95.67% + 96.46% Statements - 243/254 + 245/254
- 87.36% + 88.46% Branches - 159/182 + 161/182
@@ -44,9 +44,9 @@

All files roosterjs-editor-dom/lib/content
- 95.93% + 96.75% Lines - 236/246 + 238/246
@@ -89,17 +89,17 @@

All files roosterjs-editor-dom/lib/content

ContentTraverser.ts -
+
+
94.37%67/7192.31%48/5295.77%68/7194.23%49/52 100% 14/1494.29%66/7095.71%67/70
SelectionBlockScoper.ts -
+
+
96.97%32/3388.89%24/27100%33/3392.59%25/27 100% 7/796.97%32/33100%33/33
adjustInsertPosition.ts +
70.08%89/12745.83%55/12083.33%10/1270.08%89/12770.87%90/12754.17%65/12091.67%11/1270.87%90/127
import { EntityClasses } from 'roosterjs-editor-types';
  
@@ -100,7 +100,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/entity/index.html b/coverage/roosterjs-editor-dom/lib/entity/index.html index afbdb53d7ba..ab1a6964dcf 100644 --- a/coverage/roosterjs-editor-dom/lib/entity/index.html +++ b/coverage/roosterjs-editor-dom/lib/entity/index.html @@ -140,7 +140,7 @@

All files roosterjs-editor-dom/lib/entity< diff --git a/coverage/roosterjs-editor-dom/lib/event/cacheGetEventData.ts.html b/coverage/roosterjs-editor-dom/lib/event/cacheGetEventData.ts.html index a11d57c6671..98a570bab57 100644 --- a/coverage/roosterjs-editor-dom/lib/event/cacheGetEventData.ts.html +++ b/coverage/roosterjs-editor-dom/lib/event/cacheGetEventData.ts.html @@ -97,15 +97,15 @@

All files / roosterjs       -929x +1013x     -929x -422x -422x +1013x +426x +426x     -929x +1013x    

import type { PluginEvent } from 'roosterjs-editor-types';
  
@@ -139,7 +139,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/event/clearEventDataCache.ts.html b/coverage/roosterjs-editor-dom/lib/event/clearEventDataCache.ts.html index 877671e7e2d..3eb34e2c76e 100644 --- a/coverage/roosterjs-editor-dom/lib/event/clearEventDataCache.ts.html +++ b/coverage/roosterjs-editor-dom/lib/event/clearEventDataCache.ts.html @@ -112,7 +112,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/event/index.html b/coverage/roosterjs-editor-dom/lib/event/index.html index 32315ffcc0d..425ae3dae18 100644 --- a/coverage/roosterjs-editor-dom/lib/event/index.html +++ b/coverage/roosterjs-editor-dom/lib/event/index.html @@ -155,7 +155,7 @@

All files roosterjs-editor-dom/lib/event Code coverage generated by istanbul - at Tue Apr 16 2024 17:17:51 GMT+0000 (Coordinated Universal Time) + at Tue Apr 16 2024 17:40:39 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/roosterjs-editor-dom/lib/event/isCharacterValue.ts.html b/coverage/roosterjs-editor-dom/lib/event/isCharacterValue.ts.html index 51e91fb61b5..748de3545f7 100644 --- a/coverage/roosterjs-editor-dom/lib/event/isCharacterValue.ts.html +++ b/coverage/roosterjs-editor-dom/lib/event/isCharacterValue.ts.html @@ -100,7 +100,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/event/isCtrlOrMetaPressed.ts.html b/coverage/roosterjs-editor-dom/lib/event/isCtrlOrMetaPressed.ts.html index 97aade9c8bc..8dd53f5dbfb 100644 --- a/coverage/roosterjs-editor-dom/lib/event/isCtrlOrMetaPressed.ts.html +++ b/coverage/roosterjs-editor-dom/lib/event/isCtrlOrMetaPressed.ts.html @@ -75,7 +75,7 @@

All files / roosterjs   1x   -29x +25x       @@ -83,7 +83,7 @@

All files / roosterjs     1x -29x +25x    

import { Browser } from '../utils/Browser';
  
@@ -106,7 +106,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/event/isModifierKey.ts.html b/coverage/roosterjs-editor-dom/lib/event/isModifierKey.ts.html index de665176de6..f1fbc390ae7 100644 --- a/coverage/roosterjs-editor-dom/lib/event/isModifierKey.ts.html +++ b/coverage/roosterjs-editor-dom/lib/event/isModifierKey.ts.html @@ -109,7 +109,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/HtmlSanitizer.ts.html b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/HtmlSanitizer.ts.html index a89d55436d1..3521e97e860 100644 --- a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/HtmlSanitizer.ts.html +++ b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/HtmlSanitizer.ts.html @@ -535,8 +535,8 @@

All files / roosterjs     1x -18x -20x +14x +14x       @@ -561,28 +561,28 @@

All files / roosterjs 219x 219x   -10x +9x 8x -18x +17x 219x -40x +33x   -40x -40x -40x +33x +33x +33x       -20x -20x +14x +14x     -20x +14x       -20x -16x +14x +14x       @@ -596,36 +596,36 @@

All files / roosterjs     1x -1033x -1033x -1033x -1033x -1033x +1023x +1023x +1023x +1023x +1023x   -1033x +1023x   -1033x -506x -506x -506x +1023x +503x +503x +503x   -506x -7x +503x +5x     -506x -36x -470x +503x +34x +469x   -470x -435x +469x +434x 35x 3x 3x   -527x -466x -466x +520x +459x +459x       @@ -638,63 +638,63 @@

All files / roosterjs       -1033x -49x -984x +1023x +46x +977x       8x     -976x -527x -527x -527x -472x -472x -472x +969x +524x +524x +524x +469x +469x +469x     -527x -527x -527x -809x -809x +524x +524x +524x +799x +799x         1x -472x +469x       -472x -28x -45x +469x +26x +41x         -472x -472x -472x -288x -288x -288x -288x +469x +469x +469x +279x +279x +279x +279x   -288x -59x +279x +57x     -288x +279x         -288x +279x       @@ -702,55 +702,55 @@

All files / roosterjs       -288x +279x 71x     -288x -170x +279x +169x   -118x +110x       -472x +469x     1x -472x -206x -206x -206x -206x +469x +204x +204x +204x +204x   -206x +204x           -206x -12x +204x +10x     -206x +204x         -60x +58x   146x         -12x -12x -12x +10x +10x +10x   -12x -34x +10x +32x       @@ -758,7 +758,7 @@

All files / roosterjs       -12x +10x   1x  

import changeElementTag from '../utils/changeElementTag';
@@ -1120,7 +1120,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/chainSanitizerCallback.ts.html b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/chainSanitizerCallback.ts.html index e7173805e33..264f0f677ac 100644 --- a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/chainSanitizerCallback.ts.html +++ b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/chainSanitizerCallback.ts.html @@ -93,8 +93,8 @@

All files / roosterjs       -302x -302x +286x +286x       @@ -133,7 +133,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/cloneObject.ts.html b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/cloneObject.ts.html index b2d3766f86e..a423fbfc1ae 100644 --- a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/cloneObject.ts.html +++ b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/cloneObject.ts.html @@ -97,7 +97,7 @@

All files / roosterjs       -1559x +1556x       @@ -123,7 +123,7 @@

All files / roosterjs       -1559x +1556x    

import getObjectKeys from '../jsUtils/getObjectKeys';
  
@@ -166,7 +166,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/createDefaultHtmlSanitizerOptions.ts.html b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/createDefaultHtmlSanitizerOptions.ts.html index 229d325e2ec..2c66a4cdb34 100644 --- a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/createDefaultHtmlSanitizerOptions.ts.html +++ b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/createDefaultHtmlSanitizerOptions.ts.html @@ -124,7 +124,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/getAllowedValues.ts.html b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/getAllowedValues.ts.html index 4327d82888a..13d0d70ca2e 100644 --- a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/getAllowedValues.ts.html +++ b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/getAllowedValues.ts.html @@ -865,7 +865,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/getInheritableStyles.ts.html b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/getInheritableStyles.ts.html index ae7bfe64b00..77f1e1ab789 100644 --- a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/getInheritableStyles.ts.html +++ b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/getInheritableStyles.ts.html @@ -99,13 +99,13 @@

All files / roosterjs     1x -232x -232x -232x -232x -6264x +231x +231x +231x +231x +6237x   -232x +231x    

import type { StringMap } from 'roosterjs-editor-types';
  
@@ -139,7 +139,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/getPredefinedCssForElement.ts.html b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/getPredefinedCssForElement.ts.html index b2c0a354ae9..bdad6f0ff2d 100644 --- a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/getPredefinedCssForElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/getPredefinedCssForElement.ts.html @@ -154,8 +154,8 @@

All files / roosterjs       -481x -481x +478x +478x    

import getTagOfNode from '../utils/getTagOfNode';
 import type { PredefinedCssMap, StringMap } from 'roosterjs-editor-types';
@@ -214,7 +214,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/index.html b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/index.html index 6fc61c4c1a4..a4323ca0f25 100644 --- a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/index.html +++ b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/index.html @@ -200,7 +200,7 @@

All files roosterjs-editor-dom/lib/htmlSan diff --git a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/processCssVariable.ts.html b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/processCssVariable.ts.html index 438152f10c0..d7fc6048040 100644 --- a/coverage/roosterjs-editor-dom/lib/htmlSanitizer/processCssVariable.ts.html +++ b/coverage/roosterjs-editor-dom/lib/htmlSanitizer/processCssVariable.ts.html @@ -91,7 +91,7 @@

All files / roosterjs     1x -259x +252x    

const VARIABLE_REGEX = /^\s*var\(\s*[a-zA-Z0-9-_]+\s*(,\s*(.*))?\)\s*$/;
 const VARIABLE_PREFIX = 'var(';
@@ -118,7 +118,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/index.html b/coverage/roosterjs-editor-dom/lib/index.html index bb10bd74176..ce55f787561 100644 --- a/coverage/roosterjs-editor-dom/lib/index.html +++ b/coverage/roosterjs-editor-dom/lib/index.html @@ -37,9 +37,9 @@

All files roosterjs-editor-dom/lib

- 73.13% + 74.63% Functions - 98/134 + 100/134
@@ -81,8 +81,8 @@

All files roosterjs-editor-dom/lib

246/246 100% 0/073.13%98/13474.63%100/134 100% 132/132
6746x -6546x +1596994x +6765x   -222x -117x +293x +121x   1x 31x @@ -231,52 +231,52 @@

All files / roosterjs-ed 1x 2x 4x -4x -1x +10x +9x 1x   3x 1x 1x -3x +4x 12x 26x 26x 26x   -27124x -6527x +28035x +6746x 20x 30x -13068x -7801x +14802x +8121x 1x -189x +240x 1x 2x 101x     -8558x -248x +8943x +392x 35x -27x +36x 65x -27925x -18x -101x -77x -33x -180x +29357x +22x +173x +112x +54x +214x 4x 24x -14955x +15877x 1x 1x -13114x +13591x 35x -6865x -70x +7084x +67x 44x 1x 21x @@ -286,75 +286,75 @@

All files / roosterjs-ed   6x 1x -18x -97x -1x +29x +117x 1x 1x +4x 1x 2x 2x   -82x -47x -40x -54x +102x +67x +60x +67x 1x 1x   -14259x -761x +15069x +923x 1x -2x -6839x +8x +7186x 4x 1x 1x 5x -397x +475x   -763x +895x   -6911x -13049x +7228x +13487x 1x 1x -531x +708x   1x 1x 1x   -6738x -15x +6963x +12x   41x 1x 49x -303x +287x   130x -7116x -7309x +7512x +7770x 1x 1x 4x -404x +482x     -95x +4x 8x 1x 49x -30x +26x   -55x +53x 6x 721x 146x -14319x +14939x   -25x +41x 1x 1x   @@ -366,13 +366,13 @@

All files / roosterjs-ed 1x 2x   -96x +74x   -6592x -39902x -842x +6805x +41387x +1149x   -15x +14x  

export { default as getBlockElementAtNode } from './blockElements/getBlockElementAtNode';
 export { default as getFirstLastBlockElement } from './blockElements/getFirstLastBlockElement';
  
@@ -390,7 +390,7 @@ 

All files / roosterjs-ed export { default as ImageInlineElement } from './inlineElements/ImageInlineElement'; export { default as LinkInlineElement } from './inlineElements/LinkInlineElement'; export { default as NodeInlineElement } from './inlineElements/NodeInlineElement'; -export { default as PartialInlineElement } from './inlineElements/PartialInlineElement'; +export { default as PartialInlineElement } from './inlineElements/PartialInlineElement'; export { default as applyTextStyle } from './inlineElements/applyTextStyle';   export { default as extractClipboardEvent } from './clipboard/extractClipboardEvent'; @@ -448,7 +448,7 @@

All files / roosterjs-ed export { default as VListChain } from './list/VListChain'; export { default as convertDecimalsToAlpha } from './list/convertDecimalsToAlpha'; export { default as convertDecimalsToRoman } from './list/convertDecimalsToRomans'; -export { default as setListItemStyle } from './list/setListItemStyle'; +export { default as setListItemStyle } from './list/setListItemStyle'; export { getTableFormatInfo } from './table/tableFormatInfo'; export { saveTableCellMetadata } from './table/tableCellInfo'; export { getTableCellMetadata } from './table/tableCellInfo'; @@ -538,7 +538,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-dom/lib/inlineElements/EmptyInlineElement.ts.html b/coverage/roosterjs-editor-dom/lib/inlineElements/EmptyInlineElement.ts.html index 1cbeffb1b9c..a07ec0f8e8e 100644 --- a/coverage/roosterjs-editor-dom/lib/inlineElements/EmptyInlineElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/inlineElements/EmptyInlineElement.ts.html @@ -138,7 +138,7 @@

All files / roosterjs     1x -118x +125x       @@ -165,7 +165,7 @@

All files / roosterjs     1x -106x +110x       @@ -280,7 +280,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/inlineElements/ImageInlineElement.ts.html b/coverage/roosterjs-editor-dom/lib/inlineElements/ImageInlineElement.ts.html index 52198bbf0cb..9e927a14012 100644 --- a/coverage/roosterjs-editor-dom/lib/inlineElements/ImageInlineElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/inlineElements/ImageInlineElement.ts.html @@ -76,7 +76,7 @@

All files / roosterjs   1x   -4x +5x   1x  

import NodeInlineElement from './NodeInlineElement';
@@ -97,7 +97,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/inlineElements/LinkInlineElement.ts.html b/coverage/roosterjs-editor-dom/lib/inlineElements/LinkInlineElement.ts.html index e6d47885265..6df9af85cfc 100644 --- a/coverage/roosterjs-editor-dom/lib/inlineElements/LinkInlineElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/inlineElements/LinkInlineElement.ts.html @@ -76,7 +76,7 @@

All files / roosterjs   1x   -15x +33x   1x  

import NodeInlineElement from './NodeInlineElement';
@@ -97,7 +97,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/inlineElements/NodeInlineElement.ts.html b/coverage/roosterjs-editor-dom/lib/inlineElements/NodeInlineElement.ts.html index de3aeab8e46..80c350b2643 100644 --- a/coverage/roosterjs-editor-dom/lib/inlineElements/NodeInlineElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/inlineElements/NodeInlineElement.ts.html @@ -157,14 +157,14 @@

All files / roosterjs     1x -953x +1118x         1x   -180x +185x       @@ -175,7 +175,7 @@

All files / roosterjs     1x -2268x +2531x       @@ -189,7 +189,7 @@

All files / roosterjs 1x     -369x +574x       @@ -198,37 +198,37 @@

All files / roosterjs 1x     -264x +468x           1x -102x +109x           1x -298x +382x           1x -147x -147x -147x +219x +219x +219x           1x -7x +117x   1x  

import applyTextStyle from './applyTextStyle';
@@ -325,7 +325,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/inlineElements/PartialInlineElement.ts.html b/coverage/roosterjs-editor-dom/lib/inlineElements/PartialInlineElement.ts.html index 7c5b6e6a5db..8c8b8dbc917 100644 --- a/coverage/roosterjs-editor-dom/lib/inlineElements/PartialInlineElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/inlineElements/PartialInlineElement.ts.html @@ -197,9 +197,9 @@

All files / roosterjs   1x   -121x -144x -155x +129x +156x +167x       @@ -213,7 +213,7 @@

All files / roosterjs     1x -61x +68x       @@ -227,23 +227,23 @@

All files / roosterjs     1x -17x +19x   -17x +19x           1x -111x +116x           1x -103x +108x       @@ -257,7 +257,7 @@

All files / roosterjs     1x -12x +16x       @@ -273,16 +273,16 @@

All files / roosterjs     1x -6x +8x           1x -22x -22x -22x +24x +24x +24x       @@ -436,7 +436,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/inlineElements/applyTextStyle.ts.html b/coverage/roosterjs-editor-dom/lib/inlineElements/applyTextStyle.ts.html index 9832a982a2a..04fa1b1e0a4 100644 --- a/coverage/roosterjs-editor-dom/lib/inlineElements/applyTextStyle.ts.html +++ b/coverage/roosterjs-editor-dom/lib/inlineElements/applyTextStyle.ts.html @@ -182,22 +182,22 @@

All files / roosterjs 1x     -80x -83x +300x +303x   -65x -65x -65x +175x +175x +175x   -65x -83x -83x +175x +193x +193x     -83x +193x   -83x -82x +193x +188x 24x     @@ -205,7 +205,7 @@

All files / roosterjs       -82x +188x 27x     @@ -213,43 +213,43 @@

All files / roosterjs       -82x +188x     -83x +193x     -65x -74x -53x -53x +175x +180x +159x +159x 15x 15x 15x   -53x +159x     -56x +162x     -67x -67x +173x +173x         -48x -48x +98x +98x     -67x -26x -26x +173x +83x +83x     -67x -67x +173x +173x       @@ -259,8 +259,8 @@

All files / roosterjs       -74x -7x +181x +8x      

import getTagOfNode from '../utils/getTagOfNode';
@@ -373,7 +373,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/inlineElements/getFirstLastInlineElement.ts.html b/coverage/roosterjs-editor-dom/lib/inlineElements/getFirstLastInlineElement.ts.html index dfa6d5cfae7..30cb981a737 100644 --- a/coverage/roosterjs-editor-dom/lib/inlineElements/getFirstLastInlineElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/inlineElements/getFirstLastInlineElement.ts.html @@ -93,8 +93,8 @@

All files / roosterjs 1x     -300x -300x +305x +305x       @@ -139,7 +139,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/inlineElements/getInlineElementAtNode.ts.html b/coverage/roosterjs-editor-dom/lib/inlineElements/getInlineElementAtNode.ts.html index 421159ef916..cc54d1265fc 100644 --- a/coverage/roosterjs-editor-dom/lib/inlineElements/getInlineElementAtNode.ts.html +++ b/coverage/roosterjs-editor-dom/lib/inlineElements/getInlineElementAtNode.ts.html @@ -152,10 +152,10 @@

All files / roosterjs       -1524x +1752x     -1524x +1752x       @@ -164,28 +164,28 @@

All files / roosterjs       -946x -946x -946x +1111x +1111x +1111x       -860x +1129x         -946x -1794x -1794x -1794x -14x -1780x -3x +1111x +2201x +2201x +2201x +32x +2169x +4x       -946x +1111x    

import getBlockElementAtNode from '../blockElements/getBlockElementAtNode';
 import getTagOfNode from '../utils/getTagOfNode';
@@ -259,7 +259,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/inlineElements/getInlineElementBeforeAfter.ts.html b/coverage/roosterjs-editor-dom/lib/inlineElements/getInlineElementBeforeAfter.ts.html index 6b69825d11d..115f999bcb4 100644 --- a/coverage/roosterjs-editor-dom/lib/inlineElements/getInlineElementBeforeAfter.ts.html +++ b/coverage/roosterjs-editor-dom/lib/inlineElements/getInlineElementBeforeAfter.ts.html @@ -160,44 +160,44 @@

All files / roosterjs     1x -186x +269x           1x -292x +379x       -292x -584x -292x -292x +379x +758x +379x +379x   -292x -107x -185x +379x +111x +268x       -17x +21x     -292x -25x +379x +38x     -292x +379x   -292x -17x +379x +21x         -292x +379x    

import getInlineElementAtNode from './getInlineElementAtNode';
 import PartialInlineElement from './PartialInlineElement';
@@ -277,7 +277,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/inlineElements/index.html b/coverage/roosterjs-editor-dom/lib/inlineElements/index.html index 3d9a21b2c39..3a81eef7e50 100644 --- a/coverage/roosterjs-editor-dom/lib/inlineElements/index.html +++ b/coverage/roosterjs-editor-dom/lib/inlineElements/index.html @@ -215,7 +215,7 @@

All files roosterjs-editor-dom/lib/inlineE diff --git a/coverage/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts.html b/coverage/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts.html index 96a7ef85c2f..ca7ad31192f 100644 --- a/coverage/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts.html +++ b/coverage/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts.html @@ -71,7 +71,7 @@

All files / roosterjs     1x -6706x +6946x    

/**
  * A type-safe wrapper for Array.prototype.push.apply()
@@ -88,7 +88,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts.html b/coverage/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts.html index 59c6cf1aceb..30d2802410e 100644 --- a/coverage/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts.html +++ b/coverage/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts.html @@ -75,7 +75,7 @@

All files / roosterjs 1x     -41756x +43258x    

/**
  * Provide a strong-typed version of Object.keys()
@@ -94,7 +94,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/jsUtils/index.html b/coverage/roosterjs-editor-dom/lib/jsUtils/index.html index c8682094410..4351680417e 100644 --- a/coverage/roosterjs-editor-dom/lib/jsUtils/index.html +++ b/coverage/roosterjs-editor-dom/lib/jsUtils/index.html @@ -125,7 +125,7 @@

All files roosterjs-editor-dom/lib/jsUtils diff --git a/coverage/roosterjs-editor-dom/lib/jsUtils/toArray.ts.html b/coverage/roosterjs-editor-dom/lib/jsUtils/toArray.ts.html index 51fb6192362..32297a999d4 100644 --- a/coverage/roosterjs-editor-dom/lib/jsUtils/toArray.ts.html +++ b/coverage/roosterjs-editor-dom/lib/jsUtils/toArray.ts.html @@ -125,7 +125,7 @@

All files / roosterjs     1x -31962x +34169x    

/**
  * Convert a named node map to an array
@@ -169,7 +169,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/list/VList.ts.html b/coverage/roosterjs-editor-dom/lib/list/VList.ts.html index 8694149e487..669f639dfbf 100644 --- a/coverage/roosterjs-editor-dom/lib/list/VList.ts.html +++ b/coverage/roosterjs-editor-dom/lib/list/VList.ts.html @@ -721,14 +721,14 @@

All files / roosterjs     1x -271x +287x           -271x -271x +287x +287x 1x     @@ -753,8 +753,8 @@

All files / roosterjs       -270x -270x +286x +286x       @@ -788,9 +788,9 @@

All files / roosterjs       -270x +286x   -270x +286x       @@ -809,15 +809,15 @@

All files / roosterjs     1x -93x +108x   -93x +108x           -152x +178x       @@ -1033,16 +1033,16 @@

All files / roosterjs     1x -23x +24x     -23x -15x +24x +16x 8x 5x     -23x +24x       @@ -1111,7 +1111,7 @@

All files / roosterjs     1x -174x +189x     1x @@ -1149,25 +1149,25 @@

All files / roosterjs 56x     -329x +348x   -599x +634x             -329x -329x +348x +348x   -329x -486x +348x +515x   -486x -59x -427x -414x +515x +62x +453x +440x       @@ -1180,15 +1180,15 @@

All files / roosterjs       -332x +351x   -332x -494x -405x -89x -59x -30x -9x +351x +525x +432x +93x +62x +31x +10x       @@ -1198,18 +1198,18 @@

All files / roosterjs       -410x -8x -8x +436x +7x +7x   -8x 7x -5x +6x +4x   -8x +7x     -8x +7x       @@ -1831,7 +1831,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/list/VListChain.ts.html b/coverage/roosterjs-editor-dom/lib/list/VListChain.ts.html index 04d00b69193..41e7157ab60 100644 --- a/coverage/roosterjs-editor-dom/lib/list/VListChain.ts.html +++ b/coverage/roosterjs-editor-dom/lib/list/VListChain.ts.html @@ -257,8 +257,8 @@

All files / roosterjs     1x -46x -46x +55x +55x       @@ -271,43 +271,43 @@

All files / roosterjs       -122x -122x -122x -89x +149x +149x +149x +116x     -89x -72x +116x +90x   -72x +90x   -60x +75x   -60x -60x +75x +75x   -60x +75x     -48x -8x +62x +13x     -48x -12x +62x +13x 6x     -60x -60x +75x +75x       -89x +116x     -122x +149x       @@ -324,17 +324,17 @@

All files / roosterjs     1x +5x 4x -3x   -3x -3x -3x +4x +4x +4x   -3x +4x   -3x -3x +4x +4x   1x   @@ -376,14 +376,14 @@

All files / roosterjs       -46x +55x           1x -19x +29x       @@ -392,18 +392,18 @@

All files / roosterjs     1x -60x -60x +75x +75x   -60x -12x +75x +13x   -48x +62x       1x -63x +79x     20x @@ -604,7 +604,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/list/VListItem.ts.html b/coverage/roosterjs-editor-dom/lib/list/VListItem.ts.html index a6e6ecf45d9..bfd1498b49c 100644 --- a/coverage/roosterjs-editor-dom/lib/list/VListItem.ts.html +++ b/coverage/roosterjs-editor-dom/lib/list/VListItem.ts.html @@ -661,7 +661,7 @@

All files / roosterjs       -517x +545x       @@ -671,47 +671,47 @@

All files / roosterjs       -1638x +1727x             -517x +545x 1x     -516x +544x     -516x +544x   -516x +544x     -516x +544x           1x -192x +218x           1x -274x +300x           1x -343x +344x       @@ -735,7 +735,7 @@

All files / roosterjs     1x -212x +232x       @@ -870,14 +870,14 @@

All files / roosterjs       -151x +152x     -258x +260x   -151x +152x   -151x +152x       @@ -903,7 +903,7 @@

All files / roosterjs       -151x +152x 107x 34x 34x @@ -916,21 +916,21 @@

All files / roosterjs       -151x -117x -117x +152x +118x +118x             -117x -117x +118x +118x       -117x +118x 20x 20x   @@ -941,17 +941,17 @@

All files / roosterjs       -151x -151x +152x +152x     -151x -140x -140x +152x +141x +141x       -151x +152x   11x 11x @@ -1011,8 +1011,8 @@

All files / roosterjs     1x -117x -117x +118x +118x 51x 51x 73x @@ -1020,7 +1020,7 @@

All files / roosterjs   51x   -66x +67x   1x   @@ -1030,7 +1030,7 @@

All files / roosterjs       -117x +118x       @@ -1039,7 +1039,7 @@

All files / roosterjs       -117x +118x 72x   10x @@ -1051,37 +1051,37 @@

All files / roosterjs       -45x +46x     -117x +118x           -117x +118x 7x 7x         -117x +118x 29x           -117x +118x 3x           -117x +118x       @@ -1630,7 +1630,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/list/convertDecimalsToAlpha.ts.html b/coverage/roosterjs-editor-dom/lib/list/convertDecimalsToAlpha.ts.html index 486403e366e..bfaf43bda02 100644 --- a/coverage/roosterjs-editor-dom/lib/list/convertDecimalsToAlpha.ts.html +++ b/coverage/roosterjs-editor-dom/lib/list/convertDecimalsToAlpha.ts.html @@ -193,7 +193,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/list/convertDecimalsToRomans.ts.html b/coverage/roosterjs-editor-dom/lib/list/convertDecimalsToRomans.ts.html index 7d3480d01a0..f6bb80fca6d 100644 --- a/coverage/roosterjs-editor-dom/lib/list/convertDecimalsToRomans.ts.html +++ b/coverage/roosterjs-editor-dom/lib/list/convertDecimalsToRomans.ts.html @@ -163,7 +163,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/list/createVListFromRegion.ts.html b/coverage/roosterjs-editor-dom/lib/list/createVListFromRegion.ts.html index c2be95fd422..53f13a43502 100644 --- a/coverage/roosterjs-editor-dom/lib/list/createVListFromRegion.ts.html +++ b/coverage/roosterjs-editor-dom/lib/list/createVListFromRegion.ts.html @@ -231,15 +231,15 @@

All files / roosterjs       -44x +55x 1x     -43x +54x   -43x -12x -12x +54x +23x +23x 10x     @@ -287,9 +287,9 @@

All files / roosterjs 53x     -43x +54x   -43x +54x 41x 41x   @@ -308,7 +308,7 @@

All files / roosterjs       -43x +54x       @@ -496,7 +496,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/list/getListTypeFromNode.ts.html b/coverage/roosterjs-editor-dom/lib/list/getListTypeFromNode.ts.html index 18d388bb2e5..8404307b008 100644 --- a/coverage/roosterjs-editor-dom/lib/list/getListTypeFromNode.ts.html +++ b/coverage/roosterjs-editor-dom/lib/list/getListTypeFromNode.ts.html @@ -125,13 +125,13 @@

All files / roosterjs     1x -1665x +1742x   -967x +1018x   217x   -481x +507x       @@ -141,7 +141,7 @@

All files / roosterjs     1x -1068x +1126x    

import getTagOfNode from '../utils/getTagOfNode';
 import { ListType } from 'roosterjs-editor-types';
@@ -193,7 +193,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/list/getRootListNode.ts.html b/coverage/roosterjs-editor-dom/lib/list/getRootListNode.ts.html index de684e10001..7d63a262c59 100644 --- a/coverage/roosterjs-editor-dom/lib/list/getRootListNode.ts.html +++ b/coverage/roosterjs-editor-dom/lib/list/getRootListNode.ts.html @@ -131,27 +131,27 @@

All files / roosterjs       -175x +204x             -175x -129x -129x +204x +147x +147x             -23x +26x       -175x +204x    

import findClosestElementAncestor from '../utils/findClosestElementAncestor';
 import type { RegionBase } from 'roosterjs-editor-types';
@@ -208,7 +208,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/list/index.html b/coverage/roosterjs-editor-dom/lib/list/index.html index 40cd2272866..45325ac2820 100644 --- a/coverage/roosterjs-editor-dom/lib/list/index.html +++ b/coverage/roosterjs-editor-dom/lib/list/index.html @@ -30,9 +30,9 @@

All files roosterjs-editor-dom/lib/list - 83.33% + 83.8% Branches - 355/426 + 357/426 @@ -214,8 +214,8 @@

All files roosterjs-editor-dom/lib/list

100% 36/3684.31%43/5188.24%45/51 100% 5/5 100%
import ContentTraverser from '../contentTraverser/ContentTraverser';
 import findClosestElementAncestor from '../utils/findClosestElementAncestor';
@@ -252,7 +252,7 @@ 

All files / roosterjs export default function setListItemStyle( element: HTMLLIElement, styles: string[], - IisCssStyle: boolean = true + isCssStyle: boolean = true ) { const elementsStyles = getInlineChildElementsStyle(element, styles, isCssStyle);   @@ -293,7 +293,7 @@

All files / roosterjs currentNode && currentNode !== element && safeInstanceOf(currentNode, 'HTMLElement') && - (result.length == 0 || (currentNode.textContent?.trim().length || 0) > 0) + (result.length == 0 || (currentNode.textContent?.trim().length || 0) > 0) ) { const element: HTMLElement = currentNode;   @@ -334,7 +334,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts.html b/coverage/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts.html index 24b3ec2259d..f8e1062959a 100644 --- a/coverage/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts.html +++ b/coverage/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts.html @@ -490,7 +490,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/metadata/definitionCreators.ts.html b/coverage/roosterjs-editor-dom/lib/metadata/definitionCreators.ts.html index 57355a2ec11..ae1d849a9da 100644 --- a/coverage/roosterjs-editor-dom/lib/metadata/definitionCreators.ts.html +++ b/coverage/roosterjs-editor-dom/lib/metadata/definitionCreators.ts.html @@ -424,7 +424,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/metadata/index.html b/coverage/roosterjs-editor-dom/lib/metadata/index.html index c4490e9f3c4..e8c5f0d4e87 100644 --- a/coverage/roosterjs-editor-dom/lib/metadata/index.html +++ b/coverage/roosterjs-editor-dom/lib/metadata/index.html @@ -125,7 +125,7 @@

All files roosterjs-editor-dom/lib/metadat diff --git a/coverage/roosterjs-editor-dom/lib/metadata/metadata.ts.html b/coverage/roosterjs-editor-dom/lib/metadata/metadata.ts.html index f67401e0bd5..c1a611ed10c 100644 --- a/coverage/roosterjs-editor-dom/lib/metadata/metadata.ts.html +++ b/coverage/roosterjs-editor-dom/lib/metadata/metadata.ts.html @@ -150,18 +150,18 @@

All files / roosterjs       -964x +1092x     -964x -964x +1092x +1092x     -964x -963x -138x -825x -823x +1092x +1091x +116x +975x +973x       @@ -181,9 +181,9 @@

All files / roosterjs     1x -85x -84x -84x +99x +98x +98x   1x   @@ -195,14 +195,14 @@

All files / roosterjs     1x -62x +50x 43x 43x 1x 1x     -19x +7x      

import validate from './validate';
@@ -286,7 +286,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/metadata/validate.ts.html b/coverage/roosterjs-editor-dom/lib/metadata/validate.ts.html index 87304e78b56..3c981dee7c8 100644 --- a/coverage/roosterjs-editor-dom/lib/metadata/validate.ts.html +++ b/coverage/roosterjs-editor-dom/lib/metadata/validate.ts.html @@ -137,16 +137,16 @@

All files / roosterjs     1x -3254x -3254x -1120x -2134x +3503x +3503x +1320x +2183x       39x   -2095x +2144x   130x   @@ -154,34 +154,34 @@

All files / roosterjs 130x     -1217x +1215x         -1217x +1215x     -116x +140x     -116x +140x     -314x +316x       -978x -314x +976x +316x     -310x +335x     -1073x +1149x   -310x +335x     8x @@ -189,7 +189,7 @@

All files / roosterjs       -3215x +3464x       @@ -271,7 +271,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/constants.ts.html b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/constants.ts.html index cc3929b835c..5c71fca2aa4 100644 --- a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/constants.ts.html +++ b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/constants.ts.html @@ -109,7 +109,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/documentContainWacElements.ts.html b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/documentContainWacElements.ts.html index 5591dc4a9a0..7e6a042c4fc 100644 --- a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/documentContainWacElements.ts.html +++ b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/documentContainWacElements.ts.html @@ -105,8 +105,8 @@

All files / roosterjs     1x -24x -24x +23x +23x   1x  

import type { getSourceFunction, getSourceInputParams } from './getPasteSource';
@@ -142,7 +142,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/getPasteSource.ts.html b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/getPasteSource.ts.html index c6dea39af46..c05c9347603 100644 --- a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/getPasteSource.ts.html +++ b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/getPasteSource.ts.html @@ -165,23 +165,23 @@

All files / roosterjs       -42x +39x   -14x -14x +13x +13x             -14x -98x -12x +13x +91x +11x       -14x +13x    

import documentContainWacElements from './documentContainWacElements';
 import isExcelDesktopDocument from './isExcelDesktopDocument';
@@ -253,7 +253,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/index.html b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/index.html index 36317b8be27..a8c41eee31a 100644 --- a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/index.html +++ b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/index.html @@ -215,7 +215,7 @@

All files roosterjs-editor-dom/lib/pasteSo diff --git a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelDesktopDocument.ts.html b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelDesktopDocument.ts.html index 5a399341ae7..317ff7b3d31 100644 --- a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelDesktopDocument.ts.html +++ b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelDesktopDocument.ts.html @@ -86,9 +86,9 @@

All files / roosterjs     1x -18x +17x   -18x +17x   1x  

import { EXCEL_DESKTOP_ATTRIBUTE_NAME } from './constants';
@@ -115,7 +115,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelOnlineDocument.ts.html b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelOnlineDocument.ts.html index 11aebba6c49..cfd81009c3d 100644 --- a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelOnlineDocument.ts.html +++ b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isExcelOnlineDocument.ts.html @@ -91,9 +91,9 @@

All files / roosterjs     1x -14x +13x   -14x +13x       @@ -127,7 +127,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isGoogleSheetDocument.ts.html b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isGoogleSheetDocument.ts.html index 36aca0a55cf..40a2a432684 100644 --- a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isGoogleSheetDocument.ts.html +++ b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isGoogleSheetDocument.ts.html @@ -82,8 +82,8 @@

All files / roosterjs     1x -9x -9x +8x +8x     1x @@ -109,7 +109,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isPowerPointDesktopDocument.ts.html b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isPowerPointDesktopDocument.ts.html index 466919b84a4..930dcffdefc 100644 --- a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isPowerPointDesktopDocument.ts.html +++ b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isPowerPointDesktopDocument.ts.html @@ -84,7 +84,7 @@

All files / roosterjs     1x -11x +10x   1x  

import { PROG_ID_NAME } from './constants';
@@ -109,7 +109,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isWordDesktopDocument.ts.html b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isWordDesktopDocument.ts.html index a44ba891c16..3d6c4044229 100644 --- a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isWordDesktopDocument.ts.html +++ b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/isWordDesktopDocument.ts.html @@ -93,8 +93,8 @@

All files / roosterjs     1x -18x -18x +17x +17x       @@ -130,7 +130,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/shouldConvertToSingleImage.ts.html b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/shouldConvertToSingleImage.ts.html index e05c0b4dc5f..3439734f052 100644 --- a/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/shouldConvertToSingleImage.ts.html +++ b/coverage/roosterjs-editor-dom/lib/pasteSourceValidations/shouldConvertToSingleImage.ts.html @@ -86,8 +86,8 @@

All files / roosterjs     1x -18x -9x +16x +8x       @@ -121,7 +121,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/region/collapseNodesInRegion.ts.html b/coverage/roosterjs-editor-dom/lib/region/collapseNodesInRegion.ts.html index 378c619f1f4..abbf1bf0458 100644 --- a/coverage/roosterjs-editor-dom/lib/region/collapseNodesInRegion.ts.html +++ b/coverage/roosterjs-editor-dom/lib/region/collapseNodesInRegion.ts.html @@ -111,24 +111,24 @@

All files / roosterjs       -74x -5x +94x +6x     -69x +88x             -143x +181x   -69x -69x +88x +88x   -69x -67x +88x +86x   2x   @@ -178,7 +178,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/region/getRegionsFromRange.ts.html b/coverage/roosterjs-editor-dom/lib/region/getRegionsFromRange.ts.html index 6526c31bc77..4c9f711d6a7 100644 --- a/coverage/roosterjs-editor-dom/lib/region/getRegionsFromRange.ts.html +++ b/coverage/roosterjs-editor-dom/lib/region/getRegionsFromRange.ts.html @@ -353,17 +353,17 @@

All files / roosterjs       -145x -145x -142x -142x -142x -142x -142x -142x +165x +165x +162x +162x +162x +162x +162x +162x     -218x +238x       @@ -373,10 +373,10 @@

All files / roosterjs       -178x -178x -178x -312x +198x +198x +198x +332x       @@ -426,9 +426,9 @@

All files / roosterjs       -142x -142x -142x +162x +162x +162x       @@ -438,7 +438,7 @@

All files / roosterjs       -142x +162x       @@ -467,7 +467,7 @@

All files / roosterjs       -142x +162x       @@ -487,15 +487,15 @@

All files / roosterjs       -260x -260x -520x -260x +280x +280x +560x +280x   -260x -199x -199x -199x +280x +219x +219x +219x       @@ -517,7 +517,7 @@

All files / roosterjs       -260x +280x       @@ -538,23 +538,23 @@

All files / roosterjs       -312x +332x     -312x -312x +332x +332x   -312x +332x   -312x +332x   -312x +332x           -312x +332x      

import contains from '../utils/contains';
@@ -814,7 +814,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/region/getSelectedBlockElementsInRegion.ts.html b/coverage/roosterjs-editor-dom/lib/region/getSelectedBlockElementsInRegion.ts.html index d90a03ac940..6233150bbeb 100644 --- a/coverage/roosterjs-editor-dom/lib/region/getSelectedBlockElementsInRegion.ts.html +++ b/coverage/roosterjs-editor-dom/lib/region/getSelectedBlockElementsInRegion.ts.html @@ -142,50 +142,50 @@

All files / roosterjs       -102x -102x +122x +122x   -102x -184x -92x +122x +224x +112x   -92x -92x +112x +112x       -162x +211x       -92x -162x -162x +112x +211x +211x   -162x -4x -4x +211x +14x +14x   -158x +197x         -102x -1x +122x +2x       -1x +2x   -1x +2x   -1x -1x +2x +2x       -102x +122x    

import ContentTraverser from '../contentTraverser/ContentTraverser';
 import createElement from '../utils/createElement';
@@ -259,7 +259,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/region/getSelectionRangeInRegion.ts.html b/coverage/roosterjs-editor-dom/lib/region/getSelectionRangeInRegion.ts.html index 8edab1da8a7..2e25b73d8e1 100644 --- a/coverage/roosterjs-editor-dom/lib/region/getSelectionRangeInRegion.ts.html +++ b/coverage/roosterjs-editor-dom/lib/region/getSelectionRangeInRegion.ts.html @@ -118,33 +118,33 @@

All files / roosterjs     1x -129x +149x 1x     -512x -128x +592x +148x     -128x +148x     -128x +148x   -128x +148x 1x -127x -124x -124x -248x +147x +144x +144x +288x   -124x -117x +144x +137x     -117x +137x   -117x +137x       @@ -152,8 +152,8 @@

All files / roosterjs       -128x -128x +148x +148x    

import createRange from '../selection/createRange';
 import Position from '../selection/Position';
@@ -211,7 +211,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/region/index.html b/coverage/roosterjs-editor-dom/lib/region/index.html index 9e74d6fc533..da29a774a1c 100644 --- a/coverage/roosterjs-editor-dom/lib/region/index.html +++ b/coverage/roosterjs-editor-dom/lib/region/index.html @@ -170,7 +170,7 @@

All files roosterjs-editor-dom/lib/region< diff --git a/coverage/roosterjs-editor-dom/lib/region/isNodeInRegion.ts.html b/coverage/roosterjs-editor-dom/lib/region/isNodeInRegion.ts.html index f382287bb60..45df95b5464 100644 --- a/coverage/roosterjs-editor-dom/lib/region/isNodeInRegion.ts.html +++ b/coverage/roosterjs-editor-dom/lib/region/isNodeInRegion.ts.html @@ -86,7 +86,7 @@

All files / roosterjs     1x -483x +572x       @@ -121,7 +121,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/region/mergeBlocksInRegion.ts.html b/coverage/roosterjs-editor-dom/lib/region/mergeBlocksInRegion.ts.html index 914b4f2fac3..0487fcf65d3 100644 --- a/coverage/roosterjs-editor-dom/lib/region/mergeBlocksInRegion.ts.html +++ b/coverage/roosterjs-editor-dom/lib/region/mergeBlocksInRegion.ts.html @@ -280,7 +280,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/selection/Position.ts.html b/coverage/roosterjs-editor-dom/lib/selection/Position.ts.html index 0b3667f3607..6a954223c81 100644 --- a/coverage/roosterjs-editor-dom/lib/selection/Position.ts.html +++ b/coverage/roosterjs-editor-dom/lib/selection/Position.ts.html @@ -281,42 +281,42 @@

All files / roosterjs       -19751x -19742x +22381x +22372x   -19742x +22372x 7x 7x   -19735x +22365x     -19742x +22372x   -460x -460x -460x -460x +534x +534x +534x +534x     -429x -429x -429x -429x +523x +523x +523x +523x     -931x -931x -931x +1482x +1482x +1482x     -17922x -17922x -17922x -17922x +19833x +19833x +19833x +19833x     -19742x +22372x       @@ -324,16 +324,16 @@

All files / roosterjs     1x -15735x -14567x +17459x +15818x     -1168x -1168x +1641x +1641x     -1168x -2086x +1641x +3069x       @@ -343,15 +343,15 @@

All files / roosterjs       -2086x -1808x -1808x +3069x +2726x +2726x     -278x +343x     -1168x +1641x       @@ -359,7 +359,7 @@

All files / roosterjs     1x -315x +609x       @@ -372,7 +372,7 @@

All files / roosterjs     1x -1326x +2194x       @@ -390,7 +390,7 @@

All files / roosterjs     1x -1543x +2014x       @@ -400,25 +400,25 @@

All files / roosterjs 1x     -932x +1342x       1x     -889x -889x -321x +1057x +1057x +380x   -889x +1057x       -18853x -3054x -15799x -15694x +21315x +4273x +17042x +16937x   105x   @@ -613,7 +613,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/selection/addRangeToSelection.ts.html b/coverage/roosterjs-editor-dom/lib/selection/addRangeToSelection.ts.html index bb7cdf6479a..90226653cfb 100644 --- a/coverage/roosterjs-editor-dom/lib/selection/addRangeToSelection.ts.html +++ b/coverage/roosterjs-editor-dom/lib/selection/addRangeToSelection.ts.html @@ -107,17 +107,17 @@

All files / roosterjs     1x -758x -758x -758x +890x +890x +890x   -758x +890x   -755x -755x +889x +889x     -755x +889x       @@ -127,13 +127,13 @@

All files / roosterjs       -755x +889x         -758x -758x +890x +890x       @@ -184,7 +184,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/selection/createRange.ts.html b/coverage/roosterjs-editor-dom/lib/selection/createRange.ts.html index c886fe9a529..63e3ad3f8dd 100644 --- a/coverage/roosterjs-editor-dom/lib/selection/createRange.ts.html +++ b/coverage/roosterjs-editor-dom/lib/selection/createRange.ts.html @@ -255,38 +255,38 @@

All files / roosterjs       -1300x -1300x +1514x +1514x   -1300x +1514x   -523x -523x -777x -775x +634x +634x +880x +878x   -153x -153x -622x +154x +154x +724x     -315x -315x -307x +397x +397x +327x   -307x -307x +327x +327x       -1300x -1296x -1296x -1296x -1296x -1296x +1514x +1510x +1510x +1510x +1510x +1510x   -1296x +1510x   4x   @@ -297,39 +297,39 @@

All files / roosterjs       -2592x +3020x           -1823x +2148x       -306x +308x           -306x +308x   -306x -1046x -1046x +308x +1044x +1044x           -740x +736x   -306x +308x       -306x +308x    

import isVoidHtmlElement from '../utils/isVoidHtmlElement';
 import Position from './Position';
@@ -475,7 +475,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/selection/getHtmlWithSelectionPath.ts.html b/coverage/roosterjs-editor-dom/lib/selection/getHtmlWithSelectionPath.ts.html index 28e7f5ea7bb..e19e8cdc6dc 100644 --- a/coverage/roosterjs-editor-dom/lib/selection/getHtmlWithSelectionPath.ts.html +++ b/coverage/roosterjs-editor-dom/lib/selection/getHtmlWithSelectionPath.ts.html @@ -133,7 +133,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/selection/getPositionRect.ts.html b/coverage/roosterjs-editor-dom/lib/selection/getPositionRect.ts.html index bd247fa0aeb..b61950fbb34 100644 --- a/coverage/roosterjs-editor-dom/lib/selection/getPositionRect.ts.html +++ b/coverage/roosterjs-editor-dom/lib/selection/getPositionRect.ts.html @@ -241,7 +241,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/selection/getSelectionPath.ts.html b/coverage/roosterjs-editor-dom/lib/selection/getSelectionPath.ts.html index fcfe9be58b5..3e2c52c163a 100644 --- a/coverage/roosterjs-editor-dom/lib/selection/getSelectionPath.ts.html +++ b/coverage/roosterjs-editor-dom/lib/selection/getSelectionPath.ts.html @@ -160,16 +160,16 @@

All files / roosterjs       -6876x -6575x +7223x +6794x     -301x +429x         -301x +429x       @@ -185,55 +185,55 @@

All files / roosterjs       -602x +858x       -602x -602x -602x +858x +858x +858x     -602x +858x 2x     -600x -319x -319x -49x -49x +856x +398x +398x +50x +50x   -319x +398x   -281x -281x +458x +458x     -600x -1558x -1558x +856x +2102x +2102x   -1558x -520x -143x +2102x +823x +203x 45x     -98x +158x   -377x +620x     -475x +778x     -1558x -1558x -1558x +2102x +2102x +2102x     -600x +856x    

import contains from '../utils/contains';
 import Position from './Position';
@@ -331,7 +331,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/selection/index.html b/coverage/roosterjs-editor-dom/lib/selection/index.html index 0e42d24ed66..c7dbf08a62f 100644 --- a/coverage/roosterjs-editor-dom/lib/selection/index.html +++ b/coverage/roosterjs-editor-dom/lib/selection/index.html @@ -200,7 +200,7 @@

All files roosterjs-editor-dom/lib/selecti diff --git a/coverage/roosterjs-editor-dom/lib/selection/isPositionAtBeginningOf.ts.html b/coverage/roosterjs-editor-dom/lib/selection/isPositionAtBeginningOf.ts.html index eb6b53af840..6993fb3079b 100644 --- a/coverage/roosterjs-editor-dom/lib/selection/isPositionAtBeginningOf.ts.html +++ b/coverage/roosterjs-editor-dom/lib/selection/isPositionAtBeginningOf.ts.html @@ -108,30 +108,30 @@

All files / roosterjs     1x -16x -15x -15x -15x -15x -14x -13x +22x +21x +21x +21x +21x +18x +21x     -14x +18x       -2x +4x       -19x +27x 7x 7x 6x     -13x +21x    

import contains from '../utils/contains';
 import getTagOfNode from '../utils/getTagOfNode';
@@ -178,7 +178,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/selection/setHtmlWithSelectionPath.ts.html b/coverage/roosterjs-editor-dom/lib/selection/setHtmlWithSelectionPath.ts.html index 40165a0d058..5dd606d248e 100644 --- a/coverage/roosterjs-editor-dom/lib/selection/setHtmlWithSelectionPath.ts.html +++ b/coverage/roosterjs-editor-dom/lib/selection/setHtmlWithSelectionPath.ts.html @@ -275,27 +275,27 @@

All files / roosterjs     1x -468x +546x   -468x -167x -167x +546x +168x +168x   -160x +161x         -145x -145x -145x +146x +146x +146x   -145x +146x         -323x +400x    

import createRange from './createRange';
 import safeInstanceOf from '../utils/safeInstanceOf';
@@ -424,7 +424,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/snapshots/addSnapshot.ts.html b/coverage/roosterjs-editor-dom/lib/snapshots/addSnapshot.ts.html index 05c34061aae..cbe99eb8f33 100644 --- a/coverage/roosterjs-editor-dom/lib/snapshots/addSnapshot.ts.html +++ b/coverage/roosterjs-editor-dom/lib/snapshots/addSnapshot.ts.html @@ -196,20 +196,20 @@

All files / roosterjs       -6937x -6937x +7254x +7254x   -6937x -6937x +7254x +7254x   -6937x -6881x -6881x -6881x -6881x +7254x +7215x +7215x +7215x +7215x   -6881x -6881x +7215x +7215x       @@ -217,18 +217,18 @@

All files / roosterjs 3x     -6881x +7215x 3x 3x 3x     -6881x +7215x 25x   -56x +39x   -56x +39x       @@ -243,17 +243,17 @@

All files / roosterjs       -6913x +7230x       -6859x +7193x           -379x +477x       @@ -367,7 +367,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/snapshots/canMoveCurrentSnapshot.ts.html b/coverage/roosterjs-editor-dom/lib/snapshots/canMoveCurrentSnapshot.ts.html index ad86c57885c..76ee05ae495 100644 --- a/coverage/roosterjs-editor-dom/lib/snapshots/canMoveCurrentSnapshot.ts.html +++ b/coverage/roosterjs-editor-dom/lib/snapshots/canMoveCurrentSnapshot.ts.html @@ -84,8 +84,8 @@

All files / roosterjs       -20548x -20548x +21497x +21497x    

import type { Snapshots } from 'roosterjs-editor-types';
  
@@ -109,7 +109,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/snapshots/canUndoAutoComplete.ts.html b/coverage/roosterjs-editor-dom/lib/snapshots/canUndoAutoComplete.ts.html index 5e1d75b4b52..2edf8367cbe 100644 --- a/coverage/roosterjs-editor-dom/lib/snapshots/canUndoAutoComplete.ts.html +++ b/coverage/roosterjs-editor-dom/lib/snapshots/canUndoAutoComplete.ts.html @@ -74,7 +74,7 @@

All files / roosterjs     1x -14x +11x       @@ -97,7 +97,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/snapshots/clearProceedingSnapshots.ts.html b/coverage/roosterjs-editor-dom/lib/snapshots/clearProceedingSnapshots.ts.html index 264acc99a40..f3b7b336adc 100644 --- a/coverage/roosterjs-editor-dom/lib/snapshots/clearProceedingSnapshots.ts.html +++ b/coverage/roosterjs-editor-dom/lib/snapshots/clearProceedingSnapshots.ts.html @@ -128,8 +128,8 @@

All files / roosterjs       -7417x -7417x +7928x +7928x 5x 5x 5x @@ -145,7 +145,7 @@

All files / roosterjs     1x -530x +707x    

import canMoveCurrentSnapshot from './canMoveCurrentSnapshot';
 import type { Snapshot, Snapshots } from 'roosterjs-editor-types';
@@ -199,7 +199,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/snapshots/createSnapshots.ts.html b/coverage/roosterjs-editor-dom/lib/snapshots/createSnapshots.ts.html index 2c77a1309f0..ce86115b121 100644 --- a/coverage/roosterjs-editor-dom/lib/snapshots/createSnapshots.ts.html +++ b/coverage/roosterjs-editor-dom/lib/snapshots/createSnapshots.ts.html @@ -79,7 +79,7 @@

All files / roosterjs     1x -6749x +6974x       @@ -109,7 +109,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/snapshots/index.html b/coverage/roosterjs-editor-dom/lib/snapshots/index.html index 80b65857557..1338ae392e9 100644 --- a/coverage/roosterjs-editor-dom/lib/snapshots/index.html +++ b/coverage/roosterjs-editor-dom/lib/snapshots/index.html @@ -170,7 +170,7 @@

All files roosterjs-editor-dom/lib/snapsho diff --git a/coverage/roosterjs-editor-dom/lib/snapshots/moveCurrentSnapshot.ts.html b/coverage/roosterjs-editor-dom/lib/snapshots/moveCurrentSnapshot.ts.html index 31e640afe9c..b3a8d113d8d 100644 --- a/coverage/roosterjs-editor-dom/lib/snapshots/moveCurrentSnapshot.ts.html +++ b/coverage/roosterjs-editor-dom/lib/snapshots/moveCurrentSnapshot.ts.html @@ -145,7 +145,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/style/getStyles.ts.html b/coverage/roosterjs-editor-dom/lib/style/getStyles.ts.html index 86daa219c60..9460ceef841 100644 --- a/coverage/roosterjs-editor-dom/lib/style/getStyles.ts.html +++ b/coverage/roosterjs-editor-dom/lib/style/getStyles.ts.html @@ -79,17 +79,17 @@

All files / roosterjs     1x -1286x -1286x -1286x -1626x -1626x -1626x -1626x -446x +1281x +1281x +1281x +1612x +1612x +1612x +1612x +437x     -1286x +1281x    

/**
  * Get CSS styles of a given element in name-value pair format
@@ -115,7 +115,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/style/index.html b/coverage/roosterjs-editor-dom/lib/style/index.html index 653fcb655dd..8bb69ecbb6a 100644 --- a/coverage/roosterjs-editor-dom/lib/style/index.html +++ b/coverage/roosterjs-editor-dom/lib/style/index.html @@ -155,7 +155,7 @@

All files roosterjs-editor-dom/lib/style Code coverage generated by istanbul - at Tue Apr 16 2024 17:17:51 GMT+0000 (Coordinated Universal Time) + at Tue Apr 16 2024 17:40:39 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/roosterjs-editor-dom/lib/style/removeGlobalCssStyle.ts.html b/coverage/roosterjs-editor-dom/lib/style/removeGlobalCssStyle.ts.html index 293926f6acc..ac5d9057ea9 100644 --- a/coverage/roosterjs-editor-dom/lib/style/removeGlobalCssStyle.ts.html +++ b/coverage/roosterjs-editor-dom/lib/style/removeGlobalCssStyle.ts.html @@ -76,8 +76,8 @@

All files / roosterjs     1x -14319x -14319x +14939x +14939x 126x     @@ -100,7 +100,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/style/removeImportantStyleRule.ts.html b/coverage/roosterjs-editor-dom/lib/style/removeImportantStyleRule.ts.html index bf6e3fe4292..fbdd0379f66 100644 --- a/coverage/roosterjs-editor-dom/lib/style/removeImportantStyleRule.ts.html +++ b/coverage/roosterjs-editor-dom/lib/style/removeImportantStyleRule.ts.html @@ -133,7 +133,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/style/setGlobalCssStyles.ts.html b/coverage/roosterjs-editor-dom/lib/style/setGlobalCssStyles.ts.html index ec2b9f8eaba..bd3ffcf0310 100644 --- a/coverage/roosterjs-editor-dom/lib/style/setGlobalCssStyles.ts.html +++ b/coverage/roosterjs-editor-dom/lib/style/setGlobalCssStyles.ts.html @@ -118,7 +118,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/style/setStyles.ts.html b/coverage/roosterjs-editor-dom/lib/style/setStyles.ts.html index 16812abb5c8..2cd680f1e19 100644 --- a/coverage/roosterjs-editor-dom/lib/style/setStyles.ts.html +++ b/coverage/roosterjs-editor-dom/lib/style/setStyles.ts.html @@ -90,20 +90,20 @@

All files / roosterjs     1x -507x -506x +504x +503x   -233x -233x -233x -233x +232x +232x +232x +232x   -233x +232x   -506x -80x +503x +79x   -426x +424x       @@ -139,7 +139,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/table/VTable.ts.html b/coverage/roosterjs-editor-dom/lib/table/VTable.ts.html index dce4f623aaf..1d4a16c15de 100644 --- a/coverage/roosterjs-editor-dom/lib/table/VTable.ts.html +++ b/coverage/roosterjs-editor-dom/lib/table/VTable.ts.html @@ -23,30 +23,30 @@

All files / roosterjs -
+

-	
-	
+	
-	
-	
-	
-	
-	
-	
-	
-	
+	
+	
+	
+	
+	
+	
+	
+	
@@ -185,7 +185,7 @@ 

All files roosterjs-editor-dom/lib/table Code coverage generated by istanbul - at Tue Apr 16 2024 17:17:51 GMT+0000 (Coordinated Universal Time) + at Tue Apr 16 2024 17:40:39 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/roosterjs-editor-dom/lib/table/isWholeTableSelected.ts.html b/coverage/roosterjs-editor-dom/lib/table/isWholeTableSelected.ts.html index 2a2a140da28..17108969f3c 100644 --- a/coverage/roosterjs-editor-dom/lib/table/isWholeTableSelected.ts.html +++ b/coverage/roosterjs-editor-dom/lib/table/isWholeTableSelected.ts.html @@ -142,7 +142,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/table/pasteTable.ts.html b/coverage/roosterjs-editor-dom/lib/table/pasteTable.ts.html index f1a47ecba9d..3bcb93d94ec 100644 --- a/coverage/roosterjs-editor-dom/lib/table/pasteTable.ts.html +++ b/coverage/roosterjs-editor-dom/lib/table/pasteTable.ts.html @@ -253,7 +253,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/table/tableCellInfo.ts.html b/coverage/roosterjs-editor-dom/lib/table/tableCellInfo.ts.html index dfba67f197e..e59a5405d55 100644 --- a/coverage/roosterjs-editor-dom/lib/table/tableCellInfo.ts.html +++ b/coverage/roosterjs-editor-dom/lib/table/tableCellInfo.ts.html @@ -122,7 +122,7 @@

All files / roosterjs     1x -144x +168x       @@ -131,8 +131,8 @@

All files / roosterjs     1x -1x -1x +25x +25x      

- - - - - + + + + - - + + @@ -575,7 +575,7 @@

All files roosterjs-editor-dom/lib/utils Code coverage generated by istanbul - at Tue Apr 16 2024 17:17:51 GMT+0000 (Coordinated Universal Time) + at Tue Apr 16 2024 17:40:39 GMT+0000 (Coordinated Universal Time) diff --git a/coverage/roosterjs-editor-dom/lib/utils/isBlockElement.ts.html b/coverage/roosterjs-editor-dom/lib/utils/isBlockElement.ts.html index 322d81a6dec..e8ade49aca8 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/isBlockElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/isBlockElement.ts.html @@ -90,8 +90,8 @@

All files / roosterjs     1x -10218x -10218x +12090x +12090x       @@ -124,7 +124,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/isNodeAfter.ts.html b/coverage/roosterjs-editor-dom/lib/utils/isNodeAfter.ts.html index d7b51fbc844..685d890f9c9 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/isNodeAfter.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/isNodeAfter.ts.html @@ -82,7 +82,7 @@

All files / roosterjs     1x -2709x +3280x       @@ -112,7 +112,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/isNodeEmpty.ts.html b/coverage/roosterjs-editor-dom/lib/utils/isNodeEmpty.ts.html index ae800482a3e..85ea40e0b0b 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/isNodeEmpty.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/isNodeEmpty.ts.html @@ -120,30 +120,30 @@

All files / roosterjs       -87x +90x 2x -85x -20x -65x -65x -65x -65x +88x +21x +67x +67x +67x +67x     -65x +67x         -44x +46x     21x       -85x -85x +88x +88x    

- - - - - + + + + - - + + @@ -185,7 +185,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Cropper.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Cropper.ts.html index 13c1cb7da03..8ad2bb6e979 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Cropper.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Cropper.ts.html @@ -508,7 +508,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Resizer.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Resizer.ts.html index f85fd019cb7..07a2506a83f 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Resizer.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Resizer.ts.html @@ -790,7 +790,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Rotator.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Rotator.ts.html index c3425337bf6..fa2dccbbf8f 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Rotator.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Rotator.ts.html @@ -547,7 +547,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/index.html index ca7767d3e9f..afafe43ac0a 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/index.html @@ -125,7 +125,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.html index a8813b2fe47..4fef5ad0d74 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.html @@ -23,9 +23,9 @@

All files roosterjs-editor-plugins/lib/
- 90.1% + 89.44% Statements - 273/303 + 271/303
@@ -37,16 +37,16 @@

All files roosterjs-editor-plugins/lib/
- 82.98% + 78.72% Functions - 39/47 + 37/47
- 89.51% + 88.81% Lines - 256/286 + 254/286
@@ -74,17 +74,17 @@

All files roosterjs-editor-plugins/lib/

- - - + + - - - - + + + + @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.ts.html index ddca15ca37a..6c902567453 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/index.ts.html @@ -85,7 +85,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageResize/ImageResize.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageResize/ImageResize.ts.html index bca12de3985..bcbefe49fcf 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageResize/ImageResize.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageResize/ImageResize.ts.html @@ -202,7 +202,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageResize/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageResize/index.html index 90d291eb7aa..f6868add786 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageResize/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageResize/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageResize/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageResize/index.ts.html index 8b43a8681c3..0e82d821b1b 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageResize/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageResize/index.ts.html @@ -67,7 +67,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/Paste.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/Paste.ts.html index 09b9afe1628..303ca2373aa 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/Paste.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/Paste.ts.html @@ -244,15 +244,15 @@

All files / rooste     1x -55x -28x -14x +51x +26x +13x   -14x +13x     -2x -2x +1x +1x     5x @@ -280,18 +280,18 @@

All files / rooste 1x 1x   -14x -14x -14x +13x +13x +13x     -14x +13x     1x     -14x +13x       @@ -421,7 +421,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/convertPastedContentForLI.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/convertPastedContentForLI.ts.html index e0817a33db8..3ff0084a0a0 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/convertPastedContentForLI.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/convertPastedContentForLI.ts.html @@ -205,7 +205,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/index.html index 58e508fe7fe..91a61ede314 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/commonConverter/index.html @@ -95,7 +95,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/convertPastedContentFromExcel.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/convertPastedContentFromExcel.ts.html index c98ad88a1fa..564892244f8 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/convertPastedContentFromExcel.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/convertPastedContentFromExcel.ts.html @@ -268,7 +268,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/index.html index 923557c1ed2..eb76b416675 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/excelConverter/index.html @@ -95,7 +95,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/convertPasteContentForSingleImage.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/convertPasteContentForSingleImage.ts.html index a775d2e8e3d..b97f95653af 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/convertPasteContentForSingleImage.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/convertPasteContentForSingleImage.ts.html @@ -127,7 +127,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/index.html index f0a0fe5369b..8a3b41a2faf 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/imageConverter/index.html @@ -95,7 +95,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/index.html index 897dfe5f3a4..bc347e15226 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/index.ts.html index 710a805fd23..bae77b39f10 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/index.ts.html @@ -67,7 +67,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/handleLineMerge.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/handleLineMerge.ts.html index e814b11b2e2..39382740902 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/handleLineMerge.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/handleLineMerge.ts.html @@ -367,7 +367,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/index.html index fc7d2e2a6bd..535b4d99eaa 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/index.html @@ -95,7 +95,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/ListItemBlock.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/ListItemBlock.ts.html index fe6ed895d74..2e4d24cd6f3 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/ListItemBlock.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/ListItemBlock.ts.html @@ -178,7 +178,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromOfficeOnline.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromOfficeOnline.ts.html index c0f585c8916..c7480a863f5 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromOfficeOnline.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromOfficeOnline.ts.html @@ -223,7 +223,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromWordOnline.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromWordOnline.ts.html index 0330ca2350c..71dac712f5a 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromWordOnline.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromWordOnline.ts.html @@ -1183,7 +1183,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/index.html index 3fbfe13e6d0..a4481a1a77e 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/index.html @@ -125,7 +125,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/convertPastedContentFromPowerPoint.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/convertPastedContentFromPowerPoint.ts.html index 3eb7ffcaa92..e1c2815d036 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/convertPastedContentFromPowerPoint.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/convertPastedContentFromPowerPoint.ts.html @@ -139,7 +139,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/index.html index 5346f8a1212..9b49d9193a5 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/index.html @@ -95,7 +95,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/deprecatedColorList.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/deprecatedColorList.ts.html index a81b4bbf8b3..b0cfd11b9a6 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/deprecatedColorList.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/deprecatedColorList.ts.html @@ -154,7 +154,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/index.html index 28869734730..dcf9866eaac 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent.ts.html index 4d4c458b47b..fcd9c2a5068 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent.ts.html @@ -89,8 +89,8 @@

All files / roo 1x     -11x -22x +10x +20x     19x @@ -124,7 +124,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/index.html index a86282ae3d0..de74d84fa7a 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/index.html @@ -95,7 +95,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/sanitizeLinks.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/sanitizeLinks.ts.html index 1bfea7032ce..70bb9c02de8 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/sanitizeLinks.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeLinks/sanitizeLinks.ts.html @@ -101,7 +101,7 @@

All files / roo     1x -20x +19x     6x @@ -163,7 +163,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/LevelLists.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/LevelLists.ts.html index 1855a0ddd76..584797a837d 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/LevelLists.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/LevelLists.ts.html @@ -106,7 +106,7 @@

All files / roo     1x -15x +14x       @@ -145,7 +145,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordConverterArguments.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordConverterArguments.ts.html index db1d69b766d..cbebd4b6e03 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordConverterArguments.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordConverterArguments.ts.html @@ -162,7 +162,7 @@

All files / roo 1x     -12x +11x       @@ -235,7 +235,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordCustomData.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordCustomData.ts.html index 10e070ec479..233e21cb523 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordCustomData.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/WordCustomData.ts.html @@ -153,7 +153,7 @@

All files / roo     1x -23x +22x       @@ -286,7 +286,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/commentsRemoval.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/commentsRemoval.ts.html index 18703d0aae7..1f244a3ffb2 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/commentsRemoval.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/commentsRemoval.ts.html @@ -194,7 +194,7 @@

All files / roo       -20x +19x 6x 6x 1x @@ -209,7 +209,7 @@

All files / roo       -20x +19x 3x     @@ -231,7 +231,7 @@

All files / roo       -20x +19x 3x 3x 1x @@ -243,13 +243,13 @@

All files / roo       -20x +19x           -100x +95x    

- - - + + - - - - + + + + @@ -185,7 +185,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/wordConverter.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/wordConverter.ts.html index 6d0abc89a74..11bf1d56a51 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/wordConverter.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/wordConverter.ts.html @@ -125,7 +125,7 @@

All files / roo     1x -20x +19x       @@ -178,7 +178,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Picker/PickerPlugin.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Picker/PickerPlugin.ts.html index 5cdfa0f3282..1d48e2ae73c 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Picker/PickerPlugin.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Picker/PickerPlugin.ts.html @@ -1921,7 +1921,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Picker/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Picker/index.html index 3fc9f07e579..e73b3afa2f8 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Picker/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Picker/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Picker/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Picker/index.ts.html index 6f78cca7761..f270134cb2f 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Picker/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Picker/index.ts.html @@ -67,7 +67,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/TableCellSelection.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/TableCellSelection.ts.html index 4a5ecbd21d0..f812ade92ad 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/TableCellSelection.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/TableCellSelection.ts.html @@ -352,7 +352,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/constants.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/constants.ts.html index ddd0baefd07..77497f34dd7 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/constants.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/constants.ts.html @@ -79,7 +79,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/DeleteTableContents.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/DeleteTableContents.ts.html index 863f6ee398c..af60f1655e5 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/DeleteTableContents.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/DeleteTableContents.ts.html @@ -187,7 +187,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/index.html index a0f03f9676a..5b72628c304 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/features/index.html @@ -95,7 +95,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.html index 47605f1aa01..f6054983510 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.html @@ -125,7 +125,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.ts.html index 7a4e32e2f83..fd224301c82 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/index.ts.html @@ -67,7 +67,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyDownEvent.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyDownEvent.ts.html index 412b70a38b9..f4855e86aed 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyDownEvent.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyDownEvent.ts.html @@ -739,7 +739,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyUpEvent.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyUpEvent.ts.html index 31388d486c3..248143c3350 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyUpEvent.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/handleKeyUpEvent.ts.html @@ -175,7 +175,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/index.html index 0191ffdffb0..f5d51143ee8 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/keyUtils/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleMouseDownEvent.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleMouseDownEvent.ts.html index c20c8f0ef10..f6025a77cae 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleMouseDownEvent.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleMouseDownEvent.ts.html @@ -850,7 +850,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleScrollEvent.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleScrollEvent.ts.html index 0aa687617eb..3407919fcbe 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleScrollEvent.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/handleScrollEvent.ts.html @@ -175,7 +175,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/index.html index fd5aa7cb87f..876f40cac79 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/mouseUtils/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/clearState.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/clearState.ts.html index 114c77a6fcf..af3c054895c 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/clearState.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/clearState.ts.html @@ -121,7 +121,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellAtCursor.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellAtCursor.ts.html index 49b8fcc695e..ea45e39549c 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellAtCursor.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellAtCursor.ts.html @@ -112,7 +112,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellCoordinates.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellCoordinates.ts.html index c38c551652b..d194726b2ad 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellCoordinates.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getCellCoordinates.ts.html @@ -142,7 +142,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getTableAtCursor.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getTableAtCursor.ts.html index 188331caf78..c596de6f5ad 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getTableAtCursor.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/getTableAtCursor.ts.html @@ -109,7 +109,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/index.html index 9e97cccc5e8..75e0198d867 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/index.html @@ -245,7 +245,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/isAfter.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/isAfter.ts.html index c2c4caf10e6..4091f16d953 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/isAfter.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/isAfter.ts.html @@ -130,7 +130,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/normalizeTableSelection.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/normalizeTableSelection.ts.html index e4ae968e3c6..2b0802ec7f4 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/normalizeTableSelection.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/normalizeTableSelection.ts.html @@ -214,7 +214,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/prepareSelection.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/prepareSelection.ts.html index a6d4f3fdec0..ce95e901bf8 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/prepareSelection.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/prepareSelection.ts.html @@ -271,7 +271,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/restoreSelection.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/restoreSelection.ts.html index b9339a0cb27..b72c653c7ee 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/restoreSelection.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/restoreSelection.ts.html @@ -181,7 +181,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/selectTable.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/selectTable.ts.html index fc456931970..cb14ace9f2a 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/selectTable.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/selectTable.ts.html @@ -100,7 +100,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/setData.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/setData.ts.html index e506c0a3488..c0e98c74c7a 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/setData.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/setData.ts.html @@ -142,7 +142,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/updateSelection.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/updateSelection.ts.html index 69cfb542ae3..ba77893d32e 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/updateSelection.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/updateSelection.ts.html @@ -130,7 +130,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/TableResize.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/TableResize.ts.html index 28a57e5e034..26b73249a3e 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/TableResize.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/TableResize.ts.html @@ -625,7 +625,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/CellResizer.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/CellResizer.ts.html index b1299695193..1a198fb13fa 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/CellResizer.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/CellResizer.ts.html @@ -793,7 +793,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditor.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditor.ts.html index b9cb19721c6..fc9d6df593f 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditor.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditor.ts.html @@ -1306,7 +1306,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditorFeature.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditorFeature.ts.html index 47875c6dae1..b8d6cf76c57 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditorFeature.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableEditorFeature.ts.html @@ -130,7 +130,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableInserter.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableInserter.ts.html index 900bf49d287..f5a6cdbf7c8 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableInserter.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableInserter.ts.html @@ -559,7 +559,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableResizer.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableResizer.ts.html index 54de99bc88b..263da542357 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableResizer.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableResizer.ts.html @@ -715,7 +715,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableSelector.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableSelector.ts.html index 52f5cdda9cd..1ec7ec324a7 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableSelector.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/TableSelector.ts.html @@ -505,7 +505,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/index.html index e184e0e4323..340cb1b6d51 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/editors/index.html @@ -170,7 +170,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/index.html index 58399d84347..3ff84836323 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/index.ts.html index 30582be23b5..cc232fc3bf3 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/TableResize/index.ts.html @@ -67,7 +67,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Watermark/Watermark.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Watermark/Watermark.ts.html index 9053b6b137b..098cdafd3b4 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Watermark/Watermark.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Watermark/Watermark.ts.html @@ -544,7 +544,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Watermark/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Watermark/index.html index f4a5363c1ea..d54619317f4 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Watermark/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Watermark/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Watermark/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Watermark/index.ts.html index 8b0bf69cfcb..8096b396563 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Watermark/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Watermark/index.ts.html @@ -67,7 +67,7 @@

All files / rooste diff --git a/coverage/roosterjs/lib/createEditor.ts.html b/coverage/roosterjs/lib/createEditor.ts.html index 23639884f55..4fd685d3c03 100644 --- a/coverage/roosterjs/lib/createEditor.ts.html +++ b/coverage/roosterjs/lib/createEditor.ts.html @@ -184,7 +184,7 @@

All files / roosterjs/li diff --git a/coverage/roosterjs/lib/index.html b/coverage/roosterjs/lib/index.html index 047928a2614..49843fe968b 100644 --- a/coverage/roosterjs/lib/index.html +++ b/coverage/roosterjs/lib/index.html @@ -110,7 +110,7 @@

All files roosterjs/lib

diff --git a/coverage/roosterjs/lib/index.ts.html b/coverage/roosterjs/lib/index.ts.html index 0dcddd7dea6..fbe6c592013 100644 --- a/coverage/roosterjs/lib/index.ts.html +++ b/coverage/roosterjs/lib/index.ts.html @@ -85,7 +85,7 @@

All files / roosterjs/li diff --git a/demo.js b/demo.js index fb23ebe65cd..7c9dafd3c92 100644 --- a/demo.js +++ b/demo.js @@ -1,3 +1,3 @@ /*! For license information please see demo.js.LICENSE.txt */ -(()=>{var e={598:(e,t,r)=>{var n=r(4864),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(6765),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(5937),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(3289),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(9157),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(3983),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(5895),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(9432),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(1777),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(6312),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(406),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(3972),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(9638),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(1024),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(5237),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(470),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(90),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(1492),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(6632),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(3370),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(8304),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(6305),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(6246),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(9534),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(6554),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(2006),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(8740),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(2113),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(3164),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(6457),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(7154),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(1862),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(516),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(3992),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(6972),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(3836),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(8696),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(3449),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(2754),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(7372),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(7683),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(8289),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(430),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(8095),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(540),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(1757),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(7200),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(8263),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a{var n=r(8358),o=r(3117);"string"==typeof n&&(n=[[e.id,n]]);for(var a=0;a0&&m(t)}))}function m(e,t){l.loadStyles?l.loadStyles(g(e).styleString,e):function(e){if("undefined"!=typeof document){var t=document.getElementsByTagName("head")[0],r=document.createElement("style"),n=g(e),o=n.styleString,a=n.themable;r.setAttribute("data-load-themed-styles","true"),i&&r.setAttribute("nonce",i),r.appendChild(document.createTextNode(o)),l.perf.count++,t.appendChild(r);var s=document.createEvent("HTMLEvents");s.initEvent("styleinsert",!0,!1),s.args={newStyle:r},document.dispatchEvent(s);var u={styleElement:r,themableStyle:e};a?l.registeredThemableStyles.push(u):l.registeredStyles.push(u)}}(e)}function f(e){void 0===e&&(e=3),3!==e&&2!==e||(p(l.registeredStyles),l.registeredStyles=[]),3!==e&&1!==e||(p(l.registeredThemableStyles),l.registeredThemableStyles=[])}function p(e){e.forEach((function(e){var t=e&&e.styleElement;t&&t.parentElement&&t.parentElement.removeChild(t)}))}function g(e){var t=l.theme,r=!1;return{styleString:(e||[]).map((function(e){var n=e.theme;if(n){r=!0;var o=t?t[n]:void 0,a=e.defaultValue||"inherit";return t&&!o&&console&&!(n in t)&&"undefined"!=typeof DEBUG&&DEBUG&&console.warn('Theming value not provided for "'+n+'". Falling back to "'+a+'".'),o||a}return e.rawString})).join(""),themable:r}}function h(e){var t=[];if(e){for(var r=0,n=void 0;n=s.exec(e);){var o=n.index;o>r&&t.push({rawString:e.substring(r,o)}),t.push({theme:n[1],defaultValue:n[2]}),r=s.lastIndex}t.push({rawString:e.substring(r)})}return t}t.loadStyles=function(e,t){void 0===t&&(t=!1),c((function(){var r=Array.isArray(e)?e:h(e),n=l.runState,o=n.mode,a=n.buffer,i=n.flushTimer;t||1===o?(a.push(r),i||(l.runState.flushTimer=setTimeout((function(){l.runState.flushTimer=0,d()}),0))):m(r)}))},t.configureLoadStyles=function(e){l.loadStyles=e},t.configureRunMode=function(e){l.runState.mode=e},t.flush=d,t.loadTheme=function(e){l.theme=e,function(){if(l.theme){for(var e=[],t=0,r=l.registeredThemableStyles;t0&&(f(1),m([].concat.apply([],e)))}}()},t.clearStyles=f,t.detokenize=function(e){return e&&(e=g(h(e)).styleString),e},t.splitStyles=h},8168:(e,t,r)=>{var n=r(8874),o={};for(var a in n)n.hasOwnProperty(a)&&(o[n[a]]=a);var i=e.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var l in i)if(i.hasOwnProperty(l)){if(!("channels"in i[l]))throw new Error("missing channels property: "+l);if(!("labels"in i[l]))throw new Error("missing channel labels property: "+l);if(i[l].labels.length!==i[l].channels)throw new Error("channel and label counts mismatch: "+l);var s=i[l].channels,u=i[l].labels;delete i[l].channels,delete i[l].labels,Object.defineProperty(i[l],"channels",{value:s}),Object.defineProperty(i[l],"labels",{value:u})}i.rgb.hsl=function(e){var t,r,n=e[0]/255,o=e[1]/255,a=e[2]/255,i=Math.min(n,o,a),l=Math.max(n,o,a),s=l-i;return l===i?t=0:n===l?t=(o-a)/s:o===l?t=2+(a-n)/s:a===l&&(t=4+(n-o)/s),(t=Math.min(60*t,360))<0&&(t+=360),r=(i+l)/2,[t,100*(l===i?0:r<=.5?s/(l+i):s/(2-l-i)),100*r]},i.rgb.hsv=function(e){var t,r,n,o,a,i=e[0]/255,l=e[1]/255,s=e[2]/255,u=Math.max(i,l,s),c=u-Math.min(i,l,s),d=function(e){return(u-e)/6/c+.5};return 0===c?o=a=0:(a=c/u,t=d(i),r=d(l),n=d(s),i===u?o=n-r:l===u?o=1/3+t-n:s===u&&(o=2/3+r-t),o<0?o+=1:o>1&&(o-=1)),[360*o,100*a,100*u]},i.rgb.hwb=function(e){var t=e[0],r=e[1],n=e[2];return[i.rgb.hsl(e)[0],1/255*Math.min(t,Math.min(r,n))*100,100*(n=1-1/255*Math.max(t,Math.max(r,n)))]},i.rgb.cmyk=function(e){var t,r=e[0]/255,n=e[1]/255,o=e[2]/255;return[100*((1-r-(t=Math.min(1-r,1-n,1-o)))/(1-t)||0),100*((1-n-t)/(1-t)||0),100*((1-o-t)/(1-t)||0),100*t]},i.rgb.keyword=function(e){var t=o[e];if(t)return t;var r,a,i,l=1/0;for(var s in n)if(n.hasOwnProperty(s)){var u=(a=e,i=n[s],Math.pow(a[0]-i[0],2)+Math.pow(a[1]-i[1],2)+Math.pow(a[2]-i[2],2));u.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)+.1805*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*t+.7152*r+.0722*n),100*(.0193*t+.1192*r+.9505*n)]},i.rgb.lab=function(e){var t=i.rgb.xyz(e),r=t[0],n=t[1],o=t[2];return n/=100,o/=108.883,r=(r/=95.047)>.008856?Math.pow(r,1/3):7.787*r+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(r-n),200*(n-(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116))]},i.hsl.rgb=function(e){var t,r,n,o,a,i=e[0]/360,l=e[1]/100,s=e[2]/100;if(0===l)return[a=255*s,a,a];t=2*s-(r=s<.5?s*(1+l):s+l-s*l),o=[0,0,0];for(var u=0;u<3;u++)(n=i+1/3*-(u-1))<0&&n++,n>1&&n--,a=6*n<1?t+6*(r-t)*n:2*n<1?r:3*n<2?t+(r-t)*(2/3-n)*6:t,o[u]=255*a;return o},i.hsl.hsv=function(e){var t=e[0],r=e[1]/100,n=e[2]/100,o=r,a=Math.max(n,.01);return r*=(n*=2)<=1?n:2-n,o*=a<=1?a:2-a,[t,100*(0===n?2*o/(a+o):2*r/(n+r)),(n+r)/2*100]},i.hsv.rgb=function(e){var t=e[0]/60,r=e[1]/100,n=e[2]/100,o=Math.floor(t)%6,a=t-Math.floor(t),i=255*n*(1-r),l=255*n*(1-r*a),s=255*n*(1-r*(1-a));switch(n*=255,o){case 0:return[n,s,i];case 1:return[l,n,i];case 2:return[i,n,s];case 3:return[i,l,n];case 4:return[s,i,n];case 5:return[n,i,l]}},i.hsv.hsl=function(e){var t,r,n,o=e[0],a=e[1]/100,i=e[2]/100,l=Math.max(i,.01);return n=(2-a)*i,r=a*l,[o,100*(r=(r/=(t=(2-a)*l)<=1?t:2-t)||0),100*(n/=2)]},i.hwb.rgb=function(e){var t,r,n,o,a,i,l,s=e[0]/360,u=e[1]/100,c=e[2]/100,d=u+c;switch(d>1&&(u/=d,c/=d),n=6*s-(t=Math.floor(6*s)),0!=(1&t)&&(n=1-n),o=u+n*((r=1-c)-u),t){default:case 6:case 0:a=r,i=o,l=u;break;case 1:a=o,i=r,l=u;break;case 2:a=u,i=r,l=o;break;case 3:a=u,i=o,l=r;break;case 4:a=o,i=u,l=r;break;case 5:a=r,i=u,l=o}return[255*a,255*i,255*l]},i.cmyk.rgb=function(e){var t=e[0]/100,r=e[1]/100,n=e[2]/100,o=e[3]/100;return[255*(1-Math.min(1,t*(1-o)+o)),255*(1-Math.min(1,r*(1-o)+o)),255*(1-Math.min(1,n*(1-o)+o))]},i.xyz.rgb=function(e){var t,r,n,o=e[0]/100,a=e[1]/100,i=e[2]/100;return r=-.9689*o+1.8758*a+.0415*i,n=.0557*o+-.204*a+1.057*i,t=(t=3.2406*o+-1.5372*a+-.4986*i)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,[255*(t=Math.min(Math.max(0,t),1)),255*(r=Math.min(Math.max(0,r),1)),255*(n=Math.min(Math.max(0,n),1))]},i.xyz.lab=function(e){var t=e[0],r=e[1],n=e[2];return r/=100,n/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(t-r),200*(r-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]},i.lab.xyz=function(e){var t,r,n,o=e[0];t=e[1]/500+(r=(o+16)/116),n=r-e[2]/200;var a=Math.pow(r,3),i=Math.pow(t,3),l=Math.pow(n,3);return r=a>.008856?a:(r-16/116)/7.787,t=i>.008856?i:(t-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,[t*=95.047,r*=100,n*=108.883]},i.lab.lch=function(e){var t,r=e[0],n=e[1],o=e[2];return(t=360*Math.atan2(o,n)/2/Math.PI)<0&&(t+=360),[r,Math.sqrt(n*n+o*o),t]},i.lch.lab=function(e){var t,r=e[0],n=e[1];return t=e[2]/360*2*Math.PI,[r,n*Math.cos(t),n*Math.sin(t)]},i.rgb.ansi16=function(e){var t=e[0],r=e[1],n=e[2],o=1 in arguments?arguments[1]:i.rgb.hsv(e)[2];if(0===(o=Math.round(o/50)))return 30;var a=30+(Math.round(n/255)<<2|Math.round(r/255)<<1|Math.round(t/255));return 2===o&&(a+=60),a},i.hsv.ansi16=function(e){return i.rgb.ansi16(i.hsv.rgb(e),e[2])},i.rgb.ansi256=function(e){var t=e[0],r=e[1],n=e[2];return t===r&&r===n?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},i.ansi16.rgb=function(e){var t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),[t=t/10.5*255,t,t];var r=.5*(1+~~(e>50));return[(1&t)*r*255,(t>>1&1)*r*255,(t>>2&1)*r*255]},i.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var r;return e-=16,[Math.floor(e/36)/5*255,Math.floor((r=e%36)/6)/5*255,r%6/5*255]},i.rgb.hex=function(e){var t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},i.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var r=t[0];3===t[0].length&&(r=r.split("").map((function(e){return e+e})).join(""));var n=parseInt(r,16);return[n>>16&255,n>>8&255,255&n]},i.rgb.hcg=function(e){var t,r=e[0]/255,n=e[1]/255,o=e[2]/255,a=Math.max(Math.max(r,n),o),i=Math.min(Math.min(r,n),o),l=a-i;return t=l<=0?0:a===r?(n-o)/l%6:a===n?2+(o-r)/l:4+(r-n)/l+4,t/=6,[360*(t%=1),100*l,100*(l<1?i/(1-l):0)]},i.hsl.hcg=function(e){var t,r=e[1]/100,n=e[2]/100,o=0;return(t=n<.5?2*r*n:2*r*(1-n))<1&&(o=(n-.5*t)/(1-t)),[e[0],100*t,100*o]},i.hsv.hcg=function(e){var t=e[1]/100,r=e[2]/100,n=t*r,o=0;return n<1&&(o=(r-n)/(1-n)),[e[0],100*n,100*o]},i.hcg.rgb=function(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100;if(0===r)return[255*n,255*n,255*n];var o,a=[0,0,0],i=t%1*6,l=i%1,s=1-l;switch(Math.floor(i)){case 0:a[0]=1,a[1]=l,a[2]=0;break;case 1:a[0]=s,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=l;break;case 3:a[0]=0,a[1]=s,a[2]=1;break;case 4:a[0]=l,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=s}return o=(1-r)*n,[255*(r*a[0]+o),255*(r*a[1]+o),255*(r*a[2]+o)]},i.hcg.hsv=function(e){var t=e[1]/100,r=t+e[2]/100*(1-t),n=0;return r>0&&(n=t/r),[e[0],100*n,100*r]},i.hcg.hsl=function(e){var t=e[1]/100,r=e[2]/100*(1-t)+.5*t,n=0;return r>0&&r<.5?n=t/(2*r):r>=.5&&r<1&&(n=t/(2*(1-r))),[e[0],100*n,100*r]},i.hcg.hwb=function(e){var t=e[1]/100,r=t+e[2]/100*(1-t);return[e[0],100*(r-t),100*(1-r)]},i.hwb.hcg=function(e){var t=e[1]/100,r=1-e[2]/100,n=r-t,o=0;return n<1&&(o=(r-n)/(1-n)),[e[0],100*n,100*o]},i.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},i.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},i.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},i.gray.hsl=i.gray.hsv=function(e){return[0,0,e[0]]},i.gray.hwb=function(e){return[0,100,e[0]]},i.gray.cmyk=function(e){return[0,0,0,e[0]]},i.gray.lab=function(e){return[e[0],0,0]},i.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),r=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(r.length)+r},i.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},2085:(e,t,r)=>{var n=r(8168),o=r(4111),a={};Object.keys(n).forEach((function(e){a[e]={},Object.defineProperty(a[e],"channels",{value:n[e].channels}),Object.defineProperty(a[e],"labels",{value:n[e].labels});var t=o(e);Object.keys(t).forEach((function(r){var n=t[r];a[e][r]=function(e){var t=function(t){if(null==t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var r=e(t);if("object"==typeof r)for(var n=r.length,o=0;o1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(n)}))})),e.exports=a},4111:(e,t,r)=>{var n=r(8168);function o(e,t){return function(r){return t(e(r))}}function a(e,t){for(var r=[t[e].parent,e],a=n[t[e].parent][e],i=t[e].parent;t[i].parent;)r.unshift(t[i].parent),a=o(n[t[i].parent][i],a),i=t[i].parent;return a.conversion=r,a}e.exports=function(e){for(var t=function(e){var t=function(){for(var e={},t=Object.keys(n),r=t.length,o=0;o{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},9818:(e,t,r)=>{var n=r(8874),o=r(6851),a={};for(var i in n)n.hasOwnProperty(i)&&(a[n[i]]=i);var l=e.exports={to:{},get:{}};function s(e,t,r){return Math.min(Math.max(t,e),r)}function u(e){var t=e.toString(16).toUpperCase();return t.length<2?"0"+t:t}l.get=function(e){var t,r;switch(e.substring(0,3).toLowerCase()){case"hsl":t=l.get.hsl(e),r="hsl";break;case"hwb":t=l.get.hwb(e),r="hwb";break;default:t=l.get.rgb(e),r="rgb"}return t?{model:r,value:t}:null},l.get.rgb=function(e){if(!e)return null;var t,r,o,a=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(o=t[2],t=t[1],r=0;r<3;r++){var i=2*r;a[r]=parseInt(t.slice(i,i+2),16)}o&&(a[3]=parseInt(o,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(o=(t=t[1])[3],r=0;r<3;r++)a[r]=parseInt(t[r]+t[r],16);o&&(a[3]=parseInt(o+o,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/)){for(r=0;r<3;r++)a[r]=parseInt(t[r+1],0);t[4]&&(a[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/)))return(t=e.match(/(\D+)/))?"transparent"===t[1]?[0,0,0,0]:(a=n[t[1]])?(a[3]=1,a):null:null;for(r=0;r<3;r++)a[r]=Math.round(2.55*parseFloat(t[r+1]));t[4]&&(a[3]=parseFloat(t[4]))}for(r=0;r<3;r++)a[r]=s(a[r],0,255);return a[3]=s(a[3],0,1),a},l.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/);if(t){var r=parseFloat(t[4]);return[(parseFloat(t[1])+360)%360,s(parseFloat(t[2]),0,100),s(parseFloat(t[3]),0,100),s(isNaN(r)?1:r,0,1)]}return null},l.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/);if(t){var r=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,s(parseFloat(t[2]),0,100),s(parseFloat(t[3]),0,100),s(isNaN(r)?1:r,0,1)]}return null},l.to.hex=function(){var e=o(arguments);return"#"+u(e[0])+u(e[1])+u(e[2])+(e[3]<1?u(Math.round(255*e[3])):"")},l.to.rgb=function(){var e=o(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},l.to.rgb.percent=function(){var e=o(arguments),t=Math.round(e[0]/255*100),r=Math.round(e[1]/255*100),n=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+r+"%, "+n+"%)":"rgba("+t+"%, "+r+"%, "+n+"%, "+e[3]+")"},l.to.hsl=function(){var e=o(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},l.to.hwb=function(){var e=o(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},l.to.keyword=function(e){return a[e.slice(0,3)]}},6767:(e,t,r)=>{"use strict";var n=r(9818),o=r(2085),a=[].slice,i=["keyword","gray","hex"],l={};Object.keys(o).forEach((function(e){l[a.call(o[e].labels).sort().join("")]=e}));var s={};function u(e,t){if(!(this instanceof u))return new u(e,t);if(t&&t in i&&(t=null),t&&!(t in o))throw new Error("Unknown model: "+t);var r,c;if(null==e)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof u)this.model=e.model,this.color=e.color.slice(),this.valpha=e.valpha;else if("string"==typeof e){var d=n.get(e);if(null===d)throw new Error("Unable to parse color from string: "+e);this.model=d.model,c=o[this.model].channels,this.color=d.value.slice(0,c),this.valpha="number"==typeof d.value[c]?d.value[c]:1}else if(e.length){this.model=t||"rgb",c=o[this.model].channels;var f=a.call(e,0,c);this.color=m(f,c),this.valpha="number"==typeof e[c]?e[c]:1}else if("number"==typeof e)e&=16777215,this.model="rgb",this.color=[e>>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;var p=Object.keys(e);"alpha"in e&&(p.splice(p.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);var g=p.sort().join("");if(!(g in l))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=l[g];var h=o[this.model].labels,b=[];for(r=0;rr?(t+.05)/(r+.05):(r+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color;return(299*e[0]+587*e[1]+114*e[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return u.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),r=t.color[0];return r=(r=(r+e)%360)<0?360+r:r,t.color[0]=r,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var r=e.rgb(),n=this.rgb(),o=void 0===t?.5:t,a=2*o-1,i=r.alpha()-n.alpha(),l=((a*i==-1?a:(a+i)/(1+a*i))+1)/2,s=1-l;return u.rgb(l*r.red()+s*n.red(),l*r.green()+s*n.green(),l*r.blue()+s*n.blue(),r.alpha()*o+n.alpha()*(1-o))}},Object.keys(o).forEach((function(e){if(-1===i.indexOf(e)){var t=o[e].channels;u.prototype[e]=function(){if(this.model===e)return new u(this);if(arguments.length)return new u(arguments,e);var r,n="number"==typeof arguments[t]?t:this.valpha;return new u((r=o[this.model][e].raw(this.color),Array.isArray(r)?r:[r]).concat(n),e)},u[e]=function(r){return"number"==typeof r&&(r=m(a.call(arguments),t)),new u(r,e)}}})),e.exports=u},4864:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,'@media(prefers-color-scheme: dark){button{background-color:#0091a1;color:#aaf7ff;border:solid 1px #007b8b}select,input,textarea{background-color:#333;color:#aaf7ff;border:solid 1px #007b8b}}._2bo1k8lHl_uV-BG6znDJAB{display:flex;flex-direction:column;width:100%;height:100%}._2w6Qajx0rNoAfiZ90ELvWi{flex:0 0 auto;overflow-x:hidden}.Wu-w1vnX5xXDlokHB7qep{flex:1 1 auto;position:relative;display:flex}._1QRxv0rbFhdjIh9rjvd2w4{width:"100%";min-width:200px;flex-grow:1;flex-shrink:1;position:relative}@media(prefers-color-scheme: dark){._1QRxv0rbFhdjIh9rjvd2w4 a:link,._1QRxv0rbFhdjIh9rjvd2w4 a:visited{color:#ba7cff}}._3a-q_waO25gsrEedKcbvzq{border:solid 1px #0bc;overflow:auto;padding:10px;outline:none;position:absolute;left:0;top:0;right:0;bottom:0}._2fUtCc9nx7qZAmJvSYE2Ij{flex-grow:0;flex-shrink:0;width:6px;cursor:col-resize}._2fUtCc9nx7qZAmJvSYE2Ij:hover{background-color:#ccc}._2ksqVkP0P8VOnkTSDwC9gZ{flex-grow:0;flex-shrink:0;width:30px;cursor:hand;white-space:nowrap}._2ksqVkP0P8VOnkTSDwC9gZ div{transform:rotate(-90deg)}._2ksqVkP0P8VOnkTSDwC9gZ:hover{background-color:#ccc}.p_p04H6Z22MyE14zIJ1QR{min-width:340px;flex-shrink:0;flex-grow:0;width:300px}.p_p04H6Z22MyE14zIJ1QR._3aTZ87z1JhQNydo6VrKJpL{width:100%}@media(prefers-color-scheme: dark){._3a-q_waO25gsrEedKcbvzq{border:solid 1px #007b8b}}',""]),t.locals={mainPane:"_2bo1k8lHl_uV-BG6znDJAB",noGrow:"_2w6Qajx0rNoAfiZ90ELvWi",body:"Wu-w1vnX5xXDlokHB7qep",editorContainer:"_1QRxv0rbFhdjIh9rjvd2w4",editor:"_3a-q_waO25gsrEedKcbvzq",resizer:"_2fUtCc9nx7qZAmJvSYE2Ij",showSidePane:"_2ksqVkP0P8VOnkTSDwC9gZ",sidePane:"p_p04H6Z22MyE14zIJ1QR",sidePaneFullWidth:"_3aTZ87z1JhQNydo6VrKJpL"},e.exports=t},6765:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,".zzrG7QTYWevpNEutHRteL{border:solid 1px #000;position:relative;width:100%;height:250px}.zzrG7QTYWevpNEutHRteL ._2oyU282TgFscZ5UHgcUmdp{position:absolute;top:5px;left:5px;right:60px;bottom:25px}.zzrG7QTYWevpNEutHRteL ._2oyU282TgFscZ5UHgcUmdp .tACuk57Dyi-G8vSeWqr1J{width:100%;height:100%;background:linear-gradient(to right, white, rgba(255, 255, 255, 0))}.zzrG7QTYWevpNEutHRteL ._2oyU282TgFscZ5UHgcUmdp ._2spr_UnliyPKejcb4aR4VA{width:100%;height:100%;background:linear-gradient(to top, black, rgba(0, 0, 0, 0))}.zzrG7QTYWevpNEutHRteL ._2oyU282TgFscZ5UHgcUmdp .w4z5tFrATWvV5ruSLWsJp{position:absolute}.zzrG7QTYWevpNEutHRteL ._2oyU282TgFscZ5UHgcUmdp .w4z5tFrATWvV5ruSLWsJp div{position:absolute;box-sizing:border-box;left:-6px;top:-6px;width:12px;height:12px;border:solid 2px #000;border-radius:50%}.zzrG7QTYWevpNEutHRteL .dtqPj9iGhxveR4Am-elmu{position:absolute;top:5px;width:50px;right:5px;bottom:50%}.zzrG7QTYWevpNEutHRteL ._3eWedriXwotOrDVbydtjbM{position:absolute;top:50%;width:50px;right:5px;bottom:5px}.zzrG7QTYWevpNEutHRteL ._3MccxpeP-m7bKvTxQer9Ky{position:absolute;left:5px;right:60px;bottom:5px;height:15px;background:linear-gradient(to right, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%)}.zzrG7QTYWevpNEutHRteL ._3MccxpeP-m7bKvTxQer9Ky .w4z5tFrATWvV5ruSLWsJp{position:absolute;height:100%}.zzrG7QTYWevpNEutHRteL ._3MccxpeP-m7bKvTxQer9Ky .w4z5tFrATWvV5ruSLWsJp div{position:absolute;box-sizing:border-box;left:-4px;width:8px;top:-2px;bottom:-2px;border:solid 2px #000;border-radius:20%}",""]),t.locals={container:"zzrG7QTYWevpNEutHRteL",picker:"_2oyU282TgFscZ5UHgcUmdp",layer1:"tACuk57Dyi-G8vSeWqr1J",layer2:"_2spr_UnliyPKejcb4aR4VA",currentColor:"w4z5tFrATWvV5ruSLWsJp",newColor:"dtqPj9iGhxveR4Am-elmu",initColor:"_3eWedriXwotOrDVbydtjbM",hueBar:"_3MccxpeP-m7bKvTxQer9Ky"},e.exports=t},5937:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,'@media(prefers-color-scheme: dark){button{background-color:#0091a1;color:#aaf7ff;border:solid 1px #007b8b}select,input,textarea{background-color:#333;color:#aaf7ff;border:solid 1px #007b8b}}._1PlpDVxjlx0PpeYJornEhO{display:flex;flex-direction:column;overflow:auto hidden;border:solid 1px #0bc}.bUl77zUyQ8rsLeCWewoHf{font-family:"Tahoma";font-size:12pt;font-weight:bold;background-color:#09a;color:#fff;padding:2px;border:solid 1px #fff;cursor:pointer;flex:0 0 auto}.bUl77zUyQ8rsLeCWewoHf:hover{background-color:#00b0c4}._1Wy64YypxEm0pHdAFt3XyU{display:flex;flex-direction:column;flex:1 1 auto}._1Wy64YypxEm0pHdAFt3XyU ._3n6qkPOj7d7pT5EreXLpW_{flex:1 1 auto;display:flex;position:relative}._1Wy64YypxEm0pHdAFt3XyU ._3n6qkPOj7d7pT5EreXLpW_ ._1kHOYplq2tIl0x8bAqBZrs{position:absolute;left:0;top:0;right:0;bottom:0;display:flex;flex-direction:column;font-family:Arial,Helvetica,sans-serif;padding:10px;overflow-y:auto}._2l2WY2-sLGfv8zWnCEMFYu{flex:0 0 auto}._2l2WY2-sLGfv8zWnCEMFYu ._3n6qkPOj7d7pT5EreXLpW_{height:0;overflow:hidden}@media(prefers-color-scheme: dark){._1PlpDVxjlx0PpeYJornEhO{color:#0bc;border:solid 1px #007b8b}.bUl77zUyQ8rsLeCWewoHf{background-color:#0091a1;color:#333}.bUl77zUyQ8rsLeCWewoHf:hover{background-color:#00a8bb}}',""]),t.locals={sidePane:"_1PlpDVxjlx0PpeYJornEhO",title:"bUl77zUyQ8rsLeCWewoHf",activePane:"_1Wy64YypxEm0pHdAFt3XyU",bodyContainer:"_3n6qkPOj7d7pT5EreXLpW_",body:"_1kHOYplq2tIl0x8bAqBZrs",inactivePane:"_2l2WY2-sLGfv8zWnCEMFYu"},e.exports=t},3289:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._12Yaq4bmIYMlsqqYimZ13I{flex:0 0 auto;padding-bottom:5px}",""]),t.locals={header:"_12Yaq4bmIYMlsqqYimZ13I"},e.exports=t},9157:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._1_jgBU84mPgcYlpMVPoqWE{overflow:hidden;text-overflow:ellipsis;cursor:pointer;margin:3px 0;white-space:nowrap}._1_jgBU84mPgcYlpMVPoqWE:hover{background-color:#eee}",""]),t.locals={block:"_1_jgBU84mPgcYlpMVPoqWE"},e.exports=t},3983:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._2QN9z7UV4YLHwj9CQ-6ra6{position:absolute;left:25px;right:25px;top:25px;bottom:25px}.KAuwbJuev3yAQmPcrB-wl,._2r_v4LIS95O1jezeMfgUpS,.bIPZz2lZ0Dy0-dW2Poeua{position:relative;width:100px;height:100px;border:solid 1px #000}.bIPZz2lZ0Dy0-dW2Poeua{background-color:#fff}._2r_v4LIS95O1jezeMfgUpS{background-color:#333}",""]),t.locals={result:"_2QN9z7UV4YLHwj9CQ-6ra6",backgroundBase:"KAuwbJuev3yAQmPcrB-wl",darkBackground:"_2r_v4LIS95O1jezeMfgUpS",lightBackground:"bIPZz2lZ0Dy0-dW2Poeua"},e.exports=t},5895:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._1hYhx3hKo_jDHdj3blAjc{margin-top:2px;margin-bottom:2px;line-height:2px}._5v3zhTlG_yH7GaGVgXfQP{width:30px;margin-left:4px}._1RrgLiiHLlvBCf-d5YWxnu{margin-top:2px;margin-bottom:2px}._3V3Ji0Va8o5p54tjedX892{font-weight:bold}._137J0ZhSm3qals9lhoTtS3{line-height:20px}",""]),t.locals={input:"_1hYhx3hKo_jDHdj3blAjc",coordinates:"_5v3zhTlG_yH7GaGVgXfQP",button:"_1RrgLiiHLlvBCf-d5YWxnu",title:"_3V3Ji0Va8o5p54tjedX892",containerInfo:"_137J0ZhSm3qals9lhoTtS3"},e.exports=t},9432:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._3zqjTFVESq7ErkoLCRZ-6U{resize:none;min-height:100px;max-height:200px}._3eEmGG3kPCcFFRLXYSrjlt{text-align:center}",""]),t.locals={text:"_3zqjTFVESq7ErkoLCRZ-6U",buttonRow:"_3eEmGG3kPCcFFRLXYSrjlt"},e.exports=t},1777:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._3w8Hon1pjNxrKF0BoO_5HY{outline:none;resize:none;min-height:40px;width:90%}",""]),t.locals={textarea:"_3w8Hon1pjNxrKF0BoO_5HY"},e.exports=t},6312:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"@media(prefers-color-scheme: dark){button{background-color:#0091a1;color:#aaf7ff;border:solid 1px #007b8b}select,input,textarea{background-color:#333;color:#aaf7ff;border:solid 1px #007b8b}}.deySpGrN2RNEpBoMFR8Uh{font-weight:bold;background-color:#aaf7ff}._2mBGUX8vWQF-5jynECLtGD{background-color:#00b0c4;border:solid 2px #09a}@media(prefers-color-scheme: dark){.deySpGrN2RNEpBoMFR8Uh{background-color:#a1f6ff}._2mBGUX8vWQF-5jynECLtGD{background-color:#00a8bb;border:solid 2px #0091a1}}",""]),t.locals={regionNode:"deySpGrN2RNEpBoMFR8Uh",hover:"_2mBGUX8vWQF-5jynECLtGD"},e.exports=t},406:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,".z_Kjs2wjz5dWJBsuOtSYN{outline:none;resize:none;min-height:100px;height:300px}._1jzoyXnrzDHw1HFmidMaWi{margin:10px;height:35px;width:80px;flex:0 0 auto}",""]),t.locals={textarea:"z_Kjs2wjz5dWJBsuOtSYN",button:"_1jzoyXnrzDHw1HFmidMaWi"},e.exports=t},3972:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._1npSAsDS54nnYHLeTCHICi{text-align:center}",""]),t.locals={buttonRow:"_1npSAsDS54nnYHLeTCHICi"},e.exports=t},9638:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._3QUL-cTI2rzYtI4ueZE5lr{vertical-align:top}._pll-4jUC7rvgi0vFQdY1{white-space:nowrap}",""]),t.locals={checkboxColumn:"_3QUL-cTI2rzYtI4ueZE5lr",defaultFormatLabel:"_pll-4jUC7rvgi0vFQdY1"},e.exports=t},1024:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,'._2TlmgQ1bW5R050B6jYhEX{max-width:100%;max-height:300px}.ffJacBjxWzCVBw1QPEOh4{font-family:"Courier New";font-size:10.5pt;margin:10px}.bUF-XqoekK8dhSeJ-0o5c{margin-left:20px}',""]),t.locals={img:"_2TlmgQ1bW5R050B6jYhEX",pasteContent:"ffJacBjxWzCVBw1QPEOh4",eventContent:"bUF-XqoekK8dhSeJ-0o5c"},e.exports=t},5237:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._2HXvsNDp44ok-mZyQwNNCy{color:#eee}._1HxlX2f9hy_xnwciZLYJ3w{font-weight:bold}@media(prefers-color-scheme: dark){._2HXvsNDp44ok-mZyQwNNCy{color:#555}}.dark ._2HXvsNDp44ok-mZyQwNNCy{color:#555}",""]),t.locals={inactive:"_2HXvsNDp44ok-mZyQwNNCy",title:"_1HxlX2f9hy_xnwciZLYJ3w"},e.exports=t},470:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"@media(prefers-color-scheme: dark){button{background-color:#0091a1;color:#aaf7ff;border:solid 1px #007b8b}select,input,textarea{background-color:#333;color:#aaf7ff;border:solid 1px #007b8b}}.HibV3xkyKxOpjnAyk0qr4{flex:1 1 auto;display:flex;flex-direction:column}._1yCf4MUqqEDULqM4RSNRBS{margin-bottom:10px;flex:0 0 auto}.E1MpWNg-lFB-dmiOBDnVv{flex:1 1 auto;resize:none;min-height:100px;border-color:#0bc}._2WqAZxlRXbhGBPoaHrJ1Gv{min-height:100px;max-height:200px;overflow:hidden auto;border:solid 1px #0bc}._2WqAZxlRXbhGBPoaHrJ1Gv pre{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;margin:0}._2WqAZxlRXbhGBPoaHrJ1Gv pre:hover{background-color:#eee}._2WqAZxlRXbhGBPoaHrJ1Gv pre._21blMEsk_K31sbjM73Q_V2{font-weight:bold}._2WqAZxlRXbhGBPoaHrJ1Gv pre.t0z_eiUKKfEvZR3eNUMXy{background-color:#ff0}@media(prefers-color-scheme: dark){._2WqAZxlRXbhGBPoaHrJ1Gv{border:solid 1px #007b8b}.E1MpWNg-lFB-dmiOBDnVv{border-color:#007b8b}._2WqAZxlRXbhGBPoaHrJ1Gv{border:solid 1px #007b8b}}",""]),t.locals={snapshotPane:"HibV3xkyKxOpjnAyk0qr4",buttons:"_1yCf4MUqqEDULqM4RSNRBS",textarea:"E1MpWNg-lFB-dmiOBDnVv",snapshotList:"_2WqAZxlRXbhGBPoaHrJ1Gv",current:"_21blMEsk_K31sbjM73Q_V2",autoComplete:"t0z_eiUKKfEvZR3eNUMXy"},e.exports=t},90:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"@media(prefers-color-scheme: dark){button{background-color:#0091a1;color:#aaf7ff;border:solid 1px #007b8b}select,input,textarea{background-color:#333;color:#aaf7ff;border:solid 1px #007b8b}}._38B2xrPpolo75ScC_XTUJ0{display:flex;background-color:#09a;padding:5px 10px;margin-bottom:10px;border-radius:10px;align-items:center}._3rKujTCbT6hEqSSJowznfl{flex:0 0 auto;font-size:24pt;font-family:Arial;font-weight:bold;font-style:italic;color:#fff;text-shadow:2px 2px 2px #000}.LmRq7AaEB4aAjkYn1_Fx1{flex:1 1 auto;color:#fff;font-family:Calibri;font-size:14pt;margin:10px 0 0 10px}._2pD0Ll-40t-pFcvxGbmrDa{color:#fff;flex:0 0 auto;text-align:right;font-size:14pt;font-family:Calibri}.NlCA34doW26bRa3ETK3MV{color:#fff;text-decoration:none}.NlCA34doW26bRa3ETK3MV:hover{text-decoration:underline}._1TClD7zQfb72l9_IIRB9Bu{vertical-align:middle}@media(prefers-color-scheme: dark){._38B2xrPpolo75ScC_XTUJ0{background-color:#0091a1}._3rKujTCbT6hEqSSJowznfl,.NlCA34doW26bRa3ETK3MV{color:#bbd1e1}}",""]),t.locals={titleBar:"_38B2xrPpolo75ScC_XTUJ0",title:"_3rKujTCbT6hEqSSJowznfl",version:"LmRq7AaEB4aAjkYn1_Fx1",links:"_2pD0Ll-40t-pFcvxGbmrDa",link:"NlCA34doW26bRa3ETK3MV",externalLink:"_1TClD7zQfb72l9_IIRB9Bu"},e.exports=t},1492:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,'@media(prefers-color-scheme: dark){button{background-color:#cb6587;color:#fff;border:solid 1px #cb6587}select,input,textarea{background-color:#333;color:#fff;border:solid 1px #cb6587}}._1Vd7XilFCiG21bAPFLj2II{display:flex;flex-direction:column;width:100%;height:100%}._23LenQcZad0qCk02i6eGGv{flex:0 0 auto;overflow-x:hidden}.qryYgjLikDAtWPIguoPtG{border-radius:30% 30% 0 0;background-color:#d27997;color:#fff;font-weight:bold}._3qco7ziGP42a5ExBXlCzLM{flex:1 1 auto;position:relative;display:flex}._3seGejKWK4LYJLgONtrupA{width:"100%";min-width:200px;flex-grow:1;flex-shrink:1;position:relative}@media(prefers-color-scheme: dark){._3seGejKWK4LYJLgONtrupA a:link,._3seGejKWK4LYJLgONtrupA a:visited{color:#ba7cff}}._3oitr-ji576joN-EOTKyxg{border:solid 1px #c68;overflow:auto;padding:10px;outline:none;position:absolute;left:0;top:0;right:0;bottom:0}.Mfr5Ig446lykagYmmpG3g{flex-grow:0;flex-shrink:0;width:6px;cursor:col-resize}.Mfr5Ig446lykagYmmpG3g:hover{background-color:#ccc}._3yvgFdqCfvTJBGVRZEtcYi{flex-grow:0;flex-shrink:0;width:30px;cursor:hand;white-space:nowrap}._3yvgFdqCfvTJBGVRZEtcYi div{transform:rotate(-90deg)}._3yvgFdqCfvTJBGVRZEtcYi:hover{background-color:#ccc}._2oVM-i43du-Ct8U49UpmKk{min-width:340px;flex-shrink:0;flex-grow:0;width:300px}._2oVM-i43du-Ct8U49UpmKk._1ZxvpxzdGp13ThgmwAfwEV{width:100%}@media(prefers-color-scheme: dark){._3oitr-ji576joN-EOTKyxg{border:solid 1px #cb6587}}',""]),t.locals={mainPane:"_1Vd7XilFCiG21bAPFLj2II",noGrow:"_23LenQcZad0qCk02i6eGGv",menuTab:"qryYgjLikDAtWPIguoPtG",body:"_3qco7ziGP42a5ExBXlCzLM",editorContainer:"_3seGejKWK4LYJLgONtrupA",editor:"_3oitr-ji576joN-EOTKyxg",resizer:"Mfr5Ig446lykagYmmpG3g",showSidePane:"_3yvgFdqCfvTJBGVRZEtcYi",sidePane:"_2oVM-i43du-Ct8U49UpmKk",sidePaneFullWidth:"_1ZxvpxzdGp13ThgmwAfwEV"},e.exports=t},6632:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,'@media(prefers-color-scheme: dark){button{background-color:#cb6587;color:#fff;border:solid 1px #cb6587}select,input,textarea{background-color:#333;color:#fff;border:solid 1px #cb6587}}._3m0dVzEpXl-iV7GJZD0Reg{display:flex;flex-direction:column;overflow:auto hidden;border:solid 1px #c68}._3sCE_dbYg32gGwgKSmaZdT{font-family:"Tahoma";font-size:12pt;font-weight:bold;background-color:#c68;color:#fff;padding:2px;border:solid 1px #fff;cursor:pointer;flex:0 0 auto}._3sCE_dbYg32gGwgKSmaZdT:hover{background-color:#d27997}._2W3wuveqbmtn8cePGgks9q{display:flex;flex-direction:column;flex:1 1 auto}._2W3wuveqbmtn8cePGgks9q ._39UmG0y7b2eQj02AUG1tXr{flex:1 1 auto;display:flex;position:relative}._2W3wuveqbmtn8cePGgks9q ._39UmG0y7b2eQj02AUG1tXr ._3EVbyd0wXGlFG_HoOvSESI{position:absolute;left:0;top:0;right:0;bottom:0;display:flex;flex-direction:column;font-family:Arial,Helvetica,sans-serif;padding:10px;overflow-y:auto}._2ejN8yMN_gBPUYg6ZEMHVT{flex:0 0 auto}._2ejN8yMN_gBPUYg6ZEMHVT ._39UmG0y7b2eQj02AUG1tXr{height:0;overflow:hidden}@media(prefers-color-scheme: dark){._3m0dVzEpXl-iV7GJZD0Reg{color:#0bc;border:solid 1px #cb6587}._3sCE_dbYg32gGwgKSmaZdT{background-color:#cb6587;color:#333}._3sCE_dbYg32gGwgKSmaZdT:hover{background-color:#d17896}}',""]),t.locals={sidePane:"_3m0dVzEpXl-iV7GJZD0Reg",title:"_3sCE_dbYg32gGwgKSmaZdT",activePane:"_2W3wuveqbmtn8cePGgks9q",bodyContainer:"_39UmG0y7b2eQj02AUG1tXr",body:"_3EVbyd0wXGlFG_HoOvSESI",inactivePane:"_2ejN8yMN_gBPUYg6ZEMHVT"},e.exports=t},3370:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._1JORDcs_P-8F95LAfVtuNe{flex:0 0 auto;padding-bottom:5px}",""]),t.locals={header:"_1JORDcs_P-8F95LAfVtuNe"},e.exports=t},8304:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._2Yj3BqD3S_krM1ZOGPc6ar{outline:none;resize:none;min-height:40px;width:90%}",""]),t.locals={textarea:"_2Yj3BqD3S_krM1ZOGPc6ar"},e.exports=t},6305:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._218NbvnF160txYk_bOmcz8{flex:1 1 auto;overflow:auto}",""]),t.locals={contentModel:"_218NbvnF160txYk_bOmcz8"},e.exports=t},6246:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._3lgWb5vukycWr4-DDqhJER{height:20px;vertical-align:top;padding:2px;border-width:1px;border-color:#888;background-color:#ccc}._3lgWb5vukycWr4-DDqhJER:hover{background-color:#fff}._1-w8E1OCqfjjJ519XR0G7S{font-weight:bold;background-color:#eee;border-bottom:none}",""]),t.locals={button:"_3lgWb5vukycWr4-DDqhJER",buttonChecked:"_1-w8E1OCqfjjJ519XR0G7S"},e.exports=t},9534:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,'.Rnn-wLHq3O7e73RYMhpKz{margin-bottom:2px;display:flex;font-family:"Segoe UI",Tahoma,Geneva,Verdana,sans-serif;font-size:12pt;border:solid 2px #ccc;flex:1 1 auto;display:flex;flex-direction:column}.Rnn-wLHq3O7e73RYMhpKz._1ebWzIXMlWa5HKt9HWO4kF{border-color:#f9b}.Rnn-wLHq3O7e73RYMhpKz ._2LSRTUCf6DtL56da88VlK0{border-color:#a46}._2X7mbfNiaLXP3760BpSPc{flex:0 0 auto;white-space:nowrap;overflow:hidden;padding:3px 0 0 0;height:20px}._2X7mbfNiaLXP3760BpSPc:hover ._3iQ2Y5PB87HdLW9Wic-h_S{display:block}._28y28EWvvcy_1qJDZJmtcy{font-weight:bold;padding:0 5px;float:left}.OW-M_lT6c2QuqNnM9n76q{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}._3iQ2Y5PB87HdLW9Wic-h_S{float:right;display:none}._1qLUgUVx3j0OpNWOAEYX31{border-bottom:solid 1px #888}._2OHgueVTRTdaGWuQjFDFDi{background-color:#fff;padding:4px;display:flex;flex-direction:column;color:#000}',""]),t.locals={modelWrapper:"Rnn-wLHq3O7e73RYMhpKz",childSelected:"_1ebWzIXMlWa5HKt9HWO4kF",selected:"_2LSRTUCf6DtL56da88VlK0",titleBar:"_2X7mbfNiaLXP3760BpSPc",buttonGroup:"_3iQ2Y5PB87HdLW9Wic-h_S",title:"_28y28EWvvcy_1qJDZJmtcy",subTitle:"OW-M_lT6c2QuqNnM9n76q",titleWithBorder:"_1qLUgUVx3j0OpNWOAEYX31",expandedBody:"_2OHgueVTRTdaGWuQjFDFDi"},e.exports=t},6554:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._1s1NGzyvCHsJXfXaMfG-9p{display:table}._29SGSfWttY-Yt8CIpArPGk{display:table-row;height:24px}._1puuF-3c4fF9brFviQaDVM{display:table-cell;width:120px;vertical-align:top}._3_2cml_VV6YZZJ2pxgUJYa{display:table-cell;margin:2px;overflow-x:hidden}._1lkDXCtsvNawOqFKjVX3RU{color:red;font-weight:bold}._1OatnxfRr2gEz-vPV9sbcz{width:60px}._3xdIPev2uNMUHuQUAxzzTE{width:95%}._2I8HJH--VSNVgW7g0tnpy-{width:95%;height:80px}._1ANraWrh3gzruHXly9rVfc{width:80px}",""]),t.locals={formatTable:"_1s1NGzyvCHsJXfXaMfG-9p",formatRow:"_29SGSfWttY-Yt8CIpArPGk",formatName:"_1puuF-3c4fF9brFviQaDVM",formatValue:"_3_2cml_VV6YZZJ2pxgUJYa",errorMessage:"_1lkDXCtsvNawOqFKjVX3RU",colorValue:"_1OatnxfRr2gEz-vPV9sbcz",textValue:"_3xdIPev2uNMUHuQUAxzzTE",multiLineValue:"_2I8HJH--VSNVgW7g0tnpy-",numberValue:"_1ANraWrh3gzruHXly9rVfc"},e.exports=t},2006:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._3s3rG4EK-H2idudX6SCMR0{background-color:#cff}",""]),t.locals={modelBr:"_3s3rG4EK-H2idudX6SCMR0"},e.exports=t},8740:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._2QURgJ1pLiMEYQLcNkYBqk{background-color:#093}",""]),t.locals={modelCode:"_2QURgJ1pLiMEYQLcNkYBqk"},e.exports=t},2113:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._2mv2BQJV1hGg71gznHkiIv{background-color:#c0f}",""]),t.locals={modelDivider:"_2mv2BQJV1hGg71gznHkiIv"},e.exports=t},3164:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._1gbxlTakl2oXmha5WMy1m8{background-color:#ddd}",""]),t.locals={modelDocument:"_1gbxlTakl2oXmha5WMy1m8"},e.exports=t},6457:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,".W54VA5cZ_0M5I16QU_kJc{background-color:#3b2}",""]),t.locals={modelEntity:"W54VA5cZ_0M5I16QU_kJc"},e.exports=t},7154:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._3ZxrmaRQg1wzKsMvBEnIBu{background-color:#a8a}",""]),t.locals={modelFormatContainer:"_3ZxrmaRQg1wzKsMvBEnIBu"},e.exports=t},1862:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._3Cr5TpAhJG7fBCfpsfypMs{background-color:#cfc}",""]),t.locals={modelGeneral:"_3Cr5TpAhJG7fBCfpsfypMs"},e.exports=t},516:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,".wN7YF1YTGxKrVDMOwWKM4{max-width:100px}._1scPQjZWLkZBhShc7fsmHE{background-color:#ff3}",""]),t.locals={image:"wN7YF1YTGxKrVDMOwWKM4",modelImage:"_1scPQjZWLkZBhShc7fsmHE"},e.exports=t},3992:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"@media(prefers-color-scheme: dark){button{background-color:#cb6587;color:#fff;border:solid 1px #cb6587}select,input,textarea{background-color:#333;color:#fff;border:solid 1px #cb6587}}._2OR1hD1DGzpR1_FiCYO7zm{margin:0;font-size:13px;word-break:break-all;white-space:pre-wrap}",""]),t.locals={json:"_2OR1hD1DGzpR1_FiCYO7zm"},e.exports=t},6972:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,".dJoMPZZZsOR_Mi8SiBLQa{background-color:#07f}",""]),t.locals={modelLink:"dJoMPZZZsOR_Mi8SiBLQa"},e.exports=t},3836:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,".BgJ7GMUS-uvi78dOY705i{background-color:#fb7}",""]),t.locals={modelListItem:"BgJ7GMUS-uvi78dOY705i"},e.exports=t},8696:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._2GeP1mqrNT_ijKTmAfZJuR{background-color:#38a}",""]),t.locals={modelListLevel:"_2GeP1mqrNT_ijKTmAfZJuR"},e.exports=t},3449:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,".O_jydsSezRLK5_yEMuFmE{background-color:#bdf}._3rCPYynkXFsQD6SrBMiAJv{background-color:#ccf}",""]),t.locals={modelParagraph:"O_jydsSezRLK5_yEMuFmE",modelDecorator:"_3rCPYynkXFsQD6SrBMiAJv"},e.exports=t},2754:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._FiJrtKOUVh0rXgBIDPwn{background-color:#7ef}",""]),t.locals={modelSelectionMarker:"_FiJrtKOUVh0rXgBIDPwn"},e.exports=t},7372:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._2Y-o2S7ISWuZEebI5daPBV{background-color:#fbd}",""]),t.locals={modelTableCell:"_2Y-o2S7ISWuZEebI5daPBV"},e.exports=t},7683:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._3LZnuKGrihfFveTfbRUHmI{background-color:#a88}._28uOU7xXe1YI-BBabRkQVY{width:40px}",""]),t.locals={modelTableRow:"_3LZnuKGrihfFveTfbRUHmI",sizeInput:"_28uOU7xXe1YI-BBabRkQVY"},e.exports=t},8289:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._3b2qMn_-yCF2sbwvCMTMy5{background-color:#df8}._3h6fCtO2owbxWCuDw0oM-Z{width:40px}",""]),t.locals={modelTable:"_3b2qMn_-yCF2sbwvCMTMy5",sizeInput:"_3h6fCtO2owbxWCuDw0oM-Z"},e.exports=t},430:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._3QgYSAIQPvvA-BhDRJBMG9{background-color:#fca}",""]),t.locals={modelText:"_3QgYSAIQPvvA-BhDRJBMG9"},e.exports=t},8095:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._3dTGFWaIo3uzIlvbAXfHJM{vertical-align:top}._3M33Z5DgfdvkH73Opljwoq{white-space:nowrap}",""]),t.locals={checkboxColumn:"_3dTGFWaIo3uzIlvbAXfHJM",defaultFormatLabel:"_3M33Z5DgfdvkH73Opljwoq"},e.exports=t},540:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,'._1BlYg8ayOKZo0Eo4Zq81X3{max-width:100%;max-height:300px}._2CJlhhko21yP3MDzEw_nII{font-family:"Courier New";font-size:10.5pt;margin:10px}._1RKHaW5Bo9HrNZdOkh75VZ{margin-left:20px}',""]),t.locals={img:"_1BlYg8ayOKZo0Eo4Zq81X3",pasteContent:"_2CJlhhko21yP3MDzEw_nII",eventContent:"_1RKHaW5Bo9HrNZdOkh75VZ"},e.exports=t},1757:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._3E79rgbqe59JCLc8va8lFu{color:#eee}.moYTM2r3e1oL6EAypGzms{font-weight:bold}@media(prefers-color-scheme: dark){._3E79rgbqe59JCLc8va8lFu{color:#555}}.dark ._3E79rgbqe59JCLc8va8lFu{color:#555}",""]),t.locals={inactive:"_3E79rgbqe59JCLc8va8lFu",title:"moYTM2r3e1oL6EAypGzms"},e.exports=t},7200:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"._296ydBi9sbs9NU5il4DWX5{font-weight:bold;background-color:#dcccd2}",""]),t.locals={selected:"_296ydBi9sbs9NU5il4DWX5"},e.exports=t},8263:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"@media(prefers-color-scheme: dark){button{background-color:#cb6587;color:#fff;border:solid 1px #cb6587}select,input,textarea{background-color:#333;color:#fff;border:solid 1px #cb6587}}._37xSKCg6D18TsMJeMcSzD3{flex:1 1 auto;display:flex;flex-direction:column}._3mFaa9bukidlC8T8jLxJ2E{margin-bottom:10px;flex:0 0 auto}._4G_ApGg-kyE4XL2IJH90g{flex:1 1 auto;resize:none;min-height:100px;border-color:#c68}.S2I5vGyJ-bi0LSmxLv_JL{border-color:#c68}._3givqGrHDziVWxZ9oIL8jw{min-height:100px;max-height:200px;overflow:hidden auto;border:solid 1px #c68}._3givqGrHDziVWxZ9oIL8jw pre{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;margin:0}._3givqGrHDziVWxZ9oIL8jw pre:hover{background-color:#eee}._3givqGrHDziVWxZ9oIL8jw pre._3ipy0VCw_tGDkSakjN4DW{font-weight:bold}._3givqGrHDziVWxZ9oIL8jw pre._3bbBQ6bofSaKgrn9qivZZy{background-color:#ff0}@media(prefers-color-scheme: dark){._3givqGrHDziVWxZ9oIL8jw{border:solid 1px #cb6587}._4G_ApGg-kyE4XL2IJH90g{border-color:#cb6587}._3givqGrHDziVWxZ9oIL8jw{border:solid 1px #cb6587}}",""]),t.locals={snapshotPane:"_37xSKCg6D18TsMJeMcSzD3",buttons:"_3mFaa9bukidlC8T8jLxJ2E",textarea:"_4G_ApGg-kyE4XL2IJH90g",input:"S2I5vGyJ-bi0LSmxLv_JL",snapshotList:"_3givqGrHDziVWxZ9oIL8jw",current:"_3ipy0VCw_tGDkSakjN4DW",autoComplete:"_3bbBQ6bofSaKgrn9qivZZy"},e.exports=t},8358:(e,t,r)=>{(t=r(3645)(!1)).push([e.id,"@media(prefers-color-scheme: dark){button{background-color:#cb6587;color:#fff;border:solid 1px #cb6587}select,input,textarea{background-color:#333;color:#fff;border:solid 1px #cb6587}}.pJbHvwwZzFB1_sM9JT4tM{display:flex;background-color:#c68;padding:5px 10px;margin-bottom:10px;border-radius:10px;align-items:center}._3TsHz2xc3NTBfWZa9Om5Zk{flex:0 0 auto;font-size:24pt;font-family:Arial;font-weight:bold;font-style:italic;color:#fff;text-shadow:2px 2px 2px #000}._1i9rhnQJkDyfKkUTAWBXoK{flex:1 1 auto;color:#fff;font-family:Calibri;font-size:14pt;margin:10px 0 0 10px}._3NWbxK5UhlMaIMTg6yhtEW{color:#fff;flex:0 0 auto;text-align:right;font-size:14pt;font-family:Calibri}._3ZPc8UIlEY8IDFM9E4a3FU{color:#fff;text-decoration:none}._3ZPc8UIlEY8IDFM9E4a3FU:hover{text-decoration:underline}._1HXcfrOKq8x18pYpVI3HF{vertical-align:middle}@media(prefers-color-scheme: dark){.pJbHvwwZzFB1_sM9JT4tM{background-color:#cb6587}._3TsHz2xc3NTBfWZa9Om5Zk,._3ZPc8UIlEY8IDFM9E4a3FU{color:#bbd1e1}}",""]),t.locals={titleBar:"pJbHvwwZzFB1_sM9JT4tM",title:"_3TsHz2xc3NTBfWZa9Om5Zk",version:"_1i9rhnQJkDyfKkUTAWBXoK",links:"_3NWbxK5UhlMaIMTg6yhtEW",link:"_3ZPc8UIlEY8IDFM9E4a3FU",externalLink:"_1HXcfrOKq8x18pYpVI3HF"},e.exports=t},3645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r=function(e,t){var r,n,o,a=e[1]||"",i=e[3];if(!i)return a;if(t&&"function"==typeof btoa){var l=(r=i,n=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(n),"/*# ".concat(o," */")),s=i.sources.map((function(e){return"/*# sourceURL=".concat(i.sourceRoot||"").concat(e," */")}));return[a].concat(s).concat([l]).join("\n")}return[a].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(r,"}"):r})).join("")},t.i=function(e,r,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var a=0;a1?r-1:0),o=1;o/gm),F=i(/^data-[\-\w.\u00B7-\uFFFF]/),z=i(/^aria-[\-\w]+$/),K=i(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),U=i(/^(?:\w+script|data):/i),H=i(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function G(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:V(),r=function(t){return e(t)};if(r.version="2.3.0",r.removed=[],!t||!t.document||9!==t.document.nodeType)return r.isSupported=!1,r;var n=t.document,o=t.document,i=t.DocumentFragment,l=t.HTMLTemplateElement,s=t.Node,u=t.Element,c=t.NodeFilter,d=t.NamedNodeMap,x=void 0===d?t.NamedNodeMap||t.MozNamedAttrMap:d,Y=t.Text,Q=t.Comment,q=t.DOMParser,J=t.trustedTypes,Z=u.prototype,X=E(Z,"cloneNode"),$=E(Z,"nextSibling"),ee=E(Z,"childNodes"),te=E(Z,"parentNode");if("function"==typeof l){var re=o.createElement("template");re.content&&re.content.ownerDocument&&(o=re.content.ownerDocument)}var ne=function(e,t){if("object"!==(void 0===e?"undefined":W(e))||"function"!=typeof e.createPolicy)return null;var r=null,n="data-tt-policy-suffix";t.currentScript&&t.currentScript.hasAttribute(n)&&(r=t.currentScript.getAttribute(n));var o="dompurify"+(r?"#"+r:"");try{return e.createPolicy(o,{createHTML:function(e){return e}})}catch(e){return console.warn("TrustedTypes policy "+o+" could not be created."),null}}(J,n),oe=ne&&Ae?ne.createHTML(""):"",ae=o,ie=ae.implementation,le=ae.createNodeIterator,se=ae.createDocumentFragment,ue=ae.getElementsByTagName,ce=n.importNode,de={};try{de=M(o).documentMode?o.documentMode:{}}catch(e){}var me={};r.isSupported="function"==typeof te&&ie&&void 0!==ie.createHTMLDocument&&9!==de;var fe=O,pe=R,ge=F,he=z,be=U,ye=H,ve=K,ke=null,Ce=T({},[].concat(G(j),G(w),G(S),G(_),G(P))),xe=null,Te=T({},[].concat(G(B),G(L),G(I),G(A))),Me=null,Ee=null,je=!0,we=!0,Se=!1,De=!1,_e=!1,Ne=!1,Pe=!1,Be=!1,Le=!1,Ie=!0,Ae=!1,Oe=!0,Re=!0,Fe=!1,ze={},Ke=T({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ue=null,He=T({},["audio","video","img","source","image","track"]),We=null,Ge=T({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),Ve="http://www.w3.org/1998/Math/MathML",Ye="http://www.w3.org/2000/svg",Qe="http://www.w3.org/1999/xhtml",qe=Qe,Je=!1,Ze=null,Xe=o.createElement("form"),$e=function(e){Ze&&Ze===e||(e&&"object"===(void 0===e?"undefined":W(e))||(e={}),e=M(e),ke="ALLOWED_TAGS"in e?T({},e.ALLOWED_TAGS):Ce,xe="ALLOWED_ATTR"in e?T({},e.ALLOWED_ATTR):Te,We="ADD_URI_SAFE_ATTR"in e?T(M(Ge),e.ADD_URI_SAFE_ATTR):Ge,Ue="ADD_DATA_URI_TAGS"in e?T(M(He),e.ADD_DATA_URI_TAGS):He,Me="FORBID_TAGS"in e?T({},e.FORBID_TAGS):{},Ee="FORBID_ATTR"in e?T({},e.FORBID_ATTR):{},ze="USE_PROFILES"in e&&e.USE_PROFILES,je=!1!==e.ALLOW_ARIA_ATTR,we=!1!==e.ALLOW_DATA_ATTR,Se=e.ALLOW_UNKNOWN_PROTOCOLS||!1,De=e.SAFE_FOR_TEMPLATES||!1,_e=e.WHOLE_DOCUMENT||!1,Be=e.RETURN_DOM||!1,Le=e.RETURN_DOM_FRAGMENT||!1,Ie=!1!==e.RETURN_DOM_IMPORT,Ae=e.RETURN_TRUSTED_TYPE||!1,Pe=e.FORCE_BODY||!1,Oe=!1!==e.SANITIZE_DOM,Re=!1!==e.KEEP_CONTENT,Fe=e.IN_PLACE||!1,ve=e.ALLOWED_URI_REGEXP||ve,qe=e.NAMESPACE||Qe,De&&(we=!1),Le&&(Be=!0),ze&&(ke=T({},[].concat(G(P))),xe=[],!0===ze.html&&(T(ke,j),T(xe,B)),!0===ze.svg&&(T(ke,w),T(xe,L),T(xe,A)),!0===ze.svgFilters&&(T(ke,S),T(xe,L),T(xe,A)),!0===ze.mathMl&&(T(ke,_),T(xe,I),T(xe,A))),e.ADD_TAGS&&(ke===Ce&&(ke=M(ke)),T(ke,e.ADD_TAGS)),e.ADD_ATTR&&(xe===Te&&(xe=M(xe)),T(xe,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&T(We,e.ADD_URI_SAFE_ATTR),Re&&(ke["#text"]=!0),_e&&T(ke,["html","head","body"]),ke.table&&(T(ke,["tbody"]),delete Me.tbody),a&&a(e),Ze=e)},et=T({},["mi","mo","mn","ms","mtext"]),tt=T({},["foreignobject","desc","title","annotation-xml"]),rt=T({},w);T(rt,S),T(rt,D);var nt=T({},_);T(nt,N);var ot=function(e){p(r.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=oe}catch(t){e.remove()}}},at=function(e,t){try{p(r.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){p(r.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!xe[e])if(Be||Le)try{ot(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},it=function(e){var t=void 0,r=void 0;if(Pe)e=""+e;else{var n=h(e,/^[\r\n\t ]+/);r=n&&n[0]}var a=ne?ne.createHTML(e):e;if(qe===Qe)try{t=(new q).parseFromString(a,"text/html")}catch(e){}if(!t||!t.documentElement){t=ie.createDocument(qe,"template",null);try{t.documentElement.innerHTML=Je?"":a}catch(e){}}var i=t.body||t.documentElement;return e&&r&&i.insertBefore(o.createTextNode(r),i.childNodes[0]||null),qe===Qe?ue.call(t,_e?"html":"body")[0]:_e?t.documentElement:i},lt=function(e){return le.call(e.ownerDocument||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT,null,!1)},st=function(e){return"object"===(void 0===s?"undefined":W(s))?e instanceof s:e&&"object"===(void 0===e?"undefined":W(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},ut=function(e,t,n){me[e]&&m(me[e],(function(e){e.call(r,t,n,Ze)}))},ct=function(e){var t,n=void 0;if(ut("beforeSanitizeElements",e,null),!((t=e)instanceof Y||t instanceof Q||"string"==typeof t.nodeName&&"string"==typeof t.textContent&&"function"==typeof t.removeChild&&t.attributes instanceof x&&"function"==typeof t.removeAttribute&&"function"==typeof t.setAttribute&&"string"==typeof t.namespaceURI&&"function"==typeof t.insertBefore))return ot(e),!0;if(h(e.nodeName,/[\u0080-\uFFFF]/))return ot(e),!0;var o=g(e.nodeName);if(ut("uponSanitizeElement",e,{tagName:o,allowedTags:ke}),!st(e.firstElementChild)&&(!st(e.content)||!st(e.content.firstElementChild))&&k(/<[/\w]/g,e.innerHTML)&&k(/<[/\w]/g,e.textContent))return ot(e),!0;if(!ke[o]||Me[o]){if(Re&&!Ke[o]){var a=te(e)||e.parentNode,i=ee(e)||e.childNodes;if(i&&a)for(var l=i.length-1;l>=0;--l)a.insertBefore(X(i[l],!0),$(e))}return ot(e),!0}return e instanceof u&&!function(e){var t=te(e);t&&t.tagName||(t={namespaceURI:Qe,tagName:"template"});var r=g(e.tagName),n=g(t.tagName);if(e.namespaceURI===Ye)return t.namespaceURI===Qe?"svg"===r:t.namespaceURI===Ve?"svg"===r&&("annotation-xml"===n||et[n]):Boolean(rt[r]);if(e.namespaceURI===Ve)return t.namespaceURI===Qe?"math"===r:t.namespaceURI===Ye?"math"===r&&tt[n]:Boolean(nt[r]);if(e.namespaceURI===Qe){if(t.namespaceURI===Ye&&!tt[n])return!1;if(t.namespaceURI===Ve&&!et[n])return!1;var o=T({},["title","style","font","a","script"]);return!nt[r]&&(o[r]||!rt[r])}return!1}(e)?(ot(e),!0):"noscript"!==o&&"noembed"!==o||!k(/<\/no(script|embed)/i,e.innerHTML)?(De&&3===e.nodeType&&(n=e.textContent,n=b(n,fe," "),n=b(n,pe," "),e.textContent!==n&&(p(r.removed,{element:e.cloneNode()}),e.textContent=n)),ut("afterSanitizeElements",e,null),!1):(ot(e),!0)},dt=function(e,t,r){if(Oe&&("id"===t||"name"===t)&&(r in o||r in Xe))return!1;if(we&&!Ee[t]&&k(ge,t));else if(je&&k(he,t));else{if(!xe[t]||Ee[t])return!1;if(We[t]);else if(k(ve,b(r,ye,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==y(r,"data:")||!Ue[e])if(Se&&!k(be,b(r,ye,"")));else if(r)return!1}return!0},mt=function(e){var t=void 0,n=void 0,o=void 0,a=void 0;ut("beforeSanitizeAttributes",e,null);var i=e.attributes;if(i){var l={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:xe};for(a=i.length;a--;){var s=t=i[a],u=s.name,c=s.namespaceURI;if(n=v(t.value),o=g(u),l.attrName=o,l.attrValue=n,l.keepAttr=!0,l.forceKeepAttr=void 0,ut("uponSanitizeAttribute",e,l),n=l.attrValue,!l.forceKeepAttr&&(at(u,e),l.keepAttr))if(k(/\/>/i,n))at(u,e);else{De&&(n=b(n,fe," "),n=b(n,pe," "));var d=e.nodeName.toLowerCase();if(dt(d,o,n))try{c?e.setAttributeNS(c,u,n):e.setAttribute(u,n),f(r.removed)}catch(e){}}}ut("afterSanitizeAttributes",e,null)}},ft=function e(t){var r=void 0,n=lt(t);for(ut("beforeSanitizeShadowDOM",t,null);r=n.nextNode();)ut("uponSanitizeShadowNode",r,null),ct(r)||(r.content instanceof i&&e(r.content),mt(r));ut("afterSanitizeShadowDOM",t,null)};return r.sanitize=function(e,o){var a=void 0,l=void 0,u=void 0,c=void 0,d=void 0;if((Je=!e)&&(e="\x3c!--\x3e"),"string"!=typeof e&&!st(e)){if("function"!=typeof e.toString)throw C("toString is not a function");if("string"!=typeof(e=e.toString()))throw C("dirty is not a string, aborting")}if(!r.isSupported){if("object"===W(t.toStaticHTML)||"function"==typeof t.toStaticHTML){if("string"==typeof e)return t.toStaticHTML(e);if(st(e))return t.toStaticHTML(e.outerHTML)}return e}if(Ne||$e(o),r.removed=[],"string"==typeof e&&(Fe=!1),Fe);else if(e instanceof s)1===(l=(a=it("\x3c!----\x3e")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===l.nodeName||"HTML"===l.nodeName?a=l:a.appendChild(l);else{if(!Be&&!De&&!_e&&-1===e.indexOf("<"))return ne&&Ae?ne.createHTML(e):e;if(!(a=it(e)))return Be?null:oe}a&&Pe&&ot(a.firstChild);for(var m=lt(Fe?e:a);u=m.nextNode();)3===u.nodeType&&u===c||ct(u)||(u.content instanceof i&&ft(u.content),mt(u),c=u);if(c=null,Fe)return e;if(Be){if(Le)for(d=se.call(a.ownerDocument);a.firstChild;)d.appendChild(a.firstChild);else d=a;return Ie&&(d=ce.call(n,d,!0)),d}var f=_e?a.outerHTML:a.innerHTML;return De&&(f=b(f,fe," "),f=b(f,pe," ")),ne&&Ae?ne.createHTML(f):f},r.setConfig=function(e){$e(e),Ne=!0},r.clearConfig=function(){Ze=null,Ne=!1},r.isValidAttribute=function(e,t,r){Ze||$e({});var n=g(e),o=g(t);return dt(n,o,r)},r.addHook=function(e,t){"function"==typeof t&&(me[e]=me[e]||[],p(me[e],t))},r.removeHook=function(e){me[e]&&f(me[e])},r.removeHooks=function(e){me[e]&&(me[e]=[])},r.removeAllHooks=function(){me={}},r}()}()},5171:e=>{e.exports=function(e){return!(!e||"string"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&"String"!==e.constructor.name))}},6851:(e,t,r)=>{"use strict";var n=r(5171),o=Array.prototype.concat,a=Array.prototype.slice,i=e.exports=function(e){for(var t=[],r=0,i=e.length;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UrlPlaceholder=void 0,t.UrlPlaceholder="$url$"},3543:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mount=void 0;var n=r(7582),o=r(7363),a=r(1533),i=r(9268),l=r(3240),s=r(2881),u=r(9658),c=r(8343),d=r(8527),m=r(5942),f=r(863),p=r(4920),g=r(7923),h=r(1905),b=r(5563),y=r(1905),v=r(3584),k=r(1660),C=r(9899),x=r(7047),T=r(7663),M=r(9841),E=r(598),j={palette:{themePrimary:"#0099aa",themeLighterAlt:"#f2fbfc",themeLighter:"#cbeef2",themeLight:"#a1dfe6",themeTertiary:"#52c0cd",themeSecondary:"#16a5b5",themeDarkAlt:"#008a9a",themeDark:"#007582",themeDarker:"#005660",neutralLighterAlt:"#faf9f8",neutralLighter:"#f3f2f1",neutralLight:"#edebe9",neutralQuaternaryAlt:"#e1dfdd",neutralQuaternary:"#d0d0d0",neutralTertiaryAlt:"#c8c6c4",neutralTertiary:"#a19f9d",neutralSecondary:"#605e5c",neutralPrimaryAlt:"#3b3a39",neutralPrimary:"#323130",neutralDark:"#201f1e",black:"#000000",white:"#ffffff"}},w={palette:{themePrimary:"#0091A1",themeLighterAlt:"#f1fafb",themeLighter:"#caecf0",themeLight:"#9fdce3",themeTertiary:"#4fbac6",themeSecondary:"#159dac",themeDarkAlt:"#008291",themeDark:"#006e7a",themeDarker:"#00515a",neutralLighterAlt:"#3c3c3c",neutralLighter:"#444444",neutralLight:"#515151",neutralQuaternaryAlt:"#595959",neutralQuaternary:"#5f5f5f",neutralTertiaryAlt:"#7a7a7a",neutralTertiary:"#c8c8c8",neutralSecondary:"#d0d0d0",neutralPrimaryAlt:"#dadada",neutralPrimary:"#ffffff",neutralDark:"#f4f4f4",black:"#f8f8f8",white:"#333333"}},S=function(e){function t(t){var r,o=e.call(this,t)||this;return o.toggleablePlugins=null,o.formatStatePlugin=new u.default,o.editorOptionPlugin=new l.default,o.eventViewPlugin=new s.default,o.apiPlaygroundPlugin=new i.default,o.snapshotPlugin=new p.default,o.ribbonPlugin=(0,M.createRibbonPlugin)(),o.pasteOptionPlugin=(0,M.createPasteOptionPlugin)(),o.emojiPlugin=(0,M.createEmojiPlugin)(),o.sampleEntityPlugin=new m.default,o.mainWindowButtons=(0,M.getButtons)((0,n.__spreadArray)((0,n.__spreadArray)([],(0,n.__read)(M.AllButtonKeys),!1),[b.darkMode,T.zoom,v.exportContent,C.popout],!1)),o.popoutWindowButtons=(0,M.getButtons)((0,n.__spreadArray)((0,n.__spreadArray)([],(0,n.__read)(M.AllButtonKeys),!1),[b.darkMode,T.zoom,v.exportContent],!1)),o.state={showSidePane:""!=window.location.hash,popoutWindow:null,initState:o.editorOptionPlugin.getBuildInPluginState(),scale:1,isDarkMode:(null===(r=o.themeMatch)||void 0===r?void 0:r.matches)||!1,editorCreator:null,isRtl:!1},o}return(0,n.__extends)(t,e),t.prototype.getStyles=function(){return E},t.prototype.renderTitleBar=function(){return o.createElement(g.default,{className:E.noGrow})},t.prototype.renderRibbon=function(e){return o.createElement(M.Ribbon,{buttons:e?this.popoutWindowButtons:this.mainWindowButtons,plugin:this.ribbonPlugin,dir:this.state.isRtl?"rtl":"ltr"})},t.prototype.renderSidePane=function(e){var t=this.getStyles();return o.createElement(f.default,{ref:this.sidePane,plugins:this.getSidePanePlugins(),className:"main-pane "+t.sidePane+" "+(e?t.sidePaneFullWidth:"")})},t.prototype.getPlugins=function(){this.toggleablePlugins=this.toggleablePlugins||(0,c.default)(this.state.initState);var e=(0,n.__spreadArray)((0,n.__spreadArray)([],(0,n.__read)(this.toggleablePlugins),!1),[this.ribbonPlugin,this.pasteOptionPlugin,this.emojiPlugin,this.sampleEntityPlugin],!1);return(this.state.showSidePane||this.state.popoutWindow)&&(0,h.arrayPush)(e,this.getSidePanePlugins()),e.push(this.updateContentPlugin),e},t.prototype.resetEditor=function(){this.toggleablePlugins=null,this.setState({editorCreator:function(e,t){return new y.Editor(e,t)}})},t.prototype.getTheme=function(e){return e?w:j},t.prototype.renderEditor=function(){var e=this.getStyles(),t=this.getPlugins(),r={transform:"scale("+this.state.scale+")",transformOrigin:this.state.isRtl?"right top":"left top",height:"calc("+100/this.state.scale+"%)",width:"calc("+100/this.state.scale+"%)"};return this.updateContentPlugin.forceUpdate(),o.createElement("div",{className:e.editorContainer,id:"EditorContainer"},o.createElement("div",{style:r},this.state.editorCreator&&o.createElement(M.Rooster,{className:e.editor,plugins:t,defaultFormat:this.state.initState.defaultFormat,inDarkMode:this.state.isDarkMode,getDarkColor:k.getDarkColor,experimentalFeatures:this.state.initState.experimentalFeatures,undoMetadataSnapshotService:this.snapshotPlugin.getSnapshotService(),trustedHTMLHandler:x.trustedHTMLHandler,zoomScale:this.state.scale,initialContent:this.content,editorCreator:this.state.editorCreator,dir:this.state.isRtl?"rtl":"ltr"})))},t.prototype.getSidePanePlugins=function(){return[this.formatStatePlugin,this.editorOptionPlugin,this.eventViewPlugin,this.apiPlaygroundPlugin,this.snapshotPlugin]},t}(d.default);t.mount=function(e){a.render(o.createElement(S,null),e)}},8527:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(1533),i=r(9841),l=r(3538),s=r(1260),u=r(7047),c=r(3538),d="mainPane",m="RoosterJs Demo Site
",f=function(e){function t(r){var n,a=e.call(this,r)||this;return a.sidePane=o.createRef(),a.content="",a.themeMatch=null===(n=window.matchMedia)||void 0===n?void 0:n.call(window,"(prefers-color-scheme: dark)"),a.onMouseDown=function(e){document.addEventListener("mousemove",a.onMouseMove,!0),document.addEventListener("mouseup",a.onMouseUp,!0),document.body.style.userSelect="none",a.mouseX=e.pageX},a.onMouseMove=function(e){a.sidePane.current.changeWidth(a.mouseX-e.pageX),a.mouseX=e.pageX},a.onMouseUp=function(e){document.removeEventListener("mousemove",a.onMouseMove,!0),document.removeEventListener("mouseup",a.onMouseUp,!0),document.body.style.userSelect=""},a.onUpdate=function(e){a.content=e},a.onShowSidePane=function(){a.setState({showSidePane:!0}),a.resetEditor()},a.onHideSidePane=function(){a.setState({showSidePane:!1}),a.resetEditor(),window.location.hash=""},a.onThemeChange=function(){var e;a.setState({isDarkMode:(null===(e=a.themeMatch)||void 0===e?void 0:e.matches)||!1})},t.instance=a,a.updateContentPlugin=(0,i.createUpdateContentPlugin)(i.UpdateMode.OnDispose,a.onUpdate),a}return(0,n.__extends)(t,e),t.getInstance=function(){return this.instance},t.prototype.render=function(){var e=this.getStyles();return o.createElement(l.ThemeProvider,{applyTo:"body",theme:this.getTheme(this.state.isDarkMode),className:e.mainPane},this.renderTitleBar(),!this.state.popoutWindow&&this.renderRibbon(!1),o.createElement("div",{className:e.body+" "+(this.state.isDarkMode?"dark":"")},this.state.popoutWindow?this.renderPopout():this.renderMainPane()))},t.prototype.componentDidMount=function(){var e;null===(e=this.themeMatch)||void 0===e||e.addEventListener("change",this.onThemeChange),this.resetEditor()},t.prototype.componentWillUnmount=function(){var e;null===(e=this.themeMatch)||void 0===e||e.removeEventListener("change",this.onThemeChange)},t.prototype.popout=function(){var e=this;this.updateContentPlugin.forceUpdate();var t=window.open("about:blank","_blank","menubar=no,statusbar=no,width=1200,height=800");t.document.write((0,u.trustedHTMLHandler)(m)),t.addEventListener("beforeunload",(function(){e.updateContentPlugin.forceUpdate(),(0,s.unregisterWindowForCss)(t),e.setState({popoutWindow:null})})),(0,s.registerWindowForCss)(t),this.popoutRoot=t.document.getElementById(d),this.setState({popoutWindow:t})},t.prototype.resetEditorPlugin=function(e){this.updateContentPlugin.forceUpdate(),this.setState({initState:e}),this.resetEditor()},t.prototype.setScale=function(e){this.setState({scale:e})},t.prototype.getTableBorder=function(){return this.state.tableBorderFormat},t.prototype.setTableBorderColor=function(e){this.setState({tableBorderFormat:(0,n.__assign)((0,n.__assign)({},this.getTableBorder()),{color:e})})},t.prototype.setTableBorderWidth=function(e){this.setState({tableBorderFormat:(0,n.__assign)((0,n.__assign)({},this.getTableBorder()),{width:e})})},t.prototype.setTableBorderStyle=function(e){this.setState({tableBorderFormat:(0,n.__assign)((0,n.__assign)({},this.getTableBorder()),{style:e})})},t.prototype.toggleDarkMode=function(){this.setState({isDarkMode:!this.state.isDarkMode})},t.prototype.setPageDirection=function(e){this.setState({isRtl:e}),[window,this.state.popoutWindow].forEach((function(t){t&&(t.document.body.dir=e?"rtl":"ltr")}))},t.prototype.renderMainPane=function(){var e=this.getStyles();return o.createElement(o.Fragment,null,this.renderEditor(),this.state.showSidePane?o.createElement(o.Fragment,null,o.createElement("div",{className:e.resizer,onMouseDown:this.onMouseDown}),this.renderSidePane(!1),this.renderSidePaneButton()):this.renderSidePaneButton())},t.prototype.renderSidePaneButton=function(){var e=this.getStyles();return o.createElement("button",{className:"side-pane-toggle "+(this.state.showSidePane?"open":"close")+" "+e.showSidePane,onClick:this.state.showSidePane?this.onHideSidePane:this.onShowSidePane},o.createElement("div",null,this.state.showSidePane?"Hide side pane":"Show side pane"))},t.prototype.renderPopout=function(){var e=this.getStyles();return o.createElement(o.Fragment,null,this.renderSidePane(!0),a.createPortal(o.createElement(c.WindowProvider,{window:this.state.popoutWindow},o.createElement(l.ThemeProvider,{applyTo:"body",theme:this.getTheme(this.state.isDarkMode)},o.createElement("div",{className:e.mainPane},this.renderRibbon(!0),o.createElement("div",{className:e.body},this.renderEditor())))),this.popoutRoot))},t.editorDivId="RoosterJsContentDiv",t}(o.Component);t.default=f},1040:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(6767),a=r(7363),i=r(1905),l=r(5948);function s(e,t){var r=e.getBoundingClientRect(),n=e.ownerDocument,o=function(e){var a=e.pageX-r.left,i=e.pageY-r.top,l=Math.round(100*a/r.width)/100,s=Math.round(100*i/r.height)/100;l=Math.min(Math.max(l,0),1),s=Math.min(Math.max(s,0),1),t(l,s),"mouseup"==e.type?(n.removeEventListener("mousemove",o,!0),n.removeEventListener("mouseup",o,!0)):(e.stopPropagation(),e.preventDefault())};n.addEventListener("mousemove",o,!0),n.addEventListener("mouseup",o,!0)}t.default=function(e){var t=a.useRef(null),r=a.useRef(null),u=e.initColor.hsv(),c=(0,n.__read)(a.useState(u.hue()),2),d=c[0],m=c[1],f=(0,n.__read)(a.useState(u.saturationv()),2),p=f[0],g=f[1],h=(0,n.__read)(a.useState(u.value()),2),b=h[0],y=h[1],v="rtl"==(0,i.getComputedStyle)(document.body,"direction"),k=a.useCallback((function(e){s(t.current,(function(e){return m(360*e)}))}),[]),C=a.useCallback((function(e){s(r.current,(function(e,t){g(100*e),y(100-100*t)}))}),[]),x=a.useCallback((function(e){var t=d;switch(e.which){case 37:t+=v?1:-1;break;case 38:t--;break;case 39:t+=v?-1:1;break;case 40:t++;break;case 33:t-=10;break;case 34:t+=10;break;case 36:t=0;break;case 35:t=360}m(Math.max(Math.min(t,360),0))}),[d,v]),T=a.useCallback((function(e){var t=p,r=b;switch(e.which){case 37:t+=v?1:-1;break;case 39:t+=v?-1:1;break;case 36:t=0;break;case 35:t=100;break;case 38:r++;break;case 40:r--;break;case 33:r+=10;break;case 34:r-=10}g(Math.max(Math.min(t,100),0)),y(Math.max(Math.min(r,100),0))}),[p,b,v]);return a.useEffect((function(){var t;null===(t=e.onSelect)||void 0===t||t.call(e,e.initColor)}),[]),a.useEffect((function(){var t;null===(t=e.onSelect)||void 0===t||t.call(e,o.hsv(d,p,b).rgb())}),[d,p,b]),a.createElement("div",{className:l.container},a.createElement("div",{tabIndex:0,className:l.picker,ref:r,style:{backgroundColor:o.hsv(d,100,100).rgb().toString()},onKeyDown:T,onMouseDown:C},a.createElement("div",{className:l.layer1},a.createElement("div",{className:l.layer2})),a.createElement("div",{className:l.currentColor,style:{left:p+"%",top:100-b+"%"}},a.createElement("div",null))),a.createElement("div",{className:l.newColor,style:{backgroundColor:o.hsv(d,p,b).rgb().toString()}}),a.createElement("div",{className:l.initColor,style:{backgroundColor:e.initColor.toString()}}),a.createElement("div",{className:l.hueBar,ref:t,tabIndex:0,onMouseDown:k,onKeyDown:x},a.createElement("div",{className:l.currentColor,style:{left:d/3.6+"%"}},a.createElement("div",null))))}},8343:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(2922),o=r(1905),a=r(1905),i=r(1905),l=r(1905),s=r(1905),u=r(1905),c=r(1905),d=r(1905),m=r(1905),f=r(1905),p=r(1905),g=r(9841);t.default=function(e){var t=e.pluginList,r=e.linkTitle,h=t.imageEdit?new c.ImageEdit({preserveRatio:e.forcePreserveRatio,applyChangesOnMouseUp:e.applyChangesOnMouseUp}):null,b={contentEdit:t.contentEdit?new i.ContentEdit(e.contentEditFeatures):null,hyperlink:t.hyperlink?new u.HyperLink((null==r?void 0:r.indexOf(n.UrlPlaceholder))>=0?function(e){return r.replace(n.UrlPlaceholder,e)}:r?function(){return r}:null):null,paste:t.paste?new d.Paste:null,watermark:t.watermark?new p.Watermark(e.watermarkText):null,imageEdit:h,cutPasteListChain:t.cutPasteListChain?new s.CutPasteListChain:null,tableCellSelection:t.tableCellSelection?new m.TableCellSelection:null,tableResize:t.tableResize?new f.TableResize:null,customReplace:t.customReplace?new l.CustomReplace:null,autoFormat:t.autoFormat?new a.AutoFormat:null,listEditMenu:t.contextMenu&&t.listEditMenu?(0,g.createListEditMenuProvider)():null,imageEditMenu:t.contextMenu&&t.imageEditMenu&&h?(0,g.createImageEditMenuProvider)(h):null,tableEditMenu:t.contextMenu&&t.tableEditMenu?(0,g.createTableEditMenuProvider)():null,contextMenu:t.contextMenu?(0,g.createContextMenuPlugin)():null,announce:t.announce?new o.Announce(new Map([[2,"Autocorrected Bullet"],[1,"Autocorrected {0}"],[3,"Warning, pressing tab here adds an extra row."]])):null};return Object.values(b)}},5563:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.darkMode=void 0;var n=r(8527);t.darkMode={key:"buttonNameDarkMode",unlocalizedText:"Dark Mode",iconName:"ClearNight",isChecked:function(e){return e.isDarkMode},onClick:function(e){return e.setDarkModeState(!e.isDarkMode()),e.focus(),n.default.getInstance().toggleDarkMode(),!0}}},3584:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.exportContent=void 0;var n=r(7047);t.exportContent={key:"buttonNameExport",unlocalizedText:"Export",iconName:"Export",flipWhenRtl:!0,onClick:function(e){e.getDocument().defaultView.open().document.write((0,n.trustedHTMLHandler)(e.getContent()))}}},9899:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.popout=void 0;var n=r(8527);t.popout={key:"buttonNamePopout",unlocalizedText:"Open in a separate window",iconName:"OpenInNewWindow",flipWhenRtl:!0,onClick:function(e){n.default.getInstance().popout()}}},7663:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.zoom=void 0;var n=r(8527),o=r(1905),a={"zoom50%":"50%","zoom75%":"75%","zoom100%":"100%","zoom150%":"150%","zoom200%":"200%"},i={"zoom50%":.5,"zoom75%":.75,"zoom100%":1,"zoom150%":1.5,"zoom200%":2};t.zoom={key:"buttonNameZoom",unlocalizedText:"Zoom",iconName:"ZoomIn",dropDownMenu:{items:a,getSelectedItemKey:function(e){return(0,o.getObjectKeys)(a).filter((function(t){return i[t]==e.zoomScale}))[0]}},onClick:function(e,t){var r=i[t];return e.setZoomScale(r),e.focus(),n.default.getInstance().setScale(r),!0}}},5942:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(1905),o=r(1905),a="SampleEntity",i=(0,o.createObjectDefinition)({count:(0,o.createNumberDefinition)()}),l=function(){function e(){var e=this;this.onClickEntity=function(t){var r=(0,o.findClosestElementAncestor)(t.target,void 0,(0,o.getEntitySelector)(a)),n=(0,o.getEntityFromElement)(r);n&&e.editor.addUndoSnapshot((function(){e.updateEntity(n,1)}),void 0,!1,{getEntityState:function(){return e.getEntityStates(n)}})}}return e.prototype.getName=function(){return"SampleEntity"},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.onPluginEvent=function(e){var t=this;if(0==e.eventType&&"m"==e.rawEvent.key&&e.rawEvent.ctrlKey){var r,l=this.createEntity();this.editor.addUndoSnapshot((function(){r=(0,n.insertEntity)(t.editor,a,l,!0,!0)}),void 0,!1,{getEntityState:function(){return t.getEntityStates(r)}}),e.rawEvent.preventDefault()}else if(15==e.eventType&&e.entity.type==a)switch(e.operation){case 0:this.dehydrate(e.entity),this.hydrate(e.entity),e.shouldPersist=!0;break;case 5:case 4:case 6:case 8:this.dehydrate(e.entity);break;case 11:e.state&&((0,o.setMetadata)(e.entity.wrapper,JSON.parse(e.state),i),this.updateEntity(e.entity))}},e.prototype.hydrate=function(e){var t=e.wrapper.querySelector("div"),r=document.createElement("span"),n=document.createElement("button");t.appendChild(r),t.appendChild(n),n.textContent="Test entity",n.addEventListener("click",this.onClickEntity),this.updateEntity(e)},e.prototype.dehydrate=function(e){var t=e.wrapper.querySelector("div"),r=t.querySelector("button");r&&(r.removeEventListener("click",this.onClickEntity),t.removeChild(r))},e.prototype.updateEntity=function(e,t){void 0===t&&(t=0);var r=(0,o.getMetadata)(e.wrapper),n=((null==r?void 0:r.count)||0)+t;(0,o.setMetadata)(e.wrapper,{count:n}),e.wrapper.querySelector("span").textContent="Count: "+n},e.prototype.createEntity=function(){return document.createElement("div")},e.prototype.getEntityStates=function(e){return e?[{id:e.id,type:e.type,state:e.wrapper.dataset.editingInfo}]:void 0},e}();t.default=l},863:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(6253),i=function(e){function t(t){var r=e.call(this,t)||this;return r.div=o.createRef(),r.updateHash=function(e,t){window.location.hash=(e||r.state.currentPane.getName())+(t?"/"+t.join("/"):"")},r.updateStateFromHash=function(){var e=window.location.hash,t=(e?e.substr(1):"").split("/"),n=t[0],o=n&&r.props.plugins.filter((function(e){return e.getName()==n}))[0];o&&(r.setState({currentPane:o}),window.setTimeout((function(){t.splice(0,1),o.setHashPath&&o.setHashPath(t)}),0))},r.renderSidePane=function(e){var t=e.getTitle(),n=r.state.currentPane==e;return o.createElement("div",{key:t,className:n?a.activePane:a.inactivePane},o.createElement("div",{className:a.title,onClick:function(){return r.updateHash(e.getName())}},t),o.createElement("div",{className:a.bodyContainer},o.createElement("div",{className:a.body},e.renderSidePane(r.updateHash))))},r.state={currentPane:r.props.plugins[0]},window.addEventListener("hashchange",r.updateStateFromHash),r}return(0,n.__extends)(t,e),t.prototype.componentDidMount=function(){this.updateStateFromHash()},t.prototype.componentWillUnmount=function(){window.removeEventListener("hashchange",this.updateStateFromHash)},t.prototype.render=function(){var e=(this.props.className||"")+" "+a.sidePane;return o.createElement("div",{className:e,ref:this.div},this.props.plugins.map(this.renderSidePane))},t.prototype.changeWidth=function(e){var t=this.div.current;t&&(t.style.width=t.clientWidth+e+"px")},t}(o.Component);t.default=i},3829:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=function(){function e(e,t,r){this.componentCtor=e,this.pluginName=t,this.title=r,this.component=o.createRef()}return e.prototype.getName=function(){return this.pluginName},e.prototype.initialize=function(e){this.editor=e},e.prototype.dispose=function(){this.editor=null},e.prototype.getTitle=function(){return this.title},e.prototype.renderSidePane=function(e){return o.createElement(this.componentCtor,(0,n.__assign)((0,n.__assign)({},this.getComponentProps({updateHash:e})),{ref:this.component}))},e.prototype.setHashPath=function(e){this.component.current&&this.component.current.setHashPath&&this.component.current.setHashPath(e)},e.prototype.getComponent=function(e){this.component.current&&e(this.component.current)},e}();t.default=a},1163:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(8139),i=r(1905),l=r(3346),s=function(e){function t(t){var r=e.call(this,t)||this;return r.select=o.createRef(),r.pane=o.createRef(),r.onChange=function(){r.props.updateHash(null,[r.select.current.value])},r.state={current:"empty"},r}return(0,n.__extends)(t,e),t.prototype.render=function(){var e=a.default[this.state.current].component,t=null;return e&&(t=o.createElement(e,(0,n.__assign)((0,n.__assign)({},this.props),{ref:this.pane}))),o.createElement(o.Fragment,null,o.createElement("div",{className:l.header},o.createElement("h3",null,"Select an API to try"),o.createElement("select",{ref:this.select,value:this.state.current,onChange:this.onChange},(0,i.getObjectKeys)(a.default).map((function(e){return o.createElement("option",{value:e,key:e},a.default[e].name)})))),t)},t.prototype.onPluginEvent=function(e){this.pane.current&&this.pane.current.onPluginEvent&&this.pane.current.onPluginEvent(e)},t.prototype.setHashPath=function(e){var t=e&&(0,i.getObjectKeys)(a.default).indexOf(e[0])>=0?e[0]:null;t&&t!=this.state.current?this.setState({current:t}):this.props.updateHash(null,[this.state.current])},t}(o.Component);t.default=s},9268:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(1163),a=function(e){function t(){return e.call(this,o.default,"api","API Playground")||this}return(0,n.__extends)(t,e),t.prototype.getComponentProps=function(e){var t=this;return(0,n.__assign)((0,n.__assign)({},e),{getEditor:function(){return t.editor}})},t.prototype.onPluginEvent=function(e){this.getComponent((function(t){return t.onPluginEvent(e)}))},t}(r(3829).default);t.default=a},8139:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(4949),o=r(9413),a=r(8353),i=r(1942),l=r(7113),s=r(7849),u=r(961),c=r(5638),d=r(2997),m=r(8393),f={empty:{name:"Please select"},block:{name:"Block Elements",component:n.default},sanitizer:{name:"HTML Sanitizer",component:c.default},matchlink:{name:"Match Link",component:u.default},insertContent:{name:"Insert Content",component:l.default},region:{name:"Get Selected Regions",component:a.default},entity:{name:"Insert Entity",component:s.default},vlist:{name:"VList",component:d.default},vtable:{name:"VTable",component:m.default},getDarkColor:{name:"getDarkColor",component:o.default},getSelection:{name:"getSelection",component:i.default},more:{name:"Coming soon..."}};t.default=f},4949:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(1905),i=r(5552),l=function(e){function t(t){var r=e.call(this,t)||this;return r.checkGetBlocks=o.createRef(),r.update=function(){r.props.getEditor().runAsync(r.onGetBlocks)},r.onGetBlocks=function(){for(var e=r.props.getEditor().getBodyTraverser(),t=e&&e.currentBlockElement,n=[];t;)n.push(t),t=e.getNextBlockElement();r.setBlocks(n)},r.onMouseOver=function(e){r.props.getEditor().select(e.getStartNode(),0,e.getEndNode(),-1)},r.state={blocks:[]},r}return(0,n.__extends)(t,e),t.prototype.render=function(){var e=this;return o.createElement("div",null,o.createElement("button",{onClick:this.onGetBlocks},"Get blocks"),o.createElement("input",{type:"checkbox",id:"checkGetBlocks",ref:this.checkGetBlocks,onClick:this.update}),o.createElement("label",{htmlFor:"checkGetBlocks"},"Auto refresh"),this.state.blocks.map((function(t,r){return o.createElement("pre",{key:r,className:i.block,onMouseOver:function(){return e.onMouseOver(t)}},s(t)?e.renderBlock(t):o.createElement("i",{onDoubleClick:function(){return e.collapse(t)}},e.renderBlock(t)))})))},t.prototype.onPluginEvent=function(e){1!=e.eventType&&7!=e.eventType||(this.checkGetBlocks.current.checked?this.update():this.setBlocks([]))},t.prototype.collapse=function(e){e.collapseToSingleElement(),this.props.getEditor().triggerContentChangedEvent(),this.checkGetBlocks.current.checked||this.onGetBlocks()},t.prototype.renderBlock=function(e){var t=this,r=s(e);return o.createElement("div",{onDoubleClick:!r&&function(){return t.collapse(e)},title:r?"This is a NodeBlockElement":"This is a StartEndBlockElement, double to collapse",style:{fontStyle:r?"normal":"italic"}},function(e){return e.getStartNode()==e.getEndNode()?e.getStartNode().textContent:(0,a.createRange)(e.getStartNode(),e.getEndNode()).toString()}(e)||"")},t.prototype.setBlocks=function(e){this.setState({blocks:e})},t}(o.Component);function s(e){return e.getStartNode()==e.getEndNode()&&(0,a.isBlockElement)(e.getStartNode())}t.default=l},9413:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(1660),i=r(6269),l=function(e){function t(t){var r=e.call(this,t)||this;return r.lightColor=o.createRef(),r.onInputChange=function(){var e=r.lightColor.current.value,t="";try{t=(0,a.getDarkColor)(e)}catch(e){t=e}r.setState({lightColor:e,darkColor:t})},r.state={lightColor:"",darkColor:""},r}return(0,n.__extends)(t,e),t.prototype.render=function(){return o.createElement(o.Fragment,null,o.createElement("div",null,"Light Color:"," ",o.createElement("input",{type:"input",ref:this.lightColor,onChange:this.onInputChange,value:this.state.lightColor})),o.createElement("hr",null),o.createElement("div",null,"Light Color:",o.createElement("div",{className:i.lightBackground},o.createElement("div",{className:i.result,style:{backgroundColor:this.state.lightColor}}))),o.createElement("div",null,"DarkColor: ",o.createElement("span",null,this.state.darkColor),o.createElement("div",{className:i.darkBackground},o.createElement("div",{className:i.result,style:{backgroundColor:this.state.darkColor}}))))},t}(o.Component);t.default=l},1942:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(3386),i=function(e){function t(t){var r,n=e.call(this,t)||this;return n.selectInfo=o.createRef(),n.editor=n.props.getEditor(),n.firstCellX=o.createRef(),n.firstCellY=o.createRef(),n.lastCellX=o.createRef(),n.lastCellY=o.createRef(),n.selectionType=((r={})[0]="Normal",r[1]="Table Selection",r[2]="Image Selection",r),n.updateSelection=function(){n.setState({selection:n.editor?n.editor.getSelectionRangeEx():null})},n.selectElement=function(){var e=n.selectInfo.current.value;if(e)if(n.state.isImageSelectionOption){var t=(r=n.editor.getDocument().querySelector('img[id$="'+e+'"]'))?n.editor.select(r):null;n.setState({selection:t?n.editor.getSelectionRangeEx():null,selectionMessage:t?"Image Found":"Image not found"})}else{var r=n.editor.getDocument().querySelector('table[id$="'+e+'"]'),o=n.getCoordinates();t=r&&o?n.editor.select(r,o):null,n.setState({selection:t?n.editor.getSelectionRangeEx():null,selectionMessage:t?"Table found":"Table not found"})}},n.getCoordinates=function(){return n.firstCellX.current.value&&n.firstCellY.current.value&&n.lastCellX.current.value&&n.lastCellY.current.value?{firstCell:{x:parseInt(n.firstCellX.current.value),y:parseInt(n.firstCellY.current.value)},lastCell:{x:parseInt(n.lastCellX.current.value),y:parseInt(n.lastCellY.current.value)}}:null},n.createSelectionInfo=function(){return o.createElement(o.Fragment,null,o.createElement("div",{className:a.containerInfo},o.createElement("span",{className:a.title},"Selection Information"),o.createElement("div",null,"Selection type: ",n.selectionType[n.state.selection.type]),o.createElement("div",null,"Are collapsed: ",""+n.state.selection.areAllCollapsed),1===n.state.selection.type&&o.createElement(o.Fragment,null,o.createElement("div",null,"Coordinates"),o.createElement("div",null,"First cell:",o.createElement("span",null," X: ",n.state.selection.coordinates.firstCell.x),o.createElement("span",null," Y: ",n.state.selection.coordinates.firstCell.y)),o.createElement("div",null,"Last cell:",o.createElement("span",null," X: ",n.state.selection.coordinates.lastCell.x),o.createElement("span",null," Y: ",n.state.selection.coordinates.lastCell.y))),2===n.state.selection.type&&o.createElement(o.Fragment,null,o.createElement("div",null,"Image Id: ",n.state.selection.image.id))))},n.selectionOption=function(e,t,r){return o.createElement(o.Fragment,null,o.createElement("div",null,o.createElement("label",null,o.createElement("input",{className:a.input,type:"radio",checked:t,onChange:r}),e)))},n.changeSelectionOption=function(){n.setState({isImageSelectionOption:!n.state.isImageSelectionOption})},n.createCoordinatesInput=function(e,t){return o.createElement(o.Fragment,null,o.createElement("div",null,o.createElement("label",null,e,o.createElement("input",{className:a.coordinates,min:"0",type:"number",ref:t}))))},n.showManualSelection=function(){n.setState({manualSelect:!n.state.manualSelect})},n.state={selection:null,selectionMessage:"",isImageSelectionOption:!0,manualSelect:!1},n}return(0,n.__extends)(t,e),t.prototype.onPluginEvent=function(e){22!=e.eventType||this.state.manualSelect||this.updateSelection()},t.prototype.render=function(){return o.createElement(o.Fragment,null,!this.state.manualSelect&&o.createElement("span",{className:a.title},"Click on the screen to get selection information"),this.state.selection&&o.createElement("span",null,this.createSelectionInfo()),this.state.manualSelect&&o.createElement("div",{className:a.containerInfo},o.createElement("div",null,o.createElement("span",{className:a.title},"Select element type:"),this.selectionOption("Image",this.state.isImageSelectionOption,this.changeSelectionOption),this.selectionOption("Table",!this.state.isImageSelectionOption,this.changeSelectionOption),o.createElement("input",{className:a.input,placeholder:"Type element id:",type:"input",ref:this.selectInfo}),!this.state.isImageSelectionOption&&o.createElement("div",null,o.createElement("div",null," Coordinates "),this.createCoordinatesInput("First cell X",this.firstCellX),this.createCoordinatesInput("First cell Y",this.firstCellY),this.createCoordinatesInput("Last cell X",this.lastCellX),this.createCoordinatesInput("Last cell X",this.lastCellY))),o.createElement("div",null,this.state.selectionMessage),o.createElement("div",null,this.selectInfo&&o.createElement("button",{className:a.button,onClick:this.selectElement},"Select Element"))),o.createElement("button",{className:a.button,onClick:this.showManualSelection},this.state.manualSelect?"Hide manual select":"Show manual select"))},t}(o.Component);t.default=i},7113:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(6532),i=function(e){function t(t){var r=e.call(this,t)||this;return r.html=o.createRef(),r.onClick=function(){var e=r.props.getEditor();if(5!=r.state.position){var t={position:r.state.position,updateCursor:r.state.updateCursor,replaceSelection:r.state.replaceSelection,insertOnNewLine:r.state.insertOnNewLine};e.addUndoSnapshot((function(){return e.insertContent(r.state.content,t)}))}},r.state={content:"",position:3,updateCursor:!0,replaceSelection:!0,insertOnNewLine:!1},r}return(0,n.__extends)(t,e),t.prototype.render=function(){var e=this;return o.createElement("table",null,o.createElement("tr",null,o.createElement("td",null,"HTML Content"),o.createElement("td",null,o.createElement("textarea",{className:a.text,ref:this.html,value:this.state.content,onChange:function(){return e.setState({content:e.html.current.value})}}))),o.createElement("tr",null,o.createElement("td",null,"Insert at"),o.createElement("td",null,o.createElement("div",null,o.createElement("input",{type:"radio",name:"position",checked:0==this.state.position,id:"insertBegin",onClick:function(){return e.setPosition(0)}}),o.createElement("label",{htmlFor:"insertBegin"},"Begin")),o.createElement("div",null,o.createElement("input",{type:"radio",name:"position",checked:1==this.state.position,id:"insertEnd",onClick:function(){return e.setPosition(1)}}),o.createElement("label",{htmlFor:"insertEnd"},"End")),o.createElement("div",null,o.createElement("input",{type:"radio",name:"position",checked:3==this.state.position,id:"insertSelectionStart",onClick:function(){return e.setPosition(3)}}),o.createElement("label",{htmlFor:"insertSelectionStart"},"SelectionStart")),o.createElement("div",null,o.createElement("input",{type:"radio",name:"position",checked:4==this.state.position,id:"insertOutside",onClick:function(){return e.setPosition(4)}}),o.createElement("label",{htmlFor:"insertOutside"},"Outside")))),o.createElement("tr",null,o.createElement("td",null,"Cursor option"),o.createElement("td",null,o.createElement("input",{type:"checkbox",id:"insertUpdateCursor",checked:this.state.updateCursor,onClick:function(){return e.setState({updateCursor:!e.state.updateCursor})}}),o.createElement("label",{htmlFor:"insertUpdateCursor"},"Update cursor"))),o.createElement("tr",null,o.createElement("td",null,"Replace option"),o.createElement("td",null,o.createElement("input",{type:"checkbox",id:"insertReplaceSelection",checked:this.state.replaceSelection,onClick:function(){return e.setState({replaceSelection:!e.state.replaceSelection})}}),o.createElement("label",{htmlFor:"insertReplaceSelection"},"Replace selection"))),o.createElement("tr",null,o.createElement("td",null,"New line option"),o.createElement("td",null,o.createElement("input",{type:"checkbox",id:"insertOnNewLine",checked:this.state.insertOnNewLine,onClick:function(){return e.setState({insertOnNewLine:!e.state.insertOnNewLine})}}),o.createElement("label",{htmlFor:"insertOnNewLine"},"Insert on new line"))),o.createElement("tr",null,o.createElement("td",{colSpan:2,className:a.buttonRow},o.createElement("button",{onClick:this.onClick},"Insert Content"))))},t.prototype.setPosition=function(e){this.setState({position:e})},t}(o.Component);t.default=i},7849:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(1905),i=r(1905),l=r(7047),s=r(9859),u=function(e){function t(t){var r=e.call(this,t)||this;return r.entityType=o.createRef(),r.html=o.createRef(),r.styleInline=o.createRef(),r.styleBlock=o.createRef(),r.isReadonly=o.createRef(),r.insertAtRoot=o.createRef(),r.focusAfterEntity=o.createRef(),r.insertEntity=function(){var e=r.entityType.current.value,t=document.createElement("span");t.innerHTML=(0,l.trustedHTMLHandler)(r.html.current.value);var n=r.styleBlock.current.checked,o=r.isReadonly.current.checked,a=r.insertAtRoot.current.checked,s=r.focusAfterEntity.current.checked;if(t){var u=r.props.getEditor();u.addUndoSnapshot((function(){(0,i.insertEntity)(u,e,t,n,o,void 0,a,s)}))}},r.onGetEntities=function(){var e=(0,a.getEntitySelector)(),t=r.props.getEditor().queryElements(e).map((function(e){return(0,a.getEntityFromElement)(e)}));r.setState({entities:t.filter((function(e){return!!e}))})},r.state={entities:[]},r}return(0,n.__extends)(t,e),t.prototype.render=function(){return o.createElement(o.Fragment,null,o.createElement("div",null,"Type: ",o.createElement("input",{type:"input",ref:this.entityType})),o.createElement("div",null,"HTML: ",o.createElement("textarea",{className:s.textarea,ref:this.html})),o.createElement("div",null,"Style:",o.createElement("input",{type:"radio",name:"entityStyle",ref:this.styleInline,id:"styleInline"}),o.createElement("label",{htmlFor:"styleInline"},"Inline"),o.createElement("input",{type:"radio",name:"entityStyle",ref:this.styleBlock,id:"styleBlock"}),o.createElement("label",{htmlFor:"styleBlock"},"Block")),o.createElement("div",null,o.createElement("input",{id:"readonly",type:"checkbox",ref:this.isReadonly}),o.createElement("label",{htmlFor:"readonly"},"Readonly ")),o.createElement("div",null,o.createElement("input",{id:"insertAtRoot",type:"checkbox",ref:this.insertAtRoot}),o.createElement("label",{htmlFor:"insertAtRoot"},"Force insert at root of region")),o.createElement("div",null,o.createElement("input",{id:"focusAfterEntity",type:"checkbox",ref:this.focusAfterEntity}),o.createElement("label",{htmlFor:"focusAfterEntity"},"Focus after entity")),o.createElement("div",null,o.createElement("button",{onClick:this.insertEntity},"Insert Entity")),o.createElement("hr",null),o.createElement("div",null,o.createElement("button",{onClick:this.onGetEntities},"Get all entities")),o.createElement("div",null,this.state.entities.map((function(e){return o.createElement(c,{key:e.id,entity:e})}))))},t}(o.Component);function c(e){var t=e.entity,r="",n=o.useCallback((function(){r=t.wrapper.style.backgroundColor,t.wrapper.style.backgroundColor="blue"}),[t]),a=o.useCallback((function(){t.wrapper.style.backgroundColor=r}),[t]);return o.createElement("div",{onMouseOver:n,onMouseOut:a},"Type: ",t.type,o.createElement("br",null),"Id: ",t.id,o.createElement("br",null),"Readonly: ",t.isReadonly?"True":"False",o.createElement("br",null))}t.default=u},961:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(1905),i=function(e){function t(t){var r=e.call(this,t)||this;return r.url=o.createRef(),r.onMatchLink=function(){var e=(0,a.matchLink)(r.url.current.value);r.setState({linkData:e})},r.state={linkData:void 0},r}return(0,n.__extends)(t,e),t.prototype.render=function(){var e=this.state.linkData||{},t=e.scheme,r=e.originalUrl,n=e.normalizedUrl;return o.createElement(o.Fragment,null,o.createElement("div",null,"Url: ",o.createElement("input",{type:"input",ref:this.url})," ",o.createElement("button",{onClick:this.onMatchLink},"Match Link")),null===this.state.linkData?o.createElement("div",null,"Not matched"):o.createElement(o.Fragment,null,o.createElement("div",null,"Schema: ",t||""),o.createElement("div",null,"Original Url: ",r||""),o.createElement("div",null,"Normalized Url: ",n||"")))},t}(o.Component);t.default=i},8353:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(1905),i=r(1483),l=function(e){function t(t){var r=e.call(this,t)||this;return r.getSelectedRegions=function(){r.setState({regions:r.props.getEditor().getSelectedRegions()})},r.clearAll=function(){r.setState({regions:[]})},r.state={regions:[]},r}return(0,n.__extends)(t,e),t.prototype.render=function(){var e=this.props.getEditor();return o.createElement(o.Fragment,null,o.createElement("div",null,o.createElement("button",{onClick:this.getSelectedRegions},"Get Selected Regions")," ",o.createElement("button",{onClick:this.clearAll},"Clear")),o.createElement("div",null,this.state.regions.map((function(t,r){return o.createElement(s,{key:r,region:t,editor:e,index:r})}))))},t}(o.Component);function s(e){var t=e.region,r=e.editor,n=e.index,i=o.useCallback((function(){var e=(0,a.getSelectedBlockElementsInRegion)(t);if(e.length>0){var n=(0,a.createRange)(e[0].getStartNode(),0,e[e.length-1].getEndNode(),-1);r.focus(),r.select(n)}}),[t]);return o.createElement("div",null,o.createElement("hr",null),o.createElement("div",null,o.createElement("b",null,"Region ",n)),o.createElement("div",null,"Root node: ",o.createElement(u,{node:t.rootNode})),o.createElement("div",null,"Node Before: ",o.createElement(u,{node:t.nodeBefore})),o.createElement("div",null,"Node After: ",o.createElement(u,{node:t.nodeAfter})),o.createElement("div",null,"Selected blocks: ",o.createElement("button",{onClick:i},"Select")))}function u(e){var t=e.node,r=o.useCallback((function(){(0,a.safeInstanceOf)(t,"HTMLElement")&&(t.className+=" "+i.hover)}),[t]),n=o.useCallback((function(){if((0,a.safeInstanceOf)(t,"HTMLElement")){var e=t.className.split(" ");e=e.filter((function(e){return e!=i.hover})),t.className=e.join(" ").trim()}}),[t]);return t?(0,a.safeInstanceOf)(t,"HTMLElement")?o.createElement("span",{onMouseOver:r,onMouseOut:n,className:i.regionNode},(0,a.getTagOfNode)(t),"#",t.id):o.createElement("span",{className:i.regionNode},t.nodeValue.substr(0,10)):null}t.default=l},5638:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(1905),i=r(7047),l=r(4211),s=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.source=o.createRef(),t.result=o.createRef(),t.sanitizer=new a.HtmlSanitizer,t.inline=function(){var e=t.getDOMDocument();(null==e?void 0:e.body)&&(t.sanitizer.convertGlobalCssToInlineCss(e),t.result.current.value=e.body.innerHTML)},t.sanitize=function(){var e=t.getDOMDocument();(null==e?void 0:e.body)&&(t.sanitizer.sanitize(e.body.firstChild),t.result.current.value=e.body.innerHTML)},t}return(0,n.__extends)(t,e),t.prototype.render=function(){return o.createElement(o.Fragment,null,o.createElement("h3",null,"Input"),o.createElement("textarea",{className:l.textarea,ref:this.source}),o.createElement("div",null,o.createElement("button",{className:l.button,onClick:this.inline},"Inline CSS"),o.createElement("button",{className:l.button,onClick:this.sanitize},"Sanitize")),o.createElement("h3",null,"Result"),o.createElement("textarea",{className:l.textarea,ref:this.result}))},t.prototype.getDOMDocument=function(){var e=new DOMParser,t=(0,i.trustedHTMLHandler)(this.source.current.value)||"";return e.parseFromString(t,"text/html")},t}(o.Component);t.default=s},2997:(e,t,r)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),a=r(7363),i=r(1905),l=((n={})[0]="None",n[1]="Ordered",n[2]="Unordered",n);function s(e){var t=e.item,r=e.editor,n=e.onChange,o=t.getListType(),i=a.useCallback((function(){var e=t.getNode();r.select(e)}),[e.item,r]),s=a.useCallback((function(){t.changeListType(1),n()}),[e.item,r]),u=a.useCallback((function(){t.changeListType(2),n()}),[e.item,r]),c=a.useCallback((function(){t.indent(),n()}),[e.item,r]),d=a.useCallback((function(){t.outdent(),n()}),[e.item,r]);return a.createElement("div",null,a.createElement("button",{onClick:s},"1."),a.createElement("button",{onClick:u},"*"),a.createElement("button",{onClick:d},"<-"),a.createElement("button",{onClick:c},"->"),a.createElement("span",{style:{marginLeft:20*t.getLevel()+"px",display:"inline-block",cursor:"pointer"},onMouseOver:i},l[o]))}var u=function(e){function t(t){var r=e.call(this,t)||this;return r.createVList=function(){var e=r.props.getEditor(),t=e.getElementAtCursor(),n=e.getSelectedRegions()[0],o=t?(0,i.createVListFromRegion)(n,!1,t):null;r.setState({vlist:o})},r.onWriteback=function(){var e=r.props.getEditor();e.addUndoSnapshot((function(){var t,n;null===(t=r.state.vlist)||void 0===t||t.writeBack(e.isFeatureEnabled("ReuseAllAncestorListElements"),e.isFeatureEnabled("DisableListChain")),e.focus(),e.select(null===(n=r.state.vlist.items[0])||void 0===n?void 0:n.getNode(),0)})),r.createVList()},r.onChange=function(){r.forceUpdate()},r.state={vlist:null},r}return(0,o.__extends)(t,e),t.prototype.render=function(){var e=this,t=this.props.getEditor();return a.createElement(a.Fragment,null,a.createElement("button",{onClick:this.createVList},"Create VList from cursor"),this.state.vlist&&a.createElement(a.Fragment,null,this.state.vlist.items.map((function(r){return a.createElement(s,{item:r,editor:t,onChange:e.onChange})})),a.createElement("button",{onClick:this.onWriteback},"Write back")))},t}(a.Component);t.default=u},5961:(e,t)=>{"use strict";function r(e,t,r,n,o,a,i,l,s,u,c){return{topBorderColor:e,bottomBorderColor:t,verticalBorderColor:r,hasBandedRows:n,bgColorEven:s,bgColorOdd:u,hasBandedColumns:o,hasHeaderRow:a,headerRowColor:c,hasFirstColumn:i,tableBorderFormat:l,keepCellShade:!1}}Object.defineProperty(t,"__esModule",{value:!0}),t.createTableFormat=t.PREDEFINED_STYLES=void 0,t.PREDEFINED_STYLES={DEFAULT:function(e,t){return r(e,e,e,!1,!1,!1,!1,0,null,t,e)},DEFAULT_WITH_BACKGROUND_COLOR:function(e,t){return r(e,e,e,!1,!1,!1,!1,0,null,t,e)},GRID_WITHOUT_BORDER:function(e,t){return r(e,e,e,!0,!1,!1,!1,3,null,t,e)},LIST:function(e,t){return r(e,e,null,!1,!1,!1,!1,0,null,t,e)},BANDED_ROWS_FIRST_COLUMN_NO_BORDER:function(e,t){return r(e,e,e,!1,!1,!1,!1,4,null,t,e)},EXTERNAL:function(e,t){return r(e,e,e,!1,!1,!1,!1,1,null,t,e)},NO_HEADER_VERTICAL:function(e,t){return r(e,e,e,!1,!1,!1,!1,2,null,t,e)},ESPECIAL_TYPE_1:function(e,t){return r(e,e,e,!1,!1,!1,!1,5,null,t,e)},ESPECIAL_TYPE_2:function(e,t){return r(e,e,e,!1,!1,!1,!1,6,null,t,e)},ESPECIAL_TYPE_3:function(e,t){return r(e,e,e,!1,!1,!1,!1,7,t,null,e)},CLEAR:function(e,t){return r(e,e,e,!1,!1,!1,!1,8,t,null,e)}},t.createTableFormat=r},8393:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(6767),a=r(7363),i=r(1040),l=r(5961),s=r(1905),u=r(1905),c="#0C64C0",d=r(9117);function m(e){var t=e.cell,r=e.editor,n=e.isCurrent,o=a.useCallback((function(){r.select(t.td)}),[t,r]),i=a.useCallback((function(){t.td&&e.onClickCell(t.td)}),[t,r]),l=t.td?(0,u.getTagOfNode)(t.td):t.spanAbove&&t.spanLeft?"↖":t.spanAbove?"↑":t.spanLeft?"←":"";return a.createElement("div",{style:{cursor:"pointer",border:n?"solid 2px black":""},onMouseOver:o,onClick:i},l)}var f=function(e){function t(t){var r=e.call(this,t)||this;return r.bgColor=a.createRef(),r.topBorderColor=a.createRef(),r.bottomBorderColor=a.createRef(),r.verticalBorderColor=a.createRef(),r.createVTable=function(){var e=r.props.getEditor().getElementAtCursor("td,th"),t=e?new u.VTable(e):null;r.setState({vtable:t})},r.onClickCell=function(e){var t=new u.VTable(e);r.setState({vtable:t})},r.onCustomizeFormat=function(){var e=(0,l.createTableFormat)(r.topBorderColor.current.value||void 0,r.bottomBorderColor.current.value||void 0,r.verticalBorderColor.current.value||void 0);r.state.vtable.applyFormat(e),r.forceUpdate()},r.onWriteBack=function(){var e=r.props.getEditor();e.addUndoSnapshot((function(){var t=r.state.vtable,n=t.getCurrentTd();t.writeBack(),e.focus(),e.select(n,0)})),r.createVTable()},r.state={vtable:null},r}return(0,n.__extends)(t,e),t.prototype.render=function(){var e,t=this,r=this.props.getEditor(),n=null===(e=this.state.vtable)||void 0===e?void 0:e.getCurrentTd();return a.createElement(a.Fragment,null,a.createElement("button",{onClick:this.createVTable},"Create VTable from cursor"),this.state.vtable&&a.createElement(a.Fragment,null,a.createElement("table",{style:{border:"solid 1px black"}},a.createElement("tbody",null,this.state.vtable.cells.map((function(e,o){return a.createElement("tr",{key:"row"+o},e.map((function(e,o){return a.createElement("td",{key:"cell"+o},a.createElement(m,{cell:e,editor:r,isCurrent:n==e.td,onClickCell:t.onClickCell}))})))})))),a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("th",{colSpan:2},"Edit Table")),a.createElement("tr",null,a.createElement("td",null,"Insert"),a.createElement("td",null,this.renderEditTableButton(r,"Above",0),this.renderEditTableButton(r,"Below",1),this.renderEditTableButton(r,"Left",2),this.renderEditTableButton(r,"Right",3))),a.createElement("tr",null,a.createElement("td",null,"Delete"),a.createElement("td",null,this.renderEditTableButton(r,"Table",4),this.renderEditTableButton(r,"Column",5),this.renderEditTableButton(r,"Row",6))),a.createElement("tr",null,a.createElement("td",null,"Merge"),a.createElement("td",null,this.renderEditTableButton(r,"Above",7),this.renderEditTableButton(r,"Below",8),this.renderEditTableButton(r,"Left",9),this.renderEditTableButton(r,"Right",10))),a.createElement("tr",null,a.createElement("td",null,"Split"),a.createElement("td",null,this.renderEditTableButton(r,"Horizontally",12),this.renderEditTableButton(r,"Vertically",13))),a.createElement("tr",null,a.createElement("td",null,"Align"),a.createElement("td",null,this.renderEditTableButton(r,"Left",15),this.renderEditTableButton(r,"Center",14),this.renderEditTableButton(r,"Right",16))),a.createElement("tr",null,a.createElement("td",null,"Align Cell"),a.createElement("td",null,this.renderEditTableButton(r,"Left",17),this.renderEditTableButton(r,"Center",18),this.renderEditTableButton(r,"Right",19),this.renderEditTableButton(r,"Top",20),this.renderEditTableButton(r,"Middle",21),this.renderEditTableButton(r,"Bottom",22))),a.createElement("tr",null,a.createElement("th",{colSpan:2},"Format Table")),a.createElement("tr",null,a.createElement("td",null,"State:"),a.createElement("td",null,this.renderSetHeaderRowButton(r),this.renderSetFirstColumnButton(r),this.renderSetBandedColumnButton(r),this.renderSetBandedRowButton(r))),a.createElement("tr",null,a.createElement("td",null,"Predefined:"),a.createElement("td",null,this.renderFormatTableButton("Default",l.PREDEFINED_STYLES.DEFAULT(c,c+"20"),r),this.renderFormatTableButton("Grid without border",l.PREDEFINED_STYLES.GRID_WITHOUT_BORDER(c,c+"20"),r),this.renderFormatTableButton("List",l.PREDEFINED_STYLES.LIST(c,c+"20"),r),this.renderFormatTableButton("Banded Row and first column and no border",l.PREDEFINED_STYLES.BANDED_ROWS_FIRST_COLUMN_NO_BORDER(c,c+"20"),r),this.renderFormatTableButton("Default with background color",l.PREDEFINED_STYLES.DEFAULT_WITH_BACKGROUND_COLOR(c,c+"20"),r),this.renderFormatTableButton("External",l.PREDEFINED_STYLES.EXTERNAL(c,c+"20"),r),this.renderFormatTableButton("No Header Vertical",l.PREDEFINED_STYLES.NO_HEADER_VERTICAL(c,c+"20"),r),this.renderFormatTableButton("Especial type 1",l.PREDEFINED_STYLES.ESPECIAL_TYPE_1(c,c+"20"),r),this.renderFormatTableButton("Especial type 2",l.PREDEFINED_STYLES.ESPECIAL_TYPE_2(c,c+"20"),r),this.renderFormatTableButton("Especial type 3",l.PREDEFINED_STYLES.ESPECIAL_TYPE_3(c,c+"20"),r),this.renderFormatTableButton("Clear",l.PREDEFINED_STYLES.CLEAR("transparent"),r))),a.createElement("tr",null,a.createElement("th",{colSpan:2,className:d.buttonRow},"Customized Colors:")),a.createElement(p,{text:"BackgroundColor",inputRef:this.bgColor}),a.createElement(p,{text:"Top border",inputRef:this.topBorderColor}),a.createElement(p,{text:"Bottom border",inputRef:this.bottomBorderColor}),a.createElement(p,{text:"Vertical border",inputRef:this.verticalBorderColor}),a.createElement("tr",null,a.createElement("td",{colSpan:2,className:d.buttonRow,onClick:this.onCustomizeFormat},a.createElement("button",{className:d.button},"Apply Format"))),a.createElement("tr",null,a.createElement("th",{colSpan:2,className:d.buttonRow},"Style Info:")))),a.createElement("button",{onClick:this.onWriteBack},"Write back")))},t.prototype.renderEditTableButton=function(e,t,r){var n=this;return a.createElement("button",{className:d.button,onClick:function(){(0,s.editTable)(e,r),n.forceUpdate()}},t)},t.prototype.renderSetHeaderRowButton=function(e){var t=this;return a.createElement("button",{className:d.button,onClick:function(){var r,n;(0,s.formatTable)(e,(r=t.state.vtable.table,(n=new u.VTable(r).formatInfo).keepCellShade=!0,n.hasHeaderRow=!n.hasHeaderRow,n),t.state.vtable.table),t.forceUpdate()}},"Header Row")},t.prototype.renderSetFirstColumnButton=function(e){var t=this;return a.createElement("button",{className:d.button,onClick:function(){var r,n;(0,s.formatTable)(e,(r=t.state.vtable.table,(n=new u.VTable(r).formatInfo).keepCellShade=!0,n.hasFirstColumn=!n.hasFirstColumn,n),t.state.vtable.table),t.forceUpdate()}},"First Column")},t.prototype.renderSetBandedColumnButton=function(e){var t=this;return a.createElement("button",{className:d.button,onClick:function(){var r,n;(0,s.formatTable)(e,(r=t.state.vtable.table,(n=new u.VTable(r).formatInfo).keepCellShade=!0,n.hasBandedColumns=!n.hasBandedColumns,n),t.state.vtable.table),t.forceUpdate()}},"Banded Column")},t.prototype.renderSetBandedRowButton=function(e){var t=this;return a.createElement("button",{className:d.button,onClick:function(){var r,n;(0,s.formatTable)(e,(r=t.state.vtable.table,(n=new u.VTable(r).formatInfo).keepCellShade=!0,n.hasBandedRows=!n.hasBandedRows,n),t.state.vtable.table),t.forceUpdate()}},"Banded Row")},t.prototype.renderFormatTableButton=function(e,t,r){var n=this;return a.createElement("button",{className:d.button,onClick:function(){(0,s.formatTable)(r,t,n.state.vtable.table),n.forceUpdate()}},e)},t}(a.Component);function p(e){var t,r=(0,n.__read)(a.useState(!1),2),l=r[0],s=r[1],u=a.useCallback((function(){s(!l)}),[l]),c=a.useCallback((function(t){e.inputRef.current.value=t.hex().toString()}),[]);try{t=o(e.inputRef.current.value)}catch(e){t=o("white")}return a.createElement(a.Fragment,null,a.createElement("tr",null,a.createElement("td",{className:d.label},a.createElement("button",{onClick:u},e.text)),a.createElement("td",null,a.createElement("input",{type:"text",ref:e.inputRef}))),l&&a.createElement("tr",null,a.createElement("td",{colSpan:2},a.createElement(i.default,{initColor:t,onSelect:c}))))}t.default=f},5180:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(865),i=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,n.__extends)(t,e),t.prototype.render=function(){var e=new a.default(this.props.state);return o.createElement("div",null,o.createElement("pre",null,e.getCode()))},t}(o.Component);t.default=i},6671:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(1905),i=r(1905),l=r(680),s={autoBullet:"Auto Bullet / Numbering",indentWhenTab:"Indent list when Tab",outdentWhenShiftTab:"Outdent list when Shift + Tab",outdentWhenBackspaceOnEmptyFirstLine:"Outdent list when Backspace on empty first Line",outdentWhenEnterOnEmptyLine:"Outdent list when Enter on empty line",mergeInNewLineWhenBackspaceOnFirstChar:"Merge in new line when Backspace on first char in list",maintainListChain:"Maintain the continued list numbers",unquoteWhenBackspaceOnEmptyFirstLine:"Unquote when Backspace on empty first line",unquoteWhenEnterOnEmptyLine:"Unquote when Enter on empty line",tabInTable:"Tab to jump cell in table",upDownInTable:"Up / Down to jump cell in table",insertLineBeforeStructuredNodeFeature:"Enter to create new line before table/list at beginning of editor content",autoLink:"Auto link",unlinkWhenBackspaceAfterLink:"Auto unlink when backspace right after a hyperlink",defaultShortcut:"Default Shortcuts",noCycleCursorMove:"Avoid moving cycle moving cursor when Ctrl+Left/Right",clickOnEntity:"Fire an event when click on a readonly entity",escapeFromEntity:"Fire an event when Escape from a readonly entity",enterBeforeReadonlyEntity:"Start a new line when Enter before an event",backspaceAfterEntity:"Fire an event when Backspace after an entity",deleteBeforeEntity:"Fire an event when Delete before an event",markdownBold:"Markdown style Bolding",markdownItalic:"Markdown style Italics",markdownStrikethru:"Markdown style Strikethrough",markdownInlineCode:"Markdown style Code blocks",maintainListChainWhenDelete:"Maintain the list of number in the right order after press delete before the first item",indentTableOnTab:"Indent the table if it is all cells are selected.",indentWhenTabText:"On Tab indent the selection or add Tab, requires TabKeyFeatures Experimental Feature",outdentWhenTabText:"On Shift + Tab outdent the selection, requires TabKeyFeatures Experimental Feature",autoHyphen:"Automatically transform -- into hyphen, if typed between two words.",autoBulletList:"When press space after *, -, --, ->, --\x3e, >, => in an empty line, toggle bullet",autoNumberingList:"When press space after an number, a letter or roman number followed by ), ., -, or between parenthesis in an empty line, toggle numbering",mergeListOnBackspaceAfterList:"When backspacing between lists, merge the lists",deleteTableWithBackspace:"Delete table with backspace key with whole table is selected",moveBetweenDelimitersFeature:"Content edit feature to move the cursor from Delimiters around Entities when using Right or Left Arrow Keys",removeEntityBetweenDelimiters:"When using BACKSPACE or DELETE in a Readonly inline entity delimeter, trigger a Entity Operation",removeCodeWhenEnterOnEmptyLine:"Remove code line when enter on empty line",removeCodeWhenBackspaceOnEmptyFirstLine:"Remove code line when backspace on empty first line",indentWhenAltShiftRight:"Indent list item using Alt + Shift + Right",outdentWhenAltShiftLeft:"Outdent list item using Alt + Shift + Left"},u=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.onContentEditClick=function(e){t.props.resetState((function(t){var r=document.getElementById(e);t.contentEditFeatures[e]=r.checked}),!0)},t}return(0,n.__extends)(t,e),t.prototype.render=function(){var e=this,t=(0,a.getAllFeatures)();return o.createElement("table",null,o.createElement("tbody",null,(0,i.getObjectKeys)(t).map((function(t){return e.renderContentEditItem(t,s[t])}))))},t.prototype.renderContentEditItem=function(e,t,r){var n=this,a=this.props.state[e];return o.createElement("tr",{key:e},o.createElement("td",{className:l.checkboxColumn},o.createElement("input",{type:"checkbox",id:e,checked:a,title:e,onChange:function(){return n.onContentEditClick(e)}})),o.createElement("td",null,o.createElement("div",null,o.createElement("label",{htmlFor:e,title:e},t)),a&&r))},t}(o.Component);t.default=u},490:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(1905),i=r(680),l="NotSet",s=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.onFormatClick=function(e){t.props.resetState((function(t){var r=document.getElementById(e);t.defaultFormat[e]=r.checked}),!0)},t.onSelectChanged=function(e){t.props.resetState((function(t){var r=document.getElementById(e).value;t.defaultFormat[e]=r==l?null:r}),!0)},t}return(0,n.__extends)(t,e),t.prototype.render=function(){var e,t,r,n;return o.createElement(o.Fragment,null,o.createElement("table",null,o.createElement("tbody",null,this.renderFormatItem("bold","Bold"),this.renderFormatItem("italic","Italic"),this.renderFormatItem("underline","Underline"))),o.createElement("table",null,o.createElement("tbody",null,this.renderSelectItem("fontFamily","Font family: ",((e={})[l]="Not Set",e.Arial="Arial",e.Calibri="Calibri",e["Courier New"]="Courier New",e.Tahoma="Tahoma",e["Times New Roman"]="Times New Roman",e)),this.renderSelectItem("fontSize","Font size: ",((t={})[l]="Not Set",t["8pt"]="8",t["10pt"]="10",t["12pt"]="12",t["16pt"]="16",t["20pt"]="20",t["36pt"]="36",t["72pt"]="72",t)),this.renderSelectItem("textColor","Text color: ",((r={})[l]="Not Set",r["#757b80"]="Gray",r["#bd1398"]="Violet",r["#7232ad"]="Purple",r["#006fc9"]="Blue",r["#4ba524"]="Green",r["#e2c501"]="Yellow",r["#d05c12"]="Orange",r["#ff0000"]="Red",r["#ffffff"]="White",r["#000000"]="Black",r)),this.renderSelectItem("backgroundColor","Back color: ",((n={})[l]="Not Set",n["#ffff00"]="Yellow",n["#00ff00"]="Green",n["#00ffff"]="Cyan",n["#ff00ff"]="Purple",n["#0000ff"]="Blue",n["#ff0000"]="Red",n["#bebebe"]="Gray",n["#666666"]="Dark Gray",n["#ffffff"]="White",n["#000000"]="Black",n)))))},t.prototype.renderFormatItem=function(e,t){var r=this,n=this.props.state[e]||!1;return o.createElement("tr",null,o.createElement("td",{className:i.checkboxColumn},o.createElement("input",{type:"checkbox",id:e,checked:n,onChange:function(){return r.onFormatClick(e)}})),o.createElement("td",null,o.createElement("div",null,o.createElement("label",{htmlFor:e},t))))},t.prototype.renderSelectItem=function(e,t,r){var n=this;return o.createElement("tr",null,o.createElement("td",{className:i.defaultFormatLabel},t),o.createElement("td",null,o.createElement("select",{id:e,onChange:function(){return n.onSelectChanged(e)},defaultValue:this.props.state[e]||l},(0,a.getObjectKeys)(r).map((function(e){return o.createElement("option",{value:e,key:e},r[e])})))))},t}(o.Component);t.default=s},3240:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(2922),a=r(7880),i=r(7858),l=r(3829),s={pluginList:{contentEdit:!0,hyperlink:!0,paste:!0,watermark:!1,imageEdit:!0,cutPasteListChain:!0,tableCellSelection:!0,tableResize:!0,customReplace:!0,listEditMenu:!0,imageEditMenu:!0,tableEditMenu:!0,contextMenu:!0,autoFormat:!0,announce:!0},contentEditFeatures:(0,a.default)(),defaultFormat:{},linkTitle:"Ctrl+Click to follow the link:"+o.UrlPlaceholder,watermarkText:"Type content here ...",forcePreserveRatio:!1,experimentalFeatures:[],isRtl:!1,tableFeaturesContainerSelector:"#EditorContainer"},u=function(e){function t(){return e.call(this,i.default,"options","Editor Options")||this}return(0,n.__extends)(t,e),t.prototype.getBuildInPluginState=function(){var e;return this.getComponent((function(t){return e=t.getState()})),e||s},t.prototype.getComponentProps=function(e){return(0,n.__assign)((0,n.__assign)({},s),e)},t}(l.default);t.default=u},9903:(e,t,r)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0});var o=r(7582),a=r(7363),i=r(1905),l=((n={}).TabKeyTextFeatures="Additional functionality to Tab Key",n.ReuseAllAncestorListElements="Reuse ancestor list elements even if they don't match the types from the list item.",n.DeleteTableWithBackspace="Delete a table selected with the table selector pressing Backspace key",n.DisableListChain="Disable list chain functionality",n),s=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.onClick=function(e){t.props.resetState((function(t){var r=document.getElementById(e),n=t.experimentalFeatures.indexOf(e);r.checked&&n<0?t.experimentalFeatures.push(e):!r.checked&&n>=0&&t.experimentalFeatures.splice(n,1)}),!0)},t}return(0,o.__extends)(t,e),t.prototype.render=function(){var e=this;return a.createElement(a.Fragment,null,(0,i.getObjectKeys)(l).map((function(t){return e.renderFeature(t)})))},t.prototype.renderFeature=function(e){var t=this,r=this.props.state.indexOf(e)>=0;return a.createElement("div",{key:e},a.createElement("input",{type:"checkbox",checked:r,id:e,onChange:function(){return t.onClick(e)}}),a.createElement("label",{htmlFor:e},l[e]))},t}(a.Component);t.default=s},7858:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(7582),o=r(7363),a=r(5180),i=r(6671),l=r(490),s=r(865),u=r(9903),c=r(8527),d=r(4825),m=r(874),f=function(e){function t(t){var r=e.call(this,t)||this;return r.exportForm=o.createRef(),r.exportData=o.createRef(),r.rtl=o.createRef(),r.resetState=function(e,t){var o={linkTitle:r.state.linkTitle,watermarkText:r.state.watermarkText,pluginList:(0,n.__assign)({},r.state.pluginList),contentEditFeatures:(0,n.__assign)({},r.state.contentEditFeatures),defaultFormat:(0,n.__assign)({},r.state.defaultFormat),experimentalFeatures:r.state.experimentalFeatures,forcePreserveRatio:r.state.forcePreserveRatio,isRtl:r.state.isRtl,tableFeaturesContainerSelector:r.state.tableFeaturesContainerSelector};e&&(e(o),r.setState(o)),t&&c.default.getInstance().resetEditorPlugin(o)},r.onExportRooster=function(){var e=new s.default(r.state).getCode(),t={title:"RoosterJs",html:r.getHtml(),head:"",js:e,js_pre_processor:"typescript"};r.exportData.current.value=JSON.stringify(t),r.exportForm.current.submit()},r.onExportRoosterReact=function(){var e={title:"RoosterJs React",html:'\n\n
\n\\n' +\n '\\n' +\n '';\n\nconst htmlRoosterReact =\n '\\n' +\n '\\n' +\n '
\\n' +\n '\\n' +\n '\\n' +\n '\\n' +\n '\\n' +\n '\\n' +\n '\\n' +\n '';\n\nconst cssRoosterReact = '.editor { border: solid 1px black; width: 100%; height: 600px}';\nexport default class OptionsPane extends React.Component {\n private exportForm = React.createRef();\n private exportData = React.createRef();\n private rtl = React.createRef();\n\n constructor(props: BuildInPluginProps) {\n super(props);\n this.state = { ...props };\n }\n render() {\n return (\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n Plugins:\n \n \n
\n
\n \n Content edit features:\n \n \n
\n
\n \n Default Format:\n \n \n
\n
\n \n Experimental features:\n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n \n HTML Code:\n \n
\n \n
{this.getHtml()}
\n
\n
\n
\n
\n \n Typescript Code:\n \n \n
\n \n \n \n
\n );\n }\n\n getState(): BuildInPluginState {\n return { ...this.state };\n }\n\n private resetState = (callback: (state: BuildInPluginState) => void, resetEditor: boolean) => {\n let state: BuildInPluginState = {\n linkTitle: this.state.linkTitle,\n watermarkText: this.state.watermarkText,\n pluginList: { ...this.state.pluginList },\n contentEditFeatures: { ...this.state.contentEditFeatures },\n defaultFormat: { ...this.state.defaultFormat },\n experimentalFeatures: this.state.experimentalFeatures,\n forcePreserveRatio: this.state.forcePreserveRatio,\n isRtl: this.state.isRtl,\n tableFeaturesContainerSelector: this.state.tableFeaturesContainerSelector,\n };\n\n if (callback) {\n callback(state);\n this.setState(state);\n }\n\n if (resetEditor) {\n MainPaneBase.getInstance().resetEditorPlugin(state);\n }\n };\n\n private onExportRooster = () => {\n let editor = new EditorCode(this.state);\n let code = editor.getCode();\n let json = {\n title: 'RoosterJs',\n html: this.getHtml(),\n head: '',\n js: code,\n js_pre_processor: 'typescript',\n };\n this.exportData.current.value = JSON.stringify(json);\n this.exportForm.current.submit();\n };\n\n private onExportRoosterReact = () => {\n let editor = new ReactEditorCode(this.state);\n let code = editor.getCode();\n let json = {\n title: 'RoosterJs React',\n html: htmlRoosterReact,\n css: cssRoosterReact,\n head: '',\n js: code,\n js_pre_processor: 'typescript',\n };\n this.exportData.current.value = JSON.stringify(json);\n this.exportForm.current.submit();\n };\n\n private onToggleDirection = () => {\n let isRtl = this.rtl.current.checked;\n this.setState({\n isRtl: isRtl,\n });\n MainPaneBase.getInstance().setPageDirection(isRtl);\n };\n\n private getHtml() {\n return `${htmlStart}${htmlButtons}${darkButton}${htmlEnd}`;\n }\n}\n","import * as React from 'react';\nimport BuildInPluginState, { BuildInPluginList, UrlPlaceholder } from '../../BuildInPluginState';\n\ntype PluginItemId = keyof BuildInPluginList;\n\nconst styles = require('./OptionsPane.scss');\n\nexport interface PluginsProps {\n state: BuildInPluginState;\n resetState: (callback: (state: BuildInPluginState) => void, resetEditor: boolean) => void;\n}\n\nexport default class Plugins extends React.Component {\n private linkTitle = React.createRef();\n private watermarkText = React.createRef();\n private forcePreserveRatio = React.createRef();\n\n render() {\n return (\n

1 2 @@ -923,7 +923,7 @@

All files / roosterjs       -504x +630x       @@ -938,11 +938,11 @@

All files / roosterjs       -504x +630x   -504x +630x   -504x +630x       @@ -950,34 +950,34 @@

All files / roosterjs       -504x +630x         -504x -504x -492x -492x -1404x -492x -1404x -1404x +630x +630x +618x +618x +1746x +618x +1746x +1746x   -3831x -3831x +4425x +4425x   -3831x -181x -181x +4425x +244x +244x     -3831x -4301x -4791x -4791x -4791x -4791x +4425x +5075x +5745x +5745x +5745x +5745x       @@ -988,8 +988,8 @@

All files / roosterjs       -1404x -4791x +1746x +5745x       @@ -1000,8 +1000,8 @@

All files / roosterjs       -492x -492x +618x +618x       @@ -1011,16 +1011,16 @@

All files / roosterjs     1x -920x +1276x       -190x -97x -97x -97x +253x +123x +123x +123x   -190x +253x       @@ -1028,24 +1028,24 @@

All files / roosterjs       -293x -293x -276x -276x -814x +419x +419x +402x +402x +1156x   -814x -814x -814x -2409x -1567x -1567x -1567x +1156x +1156x +1156x +3363x +2161x +2161x +2161x         -276x +402x 15x 15x   @@ -1055,7 +1055,7 @@

All files / roosterjs     1x -1567x +2161x 56x 56x 56x @@ -1099,18 +1099,18 @@

All files / roosterjs       -145x -145x +208x +208x 1x     -144x -144x -144x -144x -144x -144x -144x +207x +207x +207x +207x +207x +207x +207x   14x 20x @@ -1295,46 +1295,46 @@

All files / roosterjs   7x   -  -  -  +7x +7x +7x   -  -  -  +7x +7x +7x   -  -  -  +7x +7x +7x   -  +7x             -  +7x   -  +7x             -  +7x   -  +7x             -  +7x   -  +7x       @@ -1342,9 +1342,9 @@

All files / roosterjs       -  +7x   -  +7x       @@ -1352,9 +1352,9 @@

All files / roosterjs       -  +7x   -  +7x       @@ -1362,7 +1362,7 @@

All files / roosterjs       -  +7x       @@ -1374,16 +1374,16 @@

All files / roosterjs       -  -  -  -  -  -  -  -  -  -  +42x +68x +68x +68x +68x +24x +24x +24x +44x +24x       @@ -1406,7 +1406,7 @@

All files / roosterjs     1x -1572x +2166x     1x @@ -1498,7 +1498,7 @@

All files / roosterjs     1x -5060x +6698x       @@ -1555,41 +1555,41 @@

All files / roosterjs     1x -1567x -1567x -1567x -1567x -1567x -1185x +2161x +2161x +2161x +2161x +2161x +1599x   -1567x -1167x +2161x +1581x         1x -1589x -1589x -1393x -1393x -979x +2183x +2183x +1915x +1915x +1321x   -414x +594x   -1589x +2183x     1x -1590x -1590x -1411x -1411x -969x +2184x +2184x +1933x +1933x +1311x   -442x +622x   -1590x +2184x     1x @@ -1664,9 +1664,9 @@

All files / roosterjs       -193x -193x -193x +256x +256x +256x       @@ -1686,14 +1686,14 @@

All files / roosterjs       -1066x -1066x +1408x +1408x 188x 188x 188x     -1066x +1408x    

import applyTableFormat from './applyTableFormat';
 import getTagOfNode from '../utils/getTagOfNode';
@@ -2113,47 +2113,47 @@ 

All files / roosterjs }); } break; - case TableOperation.AlignCenter: - this.table.style.marginLeft = 'auto'; - this.table.style.marginRight = 'auto'; - break; - case TableOperation.AlignLeft: - this.table.style.marginLeft = ''; - this.table.style.marginRight = 'auto'; - break; - case TableOperation.AlignRight: - this.table.style.marginLeft = 'auto'; - this.table.style.marginRight = ''; - break; - case TableOperation.AlignCellCenter: - this.setAlignmentToSelectedCells( + case TableOperation.AlignCenter: + this.table.style.marginLeft = 'auto'; + this.table.style.marginRight = 'auto'; + break; + case TableOperation.AlignLeft: + this.table.style.marginLeft = ''; + this.table.style.marginRight = 'auto'; + break; + case TableOperation.AlignRight: + this.table.style.marginLeft = 'auto'; + this.table.style.marginRight = ''; + break; + case TableOperation.AlignCellCenter: + this.setAlignmentToSelectedCells( firstRow, lastRow, firstColumn, lastColumn, 'center' ); - break; - case TableOperation.AlignCellLeft: - this.setAlignmentToSelectedCells( + break; + case TableOperation.AlignCellLeft: + this.setAlignmentToSelectedCells( firstRow, lastRow, firstColumn, lastColumn, 'left' ); - break; - case TableOperation.AlignCellRight: - this.setAlignmentToSelectedCells( + break; + case TableOperation.AlignCellRight: + this.setAlignmentToSelectedCells( firstRow, lastRow, firstColumn, lastColumn, 'right' ); - break; - case TableOperation.AlignCellTop: - this.setAlignmentToSelectedCells( + break; + case TableOperation.AlignCellTop: + this.setAlignmentToSelectedCells( firstRow, lastRow, firstColumn, @@ -2161,9 +2161,9 @@

All files / roosterjs 'top', true /** isVertical */ ); - break; - case TableOperation.AlignCellMiddle: - this.setAlignmentToSelectedCells( + break; + case TableOperation.AlignCellMiddle: + this.setAlignmentToSelectedCells( firstRow, lastRow, firstColumn, @@ -2171,9 +2171,9 @@

All files / roosterjs 'middle', true /** isVertical */ ); - break; - case TableOperation.AlignCellBottom: - this.setAlignmentToSelectedCells( + break; + case TableOperation.AlignCellBottom: + this.setAlignmentToSelectedCells( firstRow, lastRow, firstColumn, @@ -2181,11 +2181,11 @@

All files / roosterjs 'bottom', true /** isVertical */ ); - break; + break; } }   - setAlignmentToSelectedCells( + setAlignmentToSelectedCells( firstRow: number, lastRow: number, firstColumn: number, @@ -2193,16 +2193,16 @@

All files / roosterjs alignmentType: string, isVertical?: boolean ) { - for (let i = firstRow; i <= lastRow; i++) { - for (let j = firstColumn; j <= lastColumn; j++) { - if (this.cells) { - const cell = this.cells[i][j].td; - if (isVertical && cell) { - cell.style?.setProperty('vertical-align', alignmentType); - const meta = getTableCellMetadata(cell); - saveTableCellMetadata(cell, { ...meta, vAlignOverride: true }); - } else if (cell) { - cell.style?.setProperty('text-align', alignmentType); + for (let i = firstRow; i <= lastRow; i++) { + for (let j = firstColumn; j <= lastColumn; j++) { + Eif (this.cells) { + const cell = this.cells[i][j].td; + if (isVertical && cell) { + cell.style?.setProperty('vertical-align', alignmentType); + const meta = getTableCellMetadata(cell); + saveTableCellMetadata(cell, { ...meta, vAlignOverride: true }); + } else if (cell) { + cell.style?.setProperty('text-align', alignmentType); } } } @@ -2521,7 +2521,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/table/applyTableFormat.ts.html b/coverage/roosterjs-editor-dom/lib/table/applyTableFormat.ts.html index 70675f5c696..4bf48c9e565 100644 --- a/coverage/roosterjs-editor-dom/lib/table/applyTableFormat.ts.html +++ b/coverage/roosterjs-editor-dom/lib/table/applyTableFormat.ts.html @@ -1237,7 +1237,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/table/cloneCellStyles.ts.html b/coverage/roosterjs-editor-dom/lib/table/cloneCellStyles.ts.html index 66e7e8ca188..ee2c5eb553e 100644 --- a/coverage/roosterjs-editor-dom/lib/table/cloneCellStyles.ts.html +++ b/coverage/roosterjs-editor-dom/lib/table/cloneCellStyles.ts.html @@ -127,7 +127,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/table/index.html b/coverage/roosterjs-editor-dom/lib/table/index.html index 8f72d587022..3bf6e054e0a 100644 --- a/coverage/roosterjs-editor-dom/lib/table/index.html +++ b/coverage/roosterjs-editor-dom/lib/table/index.html @@ -23,30 +23,30 @@

All files roosterjs-editor-dom/lib/table
- 70.65% + 75.92% Statements - 443/627 + 476/627
- 59.57% + 63.48% Branches - 336/564 + 358/564
- 88.46% + 89.74% Functions - 69/78 + 70/78
- 70.79% + 76.12% Lines - 412/582 + 443/582
@@ -73,18 +73,18 @@

All files roosterjs-editor-dom/lib/table

VTable.ts -
+
VTable.ts +
73.74%292/39667.72%235/34780.85%38/4774.58%264/35482.07%325/39674.06%257/34782.98%39/4783.33%295/354
import { createBooleanDefinition, createObjectDefinition } from '../metadata/definitionCreators';
@@ -181,7 +181,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/table/tableFormatInfo.ts.html b/coverage/roosterjs-editor-dom/lib/table/tableFormatInfo.ts.html index 7ce62aefae9..aaaa16e80c9 100644 --- a/coverage/roosterjs-editor-dom/lib/table/tableFormatInfo.ts.html +++ b/coverage/roosterjs-editor-dom/lib/table/tableFormatInfo.ts.html @@ -169,7 +169,7 @@

All files / roosterjs     1x -493x +619x       @@ -253,7 +253,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/Browser.ts.html b/coverage/roosterjs-editor-dom/lib/utils/Browser.ts.html index 662d27ab4be..8dae35233ea 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/Browser.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/Browser.ts.html @@ -204,7 +204,7 @@

All files / roosterjs 5x 5x   -4x +3x       @@ -349,7 +349,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/applyFormat.ts.html b/coverage/roosterjs-editor-dom/lib/utils/applyFormat.ts.html index 807147629ae..3a1a4b8af14 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/applyFormat.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/applyFormat.ts.html @@ -23,16 +23,16 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/changeElementTag.ts.html b/coverage/roosterjs-editor-dom/lib/utils/changeElementTag.ts.html index 4846ed22a30..9d0d796f721 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/changeElementTag.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/changeElementTag.ts.html @@ -138,38 +138,38 @@

All files / roosterjs     1x -114x +115x       -114x +115x   -114x +115x   55x     -59x +60x   -59x -28x -28x +60x +29x +29x     -59x +60x   -59x +60x 4x           -59x -59x +60x +60x     -59x +60x    

import getComputedStyles from './getComputedStyles';
 import getTagOfNode from './getTagOfNode';
@@ -235,7 +235,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/collapseNodes.ts.html b/coverage/roosterjs-editor-dom/lib/utils/collapseNodes.ts.html index adbf85da9a0..25ea87256ba 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/collapseNodes.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/collapseNodes.ts.html @@ -155,22 +155,22 @@

All files / roosterjs       -1868x +2191x 2x     -1866x -1866x +2189x +2189x   -1866x -1125x -741x +2189x +1247x +942x   -741x -737x -737x -737x -737x +942x +938x +938x +938x +938x   4x   @@ -193,21 +193,21 @@

All files / roosterjs       -3748x -1504x +4394x +1810x 65x 5x   60x     -1499x +1805x       -1499x +1805x   -3748x +4394x    

import contains from './contains';
 import splitParentNode from './splitParentNode';
@@ -292,7 +292,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/contains.ts.html b/coverage/roosterjs-editor-dom/lib/utils/contains.ts.html index 4929914e08d..b850bb95406 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/contains.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/contains.ts.html @@ -168,37 +168,37 @@

All files / roosterjs       -47849x -8456x +53914x +8925x     -39393x -4210x +44989x +5513x     -35183x -2635x -2635x +39476x +3237x +3237x     -35183x -9469x -9469x +39476x +11536x +11536x     -35183x -788x +39476x +1024x     -34395x +38452x             -27728x -27728x +31528x +31528x       @@ -295,7 +295,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/createElement.ts.html b/coverage/roosterjs-editor-dom/lib/utils/createElement.ts.html index e0e3a0dd2fc..92bef14681f 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/createElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/createElement.ts.html @@ -273,53 +273,53 @@

All files / roosterjs       -15075x -6590x +15525x +6820x     -15075x +15525x 1x     -105518x -15074x +108668x +15524x       -15074x -569x +15524x +579x     -15074x +15524x 470x     -15074x +15524x 155x 307x       -15074x +15524x 94x 253x       -15074x -8165x -8987x +15524x +8385x +9207x 1062x -7925x -7924x -7924x -7924x +8145x +8144x +8144x +8144x           -15074x +15524x    

import getObjectKeys from '../jsUtils/getObjectKeys';
 import safeInstanceOf from './safeInstanceOf';
@@ -460,7 +460,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/findClosestElementAncestor.ts.html b/coverage/roosterjs-editor-dom/lib/utils/findClosestElementAncestor.ts.html index 4d155d02b1f..511a6f96835 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/findClosestElementAncestor.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/findClosestElementAncestor.ts.html @@ -106,12 +106,12 @@

All files / roosterjs       -29240x -29240x +32463x +32463x   -29240x -8582x -8582x +32463x +9029x +9029x       @@ -119,7 +119,7 @@

All files / roosterjs       -29240x +32463x    

import contains from './contains';
 import matchesSelector from './matchesSelector';
@@ -160,7 +160,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/fromHtml.ts.html b/coverage/roosterjs-editor-dom/lib/utils/fromHtml.ts.html index 6f0861f57e1..3a67d40b0d8 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/fromHtml.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/fromHtml.ts.html @@ -109,7 +109,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/getComputedStyles.ts.html b/coverage/roosterjs-editor-dom/lib/utils/getComputedStyles.ts.html index 69b9ca2af42..8452ea3da16 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/getComputedStyles.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/getComputedStyles.ts.html @@ -119,26 +119,26 @@

All files / roosterjs   1x   -587x +725x   -583x -583x -583x -583x -580x -580x +721x +721x +721x +721x +718x +718x   -580x -703x -703x -703x -703x -703x +718x +841x +841x +841x +841x +841x         -583x +721x       @@ -148,7 +148,7 @@

All files / roosterjs     1x -555x +693x       @@ -217,7 +217,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/getInnerHTML.ts.html b/coverage/roosterjs-editor-dom/lib/utils/getInnerHTML.ts.html index 1bba318662d..6e26476cf56 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/getInnerHTML.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/getInnerHTML.ts.html @@ -115,7 +115,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/getIntersectedRect.ts.html b/coverage/roosterjs-editor-dom/lib/utils/getIntersectedRect.ts.html index 591f578e6d5..dd7c2d825ba 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/getIntersectedRect.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/getIntersectedRect.ts.html @@ -202,7 +202,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/getLeafNode.ts.html b/coverage/roosterjs-editor-dom/lib/utils/getLeafNode.ts.html index 451e02503b3..3409553fc79 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/getLeafNode.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/getLeafNode.ts.html @@ -103,17 +103,17 @@

All files / roosterjs       -1865x -493x -493x -444x +1975x +532x +532x +460x     -493x +532x 36x     -493x +532x       @@ -121,7 +121,7 @@

All files / roosterjs     1x -484x +523x       @@ -175,7 +175,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/getLeafSibling.ts.html b/coverage/roosterjs-editor-dom/lib/utils/getLeafSibling.ts.html index b061c6cd898..bbec2ce69d1 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/getLeafSibling.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/getLeafSibling.ts.html @@ -165,45 +165,45 @@

All files / roosterjs       -1530x -1530x -1670x -649x -1559x -1530x -1505x -1505x +1878x +1878x +2054x +688x +1991x +1878x +1756x +1756x   -1505x +1756x     -1522x -1522x -1522x -797x -797x +1779x +1779x +1779x +963x +963x       -1522x +1779x         -762x +914x       -1522x -1522x +1779x +1779x   -1505x -1505x +1756x +1756x         -1530x +1878x       @@ -217,7 +217,7 @@

All files / roosterjs       -203x +337x       @@ -328,7 +328,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/getPendableFormatState.ts.html b/coverage/roosterjs-editor-dom/lib/utils/getPendableFormatState.ts.html index 9e940604fba..97fe0bc30a7 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/getPendableFormatState.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/getPendableFormatState.ts.html @@ -235,7 +235,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/getTagOfNode.ts.html b/coverage/roosterjs-editor-dom/lib/utils/getTagOfNode.ts.html index 9862f8d2017..219d2153c8b 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/getTagOfNode.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/getTagOfNode.ts.html @@ -75,7 +75,7 @@

All files / roosterjs     1x -34964x +39928x    

import { NodeType } from 'roosterjs-editor-types';
  
@@ -94,7 +94,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/index.html b/coverage/roosterjs-editor-dom/lib/utils/index.html index 2c61506bace..654e2039a98 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/index.html +++ b/coverage/roosterjs-editor-dom/lib/utils/index.html @@ -23,16 +23,16 @@

All files roosterjs-editor-dom/lib/utils
- 95.6% + 95.79% Statements - 500/523 + 501/523
- 89.08% + 89.27% Branches - 465/522 + 466/522
@@ -44,9 +44,9 @@

All files roosterjs-editor-dom/lib/utils - 95.45% + 95.65% Lines - 483/506 + 484/506 @@ -89,17 +89,17 @@

All files roosterjs-editor-dom/lib/utils

applyFormat.ts -
+
+
73.91%17/2365%13/2078.26%18/2370%14/20 100% 1/173.91%17/2378.26%18/23
import getTagOfNode from './getTagOfNode';
 import { NodeType } from 'roosterjs-editor-types';
@@ -196,7 +196,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/isVoidHtmlElement.ts.html b/coverage/roosterjs-editor-dom/lib/utils/isVoidHtmlElement.ts.html index 22e4d990fe9..d11cbebba20 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/isVoidHtmlElement.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/isVoidHtmlElement.ts.html @@ -93,7 +93,7 @@

All files / roosterjs     1x -1606x +1923x    

import getTagOfNode from './getTagOfNode';
  
@@ -121,7 +121,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/matchLink.ts.html b/coverage/roosterjs-editor-dom/lib/utils/matchLink.ts.html index f5d5e4344c4..62a77144bcc 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/matchLink.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/matchLink.ts.html @@ -346,7 +346,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/matchesSelector.ts.html b/coverage/roosterjs-editor-dom/lib/utils/matchesSelector.ts.html index 33d4498addb..51e1faee1c2 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/matchesSelector.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/matchesSelector.ts.html @@ -136,7 +136,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/moveChildNodes.ts.html b/coverage/roosterjs-editor-dom/lib/utils/moveChildNodes.ts.html index e9d0b59e2a3..a7144cce646 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/moveChildNodes.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/moveChildNodes.ts.html @@ -91,16 +91,16 @@

All files / roosterjs       -506x +630x 4x     -502x -393x +626x +519x     -502x -175x +626x +171x      

/**
@@ -133,7 +133,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/normalizeRect.ts.html b/coverage/roosterjs-editor-dom/lib/utils/normalizeRect.ts.html index 08e5728dad5..7c3fae60a55 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/normalizeRect.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/normalizeRect.ts.html @@ -118,7 +118,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/parseColor.ts.html b/coverage/roosterjs-editor-dom/lib/utils/parseColor.ts.html index 72b5633bb73..8e34f108532 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/parseColor.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/parseColor.ts.html @@ -151,7 +151,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/queryElements.ts.html b/coverage/roosterjs-editor-dom/lib/utils/queryElements.ts.html index e8fad735aa5..5d27b624bec 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/queryElements.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/queryElements.ts.html @@ -162,33 +162,33 @@

All files / roosterjs       -29564x +31164x     -28915x +30456x 6x     -28909x +30450x   -28909x -794x -794x -397x -227x +30450x +986x +986x +493x +276x       -227x +276x     -397x +493x         -397x -723x +493x +842x       @@ -197,10 +197,10 @@

All files / roosterjs       -28909x -827x +30450x +933x   -28909x +30450x       @@ -209,15 +209,15 @@

All files / roosterjs       -723x -723x -723x +842x +842x +842x   -723x -605x +842x +611x     -723x +842x       @@ -227,8 +227,8 @@

All files / roosterjs       -2384x -4726x +2794x +5370x       @@ -328,7 +328,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/readFile.ts.html b/coverage/roosterjs-editor-dom/lib/utils/readFile.ts.html index 8a7f5194c19..de2699c5cd1 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/readFile.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/readFile.ts.html @@ -118,7 +118,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts.html b/coverage/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts.html index 7b051406327..e87fb955956 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts.html @@ -117,15 +117,15 @@

All files / roosterjs   1x   -23098x +25608x             -23098x -23098x +25608x +25608x       @@ -137,18 +137,18 @@

All files / roosterjs       -58770x -35674x +65703x +40097x           -23096x -23096x -23096x -23096x -23096x +25606x +25606x +25606x +25606x +25606x       @@ -208,7 +208,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/setColor.ts.html b/coverage/roosterjs-editor-dom/lib/utils/setColor.ts.html index 5b14d517a61..c7e7851e9dd 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/setColor.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/setColor.ts.html @@ -239,22 +239,22 @@

All files / roosterjs       -19678x -19678x -19678x +20368x +20368x +20368x   -19678x -19678x -19615x +20368x +20368x +20305x           -19615x +20305x     -19678x +20368x 58x     @@ -502,7 +502,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/shouldSkipNode.ts.html b/coverage/roosterjs-editor-dom/lib/utils/shouldSkipNode.ts.html index 43e88a193ec..01114e6c629 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/shouldSkipNode.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/shouldSkipNode.ts.html @@ -133,35 +133,35 @@

All files / roosterjs     1x -1657x -1256x -34x -1222x -12x +1990x +1502x +33x +1469x +20x   -1210x +1449x   -401x -401x +488x +488x 1x     -400x +487x   -400x +487x       -140x -99x -90x +186x +123x +112x     -50x +74x       -260x +301x       @@ -229,7 +229,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/splitParentNode.ts.html b/coverage/roosterjs-editor-dom/lib/utils/splitParentNode.ts.html index 681867b509c..6bd8ffca6b6 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/splitParentNode.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/splitParentNode.ts.html @@ -137,34 +137,34 @@

All files / roosterjs     1x -274x +381x 2x     -272x -272x -272x -272x -128x -94x +379x +379x +379x +379x +181x +97x     -144x -123x +198x +138x         -272x -165x +379x +173x         -107x +206x     -272x +379x       @@ -174,20 +174,20 @@

All files / roosterjs     1x -89x -89x -89x -89x -87x +143x +143x +143x +143x +141x 1x 1x 1x   -87x -87x +141x +141x     -89x +143x    

import isNodeAfter from './isNodeAfter';
  
@@ -262,7 +262,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/splitTextNode.ts.html b/coverage/roosterjs-editor-dom/lib/utils/splitTextNode.ts.html index bfee8f9a199..e35193ba1e1 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/splitTextNode.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/splitTextNode.ts.html @@ -109,7 +109,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/unwrap.ts.html b/coverage/roosterjs-editor-dom/lib/utils/unwrap.ts.html index 46bf9938455..c5d62acb92b 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/unwrap.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/unwrap.ts.html @@ -81,17 +81,17 @@

All files / roosterjs   1x   -111x -111x +181x +181x 12x     -99x -116x +169x +220x     -99x -99x +169x +169x    

/**
  * Removes the node and keep all children in place, return the parentNode where the children are attached
@@ -118,7 +118,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-dom/lib/utils/wrap.ts.html b/coverage/roosterjs-editor-dom/lib/utils/wrap.ts.html index c66b0ee0b2f..f6468c8c5b7 100644 --- a/coverage/roosterjs-editor-dom/lib/utils/wrap.ts.html +++ b/coverage/roosterjs-editor-dom/lib/utils/wrap.ts.html @@ -202,38 +202,38 @@

All files / roosterjs       -163x -163x +255x +255x 4x     -159x -36x +251x +60x     -159x -159x +251x +251x   -159x -139x +251x +221x       -20x +30x       -159x +251x   -159x -142x +251x +234x     -181x -181x +274x +274x     -159x +251x    

import createElement from './createElement';
 import fromHtml from './fromHtml';
@@ -331,7 +331,7 @@ 

All files / roosterjs diff --git a/coverage/roosterjs-editor-plugins/lib/Announce.ts.html b/coverage/roosterjs-editor-plugins/lib/Announce.ts.html index 4471f2f363a..531b3ba5e16 100644 --- a/coverage/roosterjs-editor-plugins/lib/Announce.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/Announce.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/AutoFormat.ts.html b/coverage/roosterjs-editor-plugins/lib/AutoFormat.ts.html index 6953fc28533..d2d8802224e 100644 --- a/coverage/roosterjs-editor-plugins/lib/AutoFormat.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/AutoFormat.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/ContentEdit.ts.html b/coverage/roosterjs-editor-plugins/lib/ContentEdit.ts.html index 55e10567c9c..dadb2121185 100644 --- a/coverage/roosterjs-editor-plugins/lib/ContentEdit.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/ContentEdit.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/ContextMenu.ts.html b/coverage/roosterjs-editor-plugins/lib/ContextMenu.ts.html index 2f720336614..18c2b065611 100644 --- a/coverage/roosterjs-editor-plugins/lib/ContextMenu.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/ContextMenu.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/CustomReplace.ts.html b/coverage/roosterjs-editor-plugins/lib/CustomReplace.ts.html index 8b7810e7342..f4eaca2e5dd 100644 --- a/coverage/roosterjs-editor-plugins/lib/CustomReplace.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/CustomReplace.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/CutPasteListChain.ts.html b/coverage/roosterjs-editor-plugins/lib/CutPasteListChain.ts.html index 0a2f7dad2f7..44d83bc6893 100644 --- a/coverage/roosterjs-editor-plugins/lib/CutPasteListChain.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/CutPasteListChain.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/HyperLink.ts.html b/coverage/roosterjs-editor-plugins/lib/HyperLink.ts.html index e52f4bcea56..f9ad3697366 100644 --- a/coverage/roosterjs-editor-plugins/lib/HyperLink.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/HyperLink.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/ImageEdit.ts.html b/coverage/roosterjs-editor-plugins/lib/ImageEdit.ts.html index f6085f80b97..afc5c01bb69 100644 --- a/coverage/roosterjs-editor-plugins/lib/ImageEdit.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/ImageEdit.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/ImageResize.ts.html b/coverage/roosterjs-editor-plugins/lib/ImageResize.ts.html index e05e77c892f..9948731da1b 100644 --- a/coverage/roosterjs-editor-plugins/lib/ImageResize.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/ImageResize.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/Paste.ts.html b/coverage/roosterjs-editor-plugins/lib/Paste.ts.html index 4c4a6bbca68..1637ceabf01 100644 --- a/coverage/roosterjs-editor-plugins/lib/Paste.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/Paste.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/Picker.ts.html b/coverage/roosterjs-editor-plugins/lib/Picker.ts.html index 40ecc8b4e16..9ba4ec6ceef 100644 --- a/coverage/roosterjs-editor-plugins/lib/Picker.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/Picker.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/TableCellSelection.ts.html b/coverage/roosterjs-editor-plugins/lib/TableCellSelection.ts.html index 82f3171bd33..3850ac320a4 100644 --- a/coverage/roosterjs-editor-plugins/lib/TableCellSelection.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/TableCellSelection.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/TableResize.ts.html b/coverage/roosterjs-editor-plugins/lib/TableResize.ts.html index febcb0ffa34..c9aea5734b2 100644 --- a/coverage/roosterjs-editor-plugins/lib/TableResize.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/TableResize.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/Watermark.ts.html b/coverage/roosterjs-editor-plugins/lib/Watermark.ts.html index 38e60c4a6f1..392c4bab951 100644 --- a/coverage/roosterjs-editor-plugins/lib/Watermark.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/Watermark.ts.html @@ -67,7 +67,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/index.html b/coverage/roosterjs-editor-plugins/lib/index.html index db7b1e943b7..56093205690 100644 --- a/coverage/roosterjs-editor-plugins/lib/index.html +++ b/coverage/roosterjs-editor-plugins/lib/index.html @@ -305,7 +305,7 @@

All files roosterjs-editor-plugins/lib

diff --git a/coverage/roosterjs-editor-plugins/lib/index.ts.html b/coverage/roosterjs-editor-plugins/lib/index.ts.html index 53fc9eae393..ef942eba2e5 100644 --- a/coverage/roosterjs-editor-plugins/lib/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/index.ts.html @@ -106,7 +106,7 @@

All files / roosterjs-ed diff --git a/coverage/roosterjs-editor-plugins/lib/pluginUtils/DragAndDropHelper.ts.html b/coverage/roosterjs-editor-plugins/lib/pluginUtils/DragAndDropHelper.ts.html index d49ccfd934c..bc28a53a93b 100644 --- a/coverage/roosterjs-editor-plugins/lib/pluginUtils/DragAndDropHelper.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/pluginUtils/DragAndDropHelper.ts.html @@ -523,7 +523,7 @@

All files / roosterjs diff --git a/coverage/roosterjs-editor-plugins/lib/pluginUtils/announceData/getAnnounceDataForList.ts.html b/coverage/roosterjs-editor-plugins/lib/pluginUtils/announceData/getAnnounceDataForList.ts.html index 599b4eba73c..c380740bbe0 100644 --- a/coverage/roosterjs-editor-plugins/lib/pluginUtils/announceData/getAnnounceDataForList.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/pluginUtils/announceData/getAnnounceDataForList.ts.html @@ -214,7 +214,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/pluginUtils/announceData/index.html b/coverage/roosterjs-editor-plugins/lib/pluginUtils/announceData/index.html index 8062e36da60..7e3e6ead8e7 100644 --- a/coverage/roosterjs-editor-plugins/lib/pluginUtils/announceData/index.html +++ b/coverage/roosterjs-editor-plugins/lib/pluginUtils/announceData/index.html @@ -95,7 +95,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/pluginUtils/index.html b/coverage/roosterjs-editor-plugins/lib/pluginUtils/index.html index 12dd530c613..451239f6123 100644 --- a/coverage/roosterjs-editor-plugins/lib/pluginUtils/index.html +++ b/coverage/roosterjs-editor-plugins/lib/pluginUtils/index.html @@ -95,7 +95,7 @@

All files roosterjs-editor-plugins/lib/plu diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/AnnouncePlugin.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/AnnouncePlugin.ts.html index f38ad35b293..67f6383549f 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/AnnouncePlugin.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/AnnouncePlugin.ts.html @@ -598,7 +598,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/AnnounceFeatures.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/AnnounceFeatures.ts.html index d78eea4850e..e6883d00be9 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/AnnounceFeatures.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/AnnounceFeatures.ts.html @@ -109,7 +109,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/announceNewListItem.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/announceNewListItem.ts.html index b6dca168c88..855a1f410fd 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/announceNewListItem.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/announceNewListItem.ts.html @@ -118,7 +118,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/announceWarningOnLastTableCell.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/announceWarningOnLastTableCell.ts.html index eb755a77696..d0f090e3634 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/announceWarningOnLastTableCell.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/announceWarningOnLastTableCell.ts.html @@ -187,7 +187,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/index.html index 23cca1c3d98..12ba210c376 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/features/index.html @@ -125,7 +125,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/index.html index 5a2cc1797cc..a4f594773d7 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/index.ts.html index e709316e2be..d3b44fa16ba 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Announce/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Announce/index.ts.html @@ -73,7 +73,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/AutoFormat/AutoFormat.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/AutoFormat/AutoFormat.ts.html index f7ebb3b4bc3..6465572fd73 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/AutoFormat/AutoFormat.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/AutoFormat/AutoFormat.ts.html @@ -385,7 +385,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.html index 01e24e77825..3ee424ecd4d 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.ts.html index dd5ec12be04..4d9c1b9ef67 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/AutoFormat/index.ts.html @@ -67,7 +67,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/ContentEdit.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/ContentEdit.ts.html index 79c55713de0..7225e00ca31 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/ContentEdit.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/ContentEdit.ts.html @@ -304,7 +304,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/autoLinkFeatures.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/autoLinkFeatures.ts.html index 6de2888e417..9d1060f593a 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/autoLinkFeatures.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/autoLinkFeatures.ts.html @@ -499,7 +499,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/codeFeatures.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/codeFeatures.ts.html index a36857ba9df..187630c91e6 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/codeFeatures.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/codeFeatures.ts.html @@ -364,7 +364,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/cursorFeatures.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/cursorFeatures.ts.html index e9e41456f36..560eab5c52b 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/cursorFeatures.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/cursorFeatures.ts.html @@ -23,30 +23,30 @@

All files / roo -
+

-	
-	
+	
-	
-	
-	
-	
-	
-	
-	
-	
+	
+	
+	
+	
+	
+	
+	
+	
@@ -223,18 +223,18 @@ 

All files roosterjs-editor-plugins/l

- - + - - - - - - - - + + + + + + + + @@ -245,7 +245,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/listFeatures.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/listFeatures.ts.html index 19fa43b1a6a..a96df3a0c32 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/listFeatures.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/listFeatures.ts.html @@ -1915,7 +1915,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/markdownFeatures.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/markdownFeatures.ts.html index 7932cafc4c9..a3dc23e2317 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/markdownFeatures.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/markdownFeatures.ts.html @@ -625,7 +625,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/quoteFeatures.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/quoteFeatures.ts.html index d4f8137f569..1fef7862a7d 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/quoteFeatures.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/quoteFeatures.ts.html @@ -427,7 +427,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/shortcutFeatures.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/shortcutFeatures.ts.html index 63f26d0bce9..acea276bf31 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/shortcutFeatures.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/shortcutFeatures.ts.html @@ -466,7 +466,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/structuredNodeFeatures.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/structuredNodeFeatures.ts.html index 355bcc09676..f4709057180 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/structuredNodeFeatures.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/structuredNodeFeatures.ts.html @@ -301,7 +301,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/tableFeatures.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/tableFeatures.ts.html index 82a8c025d15..98160465f96 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/tableFeatures.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/tableFeatures.ts.html @@ -787,7 +787,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/textFeatures.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/textFeatures.ts.html index bde137e7a2f..a4c923b57aa 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/textFeatures.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/textFeatures.ts.html @@ -23,30 +23,30 @@

All files / roo -
+

1 2 @@ -114,26 +114,26 @@

All files / roo       -  +10x     -  +10x             -  +6x     -  -  +4x +4x   -  +4x     -  +2x       @@ -158,27 +158,27 @@

All files / roo const NoCycleCursorMove: BuildInEditFeature<PluginKeyboardEvent> = { keys: [Keys.LEFT, Keys.RIGHT], allowFunctionKeys: true, - shouldHandleEvent: (event, editor, ctrlOrMeta) => { - let range: Range | null = null; + shouldHandleEvent: (event, editor, ctrlOrMeta) => { + let range: Range | null = null; let position: Position;   - if ( + if ( !ctrlOrMeta || !(range = editor.getSelectionRange()) || !range.collapsed || !(position = Position.getStart(range)) || !editor.isPositionAtBeginning(position) ) { - return false; + return false; }   - const rtl = getComputedStyle(position.element, 'direction') == 'rtl'; - const rawEvent = event.rawEvent; + const rtl = getComputedStyle(position.element, 'direction') == 'rtl'; + const rawEvent = event.rawEvent;   - return (!rtl && rawEvent.which == Keys.LEFT) || (rtl && rawEvent.which == Keys.RIGHT); + return (!rtl && rawEvent.which == Keys.LEFT) || (rtl && rawEvent.which == Keys.RIGHT); }, - handleEvent: event => { - event.rawEvent.preventDefault(); + handleEvent: event => { + event.rawEvent.preventDefault(); }, defaultDisabled: !Browser.isChrome, }; @@ -199,7 +199,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/entityFeatures.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/entityFeatures.ts.html index e9ffd2c0ff3..8f7748d13e7 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/entityFeatures.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/entityFeatures.ts.html @@ -1630,7 +1630,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/index.html index d071ce0ce92..b3c082a90bf 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/features/index.html @@ -23,30 +23,30 @@

All files roosterjs-editor-plugins/l
- 68.87% + 75.22% Statements - 542/787 + 592/787
- 58.18% + 61.94% Branches - 480/825 + 511/825
- 66.87% + 71.17% Functions - 109/163 + 116/163
- 68.46% + 74.74% Lines - 523/764 + 571/764
@@ -103,18 +103,18 @@

All files roosterjs-editor-plugins/l

cursorFeatures.ts -
+
cursorFeatures.ts +
30%3/100%0/110%0/230%3/10100%10/10100%11/11100%2/2100%10/10
textFeatures.ts -
+
textFeatures.ts +
36%27/7545.45%20/4441.67%5/1236.11%26/7293.33%70/7590.91%40/4483.33%10/1293.06%67/72
1 2 @@ -340,26 +340,26 @@

All files / roo       -  -  -  -  -  +14x +14x +14x +14x +2x   -  -  -  -  +12x +12x +12x +10x   -  -  -  -  +2x +2x +2x +2x         -  +14x       @@ -423,38 +423,38 @@

All files / roo       -1x +13x   -1x -1x -1x -1x +13x +13x +13x +13x   -1x +13x       -1x +13x   -1x +2x     -  -  +11x +11x   -  -  +11x +11x   -  -  +11x +9x     -  +11x         -  +21x       @@ -467,34 +467,34 @@

All files / roo       -  -  -  +4x +4x +4x     -  -  -  +4x +4x +4x   -  -  -  +4x +4x +19x   -  -  -  -  -  -  +4x +4x +1x +1x +1x +1x   -  +4x         -  -  -  +4x +4x +1x      

import { setIndentation } from 'roosterjs-editor-api';
@@ -559,27 +559,27 @@ 

All files / roo   return false; }, - handleEvent: (event, editor) => { - const selection = editor.getSelectionRangeEx(); - if (selection.type == SelectionRangeTypes.Normal) { - editor.addUndoSnapshot(() => { - if (selection.areAllCollapsed) { - insertTab(editor, event); + handleEvent: (event, editor) => { + const selection = editor.getSelectionRangeEx(); + Eif (selection.type == SelectionRangeTypes.Normal) { + editor.addUndoSnapshot(() => { + if (selection.areAllCollapsed) { + insertTab(editor, event); } else { - const { ranges } = selection; - const range = ranges[0]; - if (shouldSetIndentation(editor, range)) { - setIndentation(editor, Indentation.Increase); + const { ranges } = selection; + const range = ranges[0]; + if (shouldSetIndentation(editor, range)) { + setIndentation(editor, Indentation.Increase); } else { - const tempRange = createRange(range.startContainer, range.startOffset); - ranges.forEach(range => range.deleteContents()); - editor.select(tempRange); - insertTab(editor, event); + const tempRange = createRange(range.startContainer, range.startOffset); + ranges.forEach(range => range.deleteContents()); + editor.select(tempRange); + insertTab(editor, event); } } });   - event.rawEvent.preventDefault(); + event.rawEvent.preventDefault(); } }, }; @@ -654,27 +654,27 @@

All files / roo return false; }   - Eif (!firstBlock.equals(lastBlock)) { + if (!firstBlock.equals(lastBlock)) { //If the selections has more than one block, we indent all the blocks in the selection return true; } else { //We only indent a single block if all the block is selected. - const blockStart = new Position(firstBlock.getStartNode(), PositionType.Begin); - const blockEnd = new Position(firstBlock.getEndNode(), PositionType.End); + const blockStart = new Position(firstBlock.getStartNode(), PositionType.Begin); + const blockEnd = new Position(firstBlock.getEndNode(), PositionType.End);   - const rangeBefore = createRange(blockStart, Position.getStart(range)); - const rangeAfter = createRange(Position.getEnd(range), blockEnd); + const rangeBefore = createRange(blockStart, Position.getStart(range)); + const rangeAfter = createRange(Position.getEnd(range), blockEnd);   - if (!result && isRangeEmpty(rangeBefore) && isRangeEmpty(rangeAfter)) { - result = true; + if (!result && isRangeEmpty(rangeBefore) && isRangeEmpty(rangeAfter)) { + result = true; }   - return result; + return result; } }   -function isRangeEmpty(range: Range) { - return ( +function isRangeEmpty(range: Range) { + return ( range.toString() == '' && queryElements( range.commonAncestorContainer as ParentNode, @@ -686,35 +686,35 @@

All files / roo ); }   -function insertTab(editor: IEditor, event: PluginKeyboardEvent) { - const span = editor.getDocument().createElement('span'); - const searcher = editor.getContentSearcherOfCursor(event); - if (!searcher) { +function insertTab(editor: IEditor, event: PluginKeyboardEvent) { + const span = editor.getDocument().createElement('span'); + const searcher = editor.getContentSearcherOfCursor(event); + Iif (!searcher) { return; } - const charsBefore = searcher.getSubStringBefore(Number.MAX_SAFE_INTEGER); - const numberOfChars = TAB_SPACES - (charsBefore.length % TAB_SPACES); - let span2: HTMLSpanElement | null = null; + const charsBefore = searcher.getSubStringBefore(Number.MAX_SAFE_INTEGER); + const numberOfChars = TAB_SPACES - (charsBefore.length % TAB_SPACES); + let span2: HTMLSpanElement | null = null;   - let textContent = ''; - for (let index = 0; index < numberOfChars; index++) { - textContent += '&ensp;'; + let textContent = ''; + for (let index = 0; index < numberOfChars; index++) { + textContent += '&ensp;'; } - editor.insertNode(span); - if (span.nextElementSibling && getTagOfNode(span.nextElementSibling) == 'A') { - span2 = editor.getDocument().createElement('span'); - span2.textContent = ' '; - editor.insertNode(span2); - editor.select(createRange(span2, PositionType.Before)); + editor.insertNode(span); + if (span.nextElementSibling && getTagOfNode(span.nextElementSibling) == 'A') { + span2 = editor.getDocument().createElement('span'); + span2.textContent = ' '; + editor.insertNode(span2); + editor.select(createRange(span2, PositionType.Before)); } - editor.insertContent(textContent, { + editor.insertContent(textContent, { position: ContentPosition.Range, range: createRange(span, PositionType.Begin), updateCursor: false, }); - editor.select(createRange(span, PositionType.After)); - if (span2) { - editor.deleteNode(span2); + editor.select(createRange(span, PositionType.After)); + if (span2) { + editor.deleteNode(span2); } }  

@@ -724,7 +724,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/getAllFeatures.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/getAllFeatures.ts.html index 33cad462869..290473cb304 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/getAllFeatures.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/getAllFeatures.ts.html @@ -175,7 +175,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.html index 4fd1b9baede..85fa4987335 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.html @@ -125,7 +125,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.ts.html index 972292ca68a..b939c2b1479 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/index.ts.html @@ -70,7 +70,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/convertAlphaToDecimals.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/convertAlphaToDecimals.ts.html index 5a61789dbb7..b919a4837f2 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/convertAlphaToDecimals.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/convertAlphaToDecimals.ts.html @@ -109,7 +109,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoBulletListStyle.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoBulletListStyle.ts.html index 0d868302669..8ae7c258552 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoBulletListStyle.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoBulletListStyle.ts.html @@ -145,7 +145,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts.html index 696c43c0c20..31668eed355 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts.html @@ -598,7 +598,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/index.html index 0f661f9a1b0..9d2f599e1ef 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/index.html @@ -125,7 +125,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContextMenu/ContextMenu.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContextMenu/ContextMenu.ts.html index 16ce9b180ff..9d7fd41425d 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContextMenu/ContextMenu.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContextMenu/ContextMenu.ts.html @@ -403,7 +403,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.html index 2bed55a189f..64faa5403d3 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.ts.html index 62851adfca2..0f127db04b1 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ContextMenu/index.ts.html @@ -67,7 +67,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/CustomReplace/CustomReplace.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/CustomReplace/CustomReplace.ts.html index 52734aef6dd..d66b3ed4c4f 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/CustomReplace/CustomReplace.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/CustomReplace/CustomReplace.ts.html @@ -607,7 +607,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.html index 25247fb3362..d9bba986c50 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.ts.html index 1b983d98f00..c63f1bb8d45 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/CustomReplace/index.ts.html @@ -67,7 +67,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/CutPasteListChain.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/CutPasteListChain.ts.html index 660768725d4..be0f6d3890c 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/CutPasteListChain.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/CutPasteListChain.ts.html @@ -313,7 +313,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.html index c6c4a077c44..ac9364862bc 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.ts.html index c5a48664ef0..4fadcd88720 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/CutPasteListChain/index.ts.html @@ -67,7 +67,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/HyperLink/HyperLink.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/HyperLink/HyperLink.ts.html index 25fa0df810e..d584a480f45 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/HyperLink/HyperLink.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/HyperLink/HyperLink.ts.html @@ -775,7 +775,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/HyperLink/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/HyperLink/index.html index 6875703ef9a..c42ba587e31 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/HyperLink/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/HyperLink/index.html @@ -110,7 +110,7 @@

All files roosterjs-editor-plugins/lib/ diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/HyperLink/index.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/HyperLink/index.ts.html index 34b9f1692d3..56282cf5b46 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/HyperLink/index.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/HyperLink/index.ts.html @@ -67,7 +67,7 @@

All files / rooste diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/ImageEdit.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/ImageEdit.ts.html index 990c96d2dc7..afa341b1c48 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/ImageEdit.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/ImageEdit.ts.html @@ -23,9 +23,9 @@

All files / rooste
- 89.76% + 89.08% Statements - 263/293 + 261/293
@@ -37,16 +37,16 @@

All files / rooste
- 90.48% + 85.71% Functions - 38/42 + 36/42
- 89.32% + 88.61% Lines - 251/281 + 249/281
@@ -1045,7 +1045,7 @@

All files / rooste 28x 28x 28x -23x +        @@ -1069,7 +1069,7 @@

All files / rooste     1x -223x +204x   46x   @@ -1106,8 +1106,8 @@

All files / rooste 1x     -63x -63x +48x +48x       @@ -1153,15 +1153,15 @@

All files / rooste       -79x +59x         -79x -79x +59x +59x   -79x +59x       @@ -1170,10 +1170,10 @@

All files / rooste       -29x +10x     -29x +10x       @@ -1183,22 +1183,22 @@

All files / rooste       -29x +10x   -29x +10x   -29x +10x       -29x -29x -29x -29x -29x +10x +10x +10x +10x +10x     -79x +59x   24x 24x @@ -1279,7 +1279,7 @@

All files / rooste     28x -23x +        @@ -1368,18 +1368,18 @@

All files / rooste     28x -120x +86x 34x   -120x -78x +86x +54x           -120x -120x +86x +86x     28x @@ -1555,7 +1555,7 @@

All files / rooste   1x 176x -57x +38x   1x   @@ -1863,7 +1863,7 @@

All files / rooste initialize(editor: IEditor) { this.editor = editor; this.disposer = editor.addDomEventHandler({ - blur: () => this.onBlur(), + blur: () => this.onBlur(), dragstart: e => { if (this.image) { e.preventDefault(); @@ -2096,8 +2096,8 @@

All files / rooste /** * quit editing mode when editor lose focus */ - private onBlur = () => { - this.setEditingImage(null, false /* selectImage */); + private onBlur = () => { + this.setEditingImage(null, false /* selectImage */); }; /** * Create editing wrapper for the image @@ -2518,7 +2518,7 @@

All files / rooste

diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/canRegenerateImage.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/canRegenerateImage.ts.html index 436ba015055..46c6136f1ea 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/canRegenerateImage.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/canRegenerateImage.ts.html @@ -145,7 +145,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/index.html index 819989cead6..415593a81e4 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/index.html @@ -140,7 +140,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/isResizedTo.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/isResizedTo.ts.html index aaf6833ad3a..3dda694e852 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/isResizedTo.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/isResizedTo.ts.html @@ -142,7 +142,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resetImage.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resetImage.ts.html index b3ac47846c8..9858004c3cd 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resetImage.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resetImage.ts.html @@ -121,7 +121,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resizeByPercentage.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resizeByPercentage.ts.html index 978897392a4..5c57e402fa8 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resizeByPercentage.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/resizeByPercentage.ts.html @@ -229,7 +229,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/constants.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/constants.ts.html index d4048388c96..ad46c08b786 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/constants.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/constants.ts.html @@ -337,7 +337,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/index.html index 775e9932758..0b251a3f682 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/index.html @@ -95,7 +95,7 @@

All files roosterjs-editor-plugins/l diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/applyChange.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/applyChange.ts.html index d9e607b0665..a2d6911ef2c 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/applyChange.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/applyChange.ts.html @@ -23,16 +23,16 @@

All files / roo

import checkEditInfoState, { ImageEditInfoState } from './checkEditInfoState';
@@ -287,7 +287,7 @@ 

All files / roo   const srcChanged = newSrc != previousSrc;   - if (srcChanged) { + Eif (srcChanged) { // If the src is changed, fire an EditImage event so that plugins knows that a new image is used, and can // replace the new src with some other string and it will be used and set to the image const event = editor.triggerPluginEvent(PluginEventType.EditImage, { @@ -297,7 +297,7 @@

All files / roo newSrc, }); newSrc = event.newSrc; - } else Iif (applyChangesOnMouseUp) { + } else if (applyChangesOnMouseUp) { editor.triggerPluginEvent(PluginEventType.ContentChanged, { source: ChangeSource.ImageResize, }); @@ -317,7 +317,7 @@

All files / roo const { targetWidth, targetHeight } = getGeneratedImageSize(editInfo); image.src = newSrc;   - if (wasResizedOrCropped || state == ImageEditInfoState.FullyChanged) { + Eif (wasResizedOrCropped || state == ImageEditInfoState.FullyChanged) { image.width = targetWidth; image.height = targetHeight; // Remove width/height style so that it won't affect the image size, since style width/height has higher priority @@ -334,7 +334,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/checkEditInfoState.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/checkEditInfoState.ts.html index 0463d27625e..4b737c3f9fe 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/checkEditInfoState.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/checkEditInfoState.ts.html @@ -213,18 +213,18 @@

All files / roo       -702x +478x 1x -100x -224x +68x +144x         -31x -69x +19x +49x   -20x +10x       @@ -232,16 +232,16 @@

All files / roo       -69x +49x         -702x +478x       -244x +154x    

import type { CropInfo, ResizeInfo, RotateInfo } from '../types/ImageEditInfo';
 import type ImageEditInfo from '../types/ImageEditInfo';
@@ -343,7 +343,7 @@ 

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/editInfo.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/editInfo.ts.html index b61dfec41ef..8e521158c11 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/editInfo.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/editInfo.ts.html @@ -124,8 +124,8 @@

All files / roo     1x -29x -29x +19x +19x       @@ -135,8 +135,8 @@

All files / roo     1x -18x -18x +6x +6x       @@ -149,14 +149,14 @@

All files / roo     1x -95x -95x +73x +73x           -31x +19x       @@ -232,7 +232,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/generateDataURL.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/generateDataURL.ts.html index e5403a4271c..895dee90c47 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/generateDataURL.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/generateDataURL.ts.html @@ -139,24 +139,24 @@

All files / roo       -180x -20x -20x +90x +10x +10x     -20x -20x -20x -20x -20x +10x +10x +10x +10x +10x   -20x -20x -20x -20x -20x -20x -20x +10x +10x +10x +10x +10x +10x +10x       @@ -169,7 +169,7 @@

All files / roo       -20x +10x    

import getGeneratedImageSize from './getGeneratedImageSize';
 import type ImageEditInfo from '../types/ImageEditInfo';
@@ -235,7 +235,7 @@ 

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getGeneratedImageSize.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getGeneratedImageSize.ts.html index 03b904b9392..a2d4cca5a66 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getGeneratedImageSize.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getGeneratedImageSize.ts.html @@ -136,23 +136,23 @@

All files / roo       -630x +406x     -90x -90x +58x +58x     -90x -90x +58x +58x       -90x +58x   -90x +58x   -90x +58x       @@ -220,7 +220,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getLastZIndex.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getLastZIndex.ts.html index b1729304949..ecba0b10fda 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getLastZIndex.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getLastZIndex.ts.html @@ -124,7 +124,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getTargetSizeByPercentage.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getTargetSizeByPercentage.ts.html index 0811a561bc4..f22ccfc047e 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getTargetSizeByPercentage.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/getTargetSizeByPercentage.ts.html @@ -104,10 +104,10 @@

All files / roo       -102x -17x -17x -17x +78x +13x +13x +13x    

import type ImageEditInfo from '../types/ImageEditInfo';
 import type ImageSize from '../types/ImageSize';
@@ -142,7 +142,7 @@ 

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/index.html index b47503494df..01037be57e5 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/index.html @@ -23,16 +23,16 @@

All files roosterjs-editor-plugins/l
- 94.83% + 93.97% Statements - 110/116 + 109/116
- 80.56% + 76.39% Branches - 58/72 + 55/72
@@ -44,9 +44,9 @@

All files roosterjs-editor-plugins/l
- 94.59% + 93.69% Lines - 105/111 + 104/111
@@ -74,17 +74,17 @@

All files roosterjs-editor-plugins/l

applyChange.ts -
+
+
91.43%32/3585.71%18/2188.57%31/3571.43%15/21 100% 1/190.91%30/3387.88%29/33
ImageEdit.ts +
89.76%263/29389.08%261/293 70.92% 178/25190.48%38/4289.32%251/28185.71%36/4288.61%249/281
import type { CssStyleCallbackMap, ElementCallbackMap } from 'roosterjs-editor-types';
 import {
@@ -355,7 +355,7 @@ 

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/convertPastedContentFromWord.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/convertPastedContentFromWord.ts.html index f37c7bceea8..f87af751dc2 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/convertPastedContentFromWord.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/convertPastedContentFromWord.ts.html @@ -23,9 +23,9 @@

All files / roo

import commentsRemoval from './commentsRemoval';
 import { chainSanitizerCallback, moveChildNodes } from 'roosterjs-editor-dom';
@@ -206,10 +206,10 @@ 

All files / roo const { sanitizingOption, fragment } = event;   // Preserve <o:p> when its innerHTML is "&nbsp;" to avoid dropping an empty line - chainSanitizerCallback(sanitizingOption.elementCallbacks, 'O:P', element => { - moveChildNodes(element); - element.appendChild(element.ownerDocument.createTextNode('\u00A0')); // &nbsp; - return true; + chainSanitizerCallback(sanitizingOption.elementCallbacks, 'O:P', element => { + moveChildNodes(element); + element.appendChild(element.ownerDocument.createTextNode('\u00A0')); // &nbsp; + return true; });   const wordConverter = createWordConverter(); @@ -259,7 +259,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/converterUtils.ts.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/converterUtils.ts.html index f871eef3ec6..1cf24e331b7 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/converterUtils.ts.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/converterUtils.ts.html @@ -672,16 +672,16 @@

All files / roo     1x -12x -12x +11x +11x     -12x -17x +11x +15x     -17x -17x +15x +15x   8x 8x @@ -768,8 +768,8 @@

All files / roo       -9x -9x +7x +7x       @@ -786,9 +786,9 @@

All files / roo       -17x +15x   -12x +11x       @@ -996,9 +996,9 @@

All files / roo       -17x -17x -17x +15x +15x +15x 8x     @@ -1020,7 +1020,7 @@

All files / roo       -9x +7x       @@ -1189,7 +1189,7 @@

All files / roo       -41x +39x       @@ -1822,7 +1822,7 @@

All files / roo diff --git a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/index.html b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/index.html index a998b6ca52f..dc30ce09e14 100644 --- a/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/index.html +++ b/coverage/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/index.html @@ -23,9 +23,9 @@

All files roosterjs-editor-plugins/l
- 88.28% + 87.24% Statements - 256/290 + 253/290
@@ -37,16 +37,16 @@

All files roosterjs-editor-plugins/l
- 97.3% + 94.59% Functions - 36/37 + 35/37
- 88.42% + 87.37% Lines - 252/285 + 249/285
@@ -134,17 +134,17 @@

All files roosterjs-editor-plugins/l

convertPastedContentFromWord.ts -
+
+
100%30/3090%27/30 100% 11/11100%5/5100%30/3080%4/590%27/30
\n \n {this.renderPluginItem('contentEdit', 'Content Edit')}\n {this.renderPluginItem(\n 'hyperlink',\n 'Hyperlink Plugin',\n this.renderInputBox(\n 'Label title: ',\n this.linkTitle,\n this.props.state.linkTitle,\n 'Use \"' + UrlPlaceholder + '\" for the url string',\n (state, value) => (state.linkTitle = value)\n )\n )}\n {this.renderPluginItem('paste', 'Paste Plugin')}\n {this.renderPluginItem(\n 'watermark',\n 'Watermark Plugin',\n this.renderInputBox(\n 'Watermark text: ',\n this.watermarkText,\n this.props.state.watermarkText,\n '',\n (state, value) => (state.watermarkText = value)\n )\n )}\n {this.renderPluginItem(\n 'imageEdit',\n 'Image Edit Plugin',\n this.renderCheckBox(\n 'Force preserve ratio',\n this.forcePreserveRatio,\n this.props.state.forcePreserveRatio,\n (state, value) => (state.forcePreserveRatio = value)\n )\n )}\n {this.renderPluginItem('cutPasteListChain', 'CutPasteListChainPlugin')}\n {this.renderPluginItem('customReplace', 'Custom Replace Plugin (autocomplete)')}\n {this.renderPluginItem(\n 'contextMenu',\n 'Show customized context menu for special cases'\n )}\n {this.renderPluginItem('tableCellSelection', 'Table Cell Selection')}\n {this.renderPluginItem('announce', 'Announce')}\n \n
\n );\n }\n\n private renderPluginItem(\n id: PluginItemId,\n text: string,\n moreOptions?: JSX.Element\n ): JSX.Element {\n const checked = this.props.state.pluginList[id];\n\n return (\n

\n this.onPluginClick(id)}\n />\n \n
\n \n
\n {checked && moreOptions}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Position{`${x},${y}`}
Font\n {`${format.fontName}, ${format.fontSize}`}\n
Colors\n {`${format.textColor} / ${format.backgroundColor}`}\n
IME{this.renderSpan(this.state.inIME, 'InIME')}
Formats\n {this.renderSpan(format.isBold, 'Bold')}\n {this.renderSpan(format.isItalic, 'Italic')}\n {this.renderSpan(format.isUnderline, 'Underline')}\n {this.renderSpan(format.isStrikeThrough, 'Strike')}\n {this.renderSpan(format.isSubscript, 'Subscript')}\n {this.renderSpan(format.isSuperscript, 'Superscript')}\n {`Font-weight: ${format.fontWeight}`}\n
Structure\n {this.renderSpan(format.isBullet, 'Bullet')}\n {this.renderSpan(format.isNumbering, 'Numbering')}\n {this.renderSpan(format.isBlockQuote, 'Quote')}\n {this.renderSpan(format.canUnlink, 'In Link')}\n {this.renderSpan(format.canAddImageAltText, 'In Image')}\n {this.renderSpan(format.isInTable, 'In Table')}\n {this.renderSpan(format.tableHasHeader, 'Table Has Header')}\n {`Heading ${format.headingLevel}`}\n
Undo\n {this.renderSpan(format.canUndo, 'Can Undo')}\n {this.renderSpan(format.canRedo, 'Can Redo')}\n
Browser\n {this.renderSpan(Browser.isChrome, 'Chrome')}\n {this.renderSpan(Browser.isFirefox, 'Firefox')}\n {this.renderSpan(Browser.isSafari, 'Safari')}\n {this.renderSpan(Browser.isWebKit, 'Webkit')}\n
OS\n {this.renderSpan(Browser.isMac, 'MacOS')}\n {this.renderSpan(Browser.isWin, 'Windows')}\n {this.renderSpan(Browser.isAndroid, 'Android')}\n {this.renderSpan(Browser.isMobileOrTablet, 'Mobile/Tablet')}\n
User Agent{window.navigator.userAgent}
App Version{window.navigator.appVersion}
\n ) : (\n
Please focus into editor
\n );\n }\n\n private renderSpan(formatState: boolean, text: string): JSX.Element {\n return {text + ' '};\n }\n}\n","import FormatStatePane, { FormatStatePaneProps } from './FormatStatePane';\nimport SidePanePluginImpl from '../SidePanePluginImpl';\nimport { getFormatState } from 'roosterjs-editor-api';\nimport { getPositionRect } from 'roosterjs-editor-dom';\nimport { IEditor, PluginEvent, PluginEventType } from 'roosterjs-editor-types';\nimport { SidePaneElementProps } from '../SidePaneElement';\n\nexport default class FormatStatePlugin extends SidePanePluginImpl<\n FormatStatePane,\n FormatStatePaneProps\n> {\n constructor() {\n super(FormatStatePane, 'format', 'Format State');\n }\n\n initialize(editor: IEditor) {\n super.initialize(editor);\n this.editor.runAsync(editor => {\n editor.focus();\n\n this.updateFormatState();\n });\n }\n\n getComponentProps(base: SidePaneElementProps) {\n return {\n ...base,\n ...this.getFormatState(),\n };\n }\n\n onPluginEvent(event: PluginEvent) {\n if (\n event.eventType == PluginEventType.KeyUp ||\n event.eventType == PluginEventType.MouseUp ||\n event.eventType == PluginEventType.ContentChanged\n ) {\n this.updateFormatState();\n }\n }\n\n updateFormatState() {\n this.getComponent(component => component.setFormatState(this.getFormatState()));\n }\n\n protected getFormatState() {\n if (!this.editor) {\n return null;\n }\n\n const format = getFormatState(this.editor);\n const position = this.editor && this.editor.getFocusedPosition();\n const rect = position && getPositionRect(position);\n return {\n format,\n inIME: this.editor && this.editor.isInIME(),\n x: rect ? rect.left : 0,\n y: rect ? rect.top : 0,\n };\n }\n}\n","import * as React from 'react';\nimport { Snapshot } from 'roosterjs-editor-types';\n\nconst styles = require('./SnapshotPane.scss');\n\nexport interface SnapshotPaneProps {\n onTakeSnapshot: () => Snapshot;\n onRestoreSnapshot: (snapshot: Snapshot, triggerContentChangedEvent: boolean) => void;\n onMove: (moveStep: number) => void;\n}\n\nexport interface SnapshotPaneState {\n snapshots: Snapshot[];\n currentIndex: number;\n autoCompleteIndex: number;\n}\n\nexport default class SnapshotPane extends React.Component {\n private textarea: HTMLTextAreaElement;\n\n constructor(props: SnapshotPaneProps) {\n super(props);\n\n this.state = {\n snapshots: [],\n currentIndex: -1,\n autoCompleteIndex: -1,\n };\n }\n\n render() {\n return (\n
\n

Undo Snapshots

\n
\n {this.state.snapshots.map(this.renderItem)}\n
\n

Selected Snapshot

\n
\n {' '}\n \n this.props.onRestoreSnapshot(\n {\n html: this.textarea.value,\n metadata: null,\n knownColors: [],\n },\n true\n )\n }>\n {'Restore snapshot'}\n \n
\n (this.textarea = ref)}\n className={styles.textarea}\n spellCheck={false}\n />\n
\n );\n }\n\n updateSnapshots(snapshots: Snapshot[], currentIndex: number, autoCompleteIndex: number) {\n this.setState({\n snapshots,\n currentIndex,\n autoCompleteIndex,\n });\n }\n\n snapshotToString(snapshot: Snapshot) {\n return (\n snapshot.html + (snapshot.metadata ? `` : '')\n );\n }\n\n private takeSnapshot = () => {\n const snapshot = this.props.onTakeSnapshot();\n this.setSnapshot(this.snapshotToString(snapshot));\n };\n\n private setSnapshot = (snapshot: string) => {\n this.textarea.value = snapshot;\n };\n\n private renderItem = (snapshot: Snapshot, index: number) => {\n let className = '';\n if (index == this.state.currentIndex) {\n className += ' ' + styles.current;\n }\n if (index == this.state.autoCompleteIndex) {\n className += ' ' + styles.autoComplete;\n }\n\n const snapshotStr = this.snapshotToString(snapshot);\n return (\n this.setSnapshot(snapshotStr)}\n onDoubleClick={() => this.props.onMove(index - this.state.currentIndex)}>\n {(snapshotStr || '').substring(0, 1000)}\n
\n );\n };\n}\n","import * as React from 'react';\nimport SidePanePlugin from '../../SidePanePlugin';\nimport SnapshotPane from './SnapshotPane';\nimport UndoSnapshots from './UndoSnapshots';\nimport { createSnapshots } from 'roosterjs-editor-dom';\nimport { IEditor, PluginEvent, PluginEventType } from 'roosterjs-editor-types';\nimport { Snapshot } from 'roosterjs-editor-types';\n\nexport default class SnapshotPlugin implements SidePanePlugin {\n private editorInstance: IEditor;\n private component: SnapshotPane;\n private snapshotService: UndoSnapshots;\n private static snapshots = createSnapshots(1e7);\n\n constructor() {\n this.snapshotService = new UndoSnapshots(SnapshotPlugin.snapshots, this.updateSnapshots);\n }\n\n getName() {\n return 'Snapshot';\n }\n\n initialize(editor: IEditor) {\n this.editorInstance = editor;\n }\n\n dispose() {\n this.editorInstance = null;\n }\n\n onPluginEvent(e: PluginEvent) {\n if (e.eventType == PluginEventType.EditorReady) {\n this.updateSnapshots();\n }\n }\n\n getTitle() {\n return 'Undo Snapshots';\n }\n\n renderSidePane() {\n return ;\n }\n\n getSnapshotService() {\n return this.snapshotService;\n }\n\n private refCallback = (ref: SnapshotPane) => {\n this.component = ref;\n if (ref) {\n this.updateSnapshots();\n }\n };\n\n private getComponentProps() {\n return {\n onRestoreSnapshot: this.onRestoreSnapshot,\n onTakeSnapshot: this.onTakeSnapshot,\n onMove: this.onMove,\n };\n }\n\n private onTakeSnapshot = (): Snapshot => {\n let newSnapshot: Snapshot;\n\n try {\n this.snapshotService.startHijackUndoSnapshot(snapshot => {\n newSnapshot = snapshot;\n });\n this.editorInstance.addUndoSnapshot();\n } finally {\n this.snapshotService.stopHijackUndoSnapshot();\n }\n\n return newSnapshot;\n };\n\n private onMove = (step: number) => {\n const snapshot = this.snapshotService.move(step);\n this.onRestoreSnapshot(snapshot, false);\n };\n\n private onRestoreSnapshot = (snapshot: Snapshot, triggerContentChangedEvent: boolean) => {\n this.editorInstance.focus();\n this.editorInstance.setContent(\n this.component.snapshotToString(snapshot),\n triggerContentChangedEvent\n );\n };\n\n private updateSnapshots = () => {\n if (!this.component) {\n return;\n }\n\n this.component.updateSnapshots(\n this.snapshotService.getSnapshots(),\n this.snapshotService.getCurrentIndex(),\n this.snapshotService.getAutoCompleteIndex()\n );\n };\n}\n","import { Snapshot, Snapshots, UndoSnapshotsService } from 'roosterjs-editor-types';\nimport {\n addSnapshotV2,\n canMoveCurrentSnapshot,\n moveCurrentSnapshot,\n clearProceedingSnapshotsV2,\n canUndoAutoComplete,\n} from 'roosterjs-editor-dom';\n\nexport default class UndoSnapshots implements UndoSnapshotsService {\n private hijackUndoSnapshotCallback: undefined | ((snapshot: Snapshot) => void);\n\n constructor(private snapshots: Snapshots, private onChange: () => void) {}\n\n public isUndoSnapshotServiceV2(): true {\n return true;\n }\n\n public startHijackUndoSnapshot(callback: (snapshot: Snapshot) => void) {\n this.hijackUndoSnapshotCallback = callback;\n }\n\n public stopHijackUndoSnapshot() {\n this.hijackUndoSnapshotCallback = undefined;\n }\n\n public canMove(delta: number): boolean {\n return canMoveCurrentSnapshot(this.snapshots, delta);\n }\n\n public move(delta: number): Snapshot {\n const result = moveCurrentSnapshot(this.snapshots, delta);\n this.onChange();\n return result;\n }\n\n public addSnapshot(snapshot: Snapshot, isAutoCompleteSnapshot: boolean) {\n if (this.hijackUndoSnapshotCallback) {\n this.hijackUndoSnapshotCallback(snapshot);\n } else {\n addSnapshotV2(this.snapshots, snapshot, isAutoCompleteSnapshot);\n this.onChange();\n }\n }\n\n public clearRedo() {\n clearProceedingSnapshotsV2(this.snapshots);\n this.onChange();\n }\n\n public getSnapshots() {\n return this.snapshots.snapshots;\n }\n\n public getCurrentIndex() {\n return this.snapshots.currentIndex;\n }\n\n public getAutoCompleteIndex() {\n return this.snapshots.autoCompleteIndex;\n }\n\n public canUndoAutoComplete() {\n return canUndoAutoComplete(this.snapshots);\n }\n}\n","import * as React from 'react';\n\nconst styles = require('./TitleBar.scss');\nconst github = require('./iconmonstr-github-1.svg');\n\nexport interface TitleBarProps {\n className?: string;\n}\n\nexport default class TitleBar extends React.Component {\n render() {\n const { className: baseClassName } = this.props;\n const className = styles.titleBar + ' ' + (baseClassName || '');\n const titleText = 'RoosterJs Demo Site';\n\n return (\n
\n
\n {titleText}\n
\n
\n
\n \n New demo site\n \n {' | '}\n \n Wiki\n \n {' | '}\n \n References\n \n {' | '}\n \n Test\n \n {' | '}\n \n \n {' '}\n \n \n {' '}\n \n \n \n
\n
\n );\n }\n}\n","import { changeImage } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\nfunction createInput(doc: Document): HTMLInputElement {\n const input = doc.createElement('input');\n\n input.type = 'file';\n input.accept = 'image/*';\n input.setAttribute('display', 'none');\n\n return input;\n}\n\n/**\n * @internal\n * \"Change Image\" button on the format ribbon\n */\nexport const changeImageButton: RibbonButton<'buttonNameChangeImage'> = {\n key: 'buttonNameChangeImage',\n unlocalizedText: 'Change Image',\n iconName: 'ImageSearch',\n isDisabled: formatState => !formatState.canAddImageAltText,\n onClick: editor => {\n const document = editor.getDocument();\n const fileInput = createInput(document) as HTMLInputElement;\n document.body.appendChild(fileInput);\n\n fileInput.addEventListener('change', () => {\n if (fileInput.files) {\n for (let i = 0; i < fileInput.files.length; i++) {\n changeImage(editor, fileInput.files[i]);\n }\n }\n });\n\n try {\n fileInput.click();\n } finally {\n document.body.removeChild(fileInput);\n }\n },\n};\n","import { MainPane } from '../mainPane/MainPane';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\n/**\n * Key of localized strings of Dark mode button\n */\nexport type DarkModeButtonStringKey = 'buttonNameDarkMode';\n\n/**\n * \"Dark mode\" button on the format ribbon\n */\nexport const darkModeButton: RibbonButton = {\n key: 'buttonNameDarkMode',\n unlocalizedText: 'Dark Mode',\n iconName: 'ClearNight',\n isChecked: formatState => formatState.isDarkMode,\n onClick: editor => {\n editor.focus();\n\n // Let main pane know this state change so that it can be persisted when pop out/pop in\n MainPane.getInstance().toggleDarkMode();\n return true;\n },\n commandBarProperties: {\n buttonStyles: {\n icon: { paddingBottom: '10px' },\n },\n },\n};\n","import { exportContent } from 'roosterjs-content-model-core';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\n/**\n * Key of localized strings of Zoom button\n */\nexport type ExportButtonStringKey =\n | 'buttonNameExport'\n | 'menuNameExportHTML'\n | 'menuNameExportText';\n\n/**\n * \"Export content\" button on the format ribbon\n */\nexport const exportContentButton: RibbonButton = {\n key: 'buttonNameExport',\n unlocalizedText: 'Export',\n iconName: 'Export',\n flipWhenRtl: true,\n dropDownMenu: {\n items: {\n menuNameExportHTML: 'as HTML',\n menuNameExportText: 'as Plain Text',\n },\n },\n onClick: (editor, key) => {\n const win = editor.getDocument().defaultView.open();\n let html = '';\n\n if (key == 'menuNameExportHTML') {\n html = exportContent(editor);\n } else if (key == 'menuNameExportText') {\n html = `
${exportContent(editor, 'PlainText')}
`;\n }\n\n win.document.write(editor.getTrustedHTMLHandler()(html));\n },\n commandBarProperties: {\n buttonStyles: {\n icon: { paddingBottom: '10px' },\n },\n },\n};\n","import { FormatPainterHandler } from '../plugins/FormatPainterPlugin';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\n/**\n * @internal\n * \"Format Painter\" button on the format ribbon\n */\nexport function createFormatPainterButton(\n handler: FormatPainterHandler\n): RibbonButton<'formatPainter'> {\n return {\n key: 'formatPainter',\n unlocalizedText: 'Format painter',\n iconName: 'Brush',\n onClick: () => {\n handler.startFormatPainter();\n },\n };\n}\n","import { formatTable } from 'roosterjs-content-model-api';\nimport { TableBorderFormat } from 'roosterjs-content-model-dom';\nimport { TableMetadataFormat } from 'roosterjs-content-model-types';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\nconst PREDEFINED_STYLES: Record<\n string,\n (color?: string, lightColor?: string) => TableMetadataFormat\n> = {\n DEFAULT: (color, lightColor) =>\n createTableFormat(\n color /**topBorder */,\n color /**bottomBorder */,\n color /** verticalColors*/,\n false /** bandedRows */,\n false /** bandedColumns */,\n false /** headerRow */,\n false /** firstColumn */,\n TableBorderFormat.Default /** tableBorderFormat */,\n null /** bgColorEven */,\n lightColor /** bgColorOdd */,\n color /** headerRowColor */\n ),\n DEFAULT_WITH_BACKGROUND_COLOR: (color, lightColor) =>\n createTableFormat(\n color /**topBorder */,\n color /**bottomBorder */,\n color /** verticalColors*/,\n false /** bandedRows */,\n false /** bandedColumns */,\n false /** headerRow */,\n false /** firstColumn */,\n TableBorderFormat.Default /** tableBorderFormat */,\n null /** bgColorEven */,\n lightColor /** bgColorOdd */,\n color /** headerRowColor */\n ),\n GRID_WITHOUT_BORDER: (color, lightColor) =>\n createTableFormat(\n color /**topBorder */,\n color /**bottomBorder */,\n color /** verticalColors*/,\n true /** bandedRows */,\n false /** bandedColumns */,\n false /** headerRow */,\n false /** firstColumn */,\n TableBorderFormat.NoSideBorders /** tableBorderFormat */,\n null /** bgColorEven */,\n lightColor /** bgColorOdd */,\n color /** headerRowColor */\n ),\n LIST: (color, lightColor) =>\n createTableFormat(\n color /**topBorder */,\n color /**bottomBorder */,\n null /** verticalColors*/,\n false /** bandedRows */,\n false /** bandedColumns */,\n false /** headerRow */,\n false /** firstColumn */,\n TableBorderFormat.Default /** tableBorderFormat */,\n null /** bgColorEven */,\n lightColor /** bgColorOdd */,\n color /** headerRowColor */\n ),\n BANDED_ROWS_FIRST_COLUMN_NO_BORDER: (color, lightColor) =>\n createTableFormat(\n color /**topBorder */,\n color /**bottomBorder */,\n color /** verticalColors*/,\n true /** bandedRows */,\n false /** bandedColumns */,\n false /** headerRow */,\n false /** firstColumn */,\n TableBorderFormat.FirstColumnHeaderExternal /** tableBorderFormat */,\n '#B0B0B0' /** bgColorEven */,\n lightColor /** bgColorOdd */,\n color /** headerRowColor */\n ),\n EXTERNAL: (color, lightColor) =>\n createTableFormat(\n color /**topBorder */,\n color /**bottomBorder */,\n color /** verticalColors*/,\n false /** bandedRows */,\n false /** bandedColumns */,\n false /** headerRow */,\n false /** firstColumn */,\n TableBorderFormat.ListWithSideBorders /** tableBorderFormat */,\n null /** bgColorEven */,\n lightColor /** bgColorOdd */,\n color /** headerRowColor */\n ),\n NO_HEADER_VERTICAL: (color, lightColor) =>\n createTableFormat(\n color /**topBorder */,\n color /**bottomBorder */,\n color /** verticalColors*/,\n false /** bandedRows */,\n false /** bandedColumns */,\n false /** headerRow */,\n false /** firstColumn */,\n TableBorderFormat.NoHeaderBorders /** tableBorderFormat */,\n null /** bgColorEven */,\n lightColor /** bgColorOdd */,\n color /** headerRowColor */\n ),\n ESPECIAL_TYPE_1: (color, lightColor) =>\n createTableFormat(\n color /**topBorder */,\n color /**bottomBorder */,\n color /** verticalColors*/,\n false /** bandedRows */,\n false /** bandedColumns */,\n false /** headerRow */,\n false /** firstColumn */,\n TableBorderFormat.EspecialType1 /** tableBorderFormat */,\n null /** bgColorEven */,\n lightColor /** bgColorOdd */,\n color /** headerRowColor */\n ),\n ESPECIAL_TYPE_2: (color, lightColor) =>\n createTableFormat(\n color /**topBorder */,\n color /**bottomBorder */,\n color /** verticalColors*/,\n false /** bandedRows */,\n false /** bandedColumns */,\n false /** headerRow */,\n false /** firstColumn */,\n TableBorderFormat.EspecialType2 /** tableBorderFormat */,\n null /** bgColorEven */,\n lightColor /** bgColorOdd */,\n color /** headerRowColor */\n ),\n ESPECIAL_TYPE_3: (color, lightColor) =>\n createTableFormat(\n color /**topBorder */,\n color /**bottomBorder */,\n color /** verticalColors*/,\n false /** bandedRows */,\n false /** bandedColumns */,\n false /** headerRow */,\n false /** firstColumn */,\n TableBorderFormat.EspecialType3 /** tableBorderFormat */,\n lightColor /** bgColorEven */,\n null /** bgColorOdd */,\n color /** headerRowColor */\n ),\n CLEAR: (color, lightColor) =>\n createTableFormat(\n color /**topBorder */,\n color /**bottomBorder */,\n color /** verticalColors*/,\n false /** bandedRows */,\n false /** bandedColumns */,\n false /** headerRow */,\n false /** firstColumn */,\n TableBorderFormat.Clear /** tableBorderFormat */,\n lightColor /** bgColorEven */,\n null /** bgColorOdd */,\n color /** headerRowColor */\n ),\n};\n\nexport function createTableFormat(\n topBorder?: string,\n bottomBorder?: string,\n verticalBorder?: string,\n bandedRows?: boolean,\n bandedColumns?: boolean,\n headerRow?: boolean,\n firstColumn?: boolean,\n borderFormat?: number,\n bgColorEven?: string,\n bgColorOdd?: string,\n headerRowColor?: string\n): TableMetadataFormat {\n return {\n topBorderColor: topBorder,\n bottomBorderColor: bottomBorder,\n verticalBorderColor: verticalBorder,\n hasBandedRows: bandedRows,\n bgColorEven: bgColorEven,\n bgColorOdd: bgColorOdd,\n hasBandedColumns: bandedColumns,\n hasHeaderRow: headerRow,\n headerRowColor: headerRowColor,\n hasFirstColumn: firstColumn,\n tableBorderFormat: borderFormat,\n };\n}\n\nexport const formatTableButton: RibbonButton<'ribbonButtonTableFormat'> = {\n key: 'ribbonButtonTableFormat',\n iconName: 'TableComputed',\n unlocalizedText: 'Format Table',\n isDisabled: formatState => !formatState.isInTable,\n dropDownMenu: {\n items: {\n DEFAULT: 'Default',\n DEFAULT_WITH_BACKGROUND_COLOR: 'Default with background color',\n GRID_WITHOUT_BORDER: 'Gride without border',\n LIST: 'list',\n BANDED_ROWS_FIRST_COLUMN_NO_BORDER: 'Banded rows first column no border',\n EXTERNAL: 'External',\n NO_HEADER_VERTICAL: 'No header vertical',\n ESPECIAL_TYPE_1: 'Especial type 1',\n ESPECIAL_TYPE_2: 'Especial type 2',\n ESPECIAL_TYPE_3: 'Especial type 3',\n CLEAR: 'Clear',\n },\n },\n onClick: (editor, key) => {\n const format = PREDEFINED_STYLES[key]?.('#ABABAB', '#ABABAB20');\n\n if (format) {\n formatTable(editor, format);\n }\n },\n};\n","import { renderColorPicker } from '../roosterjsReact/colorPicker/component/renderColorPicker';\nimport { setImageBorder } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../roosterjsReact/colorPicker/utils/getClassNamesForColorPicker';\nimport {\n getTextColorValue,\n TextColorDropDownItems,\n TextColors,\n} from '../roosterjsReact/colorPicker/utils/textColors';\n\n/**\n * @internal\n * \"Image Border Color\" button on the format ribbon\n */\nexport const imageBorderColorButton: RibbonButton<'buttonNameImageBorderColor'> = {\n dropDownMenu: {\n items: TextColorDropDownItems,\n itemClassName: getColorPickerItemClassName(),\n allowLivePreview: true,\n itemRender: (item, onClick) => renderColorPicker(item, TextColors, onClick),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n },\n key: 'buttonNameImageBorderColor',\n unlocalizedText: 'Image Border Color',\n iconName: 'Photo2',\n isDisabled: formatState => !formatState.canAddImageAltText,\n onClick: (editor, key) => {\n // This check will always be true, add it here just to satisfy compiler\n if (key != 'buttonNameImageBorderColor') {\n setImageBorder(editor, { color: getTextColorValue(key).lightModeColor }, '5px');\n }\n },\n};\n","import { setImageBorder } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\n/**\n * @internal\n * \"Remove Image Border\" button on the format ribbon\n */\nexport const imageBorderRemoveButton: RibbonButton<'buttonNameImageBorderRemove'> = {\n key: 'buttonNameImageBorderRemove',\n unlocalizedText: 'Remove Image Border',\n iconName: 'Cancel',\n isDisabled: formatState => !formatState.canAddImageAltText,\n onClick: editor => {\n setImageBorder(editor, null);\n },\n};\n","import { setImageBorder } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\nconst STYLES: Record = {\n dashed: 'dashed',\n dotted: 'dotted',\n solid: 'solid',\n double: 'doubled',\n groove: 'groove',\n ridge: 'ridge',\n inset: 'inset',\n outset: 'outset',\n};\n\n/**\n * @internal\n * \"Image Border Style\" button on the format ribbon\n */\nexport const imageBorderStyleButton: RibbonButton<'buttonNameImageBorderStyle'> = {\n key: 'buttonNameImageBorderStyle',\n unlocalizedText: 'Image Border Style',\n iconName: 'BorderDash',\n isDisabled: formatState => !formatState.canAddImageAltText,\n dropDownMenu: {\n items: STYLES,\n allowLivePreview: true,\n },\n onClick: (editor, style) => {\n setImageBorder(editor, { style: style }, '5px');\n },\n};\n","import { setImageBorder } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\nconst WIDTH = [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72];\n\n/**\n * @internal\n * \"Image Border Width\" button on the format ribbon\n */\nexport const imageBorderWidthButton: RibbonButton<'buttonNameImageBorderWidth'> = {\n key: 'buttonNameImageBorderWidth',\n unlocalizedText: 'Image Border Width',\n iconName: 'Photo2',\n isDisabled: formatState => !formatState.canAddImageAltText,\n dropDownMenu: {\n items: WIDTH.reduce((map, size) => {\n map[size + 'pt'] = size.toString();\n return map;\n }, >{}),\n allowLivePreview: true,\n },\n onClick: (editor, size) => {\n setImageBorder(\n editor,\n {\n width: size,\n },\n '5px'\n );\n },\n};\n","import { RibbonButton } from '../roosterjsReact/ribbon';\nimport { setImageBoxShadow } from 'roosterjs-content-model-api';\n\nconst STYLES_NAMES: Record = {\n noShadow: 'noShadow',\n bottomRight: 'bottomRight',\n bottom: 'bottom',\n bottomLeft: 'bottomLeft',\n right: 'right',\n center: 'center',\n left: 'left',\n topRight: 'topRight',\n top: 'top',\n topLeft: 'topLeft',\n};\n\nconst STYLES: Record = {\n noShadow: '',\n bottomRight: '4px 4px 3px #aaaaaa',\n bottom: '0px 4px 3px 0px #aaaaaa',\n bottomLeft: '-4px 4px 3px 3px #aaaaaa',\n right: '4px 0px 3px 0px #aaaaaa',\n center: '0px 0px 3px 3px #aaaaaa',\n left: '-4px 0px 3px 0px #aaaaaa',\n topRight: '4px -4px 3px 3px #aaaaaa',\n top: '0px -4px 3px 0px #aaaaaa',\n topLeft: '-4px -4px 3px 0px #aaaaaa',\n};\n\n/**\n * @internal\n * \"Image Shadow\" button on the format ribbon\n */\nexport const imageBoxShadowButton: RibbonButton<'buttonNameImageBoxSHadow'> = {\n key: 'buttonNameImageBoxSHadow',\n unlocalizedText: 'Image Shadow',\n iconName: 'Photo2',\n isDisabled: formatState => !formatState.canAddImageAltText,\n dropDownMenu: {\n items: STYLES_NAMES,\n allowLivePreview: true,\n },\n onClick: (editor, size) => {\n setImageBoxShadow(editor, STYLES[size], STYLES[size].length ? '4px' : null);\n },\n};\n","import { CancelButtonStringKey, OkButtonStringKey } from '../roosterjsReact/common';\nimport { RibbonButton } from '../roosterjsReact/ribbon';\nimport { setListStartNumber } from 'roosterjs-content-model-api';\nimport { showInputDialog } from '../roosterjsReact/inputDialog';\n\n/**\n * @internal\n * \"Bulleted list\" button on the format ribbon\n */\nexport const listStartNumberButton: RibbonButton<\n | 'ribbonButtonSetStartNumber'\n | 'ribbonButtonSetStartNumberTo1'\n | 'ribbonButtonSetStartNumberCustomize'\n | OkButtonStringKey\n | CancelButtonStringKey\n> = {\n key: 'ribbonButtonSetStartNumber',\n dropDownMenu: {\n items: {\n ribbonButtonSetStartNumberTo1: 'Restart at 1',\n ribbonButtonSetStartNumberCustomize: 'Start numbering value',\n },\n },\n unlocalizedText: 'Set list start number',\n iconName: 'NumberSymbol',\n isDisabled: formatState => !formatState.isNumbering,\n onClick: (editor, key, strings, uiUtility) => {\n if (key == 'ribbonButtonSetStartNumberCustomize') {\n showInputDialog(\n uiUtility,\n 'ribbonButtonSetStartNumberCustomize',\n 'Start numbering value',\n {\n startNumber: {\n labelKey: null,\n unlocalizedLabel: null,\n initValue: '1',\n },\n },\n strings\n ).then(values => {\n const newValue = parseInt(values.startNumber);\n\n if (newValue > 0) {\n setListStartNumber(editor, newValue);\n }\n });\n } else {\n setListStartNumber(editor, 1);\n }\n },\n};\n","import { extractClipboardItems } from 'roosterjs-content-model-dom';\nimport { paste } from 'roosterjs-content-model-core';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\n/**\n * @internal\n * \"Paste\" button on the format ribbon\n */\nexport const pasteButton: RibbonButton<'buttonNamePaste'> = {\n key: 'buttonNamePaste',\n unlocalizedText: 'Paste',\n iconName: 'Paste',\n onClick: async editor => {\n const doc = editor.getDocument();\n const clipboard = doc.defaultView.navigator.clipboard;\n if (clipboard && clipboard.read) {\n try {\n const clipboardItems = await clipboard.read();\n const dataTransferItems = await Promise.all(\n createDataTransferItems(clipboardItems)\n );\n const clipboardData = await extractClipboardItems(dataTransferItems);\n paste(editor, clipboardData);\n } catch {}\n }\n },\n};\n\nconst createDataTransfer = (\n kind: 'string' | 'file',\n type: string,\n blob: Blob\n): DataTransferItem => {\n const file = blob as File;\n return {\n kind,\n type,\n getAsFile: () => file,\n getAsString: (callback: (data: string) => void) => {\n blob.text().then(callback);\n },\n webkitGetAsEntry: () => null,\n };\n};\n\nconst createDataTransferItems = (data: ClipboardItems) => {\n const isTEXT = (type: string) => type.startsWith('text/');\n const isIMAGE = (type: string) => type.startsWith('image/');\n const dataTransferItems: Promise[] = [];\n data.forEach(item => {\n item.types.forEach(type => {\n if (isTEXT(type) || isIMAGE(type)) {\n dataTransferItems.push(\n item\n .getType(type)\n .then(blob =>\n createDataTransfer(isTEXT(type) ? 'string' : 'file', type, blob)\n )\n );\n }\n });\n });\n return dataTransferItems;\n};\n","import { MainPane } from '../mainPane/MainPane';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\n/**\n * Key of localized strings of Popout button\n */\nexport type PopoutButtonStringKey = 'buttonNamePopout';\n\n/**\n * \"Popout\" button on the format ribbon\n */\nexport const popoutButton: RibbonButton = {\n key: 'buttonNamePopout',\n unlocalizedText: 'Open in a separate window',\n iconName: 'OpenInNewWindow',\n flipWhenRtl: true,\n onClick: _ => {\n MainPane.getInstance().popout();\n },\n commandBarProperties: {\n buttonStyles: {\n icon: { paddingBottom: '10px' },\n },\n },\n};\n","import { BulletListType } from 'roosterjs-content-model-dom';\nimport { setListStyle } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\nconst dropDownMenuItems = {\n [BulletListType.Disc]: 'Disc',\n [BulletListType.Dash]: 'Dash',\n [BulletListType.Square]: 'Square',\n [BulletListType.ShortArrow]: 'ShortArrow',\n [BulletListType.LongArrow]: 'LongArrow',\n [BulletListType.UnfilledArrow]: 'UnfilledArrow',\n [BulletListType.Hyphen]: 'Hyphen',\n [BulletListType.DoubleLongArrow]: 'DoubleLongArrow',\n [BulletListType.Circle]: 'Circle',\n};\n\nexport const setBulletedListStyleButton: RibbonButton<'ribbonButtonBulletedListStyle'> = {\n key: 'ribbonButtonBulletedListStyle',\n dropDownMenu: { items: dropDownMenuItems },\n unlocalizedText: 'Set unordered list style',\n iconName: 'BulletedList',\n isDisabled: formatState => !formatState.isBullet,\n onClick: (editor, key) => {\n const value = parseInt(key);\n\n setListStyle(editor, {\n unorderedStyleType: value,\n });\n },\n};\n","import { NumberingListType } from 'roosterjs-content-model-dom';\nimport { setListStyle } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\nconst dropDownMenuItems = {\n [NumberingListType.Decimal]: 'Decimal',\n [NumberingListType.DecimalDash]: 'DecimalDash',\n [NumberingListType.DecimalParenthesis]: 'DecimalParenthesis',\n [NumberingListType.DecimalDoubleParenthesis]: 'DecimalDoubleParenthesis',\n [NumberingListType.LowerAlpha]: 'LowerAlpha',\n [NumberingListType.LowerAlphaParenthesis]: 'LowerAlphaParenthesis',\n [NumberingListType.LowerAlphaDoubleParenthesis]: 'LowerAlphaDoubleParenthesis',\n [NumberingListType.LowerAlphaDash]: 'LowerAlphaDash',\n [NumberingListType.UpperAlpha]: 'UpperAlpha',\n [NumberingListType.UpperAlphaParenthesis]: 'UpperAlphaParenthesis',\n [NumberingListType.UpperAlphaDoubleParenthesis]: 'UpperAlphaDoubleParenthesis',\n [NumberingListType.UpperAlphaDash]: 'UpperAlphaDash',\n [NumberingListType.LowerRoman]: 'LowerRoman',\n [NumberingListType.LowerRomanParenthesis]: 'LowerRomanParenthesis',\n [NumberingListType.LowerRomanDoubleParenthesis]: 'LowerRomanDoubleParenthesis',\n [NumberingListType.LowerRomanDash]: 'LowerRomanDash',\n [NumberingListType.UpperRoman]: 'UpperRoman',\n [NumberingListType.UpperRomanParenthesis]: 'UpperRomanParenthesis',\n [NumberingListType.UpperRomanDoubleParenthesis]: 'UpperRomanDoubleParenthesis',\n [NumberingListType.UpperRomanDash]: 'UpperRomanDash',\n};\n\nexport const setNumberedListStyleButton: RibbonButton<'ribbonButtonNumberedListStyle'> = {\n key: 'ribbonButtonNumberedListStyle',\n dropDownMenu: { items: dropDownMenuItems },\n unlocalizedText: 'Set ordered list style',\n iconName: 'NumberedList',\n isDisabled: formatState => !formatState.isNumbering,\n onClick: (editor, key) => {\n const value = parseInt(key);\n\n setListStyle(editor, {\n orderedStyleType: value,\n });\n },\n};\n","import { BackgroundColorKeys } from '../roosterjsReact/colorPicker/types/stringKeys';\nimport { renderColorPicker } from '../roosterjsReact/colorPicker/component/renderColorPicker';\nimport { setTableCellShade } from 'roosterjs-content-model-api';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../roosterjsReact/colorPicker/utils/getClassNamesForColorPicker';\nimport {\n BackgroundColorDropDownItems,\n BackgroundColors,\n getBackgroundColorValue,\n} from '../roosterjsReact/colorPicker/utils/backgroundColors';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\nexport const setTableCellShadeButton: RibbonButton<\n 'ribbonButtonSetTableCellShade' | BackgroundColorKeys\n> = {\n dropDownMenu: {\n items: BackgroundColorDropDownItems,\n itemClassName: getColorPickerItemClassName(),\n allowLivePreview: true,\n itemRender: (item, onClick) => renderColorPicker(item, BackgroundColors, onClick),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n },\n key: 'ribbonButtonSetTableCellShade',\n unlocalizedText: 'Set table shade color',\n iconName: 'BackgroundColor',\n isDisabled: formatState => !formatState.isInTable,\n onClick: (editor, key) => {\n if (key != 'ribbonButtonSetTableCellShade') {\n const color = getBackgroundColorValue(key);\n\n // Content Model doesn't need dark mode color at this point, so always pass in light mode color\n setTableCellShade(editor, color.lightModeColor);\n }\n },\n};\n","import { formatTable, getFormatState } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\nexport const setTableHeaderButton: RibbonButton<'ribbonButtonSetTableHeader'> = {\n key: 'ribbonButtonSetTableHeader',\n unlocalizedText: 'Toggle table header',\n iconName: 'Header',\n isDisabled: formatState => !formatState.isInTable,\n onClick: editor => {\n const format = getFormatState(editor);\n formatTable(editor, { hasHeaderRow: !format.tableHasHeader }, true /*keepCellShade*/);\n },\n};\n","import { getFormatState, setParagraphMargin } from 'roosterjs-content-model-api';\nimport { RibbonButton } from '../roosterjsReact/ribbon';\n\nconst spaceAfterButtonKey = 'buttonNameSpaceAfter';\nconst spaceBeforeButtonKey = 'buttonNameSpaceBefore';\n\n/**\n * @internal\n * \"Add space after\" button on the format ribbon\n */\nexport const spaceAfterButton: RibbonButton = {\n key: spaceAfterButtonKey,\n unlocalizedText: 'Remove space after',\n iconName: 'CaretDown8',\n isChecked: formatState => !formatState.marginBottom || parseInt(formatState.marginBottom) <= 0,\n onClick: editor => {\n const marginBottom = getFormatState(editor).marginBottom;\n setParagraphMargin(\n editor,\n undefined /* marginTop */,\n parseInt(marginBottom) ? null : '8pt'\n );\n },\n};\n\n/**\n * @internal\n * \"Add space before\" button on the format ribbon\n */\nexport const spaceBeforeButton: RibbonButton = {\n key: spaceBeforeButtonKey,\n unlocalizedText: 'Add space before',\n iconName: 'CaretUp8',\n isChecked: formatState => parseInt(formatState.marginTop) > 0,\n onClick: editor => {\n const marginTop = getFormatState(editor).marginTop;\n setParagraphMargin(\n editor,\n parseInt(marginTop) ? null : '12pt',\n undefined /* marginBottom */\n );\n },\n};\n","import { RibbonButton } from '../roosterjsReact/ribbon';\nimport { setSpacing } from 'roosterjs-content-model-api';\n\nconst SPACING_OPTIONS = ['1.0', '1.15', '1.5', '2.0'];\nconst NORMAL_SPACING = 1.2;\nconst spacingButtonKey = 'buttonNameSpacing';\n\nfunction findClosest(lineHeight?: string) {\n if (Number.isNaN(+lineHeight)) {\n return '';\n }\n const query = +lineHeight / NORMAL_SPACING;\n return SPACING_OPTIONS.find(opt => Math.abs(query - +opt) < 0.05);\n}\n\n/**\n * @internal\n * \"Spacing\" button on the format ribbon\n */\nexport const spacingButton: RibbonButton = {\n key: spacingButtonKey,\n unlocalizedText: 'Spacing',\n iconName: 'LineSpacing',\n dropDownMenu: {\n items: SPACING_OPTIONS.reduce((map, size) => {\n map[size] = size;\n return map;\n }, >{}),\n getSelectedItemKey: formatState => findClosest(formatState.lineHeight),\n allowLivePreview: true,\n },\n onClick: (editor, size) => {\n setSpacing(editor, +size * NORMAL_SPACING);\n },\n};\n","import { applyTableBorderFormat } from 'roosterjs-content-model-api';\nimport { BorderOperations } from 'roosterjs-content-model-types';\nimport { MainPane } from '../mainPane/MainPane';\nimport { RibbonButton } from '../roosterjsReact/ribbon';\n\nconst TABLE_OPERATIONS: Record = {\n menuNameTableAllBorder: 'allBorders',\n menuNameTableNoBorder: 'noBorders',\n menuNameTableLeftBorder: 'leftBorders',\n menuNameTableRightBorder: 'rightBorders',\n menuNameTableTopBorder: 'topBorders',\n menuNameTableBottomBorder: 'bottomBorders',\n menuNameTableInsideBorder: 'insideBorders',\n menuNameTableOutsideBorder: 'outsideBorders',\n};\n\nexport const tableBorderApplyButton: RibbonButton<'ribbonButtonTableBorder'> = {\n key: 'ribbonButtonTableBorder',\n iconName: 'TableComputed',\n unlocalizedText: 'Table Border',\n isDisabled: formatState => !formatState.isInTable,\n dropDownMenu: {\n items: {\n menuNameTableAllBorder: 'All Borders',\n menuNameTableNoBorder: 'No Borders',\n menuNameTableLeftBorder: 'Left Borders',\n menuNameTableRightBorder: 'Right Borders',\n menuNameTableTopBorder: 'Top Borders',\n menuNameTableBottomBorder: 'Bottom Borders',\n menuNameTableInsideBorder: 'Inside Borders',\n menuNameTableOutsideBorder: 'Outside Borders',\n },\n },\n onClick: (editor, key) => {\n const border = MainPane.getInstance().getTableBorder();\n applyTableBorderFormat(editor, border, TABLE_OPERATIONS[key]);\n },\n};\n","import { MainPane } from '../mainPane/MainPane';\nimport { renderColorPicker } from '../roosterjsReact/colorPicker/component/renderColorPicker';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../roosterjsReact/colorPicker/utils/getClassNamesForColorPicker';\nimport {\n getTextColorValue,\n TextColorDropDownItems,\n TextColors,\n} from '../roosterjsReact/colorPicker/utils/textColors';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\n/**\n * @internal\n * \"Table Border Color\" button on the format ribbon\n */\nexport const tableBorderColorButton: RibbonButton<'buttonNameTableBorderColor'> = {\n dropDownMenu: {\n items: TextColorDropDownItems,\n itemClassName: getColorPickerItemClassName(),\n allowLivePreview: true,\n itemRender: (item, onClick) => renderColorPicker(item, TextColors, onClick),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n },\n key: 'buttonNameTableBorderColor',\n unlocalizedText: 'Table Border Color',\n iconName: 'ColorSolid',\n isDisabled: formatState => !formatState.isInTable,\n onClick: (editor, key) => {\n // This check will always be true, add it here just to satisfy compiler\n if (key != 'buttonNameTableBorderColor') {\n MainPane.getInstance().setTableBorderColor(getTextColorValue(key).lightModeColor);\n editor.focus();\n }\n },\n};\n","import { MainPane } from '../mainPane/MainPane';\nimport { RibbonButton } from '../roosterjsReact/ribbon';\n\nconst STYLES: Record = {\n dashed: 'dashed',\n dotted: 'dotted',\n solid: 'solid',\n double: 'doubled',\n groove: 'groove',\n ridge: 'ridge',\n inset: 'inset',\n outset: 'outset',\n};\n\n/**\n * @internal\n * \"Table Border Style\" button on the format ribbon\n */\nexport const tableBorderStyleButton: RibbonButton<'buttonNameTableBorderStyle'> = {\n key: 'buttonNameTableBorderStyle',\n unlocalizedText: 'Table Border Style',\n iconName: 'LineStyle',\n isDisabled: formatState => !formatState.isInTable,\n dropDownMenu: {\n items: STYLES,\n allowLivePreview: true,\n },\n onClick: (editor, style) => {\n MainPane.getInstance().setTableBorderStyle(style);\n editor.focus();\n\n return true;\n },\n};\n","import { MainPane } from '../mainPane/MainPane';\nimport { RibbonButton } from '../roosterjsReact/ribbon';\n\nconst WIDTH = [0.25, 0.5, 0.75, 1, 1.5, 2.25, 3, 4.5, 6];\n\n/**\n * @internal\n * \"Table Border Width\" button on the format ribbon\n */\nexport const tableBorderWidthButton: RibbonButton<'buttonNameTableBorderWidth'> = {\n key: 'buttonNameTableBorderWidth',\n unlocalizedText: 'Table Border Width',\n iconName: 'LineThickness',\n isDisabled: formatState => !formatState.isInTable,\n dropDownMenu: {\n items: WIDTH.reduce((map, size) => {\n map[size + 'pt'] = size.toString();\n return map;\n }, >{}),\n allowLivePreview: true,\n },\n onClick: (editor, width) => {\n MainPane.getInstance().setTableBorderWidth(width);\n editor.focus();\n\n return true;\n },\n};\n","import { editTable } from 'roosterjs-content-model-api';\nimport { TableOperation } from 'roosterjs-content-model-types';\nimport {\n TableEditAlignMenuItemStringKey,\n TableEditAlignTableMenuItemStringKey,\n TableEditDeleteMenuItemStringKey,\n TableEditInsertMenuItemStringKey,\n TableEditMenuItemStringKey,\n TableEditMergeMenuItemStringKey,\n TableEditSplitMenuItemStringKey,\n} from 'roosterjs-react';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\nconst TableEditOperationMap: Partial> = {\n menuNameTableInsertAbove: 'insertAbove',\n menuNameTableInsertBelow: 'insertBelow',\n menuNameTableInsertLeft: 'insertLeft',\n menuNameTableInsertRight: 'insertRight',\n menuNameTableDeleteTable: 'deleteTable',\n menuNameTableDeleteColumn: 'deleteColumn',\n menuNameTableDeleteRow: 'deleteRow',\n menuNameTableMergeAbove: 'mergeAbove',\n menuNameTableMergeBelow: 'mergeBelow',\n menuNameTableMergeLeft: 'mergeLeft',\n menuNameTableMergeRight: 'mergeRight',\n menuNameTableMergeCells: 'mergeCells',\n menuNameTableSplitHorizontally: 'splitHorizontally',\n menuNameTableSplitVertically: 'splitVertically',\n menuNameTableAlignLeft: 'alignCellLeft',\n menuNameTableAlignCenter: 'alignCellCenter',\n menuNameTableAlignRight: 'alignCellRight',\n menuNameTableAlignTop: 'alignCellTop',\n menuNameTableAlignMiddle: 'alignCellMiddle',\n menuNameTableAlignBottom: 'alignCellBottom',\n menuNameTableAlignTableLeft: 'alignLeft',\n menuNameTableAlignTableCenter: 'alignCenter',\n menuNameTableAlignTableRight: 'alignRight',\n};\n\nexport const tableInsertButton: RibbonButton<\n 'ribbonButtonTableInsert' | TableEditInsertMenuItemStringKey\n> = {\n key: 'ribbonButtonTableInsert',\n iconName: 'InsertColumnsRight',\n unlocalizedText: 'Insert',\n isDisabled: formatState => !formatState.isInTable,\n dropDownMenu: {\n items: {\n menuNameTableInsertAbove: 'Insert above',\n menuNameTableInsertBelow: 'Insert below',\n menuNameTableInsertLeft: 'Insert left',\n menuNameTableInsertRight: 'Insert right',\n },\n },\n onClick: (editor, key) => {\n if (key != 'ribbonButtonTableInsert') {\n editTable(editor, TableEditOperationMap[key]);\n }\n },\n};\n\nexport const tableDeleteButton: RibbonButton<\n 'ribbonButtonTableDelete' | TableEditDeleteMenuItemStringKey\n> = {\n key: 'ribbonButtonTableDelete',\n iconName: 'DeleteTable',\n unlocalizedText: 'Delete',\n isDisabled: formatState => !formatState.isInTable,\n dropDownMenu: {\n items: {\n menuNameTableDeleteColumn: 'Delete column',\n menuNameTableDeleteRow: 'Delete row',\n menuNameTableDeleteTable: 'Delete table',\n },\n },\n onClick: (editor, key) => {\n if (key != 'ribbonButtonTableDelete') {\n editTable(editor, TableEditOperationMap[key]);\n }\n },\n};\n\nexport const tableMergeButton: RibbonButton<\n 'ribbonButtonTableMerge' | TableEditMergeMenuItemStringKey\n> = {\n key: 'ribbonButtonTableMerge',\n iconName: '',\n unlocalizedText: 'Merge',\n isDisabled: formatState => !formatState.isInTable,\n dropDownMenu: {\n items: {\n menuNameTableMergeAbove: 'Merge above',\n menuNameTableMergeBelow: 'Merge below',\n menuNameTableMergeLeft: 'Merge left',\n menuNameTableMergeRight: 'Merge right',\n '-': '-',\n menuNameTableMergeCells: 'Merge selected cells',\n },\n },\n onClick: (editor, key) => {\n if (key != 'ribbonButtonTableMerge') {\n editTable(editor, TableEditOperationMap[key]);\n }\n },\n commandBarProperties: {\n iconOnly: false,\n },\n};\n\nexport const tableSplitButton: RibbonButton<\n 'ribbonButtonTableSplit' | TableEditSplitMenuItemStringKey\n> = {\n key: 'ribbonButtonTableSplit',\n iconName: '',\n unlocalizedText: 'Split',\n isDisabled: formatState => !formatState.isInTable,\n dropDownMenu: {\n items: {\n menuNameTableSplitHorizontally: 'Split horizontally',\n menuNameTableSplitVertically: 'Split vertically',\n },\n },\n onClick: (editor, key) => {\n if (key != 'ribbonButtonTableSplit') {\n editTable(editor, TableEditOperationMap[key]);\n }\n },\n commandBarProperties: {\n iconOnly: false,\n },\n};\n\nexport const tableAlignCellButton: RibbonButton<\n 'ribbonButtonTableAlignCell' | TableEditAlignMenuItemStringKey\n> = {\n key: 'ribbonButtonTableAlignCell',\n iconName: '',\n unlocalizedText: 'Align table cell',\n isDisabled: formatState => !formatState.isInTable,\n dropDownMenu: {\n items: {\n menuNameTableAlignLeft: 'Align left',\n menuNameTableAlignCenter: 'Align center',\n menuNameTableAlignRight: 'Align right',\n '-': '-',\n menuNameTableAlignTop: 'Align top',\n menuNameTableAlignMiddle: 'Align middle',\n menuNameTableAlignBottom: 'Align bottom',\n },\n },\n onClick: (editor, key) => {\n if (key != 'ribbonButtonTableAlignCell') {\n editTable(editor, TableEditOperationMap[key]);\n }\n },\n commandBarProperties: {\n iconOnly: false,\n },\n};\n\nexport const tableAlignTableButton: RibbonButton<\n 'ribbonButtonTableAlignTable' | TableEditAlignTableMenuItemStringKey\n> = {\n key: 'ribbonButtonTableAlignTable',\n iconName: '',\n unlocalizedText: 'Align table',\n isDisabled: formatState => !formatState.isInTable,\n dropDownMenu: {\n items: {\n menuNameTableAlignTableLeft: 'Align left',\n menuNameTableAlignTableCenter: 'Align center',\n menuNameTableAlignTableRight: 'Align right',\n },\n },\n onClick: (editor, key) => {\n if (key != 'ribbonButtonTableAlignTable') {\n editTable(editor, TableEditOperationMap[key]);\n }\n },\n commandBarProperties: {\n iconOnly: false,\n },\n};\n","import { MainPane } from '../mainPane/MainPane';\nimport type { RibbonButton } from '../roosterjsReact/ribbon';\n\nconst DropDownItems = {\n 'zoom50%': '50%',\n 'zoom75%': '75%',\n 'zoom100%': '100%',\n 'zoom150%': '150%',\n 'zoom200%': '200%',\n};\n\nconst DropDownValues: { [key in keyof typeof DropDownItems]: number } = {\n 'zoom50%': 0.5,\n 'zoom75%': 0.75,\n 'zoom100%': 1,\n 'zoom150%': 1.5,\n 'zoom200%': 2,\n};\n\n/**\n * Key of localized strings of Zoom button\n */\nexport type ZoomButtonStringKey = 'buttonNameZoom';\n\n/**\n * \"Zoom\" button on the format ribbon\n */\nexport const zoomButton: RibbonButton = {\n key: 'buttonNameZoom',\n unlocalizedText: 'Zoom',\n iconName: 'ZoomIn',\n dropDownMenu: {\n items: DropDownItems,\n },\n onClick: (editor, key) => {\n const zoomScale = DropDownValues[key as keyof typeof DropDownItems];\n editor.focus();\n\n // Let main pane know this state change so that it can be persisted when pop out/pop in\n MainPane.getInstance().setScale(zoomScale);\n\n editor.triggerEvent('zoomChanged', { newZoomScale: zoomScale });\n },\n commandBarProperties: {\n buttonStyles: {\n icon: { paddingBottom: '10px' },\n menuIcon: { paddingBottom: '10px' },\n },\n },\n};\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport SampleEntityPlugin from '../plugins/SampleEntityPlugin';\nimport { ApiPlaygroundPlugin } from '../sidePane/apiPlayground/ApiPlaygroundPlugin';\nimport { Border, ContentModelDocument, EditorOptions } from 'roosterjs-content-model-types';\nimport { Colors, EditorPlugin, IEditor, Snapshots } from 'roosterjs-content-model-types';\nimport { ContentModelPanePlugin } from '../sidePane/contentModel/ContentModelPanePlugin';\nimport { createEmojiPlugin } from '../roosterjsReact/emoji';\nimport { createImageEditMenuProvider } from '../roosterjsReact/contextMenu/menus/createImageEditMenuProvider';\nimport { createLegacyPlugins } from '../plugins/createLegacyPlugins';\nimport { createListEditMenuProvider } from '../roosterjsReact/contextMenu/menus/createListEditMenuProvider';\nimport { createPasteOptionPlugin } from '../roosterjsReact/pasteOptions';\nimport { createRibbonPlugin, Ribbon, RibbonButton, RibbonPlugin } from '../roosterjsReact/ribbon';\nimport { darkModeButton } from '../demoButtons/darkModeButton';\nimport { Editor } from 'roosterjs-content-model-core';\nimport { EditorAdapter } from 'roosterjs-editor-adapter';\nimport { EditorOptionsPlugin } from '../sidePane/editorOptions/EditorOptionsPlugin';\nimport { EventViewPlugin } from '../sidePane/eventViewer/EventViewPlugin';\nimport { exportContentButton } from '../demoButtons/exportContentButton';\nimport { FormatPainterPlugin } from '../plugins/FormatPainterPlugin';\nimport { FormatStatePlugin } from '../sidePane/formatState/FormatStatePlugin';\nimport { getButtons } from '../tabs/ribbonButtons';\nimport { getDarkColor } from 'roosterjs-color-utils';\nimport { getPresetModelById } from '../sidePane/presets/allPresets/allPresets';\nimport { getTabs, tabNames } from '../tabs/getTabs';\nimport { getTheme } from '../theme/themes';\nimport { OptionState, UrlPlaceholder } from '../sidePane/editorOptions/OptionState';\nimport { popoutButton } from '../demoButtons/popoutButton';\nimport { PresetPlugin } from '../sidePane/presets/PresetPlugin';\nimport { redoButton } from '../roosterjsReact/ribbon/buttons/redoButton';\nimport { registerWindowForCss, unregisterWindowForCss } from '../../utils/cssMonitor';\nimport { Rooster } from '../roosterjsReact/rooster';\nimport { SidePane } from '../sidePane/SidePane';\nimport { SidePanePlugin } from '../sidePane/SidePanePlugin';\nimport { SnapshotPlugin } from '../sidePane/snapshot/SnapshotPlugin';\nimport { ThemeProvider } from '@fluentui/react/lib/Theme';\nimport { TitleBar } from '../titleBar/TitleBar';\nimport { trustedHTMLHandler } from '../../utils/trustedHTMLHandler';\nimport { undoButton } from '../roosterjsReact/ribbon/buttons/undoButton';\nimport { UpdateContentPlugin } from '../plugins/UpdateContentPlugin';\nimport { WindowProvider } from '@fluentui/react/lib/WindowProvider';\nimport { zoomButton } from '../demoButtons/zoomButton';\nimport {\n createContextMenuPlugin,\n createTableEditMenuProvider,\n} from '../roosterjsReact/contextMenu';\nimport {\n AutoFormatPlugin,\n EditPlugin,\n HyperlinkPlugin,\n MarkdownPlugin,\n PastePlugin,\n ShortcutPlugin,\n TableEditPlugin,\n WatermarkPlugin,\n} from 'roosterjs-content-model-plugins';\n\nconst styles = require('./MainPane.scss');\n\nexport interface MainPaneState {\n showSidePane: boolean;\n popoutWindow: Window;\n initState: OptionState;\n scale: number;\n isDarkMode: boolean;\n isRtl: boolean;\n activeTab: tabNames;\n tableBorderFormat?: Border;\n editorCreator: (div: HTMLDivElement, options: EditorOptions) => IEditor;\n}\n\nconst PopoutRoot = 'mainPane';\nconst POPOUT_HTML = `RoosterJs Demo Site
`;\nconst POPOUT_FEATURES = 'menubar=no,statusbar=no,width=1200,height=800';\nconst POPOUT_URL = 'about:blank';\nconst POPOUT_TARGET = '_blank';\n\nexport class MainPane extends React.Component<{}, MainPaneState> {\n private mouseX: number;\n private static instance: MainPane;\n private popoutRoot: HTMLElement;\n private formatStatePlugin: FormatStatePlugin;\n private editorOptionPlugin: EditorOptionsPlugin;\n private eventViewPlugin: EventViewPlugin;\n private apiPlaygroundPlugin: ApiPlaygroundPlugin;\n private contentModelPanePlugin: ContentModelPanePlugin;\n private presetPlugin: PresetPlugin;\n private ribbonPlugin: RibbonPlugin;\n private snapshotPlugin: SnapshotPlugin;\n private formatPainterPlugin: FormatPainterPlugin;\n private snapshots: Snapshots;\n\n protected sidePane = React.createRef();\n protected updateContentPlugin: UpdateContentPlugin;\n protected model: ContentModelDocument | null = null;\n private knownColors: Record = {};\n protected themeMatch = window.matchMedia?.('(prefers-color-scheme: dark)');\n\n static getInstance() {\n return this.instance;\n }\n\n static readonly editorDivId = 'RoosterJsContentDiv';\n\n constructor(props: {}) {\n super(props);\n\n MainPane.instance = this;\n this.updateContentPlugin = new UpdateContentPlugin(this.onUpdate);\n\n this.snapshots = {\n snapshots: [],\n totalSize: 0,\n currentIndex: -1,\n autoCompleteIndex: -1,\n maxSize: 1e7,\n };\n\n this.formatStatePlugin = new FormatStatePlugin();\n this.editorOptionPlugin = new EditorOptionsPlugin();\n this.eventViewPlugin = new EventViewPlugin();\n this.apiPlaygroundPlugin = new ApiPlaygroundPlugin();\n this.snapshotPlugin = new SnapshotPlugin(this.snapshots);\n this.contentModelPanePlugin = new ContentModelPanePlugin();\n this.presetPlugin = new PresetPlugin();\n this.ribbonPlugin = createRibbonPlugin();\n this.formatPainterPlugin = new FormatPainterPlugin();\n\n this.state = {\n showSidePane: window.location.hash != '',\n popoutWindow: null,\n initState: this.editorOptionPlugin.getBuildInPluginState(),\n scale: 1,\n isDarkMode: this.themeMatch?.matches || false,\n editorCreator: null,\n isRtl: false,\n tableBorderFormat: {\n width: '1px',\n style: 'solid',\n color: '#ABABAB',\n },\n activeTab: 'all',\n };\n }\n\n render() {\n const theme = getTheme(this.state.isDarkMode);\n return (\n \n {this.renderTitleBar()}\n {!this.state.popoutWindow && this.renderTabs()}\n {!this.state.popoutWindow && this.renderRibbon()}\n
\n {this.state.popoutWindow ? this.renderPopout() : this.renderMainPane()}\n
\n
\n );\n }\n\n componentDidMount() {\n this.themeMatch?.addEventListener('change', this.onThemeChange);\n this.resetEditor();\n }\n\n componentWillUnmount() {\n this.themeMatch?.removeEventListener('change', this.onThemeChange);\n }\n\n popout() {\n this.updateContentPlugin.update();\n\n const win = window.open(POPOUT_URL, POPOUT_TARGET, POPOUT_FEATURES);\n win.document.write(trustedHTMLHandler(POPOUT_HTML));\n win.addEventListener('beforeunload', () => {\n this.updateContentPlugin.update();\n\n unregisterWindowForCss(win);\n this.setState({ popoutWindow: null });\n });\n\n registerWindowForCss(win);\n\n this.popoutRoot = win.document.getElementById(PopoutRoot);\n this.setState({\n popoutWindow: win,\n });\n }\n\n resetEditorPlugin(pluginState: OptionState) {\n this.updateContentPlugin.update();\n this.setState({\n initState: pluginState,\n });\n this.resetEditor();\n }\n\n setScale(scale: number): void {\n this.setState({\n scale: scale,\n });\n }\n\n getTableBorder(): Border {\n return this.state.tableBorderFormat;\n }\n\n setTableBorderColor(color: string): void {\n this.setState({\n tableBorderFormat: { ...this.getTableBorder(), color },\n });\n }\n\n setTableBorderWidth(width: string): void {\n this.setState({\n tableBorderFormat: { ...this.getTableBorder(), width },\n });\n }\n\n setTableBorderStyle(style: string): void {\n this.setState({\n tableBorderFormat: { ...this.getTableBorder(), style },\n });\n }\n\n toggleDarkMode(): void {\n this.setState({\n isDarkMode: !this.state.isDarkMode,\n });\n }\n\n changeRibbon(id: tabNames): void {\n this.setState({\n activeTab: id,\n });\n }\n\n setPreset(preset: ContentModelDocument) {\n this.model = preset;\n }\n\n setPageDirection(isRtl: boolean): void {\n this.setState({ isRtl: isRtl });\n [window, this.state.popoutWindow].forEach(win => {\n if (win) {\n win.document.body.dir = isRtl ? 'rtl' : 'ltr';\n }\n });\n }\n\n private renderTitleBar() {\n return ;\n }\n\n private renderTabs() {\n const tabs = getTabs();\n const topRightButtons: RibbonButton[] = [\n undoButton,\n redoButton,\n zoomButton,\n darkModeButton,\n exportContentButton,\n ];\n this.state.popoutWindow ? null : topRightButtons.push(popoutButton);\n\n return (\n \n \n \n \n );\n }\n private renderRibbon() {\n return (\n \n );\n }\n\n private renderSidePane(fullWidth: boolean) {\n return (\n \n );\n }\n\n private resetEditor() {\n this.setState({\n editorCreator: (div: HTMLDivElement, options: EditorOptions) => {\n const legacyPluginList = createLegacyPlugins(this.state.initState);\n\n return legacyPluginList.length > 0\n ? new EditorAdapter(div, {\n ...options,\n legacyPlugins: legacyPluginList,\n })\n : new Editor(div, options);\n },\n });\n }\n\n private renderEditor() {\n // Set preset if found\n const search = new URLSearchParams(document.location.search);\n const hasPreset = search.get('preset');\n if (hasPreset) {\n this.setPreset(getPresetModelById(hasPreset));\n }\n\n const editorStyles = {\n transform: `scale(${this.state.scale})`,\n transformOrigin: this.state.isRtl ? 'right top' : 'left top',\n height: `calc(${100 / this.state.scale}%)`,\n width: `calc(${100 / this.state.scale}%)`,\n };\n const plugins: EditorPlugin[] = [\n this.ribbonPlugin,\n this.formatPainterPlugin,\n ...this.getToggleablePlugins(),\n this.contentModelPanePlugin.getInnerRibbonPlugin(),\n this.updateContentPlugin,\n ];\n\n if (this.state.showSidePane || this.state.popoutWindow) {\n plugins.push(...this.getSidePanePlugins());\n }\n\n this.updateContentPlugin.update();\n\n return (\n
\n
\n {this.state.editorCreator && (\n \n )}\n
\n
\n );\n }\n\n private renderMainPane() {\n return (\n <>\n {this.renderEditor()}\n {this.state.showSidePane ? (\n <>\n
\n {this.renderSidePane(false /*fullWidth*/)}\n {this.renderSidePaneButton()}\n \n ) : (\n this.renderSidePaneButton()\n )}\n \n );\n }\n\n private renderSidePaneButton() {\n return (\n \n
{this.state.showSidePane ? 'Hide side pane' : 'Show side pane'}
\n \n );\n }\n\n private renderPopout() {\n return (\n <>\n {this.renderSidePane(true /*fullWidth*/)}\n {ReactDOM.createPortal(\n \n \n
\n {this.renderTabs()}\n {this.renderRibbon()}\n
{this.renderEditor()}
\n
\n
\n
,\n this.popoutRoot\n )}\n \n );\n }\n\n private onMouseDown = (e: React.MouseEvent) => {\n document.addEventListener('mousemove', this.onMouseMove, true);\n document.addEventListener('mouseup', this.onMouseUp, true);\n document.body.style.userSelect = 'none';\n this.mouseX = e.pageX;\n };\n\n private onMouseMove = (e: MouseEvent) => {\n this.sidePane.current.changeWidth(this.mouseX - e.pageX);\n this.mouseX = e.pageX;\n };\n\n private onMouseUp = (e: MouseEvent) => {\n document.removeEventListener('mousemove', this.onMouseMove, true);\n document.removeEventListener('mouseup', this.onMouseUp, true);\n document.body.style.userSelect = '';\n };\n\n private onUpdate = (model: ContentModelDocument) => {\n this.model = model;\n };\n\n private onShowSidePane = () => {\n this.setState({\n showSidePane: true,\n });\n this.resetEditor();\n };\n\n private onHideSidePane = () => {\n this.setState({\n showSidePane: false,\n });\n this.resetEditor();\n window.location.hash = '';\n };\n\n private onThemeChange = () => {\n this.setState({\n isDarkMode: this.themeMatch?.matches || false,\n });\n };\n\n private getSidePanePlugins(): SidePanePlugin[] {\n return [\n this.formatStatePlugin,\n this.editorOptionPlugin,\n this.eventViewPlugin,\n this.apiPlaygroundPlugin,\n this.snapshotPlugin,\n this.contentModelPanePlugin,\n this.presetPlugin,\n ];\n }\n\n private getToggleablePlugins(): EditorPlugin[] {\n const {\n pluginList,\n allowExcelNoBorderTable,\n listMenu,\n tableMenu,\n imageMenu,\n watermarkText,\n markdownOptions,\n autoFormatOptions,\n linkTitle,\n } = this.state.initState;\n return [\n pluginList.autoFormat && new AutoFormatPlugin(autoFormatOptions),\n pluginList.edit && new EditPlugin(),\n pluginList.paste && new PastePlugin(allowExcelNoBorderTable),\n pluginList.shortcut && new ShortcutPlugin(),\n pluginList.tableEdit && new TableEditPlugin(),\n pluginList.watermark && new WatermarkPlugin(watermarkText),\n pluginList.markdown && new MarkdownPlugin(markdownOptions),\n pluginList.emoji && createEmojiPlugin(),\n pluginList.pasteOption && createPasteOptionPlugin(),\n pluginList.sampleEntity && new SampleEntityPlugin(),\n pluginList.contextMenu && createContextMenuPlugin(),\n pluginList.contextMenu && listMenu && createListEditMenuProvider(),\n pluginList.contextMenu && tableMenu && createTableEditMenuProvider(),\n pluginList.contextMenu && imageMenu && createImageEditMenuProvider(),\n pluginList.hyperlink &&\n new HyperlinkPlugin(\n linkTitle?.indexOf(UrlPlaceholder) >= 0\n ? url => linkTitle.replace(UrlPlaceholder, url)\n : linkTitle\n ),\n ].filter(x => !!x);\n }\n}\n\nexport function mount(parent: HTMLElement) {\n ReactDOM.render(, parent);\n}\n","import { applySegmentFormat, getFormatState } from 'roosterjs-content-model-api';\nimport {\n ContentModelSegmentFormat,\n EditorPlugin,\n IEditor,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\nconst FORMATPAINTERCURSOR_SVG = require('./formatpaintercursor.svg');\nconst FORMATPAINTERCURSOR_STYLE = `cursor: url(\"${FORMATPAINTERCURSOR_SVG}\") 8.5 16, auto`;\nconst FORMAT_PAINTER_STYLE_KEY = '_FormatPainter';\n\n/**\n * Format painter handler works together with a format painter button tot let implement format painter functioinality\n */\nexport interface FormatPainterHandler {\n /**\n * Let editor enter format painter state\n */\n startFormatPainter(): void;\n}\n\n/**\n * Format painter plugin helps implement format painter functionality.\n * To use this plugin, you need a button to let editor enter format painter state by calling formatPainterPlugin.startFormatPainter(),\n * then this plugin will handle the rest work.\n */\nexport class FormatPainterPlugin implements EditorPlugin, FormatPainterHandler {\n private editor: IEditor | null = null;\n private painterFormat: ContentModelSegmentFormat | null = null;\n\n getName() {\n return 'FormatPainter';\n }\n\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n dispose() {\n this.editor = null;\n }\n\n onPluginEvent(event: PluginEvent) {\n if (this.editor && event.eventType == 'mouseUp') {\n if (this.painterFormat) {\n applySegmentFormat(this.editor, this.painterFormat);\n\n this.setFormatPainterCursor(null);\n }\n }\n }\n\n private setFormatPainterCursor(format: ContentModelSegmentFormat | null) {\n this.painterFormat = format;\n\n this.editor?.setEditorStyle(\n FORMAT_PAINTER_STYLE_KEY,\n this.painterFormat ? FORMATPAINTERCURSOR_STYLE : null\n );\n }\n\n startFormatPainter() {\n if (this.editor) {\n const format = getSegmentFormat(this.editor);\n\n this.setFormatPainterCursor(format);\n }\n }\n}\n\nfunction getSegmentFormat(editor: IEditor): ContentModelSegmentFormat {\n const formatState = getFormatState(editor);\n\n return {\n backgroundColor: formatState.backgroundColor,\n fontFamily: formatState.fontName,\n fontSize: formatState.fontSize,\n fontWeight: formatState.isBold ? 'bold' : 'normal',\n italic: formatState.isItalic,\n letterSpacing: formatState.letterSpacing,\n strikethrough: formatState.isStrikeThrough,\n superOrSubScriptSequence: formatState.isSubscript\n ? 'sub'\n : formatState.isSuperscript\n ? 'super'\n : '',\n textColor: formatState.textColor,\n underline: formatState.isUnderline,\n };\n}\n","import { EntityState } from 'roosterjs-editor-types';\nimport { insertEntity } from 'roosterjs-content-model-api';\nimport type { EditorPlugin, Entity, IEditor, PluginEvent } from 'roosterjs-content-model-types';\n\nconst EntityType = 'SampleEntity';\n\ninterface EntityMetadata {\n count: number;\n}\n\nexport default class SampleEntityPlugin implements EditorPlugin {\n private editor: IEditor;\n private hydratedEntities: Record = {};\n\n getName() {\n return 'SampleEntity';\n }\n\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n dispose() {\n this.editor = null;\n }\n\n onPluginEvent(event: PluginEvent) {\n if (event.eventType == 'keyDown' && event.rawEvent.key == 'm' && event.rawEvent.ctrlKey) {\n insertEntity(this.editor, EntityType, true /*isBlock*/, 'focus', {\n contentNode: this.createEntityNode(),\n initialEntityState: '{}',\n });\n\n event.rawEvent.preventDefault();\n } else if (event.eventType == 'entityOperation' && event.entity.type == EntityType) {\n const entity = event.entity;\n const hydratedEntity = this.hydratedEntities[entity.id];\n\n switch (event.operation) {\n case 'newEntity':\n hydratedEntity?.dehydrate();\n this.hydratedEntities[entity.id] = new HydratedEntity(entity, this.onClick);\n\n break;\n\n case 'removeFromEnd':\n case 'removeFromStart':\n case 'overwrite':\n case 'replaceTemporaryContent':\n hydratedEntity?.dehydrate();\n\n break;\n\n case 'updateEntityState':\n if (event.state) {\n setMetadata(event.entity.wrapper, JSON.parse(event.state));\n hydratedEntity?.update();\n }\n\n break;\n }\n }\n }\n\n private onClick = (state: EntityState) => {\n this.editor.takeSnapshot(state);\n };\n\n private createEntityNode() {\n const div = document.createElement('div');\n\n return div;\n }\n}\n\nclass HydratedEntity {\n constructor(private entity: Entity, private onClick: (entityState: EntityState) => void) {\n const containerDiv = entity.wrapper.querySelector('div');\n const span = document.createElement('span');\n const button = document.createElement('button');\n\n containerDiv.appendChild(span);\n containerDiv.appendChild(button);\n\n button.textContent = 'Test entity';\n button.addEventListener('click', this.onClickEntity);\n\n this.update();\n }\n\n update(increase: number = 0) {\n const metadata = getMetadata(this.entity.wrapper);\n const count = (metadata?.count || 0) + increase;\n\n setMetadata(this.entity.wrapper, {\n count,\n });\n\n this.entity.wrapper.querySelector('span').textContent = 'Count: ' + count;\n }\n\n dehydrate() {\n const containerDiv = this.entity.wrapper.querySelector('div');\n const button = containerDiv.querySelector('button');\n\n if (button) {\n button.removeEventListener('click', this.onClickEntity);\n containerDiv.removeChild(button);\n }\n }\n\n private onClickEntity = (e: MouseEvent) => {\n this.update(1);\n this.onClick({\n id: this.entity.id,\n type: this.entity.type,\n state: this.entity.wrapper.dataset.editingInfo,\n });\n };\n}\n\nconst MetadataDataSetName = 'editingInfo';\n\nfunction getMetadata(element: HTMLElement): T | null {\n const str = element.dataset[MetadataDataSetName];\n let obj: any;\n\n try {\n obj = str ? JSON.parse(str) : null;\n } catch {}\n\n if (typeof obj !== 'undefined') {\n return obj as T;\n } else {\n return null;\n }\n}\n\nfunction setMetadata(element: HTMLElement, metadata: T) {\n element.dataset[MetadataDataSetName] = JSON.stringify(metadata);\n}\n","import type {\n ContentModelDocument,\n EditorPlugin,\n IEditor,\n PluginEvent,\n} from 'roosterjs-content-model-types';\n\n/**\n * A plugin to help get HTML content from editor\n */\nexport class UpdateContentPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n\n /**\n * Create a new instance of UpdateContentPlugin class\n * @param onUpdate A callback to be invoked when update happens\n */\n constructor(private onUpdate: (model: ContentModelDocument) => void) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'UpdateContent';\n }\n\n /**\n * Initialize this plugin\n * @param editor The editor instance\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n switch (event.eventType) {\n case 'beforeDispose':\n this.update();\n break;\n }\n }\n\n update() {\n if (this.editor) {\n const model = this.editor.getContentModelCopy('disconnected');\n this.onUpdate(model);\n }\n }\n}\n","import { Announce, CustomReplace, ImageEdit } from 'roosterjs-editor-plugins';\nimport { EditorPlugin as LegacyEditorPlugin, KnownAnnounceStrings } from 'roosterjs-editor-types';\nimport { LegacyPluginList, OptionState } from '../sidePane/editorOptions/OptionState';\n\nexport function createLegacyPlugins(initState: OptionState): LegacyEditorPlugin[] {\n const { pluginList } = initState;\n\n const plugins: Record = {\n imageEdit: pluginList.imageEdit\n ? new ImageEdit({\n preserveRatio: initState.forcePreserveRatio,\n applyChangesOnMouseUp: initState.applyChangesOnMouseUp,\n })\n : null,\n customReplace: pluginList.customReplace ? new CustomReplace() : null,\n announce: pluginList.announce ? new Announce(getDefaultStringsMap()) : null,\n };\n\n return Object.values(plugins).filter(x => !!x);\n}\n\nfunction getDefaultStringsMap(): Map {\n return new Map([\n [KnownAnnounceStrings.AnnounceListItemBullet, 'Autocorrected Bullet'],\n [KnownAnnounceStrings.AnnounceListItemNumbering, 'Autocorrected {0}'],\n [\n KnownAnnounceStrings.AnnounceOnFocusLastCell,\n 'Warning, pressing tab here adds an extra row.',\n ],\n ]);\n}\n","import * as React from 'react';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport type { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\nimport type { Colors } from 'roosterjs-content-model-types';\n\nconst classNames = mergeStyleSets({\n colorSquare: {\n width: '20px',\n height: '20px',\n margin: '4px',\n borderStyle: 'solid',\n borderWidth: '2px',\n '&:hover': {\n borderColor: 'red',\n },\n },\n colorSquareBorder: {\n borderColor: 'transparent',\n },\n colorSquareBorderWhite: {\n borderColor: '#bebebe',\n },\n});\n\n/**\n * @internal\n */\nexport function renderColorPicker(\n item: IContextualMenuItem,\n colorDef: Record,\n onClick: (\n e: React.MouseEvent | React.KeyboardEvent,\n item: IContextualMenuItem\n ) => void\n) {\n const key = item.key as Strings;\n const buttonColor = colorDef[key].lightModeColor;\n\n return (\n
\n \n );\n}\n","import type { Colors } from 'roosterjs-content-model-types';\nimport type { BackgroundColorKeys } from '../types/stringKeys';\n\n/**\n * @internal\n */\nconst BackgroundColors: Record = {\n backgroundColorCyan: { lightModeColor: '#00ffff', darkModeColor: '#005357' },\n backgroundColorGreen: { lightModeColor: '#00ff00', darkModeColor: '#005e00' },\n backgroundColorYellow: { lightModeColor: '#ffff00', darkModeColor: '#383e00' },\n backgroundColorOrange: { lightModeColor: '#ff8000', darkModeColor: '#bf4c00' },\n backgroundColorRed: { lightModeColor: '#ff0000', darkModeColor: '#ff2711' },\n backgroundColorMagenta: { lightModeColor: '#ff00ff', darkModeColor: '#e700e8' },\n backgroundColorLightCyan: { lightModeColor: '#80ffff', darkModeColor: '#004c4f' },\n backgroundColorLightGreen: { lightModeColor: '#80ff80', darkModeColor: '#005400' },\n backgroundColorLightYellow: { lightModeColor: '#ffff80', darkModeColor: '#343c00' },\n backgroundColorLightOrange: { lightModeColor: '#ffc080', darkModeColor: '#77480b' },\n backgroundColorLightRed: { lightModeColor: '#ff8080', darkModeColor: '#bc454a' },\n backgroundColorLightMagenta: { lightModeColor: '#ff80ff', darkModeColor: '#aa2bad' },\n backgroundColorWhite: { lightModeColor: '#ffffff', darkModeColor: '#333333' },\n backgroundColorLightGray: { lightModeColor: '#cccccc', darkModeColor: '#535353' },\n backgroundColorGray: { lightModeColor: '#999999', darkModeColor: '#777777' },\n backgroundColorDarkGray: { lightModeColor: '#666666', darkModeColor: '#a0a0a0' },\n backgroundColorDarkerGray: { lightModeColor: '#333333', darkModeColor: '#cfcfcf' },\n backgroundColorBlack: { lightModeColor: '#000000', darkModeColor: '#ffffff' },\n};\n\n/**\n * @internal\n * List of colors in drop down list\n */\nconst BackgroundColorDropDownItems: Record = {\n backgroundColorCyan: 'Cyan',\n backgroundColorGreen: 'Green',\n backgroundColorYellow: 'Yellow',\n backgroundColorOrange: 'Orange',\n backgroundColorRed: 'Red',\n backgroundColorMagenta: 'Magenta',\n backgroundColorLightCyan: 'Light cyan',\n backgroundColorLightGreen: 'Light green',\n backgroundColorLightYellow: 'Light yellow',\n backgroundColorLightOrange: 'Light orange',\n backgroundColorLightRed: 'Light red',\n backgroundColorLightMagenta: 'Light magenta',\n backgroundColorWhite: 'White',\n backgroundColorLightGray: 'Light gray',\n backgroundColorGray: 'Gray',\n backgroundColorDarkGray: 'Dark gray',\n backgroundColorDarkerGray: 'Darker gray',\n backgroundColorBlack: 'Black',\n};\n\n/**\n * Get mode independent color value of background color from the given color key\n * @param key The key to get color from\n * @returns A model independent color value of the given key\n */\nfunction getBackgroundColorValue(key: BackgroundColorKeys): Colors {\n return BackgroundColors[key];\n}\n\nexport { BackgroundColors, BackgroundColorDropDownItems, getBackgroundColorValue };\n","import { mergeStyleSets } from '@fluentui/react/lib/Styling';\n\nconst classNames = mergeStyleSets({\n colorPickerContainer: {\n width: '192px',\n padding: '8px',\n overflow: 'hidden',\n '& ul': {\n width: '192px',\n overflow: 'hidden',\n },\n },\n colorMenuItem: {\n display: 'inline-block',\n width: '32px',\n height: '32px',\n '& button': {\n padding: '0px',\n minWidth: '0px',\n background: 'transparent',\n border: 'none',\n },\n },\n});\n\n/**\n * @internal\n */\nexport function getColorPickerContainerClassName() {\n return classNames.colorPickerContainer;\n}\n\n/**\n * @internal\n */\nexport function getColorPickerItemClassName() {\n return classNames.colorMenuItem;\n}\n","import type { Colors } from 'roosterjs-content-model-types';\nimport type { TextColorKeys } from '../types/stringKeys';\n\n/**\n * @internal\n */\nconst TextColors: Record = {\n textColorLightBlue: { lightModeColor: '#51a7f9', darkModeColor: '#0075c2' },\n textColorLightGreen: { lightModeColor: '#6fc040', darkModeColor: '#207a00' },\n textColorLightYellow: { lightModeColor: '#f5d427', darkModeColor: '#5d4d00' },\n textColorLightOrange: { lightModeColor: '#f3901d', darkModeColor: '#ab5500' },\n textColorLightRed: { lightModeColor: '#ed5c57', darkModeColor: '#df504d' },\n textColorLightPurple: { lightModeColor: '#b36ae2', darkModeColor: '#ab63da' },\n textColorBlue: { lightModeColor: '#0c64c0', darkModeColor: '#6da0ff' },\n textColorGreen: { lightModeColor: '#0c882a', darkModeColor: '#3da848' },\n textColorYellow: { lightModeColor: '#dcbe22', darkModeColor: '#6d5c00' },\n textColorOrange: { lightModeColor: '#de6a19', darkModeColor: '#d3610c' },\n textColorRed: { lightModeColor: '#c82613', darkModeColor: '#ff6847' },\n textColorPurple: { lightModeColor: '#763e9b', darkModeColor: '#d394f9' },\n textColorDarkBlue: { lightModeColor: '#174e86', darkModeColor: '#93b8f9' },\n textColorDarkGreen: { lightModeColor: '#0f5c1a', darkModeColor: '#7fc57b' },\n textColorDarkYellow: { lightModeColor: '#c3971d', darkModeColor: '#946f00' },\n textColorDarkOrange: { lightModeColor: '#be5b17', darkModeColor: '#de7633' },\n textColorDarkRed: { lightModeColor: '#861106', darkModeColor: '#ff9b7c' },\n textColorDarkPurple: { lightModeColor: '#5e327c', darkModeColor: '#dea9fd' },\n textColorDarkerBlue: { lightModeColor: '#002451', darkModeColor: '#cedbff' },\n textColorDarkerGreen: { lightModeColor: '#06400c', darkModeColor: '#a3da9b' },\n textColorDarkerYellow: { lightModeColor: '#a37519', darkModeColor: '#b5852a' },\n textColorDarkerOrange: { lightModeColor: '#934511', darkModeColor: '#ef935c' },\n textColorDarkerRed: { lightModeColor: '#570606', darkModeColor: '#ffc0b1' },\n textColorDarkerPurple: { lightModeColor: '#3b204d', darkModeColor: '#eecaff' },\n textColorWhite: { lightModeColor: '#ffffff', darkModeColor: '#333333' },\n textColorLightGray: { lightModeColor: '#cccccc', darkModeColor: '#535353' },\n textColorGray: { lightModeColor: '#999999', darkModeColor: '#777777' },\n textColorDarkGray: { lightModeColor: '#666666', darkModeColor: '#a0a0a0' },\n textColorDarkerGray: { lightModeColor: '#333333', darkModeColor: '#cfcfcf' },\n textColorBlack: { lightModeColor: '#000000', darkModeColor: '#ffffff' },\n};\n\n/**\n * @internal\n */\nconst TextColorDropDownItems: Record = {\n textColorLightBlue: 'Light blue',\n textColorLightGreen: 'Light green',\n textColorLightYellow: 'Light yellow',\n textColorLightOrange: 'Light orange',\n textColorLightRed: 'Light red',\n textColorLightPurple: 'Light purple',\n textColorBlue: 'Blue',\n textColorGreen: 'Green',\n textColorYellow: 'Yellow',\n textColorOrange: 'Orange',\n textColorRed: 'Red',\n textColorPurple: 'Purple',\n textColorDarkBlue: 'Dark blue',\n textColorDarkGreen: 'Dark green',\n textColorDarkYellow: 'Dark yellow',\n textColorDarkOrange: 'Dark orange',\n textColorDarkRed: 'Dark red',\n textColorDarkPurple: 'Dark purple',\n textColorDarkerBlue: 'Darker blue',\n textColorDarkerGreen: 'Darker green',\n textColorDarkerYellow: 'Darker yellow',\n textColorDarkerOrange: 'Darker orange',\n textColorDarkerRed: 'Darker red',\n textColorDarkerPurple: 'Darker purple',\n textColorWhite: 'White',\n textColorLightGray: 'Light gray',\n textColorGray: 'Gray',\n textColorDarkGray: 'Dark gray',\n textColorDarkerGray: 'Darker gray',\n textColorBlack: 'Black',\n};\n\n/**\n * Get mode independent color value of text color from the given color key\n * @param key The key to get color from\n * @returns A model independent color value of the given key\n */\nfunction getTextColorValue(key: TextColorKeys): Colors {\n return TextColors[key];\n}\n\nexport { TextColors, TextColorDropDownItems, getTextColorValue };\n","export {\n LocalizedStrings,\n OkButtonStringKey,\n CancelButtonStringKey,\n MenuItemSplitterKey0,\n} from './type/LocalizedStrings';\nexport { UIUtilities } from './type/UIUtilities';\nexport { ReactEditorPlugin } from './type/ReactEditorPlugin';\nexport { createUIUtilities } from './utils/createUIUtilities';\nexport { getLocalizedString } from './utils/getLocalizedString';\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { ThemeProvider } from '@fluentui/react/lib/Theme';\nimport { WindowProvider } from '@fluentui/react/lib/WindowProvider';\nimport type { UIUtilities } from '../type/UIUtilities';\nimport type { PartialTheme } from '@fluentui/react/lib/Theme';\n\n/**\n * Create the UI Utilities object for plugins to render additional react components\n * @param container Container DIV of editor\n * @param theme Current theme used by editor\n * @returns A UIUtilities object\n */\nexport function createUIUtilities(container: HTMLDivElement, theme: PartialTheme): UIUtilities {\n return {\n renderComponent: element => {\n const doc = container.ownerDocument;\n const div = doc.createElement('div');\n doc.body.appendChild(div);\n\n ReactDOM.render(\n \n {element}\n ,\n div\n );\n\n return () => {\n ReactDOM.unmountComponentAtNode(div);\n doc.body.removeChild(div);\n };\n },\n isRightToLeft: () => {\n const dir =\n container &&\n container.ownerDocument.defaultView?.getComputedStyle(container).direction;\n\n return dir == 'rtl';\n },\n };\n}\n","import type { LocalizedStrings } from '../type/LocalizedStrings';\n\n/**\n * Get a localized string\n * @param strings The LocalizedStrings map\n * @param key Key of the string\n * @param defaultString Default unlocalized string, will be used if strings is not specified or the give key doesn't exist in strings\n * @returns A localized string from the string map, or defaultString\n */\nexport function getLocalizedString(\n strings: LocalizedStrings | undefined,\n key: T,\n defaultString: R\n) {\n const str = strings?.[key];\n\n if (typeof str == 'function') {\n return str();\n } else if (typeof str == 'string') {\n return str;\n } else {\n return defaultString;\n }\n}\n","import type { UIUtilities } from '../type/UIUtilities';\n\n/**\n * @internal\n */\nexport function renderReactComponent(uiUtilities: UIUtilities | null, reactElement: JSX.Element) {\n if (uiUtilities) {\n return uiUtilities.renderComponent(reactElement);\n } else {\n throw new Error(\n 'UIUtilities is required but not provided. Please call ReactEditorPlugin.setUIUtilities() to set a valid uiUtilities object'\n );\n }\n}\n","export { createContextMenuPlugin } from './plugin/createContextMenuPlugin';\nexport { createContextMenuProvider } from './utils/createContextMenuProvider';\nexport { createListEditMenuProvider } from './menus/createListEditMenuProvider';\nexport { createImageEditMenuProvider } from './menus/createImageEditMenuProvider';\nexport { createTableEditMenuProvider } from './menus/createTableEditMenuProvider';\nexport { ContextMenuItem } from './types/ContextMenuItem';\nexport {\n ListNumberMenuItemStringKey,\n ImageEditMenuItemStringKey,\n TableEditInsertMenuItemStringKey,\n TableEditDeleteMenuItemStringKey,\n TableEditMergeMenuItemStringKey,\n TableEditSplitMenuItemStringKey,\n TableEditAlignMenuItemStringKey,\n TableEditShadeMenuItemStringKey,\n TableEditMenuItemStringKey,\n TableEditAlignTableMenuItemStringKey,\n} from './types/ContextMenuItemStringKeys';\n","import { createContextMenuProvider } from '../utils/createContextMenuProvider';\nimport { EditorPlugin, IEditor, ImageEditor } from 'roosterjs-content-model-types';\nimport { formatImageWithContentModel } from 'roosterjs-content-model-api';\nimport { iterateSelections, updateImageMetadata } from 'roosterjs-content-model-dom';\nimport { setImageAltText } from 'roosterjs-content-model-api';\nimport { showInputDialog } from '../../inputDialog/utils/showInputDialog';\nimport type { ContextMenuItem } from '../types/ContextMenuItem';\nimport type { ImageEditMenuItemStringKey } from '../types/ContextMenuItemStringKeys';\nimport type { LocalizedStrings } from '../../common/type/LocalizedStrings';\n\nconst MIN_WIDTH = 10;\nconst MIN_HEIGHT = 10;\n\nconst ImageAltTextMenuItem: ContextMenuItem = {\n key: 'menuNameImageAltText',\n unlocalizedText: 'Add alternate text',\n onClick: (_, editor, node, strings, uiUtilities) => {\n const image = node as HTMLImageElement;\n const initValue = image.alt;\n\n showInputDialog(\n uiUtilities,\n 'menuNameImageAltText',\n 'Add alternate text',\n {\n altText: {\n labelKey: null,\n unlocalizedLabel: null,\n initValue: initValue,\n },\n },\n strings\n ).then(values => {\n editor.focus();\n editor.setDOMSelection({\n type: 'image',\n image: image,\n });\n\n if (values) {\n setImageAltText(editor, values.altText);\n }\n });\n },\n};\n\nconst sizeMap: { [key in ImageEditMenuItemStringKey]?: number } = {\n menuNameImageSizeBestFit: 0,\n menuNameImageSizeSmall: 0.25,\n menuNameImageSizeMedium: 0.5,\n menuNameImageSizeOriginal: 1,\n};\n\nconst ImageResizeMenuItem: ContextMenuItem = {\n key: 'menuNameImageResize',\n unlocalizedText: 'Size',\n subItems: {\n menuNameImageSizeBestFit: 'Best fit',\n menuNameImageSizeSmall: 'Small',\n menuNameImageSizeMedium: 'Medium',\n menuNameImageSizeOriginal: 'Original',\n },\n onClick: (key, editor, _) => {\n const selection = editor.getDOMSelection();\n if (selection.type !== 'image') {\n return;\n }\n\n const percentage = sizeMap[key];\n\n if (percentage > 0) {\n const { naturalWidth, naturalHeight } = selection.image;\n\n resizeByPercentage(editor, percentage, naturalWidth, naturalHeight);\n } else {\n resetImage(editor);\n }\n },\n};\n\nconst ImageRotateMenuItem: ContextMenuItem = {\n key: 'menuNameImageRotate',\n unlocalizedText: 'Rotate image',\n subItems: {\n menuNameImageRotateLeft: 'Left',\n menuNameImageRotateRight: 'Right',\n },\n shouldShow: (_, node, imageEditor) => {\n return (\n !!imageEditor?.isOperationAllowed('rotate') &&\n imageEditor.canRegenerateImage(node as HTMLImageElement)\n );\n },\n onClick: (key, editor, node, strings, uiUtilities, imageEdit) => {\n switch (key) {\n case 'menuNameImageRotateLeft':\n imageEdit?.rotateImage(-Math.PI / 2);\n break;\n case 'menuNameImageRotateRight':\n imageEdit?.rotateImage(Math.PI / 2);\n break;\n }\n },\n};\n\nconst ImageFlipMenuItem: ContextMenuItem = {\n key: 'menuNameImageFlip',\n unlocalizedText: 'Flip image',\n subItems: {\n menuNameImageRotateFlipHorizontally: 'Flip Horizontally',\n menuNameImageRotateFlipVertically: 'Flip Vertically',\n },\n shouldShow: (_, node, imageEditor) => {\n return (\n !!imageEditor?.isOperationAllowed('rotate') &&\n imageEditor.canRegenerateImage(node as HTMLImageElement)\n );\n },\n onClick: (key, editor, node, strings, uiUtilities, imageEdit) => {\n switch (key) {\n case 'menuNameImageRotateFlipHorizontally':\n imageEdit?.flipImage('horizontal');\n break;\n case 'menuNameImageRotateFlipVertically':\n imageEdit?.flipImage('vertical');\n break;\n }\n },\n};\n\nconst ImageCropMenuItem: ContextMenuItem = {\n key: 'menuNameImageCrop',\n unlocalizedText: 'Crop image',\n shouldShow: (_, node, imageEditor) => {\n return (\n !!imageEditor?.isOperationAllowed('crop') &&\n imageEditor.canRegenerateImage(node as HTMLImageElement)\n );\n },\n onClick: (_, editor, node, strings, uiUtilities, imageEdit) => {\n imageEdit?.cropImage();\n },\n};\n\nconst ImageRemoveMenuItem: ContextMenuItem = {\n key: 'menuNameImageRemove',\n unlocalizedText: 'Remove image',\n onClick: (_, editor, node) => {\n removeImage(editor);\n },\n};\n\nconst ImageCopyMenuItem: ContextMenuItem = {\n key: 'menuNameImageCopy',\n unlocalizedText: 'Copy image',\n onClick: (_, editor) => {\n editor.getDocument()?.execCommand('copy');\n },\n};\n\nconst ImageCutMenuItem: ContextMenuItem = {\n key: 'menuNameImageCut',\n unlocalizedText: 'Cut image',\n onClick: (_, editor) => {\n editor.getDocument()?.execCommand('cut');\n },\n};\n\nfunction shouldShowImageEditItems(editor: IEditor, _: Node) {\n const selection = editor.getDOMSelection();\n return selection.type === 'image' && !!selection.image;\n}\n\n/**\n * Create a new instance of ContextMenuProvider to support image editing functionalities in context menu\n * @returns A new ContextMenuProvider\n */\nexport function createImageEditMenuProvider(\n imageEditor?: ImageEditor,\n strings?: LocalizedStrings\n): EditorPlugin {\n return createContextMenuProvider(\n 'imageEdit',\n [\n ImageAltTextMenuItem,\n ImageResizeMenuItem,\n ImageCropMenuItem,\n ImageRemoveMenuItem,\n ImageRotateMenuItem,\n ImageFlipMenuItem,\n ImageCopyMenuItem,\n ImageCutMenuItem,\n ],\n strings,\n shouldShowImageEditItems,\n imageEditor\n );\n}\n\nfunction removeImage(editor: IEditor) {\n editor.formatContentModel(\n model => {\n let changed = false;\n\n iterateSelections(model, (_, __, block, segments) => {\n segments?.forEach(segment => {\n if (segment.segmentType == 'Image' && block?.blockType == 'Paragraph') {\n const index = block.segments.indexOf(segment);\n\n if (index >= 0) {\n block.segments.splice(index, 1);\n changed = true;\n }\n }\n });\n });\n\n return changed;\n },\n {\n apiName: 'DeleteImage',\n }\n );\n}\n\nfunction resizeByPercentage(\n editor: IEditor,\n percentage: number,\n naturalWidth: number,\n naturalHeight: number\n) {\n formatImageWithContentModel(editor, 'resizeImage', segment => {\n updateImageMetadata(segment, format => {\n format = format || {\n naturalWidth,\n naturalHeight,\n leftPercent: 0,\n rightPercent: 0,\n topPercent: 0,\n bottomPercent: 0,\n angleRad: 0,\n };\n\n const newWidth = Math.max(\n MIN_WIDTH,\n format.naturalWidth * (1 - format.leftPercent - format.rightPercent) * percentage\n );\n const newHeight = Math.max(\n MIN_HEIGHT,\n format.naturalHeight * (1 - format.topPercent - format.bottomPercent) * percentage\n );\n format.widthPx = newWidth;\n format.heightPx = newHeight;\n segment.format.width = newWidth + 'px';\n segment.format.height = newHeight + 'px';\n\n return format;\n });\n });\n}\n\nfunction resetImage(editor: IEditor) {\n formatImageWithContentModel(editor, 'resizeImage', segment => {\n updateImageMetadata(segment, () => null);\n\n delete segment.format.width;\n delete segment.format.height;\n\n segment.format.maxWidth = '100%';\n });\n}\n","import { createContextMenuProvider } from '../utils/createContextMenuProvider';\nimport { EditorPlugin, IEditor } from 'roosterjs-content-model-types';\nimport { isElementOfType, isNodeOfType } from 'roosterjs-content-model-dom';\nimport { setListStartNumber } from 'roosterjs-content-model-api';\nimport { showInputDialog } from '../../inputDialog/utils/showInputDialog';\nimport type { ContextMenuItem } from '../types/ContextMenuItem';\nimport type { ListNumberMenuItemStringKey } from '../types/ContextMenuItemStringKeys';\nimport type { LocalizedStrings } from '../../common/type/LocalizedStrings';\n\nconst ListNumberResetMenuItem: ContextMenuItem = {\n key: 'menuNameListNumberReset',\n unlocalizedText: 'Restart at 1',\n onClick: (_, editor, node) => {\n setListStartNumber(editor, 1);\n },\n};\n\nconst ListNumberEditMenuItem: ContextMenuItem = {\n key: 'menuNameListNumberEdit',\n unlocalizedText: 'Set numbering value',\n onClick: (_, editor, node, strings, uiUtilities) => {\n const listAndLi = getEditingList(editor, node);\n\n if (listAndLi) {\n const { list, li } = listAndLi;\n let startNumber = list.start;\n\n for (let child = list.firstChild; child; child = child.nextSibling) {\n if (child === li) {\n break;\n } else if (isNodeOfType(child, 'ELEMENT_NODE') && isElementOfType(child, 'li')) {\n startNumber += 1;\n }\n }\n\n showInputDialog(\n uiUtilities,\n 'menuNameListNumberEdit',\n 'Set numbering value',\n {\n value: {\n labelKey: 'dialogTextSetListNumber',\n unlocalizedLabel: 'Set value to',\n initValue: startNumber.toString(),\n },\n },\n strings\n ).then(values => {\n editor.focus();\n\n if (values) {\n const result = parseInt(values.value);\n\n if (result > 0 && result != startNumber) {\n setListStartNumber(editor, Math.floor(result));\n }\n }\n });\n }\n },\n};\n\nfunction getEditingList(editor: IEditor, node: Node) {\n const domHelper = editor.getDOMHelper();\n const li = domHelper.findClosestElementAncestor(node, 'LI');\n const list = li && (domHelper.findClosestElementAncestor(li, 'ol') as HTMLOListElement | null);\n\n return list?.isContentEditable ? { list, li } : null;\n}\n\n/**\n * Create a new instance of ContextMenuProvider to support list number editing functionalities in context menu\n * @returns A new ContextMenuProvider\n */\nexport function createListEditMenuProvider(\n strings?: LocalizedStrings\n): EditorPlugin {\n return createContextMenuProvider(\n 'listEdit',\n [ListNumberResetMenuItem, ListNumberEditMenuItem],\n strings,\n (editor, node) => !!getEditingList(editor, node)\n );\n}\n","import { Colors, EditorPlugin, IEditor, TableOperation } from 'roosterjs-content-model-types';\nimport { createContextMenuProvider } from '../utils/createContextMenuProvider';\nimport { editTable, setTableCellShade } from 'roosterjs-content-model-api';\nimport { renderColorPicker } from '../../colorPicker/component/renderColorPicker';\nimport type { ContextMenuItem } from '../types/ContextMenuItem';\nimport type { LocalizedStrings } from '../../common/type/LocalizedStrings';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../../colorPicker/utils/getClassNamesForColorPicker';\nimport type {\n TableEditMenuItemStringKey,\n TableEditInsertMenuItemStringKey,\n TableEditDeleteMenuItemStringKey,\n TableEditMergeMenuItemStringKey,\n TableEditSplitMenuItemStringKey,\n TableEditAlignMenuItemStringKey,\n TableEditShadeMenuItemStringKey,\n TableEditAlignTableMenuItemStringKey,\n} from '../types/ContextMenuItemStringKeys';\nimport {\n BackgroundColorDropDownItems,\n BackgroundColors,\n} from '../../colorPicker/utils/backgroundColors';\n\nconst TableEditOperationMap: Partial> = {\n menuNameTableInsertAbove: 'insertAbove',\n menuNameTableInsertBelow: 'insertBelow',\n menuNameTableInsertLeft: 'insertLeft',\n menuNameTableInsertRight: 'insertRight',\n menuNameTableDeleteTable: 'deleteTable',\n menuNameTableDeleteColumn: 'deleteColumn',\n menuNameTableDeleteRow: 'deleteRow',\n menuNameTableMergeAbove: 'mergeAbove',\n menuNameTableMergeBelow: 'mergeBelow',\n menuNameTableMergeLeft: 'mergeLeft',\n menuNameTableMergeRight: 'mergeRight',\n menuNameTableMergeCells: 'mergeCells',\n menuNameTableSplitHorizontally: 'splitHorizontally',\n menuNameTableSplitVertically: 'splitVertically',\n menuNameTableAlignLeft: 'alignCellLeft',\n menuNameTableAlignCenter: 'alignCellCenter',\n menuNameTableAlignRight: 'alignCellRight',\n menuNameTableAlignTop: 'alignCellTop',\n menuNameTableAlignMiddle: 'alignCellMiddle',\n menuNameTableAlignBottom: 'alignCellBottom',\n menuNameTableAlignTableLeft: 'alignLeft',\n menuNameTableAlignTableCenter: 'alignCenter',\n menuNameTableAlignTableRight: 'alignRight',\n};\n\nconst ColorValues = {\n ...BackgroundColors,\n // Add this value to satisfy compiler\n menuNameTableCellShade: (null),\n};\n\nfunction onClick(key: TableEditMenuItemStringKey, editor: IEditor) {\n editTable(editor, TableEditOperationMap[key]);\n}\n\nconst TableEditInsertMenuItem: ContextMenuItem = {\n key: 'menuNameTableInsert',\n unlocalizedText: 'Insert',\n subItems: {\n menuNameTableInsertAbove: 'Insert above',\n menuNameTableInsertBelow: 'Insert below',\n menuNameTableInsertLeft: 'Insert left',\n menuNameTableInsertRight: 'Insert right',\n },\n onClick,\n};\n\nconst TableEditDeleteMenuItem: ContextMenuItem = {\n key: 'menuNameTableDelete',\n unlocalizedText: 'Delete',\n subItems: {\n menuNameTableDeleteColumn: 'Delete column',\n menuNameTableDeleteRow: 'Delete row',\n menuNameTableDeleteTable: 'Delete table',\n },\n onClick,\n};\n\nconst TableEditMergeMenuItem: ContextMenuItem = {\n key: 'menuNameTableMerge',\n unlocalizedText: 'Merge',\n subItems: {\n menuNameTableMergeAbove: 'Merge above',\n menuNameTableMergeBelow: 'Merge below',\n menuNameTableMergeLeft: 'Merge left',\n menuNameTableMergeRight: 'Merge right',\n '-': '-',\n menuNameTableMergeCells: 'Merge selected cells',\n },\n onClick,\n};\n\nconst TableEditSplitMenuItem: ContextMenuItem = {\n key: 'menuNameTableSplit',\n unlocalizedText: 'Split',\n subItems: {\n menuNameTableSplitHorizontally: 'Split horizontally',\n menuNameTableSplitVertically: 'Split vertically',\n },\n onClick,\n};\n\nconst TableEditAlignMenuItem: ContextMenuItem = {\n key: 'menuNameTableAlign',\n unlocalizedText: 'Align cell',\n subItems: {\n menuNameTableAlignLeft: 'Align left',\n menuNameTableAlignCenter: 'Align center',\n menuNameTableAlignRight: 'Align right',\n '-': '-',\n menuNameTableAlignTop: 'Align top',\n menuNameTableAlignMiddle: 'Align middle',\n menuNameTableAlignBottom: 'Align bottom',\n },\n onClick,\n};\n\nconst TableEditAlignTableMenuItem: ContextMenuItem = {\n key: 'menuNameTableAlignTable',\n unlocalizedText: 'Align table',\n subItems: {\n menuNameTableAlignTableLeft: 'Align left',\n menuNameTableAlignTableCenter: 'Align center',\n menuNameTableAlignTableRight: 'Align right',\n },\n onClick,\n};\n\nconst TableEditCellShadeMenuItem: ContextMenuItem = {\n key: 'menuNameTableCellShade',\n unlocalizedText: 'Shading',\n subItems: BackgroundColorDropDownItems,\n onClick: (key, editor) => {\n setTableCellShade(editor, ColorValues[key].lightModeColor);\n },\n itemRender: (item, click) => renderColorPicker(item, ColorValues, click),\n itemClassName: getColorPickerItemClassName(),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n};\n\nfunction getEditingTable(editor: IEditor, node: Node) {\n const domHelper = editor.getDOMHelper();\n const td = domHelper.findClosestElementAncestor(node, 'TD,TH');\n const table = td && domHelper.findClosestElementAncestor(td, 'table');\n\n return table?.isContentEditable ? { table, td } : null;\n}\n\n/**\n * Create a new instance of ContextMenuProvider to support table editing functionalities in context menu\n * @returns A new ContextMenuProvider\n */\nexport function createTableEditMenuProvider(\n strings?: LocalizedStrings\n): EditorPlugin {\n return createContextMenuProvider(\n 'tableEdit',\n []>[\n TableEditInsertMenuItem,\n TableEditDeleteMenuItem,\n TableEditMergeMenuItem,\n TableEditSplitMenuItem,\n TableEditAlignMenuItem,\n TableEditAlignTableMenuItem,\n TableEditCellShadeMenuItem,\n ],\n strings,\n (editor, node) => !!getEditingTable(editor, node)\n );\n}\n","import * as React from 'react';\nimport { ContextMenuPluginBase } from 'roosterjs-content-model-plugins';\nimport { ContextualMenu } from '@fluentui/react/lib/ContextualMenu';\nimport { renderReactComponent } from '../../common/utils/renderReactComponent';\nimport type { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\nimport type { ReactEditorPlugin, UIUtilities } from '../../common/index';\n\nfunction normalizeItems(items: (IContextualMenuItem | null)[]) {\n let dividerKey = 0;\n return items.map(\n item =>\n item || {\n name: '-',\n key: 'divider_' + (dividerKey++).toString(),\n }\n );\n}\n\nclass ContextMenuPlugin extends ContextMenuPluginBase\n implements ReactEditorPlugin {\n private uiUtilities: UIUtilities | null = null;\n private disposer: (() => void) | null = null;\n\n constructor() {\n super({\n render: (container, items, onDismiss) => {\n const normalizedItems = normalizeItems(items);\n\n if (normalizedItems.length > 0) {\n this.disposer = renderReactComponent(\n this.uiUtilities,\n \n );\n }\n },\n dismiss: _ => {\n this.disposer?.();\n this.disposer = null;\n },\n });\n }\n\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n}\n\n/**\n * Create a new instance of ContextMenu plugin with context menu implementation based on FluentUI.\n */\nexport function createContextMenuPlugin(): ContextMenuPluginBase {\n return new ContextMenuPlugin();\n}\n","import { getLocalizedString } from '../../common/utils/getLocalizedString';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport type { ContextMenuItem } from '../types/ContextMenuItem';\nimport type { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\nimport type { LocalizedStrings, ReactEditorPlugin, UIUtilities } from '../../common/index';\nimport type { ContextMenuProvider, EditorPlugin, IEditor } from 'roosterjs-content-model-types';\n\n/**\n * A plugin of editor to provide context menu items\n */\nclass ContextMenuProviderImpl\n implements ContextMenuProvider, ReactEditorPlugin {\n private editor: IEditor | null = null;\n private targetNode: Node | null = null;\n private uiUtilities: UIUtilities | null = null;\n\n /**\n * Create a new instance of ContextMenuProviderImpl class\n * @param menuName Name of this group of menus\n * @param items Menu items that will be show\n * @param strings Localized strings of these menu items\n * @param shouldAddMenuItems A general checker to decide if we should add this group of menu items\n */\n constructor(\n private menuName: string,\n private items: ContextMenuItem[],\n private strings?: LocalizedStrings,\n private shouldAddMenuItems?: (editor: IEditor, node: Node) => boolean,\n private context?: TContext\n ) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return this.menuName;\n }\n\n /**\n * Initialize this plugin. This should only be called from Editor\n * @param editor Editor instance\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.editor = null;\n }\n\n getContextMenuItems(node: Node) {\n const editor = this.editor;\n\n this.targetNode = node;\n\n return editor && this.shouldAddMenuItems?.(this.editor, node)\n ? this.items\n .filter(item => !item.shouldShow || item.shouldShow(editor, node, this.context))\n .map(item => this.convertMenuItems(item, node))\n : [];\n }\n\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n\n private convertMenuItems(\n item: ContextMenuItem,\n node: Node\n ): IContextualMenuItem {\n const selectedId = this.editor && item.getSelectedId?.(this.editor, node);\n\n return {\n key: item.key,\n data: item,\n text: getLocalizedString(this.strings, item.key, item.unlocalizedText),\n ariaLabel: getLocalizedString(this.strings, item.key, item.unlocalizedText),\n onClick: () => this.onClick(item, item.key),\n iconProps: item.iconProps,\n subMenuProps: item.subItems\n ? {\n onItemClick: (_, menuItem) => menuItem && this.onClick(item, menuItem.data),\n items: getObjectKeys(item.subItems).map(key => ({\n key: key,\n data: key,\n text: getLocalizedString(this.strings, key, item.subItems?.[key]),\n className: item.itemClassName,\n onRender: item.itemRender\n ? subItem => item.itemRender?.(subItem, () => this.onClick(item, key))\n : undefined,\n iconProps:\n key == selectedId\n ? {\n iconName: 'Checkmark',\n }\n : undefined,\n })),\n ...(item.commandBarSubMenuProperties || {}),\n }\n : undefined,\n };\n }\n\n private onClick(item: ContextMenuItem, key: TString) {\n if (this.editor && this.targetNode && this.uiUtilities) {\n item.onClick(\n key,\n this.editor,\n this.targetNode,\n this.strings,\n this.uiUtilities,\n this.context\n );\n }\n }\n}\n\n/**\n * Create a new instance of ContextMenuProviderImpl class\n * @param menuName Name of this group of menus\n * @param items Menu items that will be show\n * @param strings Localized strings of these menu items\n * @param shouldAddMenuItems A general checker to decide if we should add this group of menu items\n */\nexport function createContextMenuProvider(\n menuName: string,\n items: ContextMenuItem[],\n strings?: LocalizedStrings,\n shouldAddMenuItems?: (editor: IEditor, node: Node) => boolean,\n context?: TContext\n): EditorPlugin {\n return new ContextMenuProviderImpl(\n menuName,\n items,\n strings,\n shouldAddMenuItems,\n context\n );\n}\n","import * as React from 'react';\nimport { css } from '@fluentui/react/lib/Utilities';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiPaneStyle } from '../type/EmojiPaneStyles';\nimport type { IProcessedStyleSet, IStyleSet } from '@fluentui/react/lib/Styling';\n/**\n * @internal\n * Emoji icon data\n */\nexport interface EmojiIconProps {\n id: string;\n emoji: Emoji;\n strings: Record;\n classNames: IProcessedStyleSet>;\n onClick?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onFocus?: React.FocusEventHandler;\n isSelected?: boolean;\n}\n\n/**\n * @internal\n * Emoji icon component\n */\nexport function EmojiIcon(props: EmojiIconProps) {\n const { emoji, onClick, isSelected, onMouseOver, onFocus, strings, id, classNames } = props;\n const content = emoji.description && strings[emoji.description];\n\n return (\n \n {emoji.codePoint || '…'}\n \n );\n}\n\nfunction reduceObject(object: any, callback: (key: string) => boolean): T {\n if (!object) {\n return object;\n }\n\n return Object.keys(object).reduce((result: any, key: string) => {\n if (callback(key)) {\n result[key] = object[key];\n }\n return result;\n }, {} as T);\n}\n\nfunction getDataAndAriaProps(props: EmojiIconProps): T {\n return reduceObject(\n props || {},\n propName => propName.indexOf('data-') === 0 || propName.indexOf('aria-') === 0\n );\n}\n","import * as React from 'react';\nimport { css } from '@fluentui/react/lib/Utilities';\nimport { EmojiFabricIconCharacterMap, EmojiList } from '../utils/emojiList';\nimport { FocusZone, FocusZoneDirection } from '@fluentui/react/lib/FocusZone';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport { Icon } from '@fluentui/react/lib/Icon';\nimport { TooltipHost } from '@fluentui/react/lib/Tooltip';\nimport type { EmojiFamilyKeys } from '../utils/emojiList';\nimport type { EmojiPaneStyle } from '../type/EmojiPaneStyles';\nimport type { IProcessedStyleSet, IStyleSet } from '@fluentui/react/lib/Styling';\n\n/**\n * @internal\n * Emoji Nav Bar data\n */\nexport interface EmojiNavBarProps {\n onClick?: (selected: string) => void;\n currentSelected?: string;\n getTabId?: (selected: EmojiFamilyKeys) => string;\n strings: Record;\n classNames: IProcessedStyleSet>;\n}\n\n/**\n * @internal\n */\nexport function EmojiNavBar(props: EmojiNavBarProps) {\n const { currentSelected, getTabId, strings = {}, classNames } = props;\n const keys = getObjectKeys(EmojiList);\n const onFamilyClick = (key: string) => {\n if (props.onClick) {\n props.onClick(key);\n }\n };\n\n return (\n // for each emoji family key, create a button to use as nav bar\n
\n \n {keys.map((key, index) => {\n const selected = key === currentSelected;\n const friendlyName = strings[key];\n\n return (\n \n \n \n \n \n );\n })}\n \n
\n );\n}\n","import * as React from 'react';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { CommonEmojis, EmojiFamilyKeys, EmojiList, MoreEmoji } from '../utils/emojiList';\nimport { css, KeyCodes, memoizeFunction } from '@fluentui/react/lib/Utilities';\nimport { EmojiIcon } from './EmojiIcon';\nimport { EmojiNavBar } from './EmojiNavBar';\nimport { EmojiStatusBar } from './EmojiStatusBar';\nimport { FocusZone } from '@fluentui/react/lib/FocusZone';\nimport { getLocalizedString } from '../../common/index';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport { searchEmojis } from '../utils/searchEmojis';\nimport { TextField } from '@fluentui/react/lib/TextField';\nimport { useTheme } from '@fluentui/react/lib/Theme';\nimport type { EmojiIconProps } from './EmojiIcon';\nimport type { EmojiNavBarProps } from './EmojiNavBar';\nimport type { EmojiStatusBarProps } from './EmojiStatusBar';\nimport type { ICalloutProps } from '@fluentui/react/lib/Callout';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiStringKeys } from '../type/EmojiStringKeys';\nimport type { LocalizedStrings } from '../../common/index';\nimport type { ITextField } from '@fluentui/react/lib/TextField';\nimport type { Theme } from '@fluentui/react/lib/Theme';\n\n// \"When a div contains an element that is bigger (either taller or wider) than the parent and has the property\n// overflow-x or overflow-y set to any value, then it can receive the focus.\"\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1069739\nconst TabIndexForFirefoxBug = -1;\nconst EmojisPerRow = 7;\nconst EmojiVisibleRowCount = 5;\nconst EmojiVisibleWithoutNavBarRowCount = 6;\nconst EmojiHeightPx = 40;\nconst VerticalDirectionKeys: number[] = [KeyCodes.up, KeyCodes.down];\nconst DirectionKeys: number[] = [\n KeyCodes.left,\n KeyCodes.right,\n KeyCodes.up,\n KeyCodes.down,\n KeyCodes.home,\n KeyCodes.end,\n];\n\nconst TooltipCalloutProps: ICalloutProps = {\n isBeakVisible: true,\n beakWidth: 16,\n gapSpace: 0,\n setInitialFocus: true,\n doNotLayer: false,\n directionalHint: DirectionalHint.bottomCenter,\n};\n\n/**\n * @internal\n * Types of emoji pane size\n */\nexport type EmojiPaneMode = 'Quick' | 'Partial' | 'Full';\n\n/**\n * @internal\n * Types of emoji Navigation direction\n */\nexport type EmojiPaneNavigateDirection = 'Horizontal' | 'Vertical';\n\n/**\n * @internal\n * Emoji Pane data\n */\nexport interface EmojiPaneState {\n index: number;\n mode: EmojiPaneMode;\n currentEmojiList: Emoji[];\n currentFamily: EmojiFamilyKeys;\n search: string;\n searchInBox: string;\n}\n\n/**\n * @internal\n * Emoji Pane customizable data\n */\nexport interface EmojiPaneProps {\n searchDisabled?: boolean;\n hideStatusBar?: boolean;\n navBarProps?: Partial;\n statusBarProps?: Partial;\n emojiIconProps?: Partial;\n searchBoxString?: LocalizedStrings;\n onSelect: (emoji: Emoji, wordBeforeCursor: string) => void;\n baseId: number;\n strings: Record;\n}\n\nconst AriaAttributes = {\n ActiveDescendant: 'aria-activedescendant',\n AutoComplete: 'aria-autocomplete',\n Controls: 'aria-controls',\n Expanded: 'aria-expanded',\n HasPopup: 'aria-haspopup',\n Owns: 'aria-owns',\n Pressed: 'aria-pressed',\n};\n\n/**\n * @internal\n * Emoji pane component functions\n */\nexport interface EmojiPane {\n navigate: (change: number, direction?: EmojiPaneNavigateDirection) => number;\n getEmojiElementIdByIndex: (index: number) => string | null;\n getSelectedEmoji: () => Emoji;\n showFullPicker: (fullSearchText: string) => void;\n setSearch: (value: string) => void;\n normalizeSearchText: (text: string, colonIncluded: boolean) => string;\n getSearchResult: (searchValue: string, mode: EmojiPaneMode) => Emoji[];\n getEmojiIconId: (emoji: Emoji) => string;\n}\n\nconst EmojiPane = React.forwardRef(function EmojiPaneFunc(\n props: EmojiPaneProps,\n ref: React.Ref\n) {\n let searchBox: ITextField;\n let emojiBody: HTMLElement;\n let input: HTMLInputElement;\n\n const [index, setIndex] = React.useState(0);\n const [mode, setMode] = React.useState('Quick');\n const [currentEmojiList, setCurrentEmojiList] = React.useState(CommonEmojis);\n const [currentFamily, setCurrentFamily] = React.useState('People');\n const [search, setSearchString] = React.useState(':');\n const [searchInBox, setSearchInBox] = React.useState('');\n\n const theme = useTheme();\n const classNames = getEmojiPaneClassName(theme);\n const listId = `EmojiPane${props.baseId}`;\n\n const navigate = React.useCallback(\n (change: number, direction?: EmojiPaneNavigateDirection): number => {\n if (!direction) {\n direction = 'Horizontal';\n }\n\n if (direction === 'Vertical' && index !== -1) {\n change *= EmojisPerRow;\n }\n\n const newIndex = index + change;\n const length = currentEmojiList.length;\n if (newIndex >= 0 && newIndex < length) {\n setIndex(newIndex);\n return newIndex;\n }\n\n return -1;\n },\n [index]\n );\n\n const normalizeSearchText = React.useCallback(\n (text: string, colonIncluded: boolean): string => {\n if (text == null) {\n return '';\n }\n\n if (colonIncluded) {\n text = text.substr(1);\n }\n return text.trim();\n },\n []\n );\n\n const getEmojiElementIdByIndex = React.useCallback(\n (index: number): string | null => {\n const emoji = currentEmojiList[index];\n if (emoji) {\n return getEmojiIconId(emoji);\n }\n\n return null;\n },\n [currentEmojiList]\n );\n\n const getSelectedEmoji = React.useCallback((): Emoji => {\n return currentEmojiList[index];\n }, [currentEmojiList, index]);\n\n const showFullPicker = React.useCallback(\n (fullSearchText: string): void => {\n const normalizedSearchValue = normalizeSearchText(fullSearchText, true);\n const newMode: EmojiPaneMode = normalizedSearchValue.length === 0 ? 'Full' : 'Partial';\n setIndex(newMode === 'Full' ? -1 : 0);\n setMode(newMode);\n setCurrentEmojiList(getSearchResult(normalizedSearchValue, newMode));\n setSearchString(fullSearchText);\n setSearchInBox(normalizedSearchValue);\n },\n [mode]\n );\n\n const setSearch = React.useCallback(\n (value: string): void => {\n const normalizedSearchValue = normalizeSearchText(value, false);\n setIndex(0);\n setCurrentEmojiList(getSearchResult(normalizedSearchValue, mode));\n setSearchString(value);\n },\n [index, search, currentEmojiList]\n );\n\n const getSearchResult = React.useCallback(\n (searchValue: string, mode: EmojiPaneMode): Emoji[] => {\n const isQuickMode = mode === 'Quick';\n if (!searchValue) {\n return isQuickMode ? currentEmojiList : EmojiList[currentFamily];\n }\n\n const emojiList = searchEmojis(searchValue, props.strings);\n return isQuickMode ? emojiList.slice(0, 5).concat([MoreEmoji]) : emojiList;\n },\n [mode, currentFamily, currentEmojiList]\n );\n\n const getEmojiIconId = React.useCallback(\n (emoji: Emoji) => (emoji ? `${listId}-${emoji.key}` : ''),\n [listId]\n );\n\n React.useImperativeHandle(\n ref,\n () => ({\n navigate,\n getEmojiElementIdByIndex,\n showFullPicker,\n getSearchResult,\n setSearch,\n getSelectedEmoji,\n normalizeSearchText,\n getEmojiIconId,\n }),\n [\n navigate,\n getEmojiElementIdByIndex,\n showFullPicker,\n getSearchResult,\n setSearch,\n getEmojiIconId,\n getSelectedEmoji,\n normalizeSearchText,\n ]\n );\n\n const renderQuickPicker = (\n props: EmojiPaneProps,\n index: number,\n currentEmojiList: Emoji[]\n ): JSX.Element => {\n const { strings } = props;\n const selectedEmoji = getSelectedEmoji();\n const target = selectedEmoji ? `#${getEmojiIconId(selectedEmoji)}` : undefined;\n const content = selectedEmoji?.description ? strings[selectedEmoji.description] : undefined;\n const emojiList = renderCurrentEmojiIcons(index, currentEmojiList);\n // note: we're using a callout since TooltipHost does not support manual trigger, and we need to show the tooltip since quick picker is shown\n // as an autocomplete menu (false focus based on transferring navigation keyboard event)\n return (\n
\n {emojiList}\n \n
\n \n );\n };\n\n const renderFullPicker = (\n props: EmojiPaneProps,\n index: number,\n searchInBox: string,\n currentFamily: EmojiFamilyKeys,\n currentEmojiList: Emoji[]\n ): JSX.Element => {\n const { searchDisabled, searchBoxString } = props;\n const emojiId = getEmojiIconId(getSelectedEmoji());\n const autoCompleteAttributes = {\n [AriaAttributes.AutoComplete]: 'list',\n [AriaAttributes.Expanded]: 'true',\n [AriaAttributes.HasPopup]: 'listbox',\n [AriaAttributes.Owns]: listId,\n };\n if (emojiId) {\n autoCompleteAttributes[AriaAttributes.ActiveDescendant] = emojiId;\n }\n\n return (\n
\n {!searchDisabled && (\n searchRefCallback(ref)}\n value={searchInBox}\n onChange={onSearchChange}\n inputClassName={classNames.emojiTextInput}\n onKeyPress={onSearchKeyPress}\n onKeyDown={onSearchKeyDown}\n onFocus={onSearchFocus}\n placeholder={getLocalizedString(\n searchBoxString,\n 'emojiSearchPlaceholder',\n 'Search...'\n )}\n ariaLabel={getLocalizedString(\n searchBoxString,\n 'emojiSearchInputAriaLabel',\n 'Search...'\n )}\n {...autoCompleteAttributes}\n />\n )}\n {mode === 'Full'\n ? renderFullList(props, index, currentFamily, currentEmojiList)\n : renderPartialList(props, index, currentEmojiList)}\n
\n );\n };\n\n const onSearchFocus = (e: React.FocusEvent): void => {\n input = e.target as HTMLInputElement;\n };\n\n const onSearchKeyPress = (e: React.KeyboardEvent): void => {\n if (!e || e.which !== KeyCodes.enter) {\n return;\n }\n\n if (index >= 0 && currentEmojiList && currentEmojiList.length > 0) {\n onSelect(e, currentEmojiList[index]);\n }\n };\n\n const onSearchKeyDown = (e: React.KeyboardEvent): void => {\n if (!e || DirectionKeys.indexOf(e.which) < 0) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n if (e.which === KeyCodes.home) {\n setIndex(0);\n emojiBody.scrollTop = 0;\n return;\n }\n if (e.which === KeyCodes.end) {\n setIndex(currentEmojiList.length - 1);\n emojiBody.scrollTop = emojiBody.scrollHeight; // scrollHeight will be larger than max\n return;\n }\n\n const direction: EmojiPaneNavigateDirection =\n VerticalDirectionKeys.indexOf(e.which) < 0 ? 'Horizontal' : 'Vertical';\n const newIndex = navigate(\n e.which === KeyCodes.left || e.which === KeyCodes.up ? -1 : 1,\n direction\n );\n if (newIndex > -1) {\n const visibleRowCount =\n mode === 'Full' ? EmojiVisibleRowCount : EmojiVisibleWithoutNavBarRowCount;\n const currentRow = Math.floor(newIndex / EmojisPerRow);\n const visibleTop = emojiBody.scrollTop;\n const visibleBottom = visibleTop + visibleRowCount * EmojiHeightPx;\n const currentRowTop = currentRow * EmojiHeightPx;\n const currentRowBottom = currentRowTop + EmojiHeightPx;\n if (visibleTop <= currentRowTop && visibleBottom >= currentRowBottom) {\n return; // row is visible, so exit\n }\n\n emojiBody.scrollTop = currentRow * EmojiHeightPx;\n }\n };\n\n const renderCurrentEmojiIcons = (index: number, currentEmojiList: Emoji[]): JSX.Element[] => {\n const { strings } = props;\n return currentEmojiList.map((emoji, emojiIndex) => (\n setIndex(emojiIndex)}\n onFocus={() => setIndex(emojiIndex)}\n emoji={emoji}\n classNames={classNames}\n isSelected={index === emojiIndex}\n onClick={e => onSelect(e, emoji)}\n aria-posinset={index + 1}\n aria-setsize={currentEmojiList.length}\n />\n ));\n };\n\n const renderPartialList = (\n props: EmojiPaneProps,\n index: number,\n currentEmojiList: Emoji[]\n ): JSX.Element => {\n const { strings, hideStatusBar, statusBarProps } = props;\n const hasResult = currentEmojiList && currentEmojiList.length > 0;\n\n return (\n
\n \n \n {renderCurrentEmojiIcons(index, currentEmojiList)}\n \n
\n {!hideStatusBar && (\n \n )}\n \n );\n };\n\n const renderFullList = (\n props: EmojiPaneProps,\n index: number,\n currentFamily: EmojiFamilyKeys,\n currentEmojiList: Emoji[]\n ): JSX.Element => {\n const { strings, hideStatusBar, navBarProps, statusBarProps } = props;\n\n const hasResult = currentEmojiList && currentEmojiList.length > 0;\n\n return (\n
\n \n \n
\n
\n \n {renderCurrentEmojiIcons(index, currentEmojiList)}\n \n
\n
\n
\n\n {!hideStatusBar && (\n \n )}\n \n );\n };\n\n const onEmojiBodyRef = (ref: HTMLDivElement) => {\n emojiBody = ref;\n };\n\n const pivotClick = (selected: string): void => {\n const currentFamily = selected as EmojiFamilyKeys;\n setCurrentEmojiList(EmojiList[currentFamily]);\n setCurrentFamily(currentFamily);\n };\n\n const getTabId = (itemKey: EmojiFamilyKeys): string => {\n return `family_${itemKey}_${props.baseId}`;\n };\n\n const searchRefCallback = (ref: ITextField | null): void => {\n if (ref) {\n searchBox = ref;\n if (searchBox?.value) {\n searchBox.focus();\n searchBox.setSelectionStart(searchBox.value.length);\n }\n }\n };\n\n const focusZoneRefCallback = (ref: FocusZone): void => {\n if (props.searchDisabled && ref) {\n ref.focus();\n }\n\n if (input) {\n // make sure to announce the active descending after the focus zone containing the emojis is ready\n input.removeAttribute(AriaAttributes.ActiveDescendant);\n const emojiId = getEmojiIconId(getSelectedEmoji());\n // we need to delay so NVDA will announce the first selection\n if (emojiId) {\n setTimeout(() => input.setAttribute(AriaAttributes.ActiveDescendant, emojiId), 0);\n }\n }\n };\n\n const onSearchChange = (_: any, newValue?: string): void => {\n if (typeof newValue === 'string') {\n const normalizedSearchValue = normalizeSearchText(newValue, false);\n const newMode: EmojiPaneMode = normalizedSearchValue.length === 0 ? 'Full' : 'Partial';\n setIndex(newMode === 'Full' ? -1 : 0);\n setCurrentEmojiList(getSearchResult(normalizedSearchValue, mode));\n setSearchInBox(newValue);\n setMode(newMode);\n }\n };\n\n const onSelect = (\n e: React.MouseEvent | React.KeyboardEvent,\n emoji: Emoji\n ): void => {\n e.stopPropagation();\n e.preventDefault();\n if (props.onSelect) {\n props.onSelect(emoji, search);\n }\n };\n\n const renderPane = (\n props: EmojiPaneProps,\n index: number,\n searchInBox: string,\n currentFamily: EmojiFamilyKeys,\n currentEmojiList: Emoji[]\n ) => {\n return mode === 'Quick'\n ? renderQuickPicker(props, index, currentEmojiList)\n : renderFullPicker(props, index, searchInBox, currentFamily, currentEmojiList);\n };\n\n return <>{renderPane(props, index, searchInBox, currentFamily, currentEmojiList)};\n});\n\n/**\n * @internal\n * Emoji pane component\n */\nexport function showEmojiPane(\n onSelect: (emoji: Emoji, wordBeforeCursor: string) => void,\n strings: Record,\n paneRef: React.RefObject,\n baseId: number,\n searchBoxString?: LocalizedStrings\n) {\n return (\n \n );\n}\n\nconst calcMaxHeight = () => {\n const buttonHeight = 40;\n const rowsOfIcons = 6; // including family bar if shown\n const bottomPaddingForContent = 5;\n const maxHeightForContent = rowsOfIcons * buttonHeight + bottomPaddingForContent;\n return maxHeightForContent.toString() + 'px';\n};\n\nconst calcPaneWidth = () => {\n const buttonWidth = 40;\n const pivotItemCount = 7;\n const paneHorizontalPadding = 1;\n const paneWidth = buttonWidth * pivotItemCount + 2 * paneHorizontalPadding;\n return paneWidth.toString() + 'px';\n};\n\nconst getEmojiPaneClassName = memoizeFunction((theme: Theme) => {\n const palette = theme.palette;\n return mergeStyleSets({\n quickPicker: {\n overflowY: 'hidden',\n ':after': {\n content: '',\n position: 'absolute',\n left: '0px',\n top: '0px',\n bottom: '0px',\n right: '0px',\n zIndex: 1,\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: 'rgb(255, 255, 255)',\n borderImage: 'initial',\n outline: 'rgb(102, 102, 102) solid 1px',\n },\n },\n\n tooltip: {\n padding: '8px',\n },\n\n emojiTextInput: {\n padding: '6px',\n },\n\n partialList: {\n maxHeight: calcMaxHeight(),\n overflow: 'hidden',\n overflowY: 'scroll',\n },\n\n fullListContent: {\n width: calcPaneWidth(),\n },\n\n fullListBody: {\n maxHeight: calcMaxHeight(),\n overflow: 'hidden',\n overflowY: 'scroll',\n height: calcMaxHeight(),\n },\n\n fullList: {\n position: 'relative',\n },\n\n roosterEmojiPane: {\n padding: '1px',\n background: palette.white,\n },\n\n emoji: {\n fontSize: '18px',\n width: '40px',\n height: '40px',\n border: '0',\n position: 'relative',\n background: palette.white,\n transition: 'backgorund 0.5s ease-in-out',\n },\n\n emojiSelected: {\n background: palette.neutralLight,\n },\n\n navBar: {\n top: '-1px',\n zIndex: 10,\n position: 'sticky',\n },\n\n navBarTooltip: {\n display: 'inline-block',\n },\n\n navBarButton: {\n height: '40px',\n width: '40px',\n border: '0',\n borderBottom: 'solid 1px',\n padding: 0,\n marginBottom: 0,\n display: 'inline-block',\n color: palette.themeDark,\n background: palette.white,\n '&:hover': {\n cursor: 'default',\n },\n },\n\n selected: {\n borderBottom: '2px solid',\n borderBottomColor: palette.themeDark,\n },\n\n statusBar: {\n borderTop: 'solid 1px',\n height: '50px',\n overflow: 'hidden',\n position: 'relative',\n background: palette.white,\n },\n\n statusBarIcon: {\n padding: '4px',\n fontSize: '25px',\n display: 'inline-block',\n fontStyle: 'normal',\n fontWeight: 'normal',\n lineHeight: '40px',\n },\n\n statusBarDetailsContainer: {\n padding: '0 4px',\n lineHeight: '50px',\n position: 'absolute',\n display: 'inline-block',\n left: '40px',\n right: '0',\n top: '0',\n },\n\n statusBarDetails: {\n fontWeight: 'bold',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n\n statusBarNoResultDetailsContainer: {\n lineHeight: '50px',\n position: 'absolute',\n display: 'inline-block',\n top: '0',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n left: '0',\n padding: '0 8px',\n },\n });\n});\n","import * as React from 'react';\nimport { TooltipHost, TooltipOverflowMode } from '@fluentui/react/lib/Tooltip';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiPaneStyle } from '../type/EmojiPaneStyles';\nimport type { IProcessedStyleSet, IStyleSet } from '@fluentui/react/lib/Styling';\n/**\n * @internal\n * Emoji Status Bar data\n */\nexport interface EmojiStatusBarProps {\n emoji: Emoji;\n strings: Record;\n hasResult: boolean;\n classNames: IProcessedStyleSet>;\n}\n\nconst NO_SUGGESTIONS = 'emjDNoSuggetions';\n\n/**\n * @internal\n * Emoji status bar component\n */\nexport function EmojiStatusBar(props: EmojiStatusBarProps) {\n const { emoji, strings, hasResult, classNames } = props;\n\n if (!hasResult) {\n const noResultDescription = strings[NO_SUGGESTIONS];\n return (\n
\n
\n {noResultDescription}\n
\n
\n \n {noResultDescription}\n \n
\n
\n );\n }\n\n const icon = emoji ? emoji.codePoint : '';\n const description = emoji?.description ? strings[emoji.description] : '';\n\n return (\n
\n \n {icon}\n \n\n
\n
\n \n {description}\n \n
\n
\n
\n );\n}\n","import * as React from 'react';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { renderReactComponent } from '../../common/utils/renderReactComponent';\nimport { showEmojiPane } from './EmojiPane';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiPane } from './EmojiPane';\nimport type { EmojiStringKeys } from '../type/EmojiStringKeys';\nimport type { LocalizedStrings, UIUtilities } from '../../common/index';\n\n/**\n * @internal\n * Emoji callout data\n */\ninterface EmojiICallOutProps {\n cursorRect: DOMRect;\n strings: Record;\n onSelectFromPane: (emoji: Emoji, wordBeforeCursor: string) => void;\n paneRef: React.RefObject;\n onHideCallout: () => void;\n searchBoxString?: LocalizedStrings;\n dismiss: () => void;\n baseId: number;\n}\n\nconst EmojiICallout = React.forwardRef(function EmojiCalloutFunc(\n props: EmojiICallOutProps,\n ref: React.Ref\n) {\n const {\n cursorRect,\n strings,\n onSelectFromPane,\n onHideCallout,\n searchBoxString,\n dismiss,\n paneRef,\n baseId,\n } = props;\n const [isCalloutVisible, toggleIsCalloutVisible] = React.useState(true);\n\n React.useImperativeHandle(\n ref,\n () => ({\n dismiss,\n }),\n [dismiss]\n );\n\n const point = {\n x: cursorRect.left,\n y: (cursorRect.top + cursorRect.bottom) / 2,\n };\n const gap = (cursorRect.bottom - cursorRect.top) / 2 + 5;\n if (!isCalloutVisible) {\n onHideCallout();\n }\n const toogleCallout = React.useCallback(() => {\n toggleIsCalloutVisible(false);\n dismiss();\n }, [dismiss]);\n\n return (\n <>\n {isCalloutVisible && (\n \n {showEmojiPane(onSelectFromPane, strings, paneRef, baseId, searchBoxString)}\n \n )}\n \n );\n});\n\n/**\n * @internal\n */\nexport interface EmojiICallout {\n dismiss: () => void;\n}\n\n/**\n * @internal\n * Enable emoji callout\n */\nexport function showEmojiCallout(\n uiUtilities: UIUtilities,\n cursorRect: DOMRect,\n strings: Record,\n onSelectFromPane: (emoji: Emoji, wordBeforeCursor: string) => void,\n paneRef: React.RefObject,\n emojiCalloutRef: React.RefObject,\n onHideCallout: () => void,\n baseId: number,\n searchBoxString?: LocalizedStrings\n) {\n let disposer: (() => void) | null = null;\n const onDismiss = () => {\n disposer?.();\n disposer = null;\n };\n\n disposer = renderReactComponent(\n uiUtilities,\n \n );\n}\n","export { createEmojiPlugin } from './plugin/createEmojiPlugin';\nexport { EmojiStringKeys } from './type/EmojiStringKeys';\n","import * as React from 'react';\nimport { isModifierKey, isNodeOfType, iterateSelections } from 'roosterjs-content-model-dom';\nimport { KeyCodes } from '@fluentui/react/lib/Utilities';\nimport { MoreEmoji } from '../utils/emojiList';\nimport { showEmojiCallout } from '../components/showEmojiCallout';\nimport { undo } from 'roosterjs-content-model-core';\nimport type { EmojiICallout } from '../components/showEmojiCallout';\nimport type { Emoji } from '../type/Emoji';\nimport type { EmojiPane } from '../components/EmojiPane';\nimport type { EmojiStringKeys } from '../type/EmojiStringKeys';\nimport type { LocalizedStrings, ReactEditorPlugin, UIUtilities } from '../../common/index';\nimport {\n EmojiDescriptionStrings,\n EmojiFamilyStrings,\n EmojiKeywordStrings,\n} from '../type/EmojiStrings';\nimport type { IEditor, KeyDownEvent, KeyUpEvent, PluginEvent } from 'roosterjs-content-model-types';\n\nconst KEYCODE_COLON = 186;\nconst KEYCODE_COLON_FIREFOX = 59;\n\n// Regex looks for an emoji right before the : to allow contextual search immediately following an emoji\n// MATCHES: 0: 😃:r\n// 1: 😃\n// 2: :r\nconst EMOJI_BEFORE_COLON_REGEX = /([\\u0023-\\u0039][\\u20e3]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\u00a9-\\u00ae]|[\\u2122-\\u3299])*([:;][^:]*)/;\n\n// White space matching regex. It matches following chars:\n// \\s: white space\n// \\u00A0: no-breaking white space\n// \\u200B: zero width space\n// \\u3000: full width space (which can come from JPN IME)\nconst WHITESPACE_REGEX = /[\\s\\u00A0\\u200B\\u3000]+([^\\s\\u00A0\\u200B\\u3000]*)$/i;\n\nclass EmojiPlugin implements ReactEditorPlugin {\n private editor: IEditor | null = null;\n private eventHandledOnKeyDown: boolean = false;\n private canUndoEmoji: boolean = false;\n private isSuggesting: boolean = false;\n private paneRef = React.createRef();\n private timer: number | null = null;\n private uiUtilities: UIUtilities | null = null;\n private strings: Record;\n private emojiCalloutRef = React.createRef();\n private baseId = 0;\n\n constructor(private searchBoxStrings?: LocalizedStrings) {\n this.strings = {\n ...EmojiDescriptionStrings,\n ...EmojiKeywordStrings,\n ...EmojiFamilyStrings,\n };\n }\n\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n\n public getName() {\n return 'Emoji';\n }\n\n public dispose() {\n this.setIsSuggesting(false);\n this.emojiCalloutRef.current?.dismiss();\n this.editor = null;\n this.baseId = 0;\n }\n\n public initialize(editor: IEditor): void {\n this.editor = editor;\n }\n\n public onPluginEvent(event: PluginEvent): void {\n if (event.eventType === 'keyDown') {\n this.eventHandledOnKeyDown = false;\n if (this.isSuggesting) {\n this.onKeyDownSuggestingDomEvent(event);\n } else if (event.rawEvent.key === 'Backspace' && this.canUndoEmoji) {\n //TODO: 1051\n // If KeyDown is backspace and canUndoEmoji, call editor undo\n undo(this.editor);\n\n this.handleEventOnKeyDown(event);\n this.canUndoEmoji = false;\n }\n } else if (event.eventType === 'keyUp' && !isModifierKey(event.rawEvent)) {\n if (this.isSuggesting) {\n this.onKeyUpSuggestingDomEvent(event);\n } else {\n this.onKeyUpDomEvent(event);\n }\n } else if (event.eventType === 'mouseUp') {\n //TODO: 1052\n // If MouseUp, the emoji cannot be undone\n this.canUndoEmoji = false;\n this.setIsSuggesting(false);\n }\n }\n\n /**\n * On KeyDown suggesting DOM event\n * Try to insert emoji is possible\n * Intercept arrow keys to move selection if popup is shown\n */\n private onKeyDownSuggestingDomEvent(event: KeyDownEvent): void {\n // If key is enter, try insert emoji at selection\n // If key is space and selection is shortcut, try insert emoji\n\n const wordBeforeCursor = this.getWordBeforeCursor(event);\n switch (event.rawEvent.key) {\n case 'Enter':\n const selectedEmoji = this.paneRef.current?.getSelectedEmoji();\n // check if selection is on the \"...\" and show full picker if so, otherwise try to apply emoji\n if (\n !selectedEmoji ||\n !wordBeforeCursor ||\n this.tryShowFullPicker(event, selectedEmoji, wordBeforeCursor)\n ) {\n break;\n } else {\n this.insertEmoji(selectedEmoji, wordBeforeCursor);\n this.handleEventOnKeyDown(event);\n }\n\n break;\n case 'ArrowLeft':\n case 'ArrowRight':\n this.paneRef.current?.navigate(event.rawEvent.key === 'ArrowLeft' ? -1 : 1);\n this.handleEventOnKeyDown(event);\n break;\n case 'Escape':\n this.setIsSuggesting(false);\n this.handleEventOnKeyDown(event);\n }\n }\n\n private tryShowFullPicker(\n event: KeyDownEvent,\n selectedEmoji: Emoji,\n wordBeforeCursor: string\n ): boolean {\n if (selectedEmoji !== MoreEmoji) {\n return false;\n }\n\n this.handleEventOnKeyDown(event);\n this.paneRef.current?.showFullPicker(wordBeforeCursor);\n return true;\n }\n\n /**\n * On KeyUp suggesting DOM event\n * If key is character, update search term\n * Otherwise set isSuggesting to false\n */\n private onKeyUpSuggestingDomEvent(event: KeyUpEvent): void {\n if (this.eventHandledOnKeyDown) {\n return;\n }\n // If this is a character key or backspace\n // Clear the timer as we will either queue a new timer or stop suggesting\n if (\n this.timer &&\n ((event.rawEvent.key.length === 1 && event.rawEvent.which !== KeyCodes.space) ||\n event.rawEvent.which === KeyCodes.backspace)\n ) {\n this.editor?.getDocument().defaultView?.clearTimeout(this.timer);\n this.timer = null;\n this.emojiCalloutRef.current?.dismiss();\n }\n\n const wordBeforeCursor = this.getWordBeforeCursor(event);\n if (wordBeforeCursor) {\n if (this.paneRef) {\n this.paneRef.current?.setSearch(wordBeforeCursor);\n } else {\n this.setIsSuggesting(false);\n }\n } else {\n this.setIsSuggesting(false);\n }\n }\n\n private onKeyUpDomEvent(event: KeyUpEvent): void {\n if (this.eventHandledOnKeyDown) {\n return;\n }\n\n if (\n (event.rawEvent.which === KEYCODE_COLON ||\n event.rawEvent.which === KEYCODE_COLON_FIREFOX) &&\n this.getWordBeforeCursor(event) === ':'\n ) {\n this.setIsSuggesting(true);\n }\n }\n\n private getCallout() {\n const selection = this.editor?.getDOMSelection();\n const rangeNode = selection?.type == 'range' ? selection.range.startContainer : null;\n const rangeElement = isNodeOfType(rangeNode, 'ELEMENT_NODE')\n ? rangeNode\n : rangeNode.parentElement;\n const rect = rangeElement?.getBoundingClientRect();\n\n if (this.uiUtilities && rect) {\n this.baseId++;\n\n showEmojiCallout(\n this.uiUtilities,\n rect,\n this.strings,\n this.onSelectFromPane,\n this.paneRef,\n this.emojiCalloutRef,\n this.onHideCallout,\n this.baseId,\n this.searchBoxStrings\n );\n }\n }\n\n private onHideCallout = () => this.setIsSuggesting(false);\n\n private onSelectFromPane = (emoji: Emoji, wordBeforeCursor: string): void => {\n if (emoji === MoreEmoji) {\n this.paneRef.current?.showFullPicker(wordBeforeCursor);\n return;\n }\n\n this.insertEmoji(emoji, wordBeforeCursor);\n };\n\n private setIsSuggesting(isSuggesting: boolean): void {\n if (this.isSuggesting === isSuggesting) {\n return;\n }\n\n this.isSuggesting = isSuggesting;\n if (this.isSuggesting) {\n this.getCallout();\n } else if (this.emojiCalloutRef) {\n this.emojiCalloutRef.current?.dismiss();\n }\n }\n\n private insertEmoji(emoji: Emoji, wordBeforeCursor: string) {\n if (!wordBeforeCursor || !this.editor || !emoji.codePoint) {\n return;\n }\n\n this.editor.formatContentModel(model => {\n iterateSelections(model, (_, __, block, segments) => {\n if (\n block?.blockType == 'Paragraph' &&\n segments?.length == 1 &&\n segments[0].segmentType == 'SelectionMarker'\n ) {\n const index = block.segments.indexOf(segments[0]);\n const previousSegment = block.segments[index - 1];\n\n if (\n previousSegment?.segmentType == 'Text' &&\n previousSegment.text.endsWith(wordBeforeCursor)\n ) {\n previousSegment.text =\n previousSegment.text.substring(\n 0,\n previousSegment.text.length - wordBeforeCursor.length\n ) + emoji.codePoint;\n }\n }\n\n return true;\n });\n\n return true;\n });\n\n this.emojiCalloutRef.current?.dismiss();\n }\n\n private getWordBeforeCursor(event: PluginEvent): string | null {\n let wordBeforeCursor: string | null = null;\n\n this.editor.formatContentModel(model => {\n iterateSelections(model, (_, __, block, segments) => {\n if (\n block?.blockType == 'Paragraph' &&\n segments?.length == 1 &&\n segments[0].segmentType == 'SelectionMarker'\n ) {\n const index = block.segments.indexOf(segments[0]);\n const prevSegment = block.segments[index - 1];\n\n if (prevSegment?.segmentType == 'Text') {\n // Match on the white space, the portion after space is on the index of 1 of the matched result\n // (index at 0 is whole match result, index at 1 is the word)\n const matches = WHITESPACE_REGEX.exec(prevSegment.text);\n wordBeforeCursor = matches?.length == 2 ? matches[1] : prevSegment.text;\n }\n }\n\n return true;\n });\n return false;\n });\n\n const matches = wordBeforeCursor ? EMOJI_BEFORE_COLON_REGEX.exec(wordBeforeCursor) : null;\n return matches && matches.length > 2 && matches[0] === wordBeforeCursor ? matches[2] : null;\n }\n\n private handleEventOnKeyDown(event: KeyDownEvent): void {\n this.eventHandledOnKeyDown = true;\n event.rawEvent.preventDefault();\n event.rawEvent.stopImmediatePropagation();\n }\n}\n\n/**\n * Create a new instance of Emoji plugin with FluentUI components.\n */\nexport function createEmojiPlugin(\n searchBoxStrings?: LocalizedStrings\n): ReactEditorPlugin {\n return new EmojiPlugin(searchBoxStrings);\n}\n","/**\n * @internal\n * Emoji Description\n */\nexport const EmojiDescriptionStrings = {\n emjDMore: 'More',\n emjDNoSuggestions: 'No suggestions found',\n emjD0270a: 'Raised fist',\n emjD0270b: 'Raised hand',\n emjD0270c: 'Victory hand',\n emjD02764: 'Red heart',\n emjD1f440: 'Eyes',\n emjD1f442: 'Ear',\n emjD1f443: 'Nose',\n emjD1f444: 'Mouth',\n emjD1f445: 'Tongue',\n emjD1f446: 'Up-pointing backhand index finger',\n emjD1f447: 'Down-pointing backhand index finger',\n emjD1f448: 'Left-pointing backhand index finger',\n emjD1f449: 'Right-pointing backhand index finger',\n emjD1f44a: 'Fist bump',\n emjD1f44b: 'Waving hand',\n emjD1f44c: 'OK hand',\n emjD1f44d: 'Thumbs up',\n emjD1f44e: 'Thumbs down',\n emjD1f44f: 'Clapping hands',\n emjD1f450: 'Open hands',\n emjD1f590: 'Raised hand with fingers splayed',\n emjD1f595: 'Middle finger',\n emjD1f596: 'Raised hand with part between middle and ring fingers',\n emjD1f464: 'Bust in silhouette',\n emjD1f466: 'Boy',\n emjD1f467: 'Girl',\n emjD1f468: 'Man',\n emjD1f469: 'Woman',\n emjD1f46a: 'Family',\n emjD1f46b: 'Man and woman holding hands',\n emjD1f46e: 'Police officer',\n emjD1f46f: 'Woman with bunny ears',\n emjD1f470: 'Bride with veil',\n emjD1f471: 'Person with blond hair',\n emjD1f472: 'Man with gua pi mao',\n emjD1f473: 'Man with turban',\n emjD1f474: 'Older man',\n emjD1f475: 'Older woman',\n emjD1f476: 'Baby',\n emjD1f477: 'Construction worker',\n emjD1f481: 'Information desk person',\n emjD1f482: 'Guardsman',\n emjD1f48b: 'Kiss mark',\n emjD1f493: 'Beating heart',\n emjD1f494: 'Broken heart',\n emjD1f495: 'Two hearts',\n emjD1f496: 'Sparkling heart',\n emjD1f497: 'Growing heart',\n emjD1f498: 'Heart with arrow',\n emjD1f499: 'Blue heart',\n emjD1f49a: 'Green heart',\n emjD1f49b: 'Yellow heart',\n emjD1f49c: 'Purple heart',\n emjD1f49d: 'Heart with ribbon',\n emjD1f49e: 'Revolving hearts',\n emjD1f49f: 'Heart decoration',\n emjD1f601: 'Grinning face with smiling eyes',\n emjD1f602: 'Face with tears of joy',\n emjD1f603: 'Smiling face with open mouth',\n emjD1f604: 'Smiling face with open mouth and smiling eyes',\n emjD1f605: 'Smiling face with open mouth and cold sweat',\n emjD1f606: 'Smiling face with open mouth and tightly closed eyes',\n emjD1f607: 'Smiling face with halo',\n emjD1f608: 'Smiling face with horns',\n emjD1f609: 'Winking face',\n emjD1f60a: 'Smiling face with smiling eyes',\n emjD1f60b: 'Face savoring delicious food',\n emjD1f60c: 'Relieved face',\n emjD1f60d: 'Smiling face with heart-shaped eyes',\n emjD1f60e: 'Smiling face with sunglasses',\n emjD1f60f: 'Smirking face',\n emjD1f610: 'Neutral face',\n emjD1f612: 'Unamused face',\n emjD1f613: 'Face with cold sweat',\n emjD1f614: 'Pensive face',\n emjD1f616: 'Confounded face',\n emjD1f618: 'Face throwing a kiss',\n emjD1f61a: 'Kissing face with closed eyes',\n emjD1f61c: 'Face with stuck-out tongue and winking eye',\n emjD1f61d: 'Face with stuck-out tongue and tightly closed eyes',\n emjD1f61e: 'Disappointed face',\n emjD1f620: 'Angry face',\n emjD1f621: 'Pouting face',\n emjD1f622: 'Crying face',\n emjD1f623: 'Persevering face',\n emjD1f624: 'Face with look of triumph',\n emjD1f625: 'Disappointed but relieved face',\n emjD1f628: 'Fearful face',\n emjD1f629: 'Weary face',\n emjD1f62a: 'Sleepy face',\n emjD1f62b: 'Tired face',\n emjD1f62d: 'Loudly crying face',\n emjD1f630: 'Face with open mouth and cold sweat',\n emjD1f631: 'Face screaming in fear',\n emjD1f632: 'Astonished face',\n emjD1f633: 'Flushed face',\n emjD1f635: 'Dizzy face',\n emjD1f636: 'Face without mouth',\n emjD1f637: 'Face with medical mask',\n emjD1f645: 'Face with No Good gesture',\n emjD1f646: 'Face with OK gesture',\n emjD1f647: 'Person bowing deeply',\n emjD1f648: 'See-no-evil monkey',\n emjD1f649: 'Hear-no-evil monkey',\n emjD1f641: 'Slightly frowning face',\n emjD1f642: 'Slightly smiling face',\n emjD1f64a: 'Speak-no-evil monkey',\n emjD1f64b: 'Happy person raising one hand',\n emjD1f64c: 'Person raising both hands in celebration',\n emjD1f64d: 'Person frowning',\n emjD1f64e: 'Person with pouting face',\n emjD1f64f: 'Person with folded hands',\n emjD02600: 'Sun with rays',\n emjD02601: 'Cloud',\n emjD02614: 'Umbrella with rain drops',\n emjD0267b: 'Recycling symbol',\n emjD026c4: 'Snowman without snow',\n emjD026c5: 'Sun behind cloud',\n emjD02728: 'Sparkles',\n emjD02733: 'Eight-spoked asterisk',\n emjD02734: 'Eight-pointed star',\n emjD02744: 'Snowflake',\n emjD02747: 'Sparkle',\n emjD02b50: 'White medium star',\n emjD1f300: 'Cyclone',\n emjD1f301: 'Foggy',\n emjD1f302: 'Closed umbrella',\n emjD1f303: 'Night with stars',\n emjD1f304: 'Sunrise over mountains',\n emjD1f305: 'Sunrise',\n emjD1f306: 'Cityscape at dusk',\n emjD1f307: 'Sunset over buildings',\n emjD1f308: 'Rainbow',\n emjD1f309: 'Bridge at night',\n emjD1f30a: 'Water wave',\n emjD1f30b: 'Volcano',\n emjD1f30c: 'Milky Way',\n emjD1f311: 'New moon',\n emjD1f313: 'First quarter moon',\n emjD1f314: 'Waxing gibbous moon',\n emjD1f315: 'Full moon',\n emjD1f319: 'Crescent moon',\n emjD1f31b: 'First quarter moon with face',\n emjD1f31f: 'Glowing star',\n emjD1f320: 'Shooting star',\n emjD1f330: 'Chestnut',\n emjD1f331: 'Seedling',\n emjD1f334: 'Palm tree',\n emjD1f335: 'Cactus',\n emjD1f337: 'Tulip',\n emjD1f338: 'Cherry blossom',\n emjD1f339: 'Rose',\n emjD1f33a: 'Hibiscus',\n emjD1f33b: 'Sunflower',\n emjD1f33c: 'Blossom',\n emjD1f33d: 'Ear of corn',\n emjD1f33e: 'Ear of rice',\n emjD1f33f: 'Herb',\n emjD1f340: 'Four leaf clover',\n emjD1f341: 'Maple leaf',\n emjD1f342: 'Fallen leaf',\n emjD1f343: 'Leaf fluttering in wind',\n emjD1f344: 'Mushroom',\n emjD1f40c: 'Snail',\n emjD1f40d: 'Snake',\n emjD1f40e: 'Horse',\n emjD1f411: 'Sheep',\n emjD1f412: 'Monkey',\n emjD1f414: 'Chicken',\n emjD1f417: 'Boar',\n emjD1f418: 'Elephant',\n emjD1f419: 'Octopus',\n emjD1f41a: 'Spiral shell',\n emjD1f41b: 'Bug',\n emjD1f41c: 'Ant',\n emjD1f41d: 'Honeybee',\n emjD1f41e: 'Ladybug',\n emjD1f41f: 'Fish',\n emjD1f420: 'Tropical fish',\n emjD1f421: 'Blowfish',\n emjD1f422: 'Turtle',\n emjD1f423: 'Hatching chick',\n emjD1f424: 'Baby chick',\n emjD1f425: 'Front-facing baby chick',\n emjD1f426: 'Bird',\n emjD1f427: 'Penguin',\n emjD1f428: 'Koala',\n emjD1f429: 'Poodle',\n emjD1f42b: 'Bactrian camel',\n emjD1f42c: 'Dolphin',\n emjD1f42d: 'Mouse face',\n emjD1f42e: 'Cow face',\n emjD1f42f: 'Tiger face',\n emjD1f430: 'Rabbit face',\n emjD1f431: 'Cat face',\n emjD1f432: 'Dragon face',\n emjD1f433: 'Spouting whale',\n emjD1f434: 'Horse face',\n emjD1f435: 'Monkey face',\n emjD1f436: 'Dog face',\n emjD1f437: 'Pig face',\n emjD1f438: 'Frog face',\n emjD1f439: 'Hamster face',\n emjD1f43a: 'Wolf face',\n emjD1f43b: 'Bear face',\n emjD1f43c: 'Panda face',\n emjD1f43d: 'Pig nose',\n emjD1f43e: 'Paw prints',\n emjD1f638: 'Grinning cat face with smiling eyes',\n emjD1f639: 'Cat face with tears of joy',\n emjD1f63a: 'Smiling cat face with open mouth',\n emjD1f63b: 'Smiling cat face with heart-shaped eyes',\n emjD1f63c: 'Cat face with wry smile',\n emjD1f63d: 'Kissing cat face with closed eyes',\n emjD1f63e: 'Pouting cat face',\n emjD1f63f: 'Crying cat face',\n emjD1f640: 'Weary cat face',\n emjD0260e: 'Telephone',\n emjD026bd: 'Soccer ball',\n emjD026be: 'Baseball',\n emjD1f004: 'Mahjong tile red dragon',\n emjD1f380: 'Ribbon',\n emjD1f381: 'Wrapped present',\n emjD1f382: 'Birthday cake',\n emjD1f383: 'Jack-o-lantern',\n emjD1f384: 'Christmas tree',\n emjD1f385: 'Father Christmas',\n emjD1f386: 'Fireworks',\n emjD1f387: 'Firework sparkler',\n emjD1f388: 'Balloon',\n emjD1f389: 'Party popper',\n emjD1f38a: 'Confetti ball',\n emjD1f38b: 'Tanabata tree',\n emjD1f38c: 'Crossed flags',\n emjD1f38d: 'Pine decoration',\n emjD1f38e: 'Japanese dolls',\n emjD1f38f: 'Carp streamer',\n emjD1f390: 'Wind chime',\n emjD1f391: 'Moon-viewing ceremony',\n emjD1f392: 'School backpack',\n emjD1f393: 'Graduation cap',\n emjD1f3a0: 'Carousel horse',\n emjD1f3a1: 'Ferris wheel',\n emjD1f3a2: 'Roller coaster',\n emjD1f3a3: 'Fishing pole and fish',\n emjD1f3a4: 'Microphone',\n emjD1f3a5: 'Movie camera',\n emjD1f3a6: 'Cinema',\n emjD1f3a7: 'Headphones',\n emjD1f3a8: 'Artist palette',\n emjD1f3a9: 'Top hat',\n emjD1f3aa: 'Circus tent',\n emjD1f3ab: 'Ticket',\n emjD1f3ac: 'Clapper board',\n emjD1f3ad: 'Performing arts',\n emjD1f3ae: 'Video game',\n emjD1f3af: 'Direct hit',\n emjD1f3b0: 'Slot machine',\n emjD1f3b1: 'Billiards',\n emjD1f3b2: 'Game die',\n emjD1f3b3: 'Bowling',\n emjD1f3b4: 'Flower playing cards',\n emjD1f3b5: 'Musical note',\n emjD1f3b6: 'Multiple musical notes',\n emjD1f3b7: 'Saxophone',\n emjD1f3b8: 'Guitar',\n emjD1f3b9: 'Musical keyboard',\n emjD1f3ba: 'Trumpet',\n emjD1f3bb: 'Violin',\n emjD1f3bc: 'Musical score',\n emjD1f3bd: 'Running shirt with sash',\n emjD1f3be: 'Tennis racquet and ball',\n emjD1f3bf: 'Ski and ski boot',\n emjD1f3c0: 'Basketball and hoop',\n emjD1f3c1: 'Checkered flag',\n emjD1f3c2: 'Snowboarder',\n emjD1f3c3: 'Runner',\n emjD1f3c4: 'Surfer',\n emjD1f3c6: 'Trophy',\n emjD1f3c8: 'American football',\n emjD1f3ca: 'Swimmer',\n emjD1f478: 'Princess',\n emjD1f479: 'Japanese ogre',\n emjD1f47a: 'Japanese goblin',\n emjD1f47b: 'Ghost',\n emjD1f47c: 'Baby angel',\n emjD1f47d: 'Extraterrestrial alien',\n emjD1f47e: 'Alien monster',\n emjD1f47f: 'Imp',\n emjD1f480: 'Skull',\n emjD1f483: 'Dancer',\n emjD1f484: 'Lipstick',\n emjD1f485: 'Nail polish',\n emjD1f486: 'Face massage',\n emjD1f487: 'Haircut',\n emjD1f488: 'Barber pole',\n emjD1f489: 'Syringe',\n emjD1f48a: 'Pill',\n emjD1f48c: 'Love letter',\n emjD1f48d: 'Ring',\n emjD1f48e: 'Gemstone',\n emjD1f48f: 'Kiss',\n emjD1f490: 'Bouquet',\n emjD1f491: 'Couple with heart',\n emjD1f492: 'Wedding',\n emjD1f4f7: 'Camera',\n emjD1f4f9: 'Video camera',\n emjD1f4fa: 'Television',\n emjD1f4fb: 'Radio',\n emjD1f4fc: 'Videocassette',\n emjD02615: 'Hot beverage',\n emjD02702: 'Scissors',\n emjD02709: 'Envelope',\n emjD0270f: 'Pencil',\n emjD02712: 'Nib',\n emjD1f345: 'Tomato',\n emjD1f346: 'Eggplant',\n emjD1f347: 'Grapes',\n emjD1f348: 'Melon',\n emjD1f349: 'Watermelon',\n emjD1f34a: 'Tangerine',\n emjD1f34c: 'Banana',\n emjD1f34d: 'Pineapple',\n emjD1f34e: 'Red apple',\n emjD1f34f: 'Green apple',\n emjD1f351: 'Peach',\n emjD1f352: 'Cherries',\n emjD1f353: 'Strawberry',\n emjD1f354: 'Hamburger',\n emjD1f355: 'Slice of pizza',\n emjD1f356: 'Meat on bone',\n emjD1f357: 'Poultry leg',\n emjD1f358: 'Rice cracker',\n emjD1f359: 'Rice ball',\n emjD1f35a: 'Cooked rice',\n emjD1f35b: 'Curry and rice',\n emjD1f35c: 'Steaming bowl',\n emjD1f35d: 'Spaghetti',\n emjD1f35e: 'Bread',\n emjD1f35f: 'French fries',\n emjD1f360: 'Roasted sweet potato',\n emjD1f361: 'Dango',\n emjD1f362: 'Oden',\n emjD1f363: 'Sushi',\n emjD1f364: 'Fried shrimp',\n emjD1f365: 'Fish cake with swirl design',\n emjD1f366: 'Soft ice cream',\n emjD1f367: 'Shaved ice',\n emjD1f368: 'Ice cream',\n emjD1f369: 'Doughnut',\n emjD1f36a: 'Cookie',\n emjD1f36b: 'Chocolate bar',\n emjD1f36c: 'Candy',\n emjD1f36d: 'Lollipop',\n emjD1f36e: 'Custard',\n emjD1f36f: 'Honey pot',\n emjD1f370: 'Shortcake',\n emjD1f371: 'Bento box',\n emjD1f372: 'Pot of food',\n emjD1f373: 'Cooking',\n emjD1f374: 'Fork and knife',\n emjD1f375: 'Teacup without handle',\n emjD1f376: 'Sake bottle and cup',\n emjD1f377: 'Wine glass',\n emjD1f378: 'Cocktail glass',\n emjD1f379: 'Tropical drink',\n emjD1f37a: 'Beer mug',\n emjD1f37b: 'Clinking beer mugs',\n emjD1f451: 'Crown',\n emjD1f452: \"Woman's hat\",\n emjD1f453: 'Eyeglasses',\n emjD1f454: 'Necktie',\n emjD1f455: 'T-shirt',\n emjD1f456: 'Jeans',\n emjD1f457: 'Dress',\n emjD1f458: 'Kimono',\n emjD1f459: 'Bikini',\n emjD1f45a: \"Woman's clothes\",\n emjD1f45b: 'Purse',\n emjD1f45c: 'Handbag',\n emjD1f45d: 'Pouch',\n emjD1f45e: \"Man's shoe\",\n emjD1f45f: 'Athletic shoe',\n emjD1f460: 'High-heeled shoe',\n emjD1f461: \"Woman's sandal\",\n emjD1f462: \"Woman's boots\",\n emjD1f463: 'Footprints',\n emjD1f4ba: 'Seat',\n emjD1f4bb: 'Personal computer',\n emjD1f4bc: 'Briefcase',\n emjD1f4bd: 'Minidisc',\n emjD1f4be: 'Floppy disk',\n emjD1f4bf: 'Optical disc',\n emjD1f4c0: 'DVD',\n emjD1f4c1: 'File folder',\n emjD1f4c2: 'Open file folder',\n emjD1f4c3: 'Page with curl',\n emjD1f4c4: 'Page facing up',\n emjD1f4c5: 'Calendar',\n emjD1f4c6: 'Tear-off calendar',\n emjD1f4c7: 'Card index',\n emjD1f4c8: 'Chart with upward trend',\n emjD1f4c9: 'Chart with downward trend',\n emjD1f4ca: 'Bar chart',\n emjD1f4cb: 'Clipboard',\n emjD1f4cc: 'Pushpin',\n emjD1f4cd: 'Round pushpin',\n emjD1f4ce: 'Paper clip',\n emjD1f4cf: 'Straight ruler',\n emjD1f4d0: 'Triangular ruler',\n emjD1f4d1: 'Bookmark tabs',\n emjD1f4d2: 'Ledger',\n emjD1f4d3: 'Notebook',\n emjD1f4d4: 'Notebook with decorative cover',\n emjD1f4d5: 'Closed book',\n emjD1f4d6: 'Open book',\n emjD1f4d7: 'Green book',\n emjD1f4d8: 'Blue book',\n emjD1f4d9: 'Orange book',\n emjD1f4da: 'Books',\n emjD1f4db: 'Name badge',\n emjD1f4dc: 'Scroll',\n emjD1f4dd: 'Memo',\n emjD1f4de: 'Telephone receiver',\n emjD1f4df: 'Pager',\n emjD1f4e0: 'Fax machine',\n emjD1f4e1: 'Satellite antenna',\n emjD1f4e2: 'Public address loudspeaker',\n emjD1f4e3: 'Cheering megaphone',\n emjD1f4e4: 'Outbox tray',\n emjD1f4e5: 'Inbox tray',\n emjD1f4e6: 'Package',\n emjD1f4e7: 'Email',\n emjD1f4e8: 'Incoming envelope',\n emjD1f4e9: 'Envelope with downward-facing arrow above',\n emjD1f4ea: 'Closed mailbox with lowered flag',\n emjD1f4eb: 'Closed mailbox with raised flag',\n emjD1f4ee: 'Postbox',\n emjD1f4f0: 'Newspaper',\n emjD1f4f1: 'Mobile phone',\n emjD1f4f2: 'Mobile phone with right-facing arrow at left',\n emjD1f4f3: 'Vibration mode',\n emjD1f4f4: 'Mobile phone off',\n emjD1f4f6: 'Antenna with bars',\n emjD1f525: 'Fire',\n emjD1f526: 'Flashlight',\n emjD1f527: 'Wrench',\n emjD1f528: 'Hammer',\n emjD1f529: 'Nut and bolt',\n emjD1f52a: 'Hocho',\n emjD1f52b: 'Pistol',\n emjD1f52e: 'Crystal ball',\n emjD1f52f: 'Six-pointed star with middle dot',\n emjD1f531: 'Trident emblem',\n emjD1f550: \"Clock face one o'clock\",\n emjD1f551: \"Clock face two o'clock\",\n emjD1f552: \"Clock face three o'clock\",\n emjD1f553: \"Clock face four o'clock\",\n emjD1f554: \"Clock face five o'clock\",\n emjD1f555: \"Clock face six o'clock\",\n emjD1f556: \"Clock face seven o'clock\",\n emjD1f557: \"Clock face eight o'clock\",\n emjD1f558: \"Clock face nine o'clock\",\n emjD1f559: \"Clock face ten o'clock\",\n emjD1f55a: \"Clock face eleven o'clock\",\n emjD1f55b: \"Clock face twelve o'clock\",\n emjD02668: 'Hot springs',\n emjD0267f: 'Wheelchair',\n emjD02693: 'Anchor',\n emjD026a0: 'Warning',\n emjD026a1: 'High Voltage',\n emjD026d4: 'No Entry',\n emjD026ea: 'Church',\n emjD026f2: 'Fountain',\n emjD026f3: 'Flag in hole',\n emjD026f5: 'Sailboat',\n emjD026fa: 'Tent',\n emjD026fd: 'Fuel pump',\n emjD02708: 'Airplane',\n emjD1f17f: 'Squared Latin capital letter P',\n emjD1f3e0: 'House building',\n emjD1f3e1: 'House with garden',\n emjD1f3e2: 'Office building',\n emjD1f3e3: 'Japanese post office',\n emjD1f3e5: 'Hospital',\n emjD1f3e6: 'Bank',\n emjD1f3e7: 'Automated teller machine',\n emjD1f3e8: 'Hotel',\n emjD1f3e9: 'Love hotel',\n emjD1f3ea: 'Convenience store',\n emjD1f3eb: 'School',\n emjD1f3ec: 'Department store',\n emjD1f3ed: 'Factory',\n emjD1f3ee: 'Izakaya lantern',\n emjD1f3ef: 'Japanese castle',\n emjD1f3f0: 'European castle',\n emjD1f530: 'Japanese symbol for beginner',\n emjD1f680: 'Rocket',\n emjD1f683: 'Railway car',\n emjD1f684: 'High-speed train',\n emjD1f685: 'High-speed train with bullet nose',\n emjD1f687: 'Metro',\n emjD1f689: 'Station',\n emjD1f68c: 'Bus',\n emjD1f68f: 'Bus stop',\n emjD1f691: 'Ambulance',\n emjD1f692: 'Fire engine',\n emjD1f693: 'Police car',\n emjD1f695: 'Taxi',\n emjD1f697: 'Automobile',\n emjD1f699: 'Recreational vehicle',\n emjD1f69a: 'Delivery truck',\n emjD1f6a2: 'Ship',\n emjD1f6a4: 'Speedboat',\n emjD1f6a5: 'Horizontal traffic light',\n emjD1f6a7: 'Construction',\n emjD1f6a8: \"Police car's revolving light\",\n emjD1f6a9: 'Triangular flag on post',\n emjD1f6aa: 'Door',\n emjD1f6ab: 'No entry',\n emjD1f6ac: 'Smoking symbol',\n emjD1f6ad: 'No smoking symbol',\n emjD1f6b2: 'Bicycle',\n emjD1f6b6: 'Pedestrian',\n emjD1f6b9: \"Men's symbol\",\n emjD1f6ba: \"Women's symbol\",\n emjD1f6bb: 'Restroom',\n emjD1f6bc: 'Baby symbol',\n emjD1f6bd: 'Toilet',\n emjD1f6be: 'Water closet',\n emjD1f6c0: 'Bath',\n emjD02049: 'Exclamation question mark',\n emjD02139: 'Information source',\n emjD021a9: 'Left-facing arrow with hook',\n emjD021aa: 'Right-facing arrow with hook',\n emjD0231a: 'Watch',\n emjD0231b: 'Hourglass',\n emjD023e9: 'Right-pointing double triangle',\n emjD023ea: 'Left-pointing double triangle',\n emjD023eb: 'Up-pointing double triangle',\n emjD023ec: 'Down-pointing double triangle',\n emjD023f0: 'Alarm clock',\n emjD023f3: 'Hourglass with flowing sand',\n emjD024c2: 'Circled Latin capital letter M',\n emjD025b6: 'Black right-pointing triangle',\n emjD025c0: 'Black left-pointing triangle',\n emjD025fb: 'White medium square',\n emjD025fc: 'Black medium square',\n emjD026ce: 'Ophiuchus',\n emjD02611: 'Ballot box with check',\n emjD0261d: 'White up-pointing index',\n emjD02648: 'Aries',\n emjD02649: 'Taurus',\n emjD0264a: 'Gemini',\n emjD0264b: 'Cancer',\n emjD0264c: 'Leo',\n emjD0264d: 'Virgo',\n emjD0264e: 'Libra',\n emjD0264f: 'Scorpio',\n emjD02650: 'Sagittarius',\n emjD02651: 'Capricorn',\n emjD02652: 'Aquarius',\n emjD02653: 'Pisces',\n emjD026aa: 'Medium white circle',\n emjD026ab: 'Medium black circle',\n emjD02705: 'White heavy check mark',\n emjD02714: 'Heavy check mark',\n emjD02716: 'Heavy multiplication x',\n emjD0274c: 'Cross mark',\n emjD0274e: 'Squared cross mark',\n emjD02753: 'question mark ornament',\n emjD02754: 'White question mark ornament',\n emjD02755: 'White exclamation mark ornament',\n emjD02757: 'Heavy exclamation mark',\n emjD02795: 'Heavy plus sign',\n emjD02796: 'Heavy minus sign',\n emjD02797: 'Heavy division sign',\n emjD027a1: 'Black right-facing arrow',\n emjD027b0: 'Curly loop',\n emjD027bf: 'Double curly loop',\n emjD02934: 'Arrow pointing right then curving upward',\n emjD02935: 'Arrow pointing right then curving downward',\n emjD02b05: 'Black arrow pointing left',\n emjD02b06: 'Black arrow pointing right',\n emjD02b07: 'Downwards black arrow',\n emjD02b1b: 'Black large square',\n emjD02b1c: 'White large square',\n emjD02b55: 'Heavy large circle',\n emjD03030: 'Wavy dash',\n emjD0303d: 'Part alternation mark',\n emjD03297: 'Circled Ideograph congratulation',\n emjD03299: 'Circled Ideograph secret',\n emjD1f0cf: 'Playing card Joker',\n emjD1f170: 'Squared Latin capital letter A',\n emjD1f171: 'Squared Latin capital letter B',\n emjD1f17e: 'Squared Latin capital letter O',\n emjD1f18e: 'Squared AB',\n emjD1f191: 'Squared CL',\n emjD1f192: 'Squared COOL',\n emjD1f193: 'Squared FREE',\n emjD1f194: 'Squared ID',\n emjD1f195: 'Squared NEW',\n emjD1f196: 'Squared NG',\n emjD1f197: 'Squared OK',\n emjD1f198: 'Squared SOS',\n emjD1f199: 'Squared UP!',\n emjD1f19a: 'Squared VS',\n emjD1f201: 'Squared Katakana Koko',\n emjD1f202: 'Squared Katakana Sa',\n emjD1f21a: 'Squared CJK Unified Ideograph-7121',\n emjD1f22f: 'Squared CJK Unified Ideograph-6307',\n emjD1f232: 'Squared CJK Unified Ideograph-7981',\n emjD1f233: 'Squared CJK Unified Ideograph-7a7a',\n emjD1f234: 'Squared CJK Unified Ideograph-5408',\n emjD1f235: 'Squared CJK Unified Ideograph-6e80',\n emjD1f236: 'Squared CJK Unified Ideograph-6709',\n emjD1f237: 'Squared CJK Unified Ideograph-6708',\n emjD1f238: 'Squared CJK Unified Ideograph-7533',\n emjD1f239: 'Squared CJK Unified Ideograph-5272',\n emjD1f23a: 'Squared CJK Unified Ideograph-55b6',\n emjD1f250: 'Circled Ideograph advantage',\n emjD1f251: 'Circled Ideograph accept',\n emjD1f30f: 'Earth globe Asia-Australia',\n emjD1f4a0: 'Diamond shape with a dot inside',\n emjD1f4a1: 'Electric light bulb',\n emjD1f4a2: 'Anger',\n emjD1f4a3: 'Bomb',\n emjD1f4a4: 'Sleeping',\n emjD1f4a5: 'Collision',\n emjD1f4a6: 'Splashing sweat',\n emjD1f4a7: 'Droplet',\n emjD1f4a8: 'Dash',\n emjD1f4a9: 'Pile of poo',\n emjD1f4aa: 'Flexed biceps',\n emjD1f4ab: 'Dizzy',\n emjD1f4ac: 'Speech balloon',\n emjD1f4ae: 'White flower',\n emjD1f4af: 'Hundred points',\n emjD1f4b0: 'Money bag',\n emjD1f4b1: 'Currency exchange',\n emjD1f4b2: 'Heavy dollar sign',\n emjD1f4b3: 'Credit card',\n emjD1f4b4: 'Banknote with yen sign',\n emjD1f4b5: 'Banknote with dollar sign',\n emjD1f4b8: 'Money with wings',\n emjD1f4b9: 'Chart with upwards trend and yen sign',\n emjD1f503: 'Clockwise downward and upward open circle arrows',\n emjD1f50a: 'Speaker with three sound waves',\n emjD1f50b: 'Battery',\n emjD1f50c: 'Electric plug',\n emjD1f50d: 'Left-leaning magnifying glass',\n emjD1f50e: 'Right-leaning magnifying glass',\n emjD1f50f: 'Lock with ink pen',\n emjD1f510: 'Closed lock with key',\n emjD1f511: 'Key',\n emjD1f512: 'Lock',\n emjD1f513: 'Open lock',\n emjD1f514: 'Bell',\n emjD1f516: 'Bookmark',\n emjD1f517: 'Link',\n emjD1f518: 'Radio button',\n emjD1f519: 'Back with left-facing arrow above',\n emjD1f51a: 'End with left-facing arrow above',\n emjD1f51b: 'On with exclamation mark with left right arrow above',\n emjD1f51c: 'Soon with right-facing arrow above',\n emjD1f51d: 'Top with upward arrow above',\n emjD1f51e: 'No one under eighteen',\n emjD1f51f: 'Keycap ten',\n emjD1f520: 'Input Latin uppercase',\n emjD1f521: 'Input Latin lowercase',\n emjD1f522: 'Input numbers',\n emjD1f523: 'Input symbols',\n emjD1f524: 'Input Latin letters',\n emjD1f532: 'Black square button',\n emjD1f533: 'White square button',\n emjD1f534: 'Large red circle',\n emjD1f535: 'Large blue circle',\n emjD1f536: 'Large orange diamond',\n emjD1f537: 'Large blue diamond',\n emjD1f538: 'Small orange diamond',\n emjD1f539: 'Small blue diamond',\n emjD1f53a: 'Up-pointing red triangle',\n emjD1f53b: 'Down-pointing red triangle',\n emjD1f53c: 'Up-pointing small red triangle',\n emjD1f53d: 'Down-pointing small red triangle',\n emjD1f5fb: 'Mount Fuji',\n emjD1f5fc: 'Tokyo Tower',\n emjD1f5fd: 'Statue of Liberty',\n emjD1f5fe: 'Silhouette of Japan',\n emjD1f5ff: 'Moyai',\n};\n\n/**\n * @internal\n * Emoji Keywords\n */\nexport const EmojiKeywordStrings = {\n emjK1f607: 'saint angel innocent',\n emjK1f47c: 'cherub angel',\n emjK1f34e: 'apple',\n emjK1f34f: 'apple',\n emjK1f477: 'construction',\n emjK1f6a7: 'construction detour',\n emjK1f491: 'couple engaged married marry marriage',\n emjK1f46b: 'couple engaged',\n emjK1f622: 'crying sad',\n emjK1f62d: 'crying sad',\n emjK1f525: 'fire',\n emjK1f692: 'fire truck fire engine',\n emjK1f386: 'fireworks sparkler july 4th',\n emjK1f387: 'fireworks sparkler july 4th',\n emjK1f44a: 'punch fist pump chuck norris bam',\n emjK0270a: 'fist pump punch',\n emjK1f498: 'heart love cupid',\n emjK1f496: 'heart love',\n emjK1f497: 'love heart',\n emjK1f493: 'heart love heartbeat',\n emjK1f368: 'ice cream dessert treat sundae sweets',\n emjK1f366: 'ice cream dessert treat sweets',\n emjK1f48b: 'kiss xoxo love kisses kissing mwah',\n emjK1f444: 'kiss mouth',\n emjK1f618: 'kiss love kisses kissing',\n emjK1f61a: 'kiss love kisses kissing smooch',\n emjK1f48f: 'kiss love',\n emjK1f435: 'monkey',\n emjK1f64a: 'monkey speak no evil',\n emjK1f649: 'monkey hear no evil',\n emjK1f648: 'monkey see no evil',\n emjK1f3b6: 'music melody song singing tune jingle',\n emjK1f3b5: 'music musical note melody musical',\n emjK1f44c: 'ok okay perfect',\n emjK1f646: 'ok awesome',\n emjK1f621: 'pouting sad pout',\n emjK1f64e: 'pouting sad depressed',\n emjK1f60c: 'relieved phew whew relief',\n emjK1f630: 'relieved phew whew',\n emjK1f605: 'relieved phew whew sheesh',\n emjK1f380: 'ribbon',\n emjK1f381: 'gift present presents ribbon',\n emjK1f613: 'scared yikes scary uh oh',\n emjK1f631: 'scared yikes fear whoa',\n emjK1f629: 'scared anxious uncertain unsure',\n emjK1f628: 'scared fearful',\n emjK1f45e: 'shoe shoes',\n emjK1f45f: 'shoe shoes',\n emjK1f60a: 'smile happy smiling yay',\n emjK1f642: 'smile happy smiling',\n emjK1f603: 'smiling happy excited woo woohoo woot',\n emjK1f604: 'smiling happy grin excited',\n emjK1f6bd: 'toilet bathroom potty restroom washroom',\n emjK1f6ba: 'toilet bathroom',\n emjK1f6b9: 'toilet bathroom',\n emjK1f684: 'train light rail monorail',\n emjK1f683: 'train caboose',\n emjK1f446: 'up click',\n emjK0261d: 'up',\n emjK1f64b: 'wave hi bye hey aloha',\n emjK1f44b: 'wave hi bye waving high five',\n emjK1f601: 'happy grin lol funny grinning hehe',\n emjK1f602: 'happy lol funny joy lmao rofl',\n emjK1f606: 'lol haha laughing lmao',\n emjK1f609: 'haha winking wink winky',\n emjK1f60f: 'haha winking wink smirking smirk heh',\n emjK1f645: 'bad',\n emjK1f44e: 'bad thumbs down wrong boo',\n emjK1f60d: 'love love you loving love u',\n emjK1f495: 'love hearts',\n emjK1f44d: 'ok thumbs up',\n emjK1f610: 'ok umm',\n emjK1f620: 'mad angry grrr',\n emjK1f612: 'mad angry unamused not funny amused bleh blah',\n emjK1f47b: 'scared halloween ghost boo',\n emjK1f480: 'scared skull danger die death poison',\n emjK1f47e: 'scared monster',\n emjK1f365: 'rice ball fish cake',\n emjK1f61e: 'disappointed sad',\n emjK1f64d: 'disappointed sad frown',\n emjK1f494: 'heartbroken sorrow sad broken heart brokenhearted',\n emjK1f625: 'relieved phew',\n emjK1f62b: 'sleepy tired yawn',\n emjK1f4a4: 'sleepy tired sleep zzz',\n emjK1f62a: 'sleepy tired',\n emjK1f632: 'wow astonished',\n emjK1f633: 'wow flushed',\n emjK1f3c4: 'wave surf surfer surfers surfs surfing',\n emjK1f44f: 'yay clapping applause clap',\n emjK1f64c: 'yay celebrate',\n emjK1f48d: 'ring marry fiance engaged engage engagement ring engagement diamond ring bling',\n emjK1f483: 'party dancer dance dancing',\n emjK1f389: 'party fun congratulations celebrate congrats',\n emjK1f388: 'party fun balloon',\n emjK1f38a: 'party confetti surprise',\n emjK1f383: 'happy halloween trick treat halloween pumpkin',\n emjK1f385: 'merry christmas santa claus father xmas',\n emjK1f384: 'merry christmas tree happy holidays',\n emjK1f3eb: 'school college study teacher learn studying',\n emjK1f392: 'backpack school bag back pack',\n emjK1f41f: 'fish goldfish',\n emjK1f3a3: 'fish fishing fishing pole',\n emjK1f3a5: 'video camera film movie movie camera',\n emjK1f4f9: 'video camera',\n emjK1f3a6: 'theatre theater cinema',\n emjK1f3ad: 'performing arts drama shakespeare theatre theater play actor actress',\n emjK1f3bc: 'treble clef sheet music music musical score',\n emjK1f3b9: 'music piano',\n emjK1f3a7: 'music headphones headphone',\n emjK1f3b7: 'music saxophone sax',\n emjK1f3ba: 'music trumpet',\n emjK1f3b8: 'music guitar',\n emjK1f3bb: 'music violin',\n emjK1f3ac: 'film action movie',\n emjK1f48e: 'diamond stone gem',\n emjK1f3be: 'wimbledon tennis raquet tennis sports racquet',\n emjK1f3c8: 'football superbowl sports nfl',\n emjK1f3bf: 'sports winter ski skiing skis',\n emjK1f3c2: 'sports winter snowboard snowboarder snowboarding snowboards',\n emjK026c4: 'winter snow snowman',\n emjK02744: 'winter snow snowflake snowing snowed christmas xmas blizzard',\n emjK1f3c1: 'race finish nascar',\n emjK1f3c3: 'race run marathon runner sprinting running late',\n emjK1f375: 'tea coffee',\n emjK02615: 'coffee tea',\n emjK1f377: 'alcohol wine',\n emjK1f378: 'alcohol cocktail drinks martini happy hour',\n emjK1f379: 'alcohol tropical drink',\n emjK1f68c: 'bus transit',\n emjK1f687: 'bus transit metro',\n emjK1f43b: 'bear teddy',\n emjK1f43c: 'bear panda',\n emjK1f340: \"luck lucky st. patrick's day shamrock\",\n emjK1f320: 'luck shooting star wish comet asteroid meteor meteroid',\n emjK1f303: 'skyline starry stars night',\n emjK1f307: 'skyline sunset',\n emjK1f31f: 'star twinkle',\n emjK02747: 'star sparkle glitter',\n emjK1f4b0: 'cash loot',\n emjK1f4b5: 'cash money dollar',\n emjK1f4b4: 'yen money',\n emjK1f4b3: 'money credit debt debit credit card',\n emjK1f60b: 'dinner hungry lunch food yummy yum delicious tasty mmmmm',\n emjK1f60e: 'cool',\n emjK1f614: 'alas thinking sigh',\n emjK1f616: 'confused confounded huh',\n emjK1f61c: 'goofy wassup nyah kidding',\n emjK1f61d: 'gross yuck eww blech',\n emjK1f623: 'persevering',\n emjK1f624: 'triumph congratulations grats congrats yahoo ftw woot wahoo',\n emjK1f635: 'dizzy drunk confused',\n emjK1f636: 'unsure',\n emjK1f637: 'sick flu',\n emjK1f440: 'eyes snoop',\n emjK1f442: 'ear listen',\n emjK1f443: 'nose smell',\n emjK1f445: 'tongue lick taste drool',\n emjK1f447: 'down',\n emjK1f448: 'left',\n emjK1f449: 'right',\n emjK1f64f: 'pray praying prayer',\n emjK0270b: 'hand',\n emjK0270c: 'peace victory',\n emjK1f466: 'boy',\n emjK1f467: 'girl',\n emjK1f468: 'man',\n emjK1f469: 'woman',\n emjK1f46a: 'family',\n emjK1f46e: 'police officer cop',\n emjK1f46f: 'bunny ears costume',\n emjK1f470: 'bride marriage bridezilla',\n emjK1f471: 'blond',\n emjK1f474: 'grandpa old man gramps grandfather',\n emjK1f475: 'grandma old lady old woman grandmother',\n emjK1f476: 'baby kid toddler newborn infant',\n emjK1f382: 'birthday cake happy cake',\n emjK1f390: 'chime',\n emjK1f393: 'graduation college high school graduated graduating graduate grad',\n emjK1f0cf: 'cards card joker blackjack poker',\n emjK1f3a0: 'carousel carnival',\n emjK1f3a1: 'ferris wheel amusement park',\n emjK1f3a2: 'roller coaster',\n emjK1f3a4: 'microphone sing karaoke singing',\n emjK1f3a8: 'paint artist palette artist',\n emjK1f3a9: 'top hat black tie',\n emjK1f3aa: 'circus',\n emjK1f3ab: 'ticket stub ticket stub admission',\n emjK1f3ae: 'xbox video game video games controller',\n emjK1f3af: 'bullseye archery darts arrow',\n emjK1f3b0: 'slot slots machine casino gamble gambling',\n emjK1f3b1: 'pool billiards',\n emjK1f3b2: 'die dice game craps gambling casino gamble',\n emjK1f3b3: 'bowling bowl',\n emjK1f4f7: 'camera picture photo',\n emjK1f4fa: 'tv television',\n emjK1f4fb: 'radio',\n emjK1f4fc: 'videotape videocassette cassette vcr',\n emjK1f478: 'princess',\n emjK1f47d: 'alien ufo',\n emjK1f47f: 'imp pixie loki leprechaun',\n emjK1f484: 'lipstick makeup',\n emjK1f485: 'nail polish manicure',\n emjK1f486: 'massage',\n emjK1f487: 'haircut',\n emjK1f488: 'barber barbershop',\n emjK1f489: 'syringe shot needle',\n emjK1f48a: 'pill pills drug drugs',\n emjK1f48c: 'love letter',\n emjK1f490: 'flowers bouquet love',\n emjK1f492: 'wedding marry church',\n emjK1f3c0: 'basketball bball hoops',\n emjK1f3c6: 'win trophy champions champion',\n emjK1f3ca: 'swim swimmer swimming swims',\n emjK026bd: 'soccer ball',\n emjK026be: 'baseball',\n emjK1f451: 'crown king queen',\n emjK1f453: 'glasses hipster',\n emjK1f454: 'tie',\n emjK1f455: 'tshirt tshirts',\n emjK1f456: 'jeans pants',\n emjK1f457: 'dress',\n emjK1f459: 'bikini bathing suit swimsuit swim',\n emjK1f45b: 'purse',\n emjK1f45c: 'handbag purse',\n emjK1f45d: 'pouch clutch',\n emjK1f461: 'sandal heels heel shoe shoes sandals pumps',\n emjK1f462: 'boots boot',\n emjK1f463: 'footprints barefoot',\n emjK1f4dd: 'memo note',\n emjK1f4de: 'telephone call phone',\n emjK1f4df: 'pager',\n emjK1f4e0: 'fax machine',\n emjK1f4e1: 'satellite antenna',\n emjK1f4e3: 'megaphone cheering',\n emjK1f4e6: 'present package parcel',\n emjK1f4e7: 'email mail',\n emjK1f4ee: 'mail post',\n emjK1f4f0: 'newspaper news',\n emjK1f4f1: 'phone cell call',\n emjK1f4f6: 'wifi signal',\n emjK1f526: 'flashlight',\n emjK1f527: 'wrench',\n emjK1f528: 'hammer hammers',\n emjK1f529: 'nuts bolts',\n emjK1f52a: 'knife',\n emjK1f52e: 'crystal ball clairvoyance clairvoyant psychic mystic',\n emjK1f531: 'trident',\n emjK1f354: 'hamburger fast burger hamburgers burgers food hungry',\n emjK1f355: 'pizza fast food hungry dinner lunch',\n emjK1f356: 'meat dinner lunch hungry food',\n emjK1f357: 'chicken leg turkey leg meat chicken turkey hungry dinner lunch food drumstick',\n emjK1f35a: 'rice dinner hungry lunch food',\n emjK1f35c: 'noodles ramen food dinner lunch',\n emjK1f35d: 'spaghetti dinner noodles food hungry',\n emjK1f35e: 'bread food',\n emjK1f35f: 'fries fast food french fries food',\n emjK1f360: 'potato potatoes vegetable food',\n emjK1f363: 'sushi food maki',\n emjK1f364: 'fried shrimp shrimp seafood food tempura',\n emjK1f369: 'doughnut doughnuts donut donuts food sweets',\n emjK1f36a: 'cookie cookies food sweets',\n emjK1f36b: 'chocolate chocolates candy bar chocolate bar sweets',\n emjK1f36c: 'candy sweet sweets treat',\n emjK1f36d: 'lollipop candy treat sucker',\n emjK1f36e: 'custard',\n emjK1f36f: 'honey pot',\n emjK1f370: 'pie food hungry cake dessert cheesecake shortcake sweets',\n emjK1f371: 'bento box',\n emjK1f372: 'soup pot of food stew',\n emjK1f374: 'food dinner fork knife eat hungry meal restaurant',\n emjK1f376: 'sake alcohol',\n emjK1f37a: 'beer alcohol',\n emjK1f37b: 'cheers beers alcohol',\n emjK1f345: 'food vegetable fruit tomato',\n emjK1f346: 'eggplant food vegetable',\n emjK1f347: 'grapes fruit food',\n emjK1f348: 'melon honeydew food fruit',\n emjK1f349: 'watermelon melon food fruit',\n emjK1f34a: 'tangerine fruit food orange mandarin clementine slice slices',\n emjK1f34c: 'banana fruit food',\n emjK1f34d: 'pineapple fruit food',\n emjK1f351: 'peach peaches fruit food',\n emjK1f352: 'cherry cherries fruit food',\n emjK1f353: 'strawberries stawberry fruit food berry berries',\n emjK1f4ba: 'seat',\n emjK1f4bb: 'pc computer laptop tablet',\n emjK1f4bc: 'briefcase brief case',\n emjK1f4be: 'floppy disk diskette',\n emjK1f4bf: 'cd compact disc',\n emjK1f4c0: 'dvd',\n emjK1f4c1: 'file folder',\n emjK1f4c5: 'calendar',\n emjK1f4cb: 'clipboard',\n emjK1f4cc: 'pushpin',\n emjK1f4cd: 'drawing pin',\n emjK1f4ce: 'paperclip clippy',\n emjK1f4cf: 'ruler measure',\n emjK1f4d2: 'ledger',\n emjK1f4d3: 'notebook',\n emjK1f4da: 'book books',\n emjK1f4db: 'name badge',\n emjK02702: 'scissors cut',\n emjK02709: 'envelope mail',\n emjK0270f: 'pencil',\n emjK1f3e0: 'house home',\n emjK1f3e1: 'garden greenhouse',\n emjK1f3e2: 'office work',\n emjK1f3e6: 'bank',\n emjK1f3e7: 'atm',\n emjK1f3e8: 'hotel motel bed sleep',\n emjK1f3ea: 'convenience store',\n emjK1f3ec: 'department store shopping',\n emjK1f3ed: 'factory',\n emjK1f3f0: 'castle',\n emjK02668: 'hot springs',\n emjK02693: 'anchor',\n emjK026ea: 'church temple',\n emjK026f2: 'fountain',\n emjK026f3: 'golf',\n emjK026f5: 'sailboat sailing sail',\n emjK026fd: 'gas fuel gasoline pump',\n emjK1f6aa: 'door',\n emjK1f6ac: 'smoke smoking',\n emjK1f6ad: 'no smoking',\n emjK1f6b2: 'bike bicycle biking',\n emjK1f6b6: 'walking pedestrian',\n emjK1f6c0: 'bath bathing bathtub tub',\n emjK0267f: 'accessible accessibility wheelchair',\n emjK026a0: 'warning attention caution hazzard',\n emjK026a1: 'high voltage zap lightning',\n emjK1f680: 'rocket spaceship space',\n emjK1f68f: 'bus stop',\n emjK1f693: 'cop police',\n emjK1f695: 'taxi cab',\n emjK1f697: 'car vehicle automobile',\n emjK1f6a2: 'ship cruise ferry yacht cruise travel vacation',\n emjK02708: 'airplane flight airline plane travel vacation',\n emjK1f42d: 'mouse eek mice squeak',\n emjK1f42e: 'cow moo',\n emjK1f42f: 'tiger roar rawr',\n emjK1f430: 'rabbit bunny easter',\n emjK1f431: 'cat kitty kitten meow',\n emjK1f432: 'dragon roar smaug',\n emjK1f433: 'whale moby dick',\n emjK1f434: 'horse',\n emjK1f436: 'dog woof puppy bark doggy',\n emjK1f437: 'pig oink piggy piglet',\n emjK1f438: 'frog croak ribbit',\n emjK1f439: 'hamster guinea pig',\n emjK1f43a: 'wolf howl',\n emjK1f341: 'maple leaf',\n emjK1f344: 'mushroom shroom',\n emjK1f308: 'rainbow love',\n emjK02601: 'cloud gloomy cloudy',\n emjK02614: 'drops raining rain rainy raindrops umbrella',\n emjK02728: 'sparkles twinkle twinkling glitter shiny sparkly glittery',\n emjK1f4a9: 'poop turd shit',\n emjK1f4aa: 'strong work out muscles biceps',\n emjK02648: 'aries zodiac',\n emjK02649: 'taurus zodiac',\n emjK0264a: 'gemini zodiac',\n emjK0264b: 'cancer zodiac',\n emjK0264c: 'leo zodiac',\n emjK0264d: 'virgo zodiac',\n emjK0264e: 'libra zodiac',\n emjK0264f: 'scorpio zodiac',\n emjK02650: 'sagittarius zodiac',\n emjK02651: 'capricorn zodiac',\n emjK02652: 'aquarius zodiac',\n emjK02653: 'pisces zodiac',\n emjK1f411: 'bah sheep',\n emjK1f300: 'cyclone typhoon hurricane',\n emjK1f301: 'foggy',\n emjK1f302: 'umbrella',\n emjK1f304: 'sunrise',\n emjK1f305: 'sunrise',\n emjK1f306: 'dusk',\n emjK1f309: 'bridge night',\n emjK1f30a: 'wave tsunami',\n emjK1f30c: 'milky way night sky galaxy universe',\n emjK1f311: 'moon',\n emjK1f313: 'moon',\n emjK1f314: 'moon',\n emjK1f315: 'moon full',\n emjK1f319: 'moon crescent',\n emjK1f31b: 'moon',\n emjK1f330: 'chestnut',\n emjK1f331: 'seed seedling planting',\n emjK1f334: 'palm tree vacation',\n emjK1f335: 'cactus hot desert',\n emjK1f337: 'tulip flower',\n emjK1f338: 'cherry blossom sakura flower',\n emjK1f339: 'rose love romance flower',\n emjK1f33a: 'hibiscus flower',\n emjK1f33b: 'sunflower',\n emjK1f33c: 'blossom daisy flower',\n emjK1f33d: 'maize corn',\n emjK1f33e: 'rice',\n emjK1f33f: 'herb herbs',\n emjK1f342: 'leaf autumn',\n emjK1f343: 'leaf windy',\n emjK1f358: 'onigiri',\n emjK1f359: 'onigiri',\n emjK1f35b: 'curry katsu',\n emjK1f361: 'dango',\n emjK1f362: 'oden',\n emjK1f373: 'frying cooking',\n emjK1f3bd: 'exercise exercising',\n emjK1f417: 'boar',\n emjK1f418: 'elephant',\n emjK1f419: 'octopus',\n emjK1f41a: 'seashell shell',\n emjK1f41b: 'bug insect centipede millipede',\n emjK1f41c: 'ant ants insect bug',\n emjK1f41d: 'bee bees honeybee honeybees',\n emjK1f41e: 'ladybug ladybugs',\n emjK1f420: 'fish',\n emjK1f421: 'blowfish fish',\n emjK1f422: 'turtle',\n emjK1f423: 'chick easter',\n emjK1f425: 'chick easter',\n emjK1f40c: 'snail slow',\n emjK1f40d: 'snake',\n emjK1f40e: 'horse horsey pony',\n emjK1f412: 'monkey',\n emjK1f414: 'chicken bawk rooster',\n emjK1f429: 'poodle dog',\n emjK1f42b: 'camel desert',\n emjK1f426: 'bird',\n emjK1f427: 'penguin',\n emjK1f42c: 'dolphin',\n emjK1f43d: 'pig pig noise smelly',\n emjK1f43e: 'paw prints paws',\n emjK1f452: 'hat sunday best',\n emjK1f458: 'kimono',\n emjK1f45a: 'clothes',\n emjK1f481: 'information desk support desk',\n emjK1f482: 'guardsman',\n emjK1f499: 'heart',\n emjK1f49a: 'heart',\n emjK1f49b: 'heart',\n emjK1f49c: 'heart',\n emjK1f49d: 'heart love',\n emjK1f49e: 'heart',\n emjK1f49f: 'heart',\n emjK1f4a5: 'collision bang traffic accident crash',\n emjK1f4a3: 'bomb',\n emjK1f4a1: 'light bulb idea',\n emjK1f4a8: 'dash gotta go gotta run',\n emjK1f503: 'reload refresh loading',\n emjK1f50c: 'plug plugged in',\n emjK1f50b: 'battery charged',\n emjK1f50d: 'search searching',\n emjK1f510: 'secure secret',\n emjK1f50f: 'privacy',\n emjK1f511: 'key',\n emjK1f512: 'lock locked',\n emjK1f513: 'unlock unlocked',\n emjK1f516: 'bookmark',\n emjK1f514: 'bell alarm',\n emjK1f550: '1pm 1am early afternoon',\n emjK1f551: '2pm 2am afternoon',\n emjK1f552: '3pm 3am',\n emjK1f553: '4pm 4am',\n emjK1f554: '5pm 5am late afternoon',\n emjK1f555: '6pm 6am',\n emjK1f556: '7pm 7am dinnertime',\n emjK1f557: '8pm 8am morning',\n emjK1f558: '9pm 9am',\n emjK1f559: '10pm 10am bedtime',\n emjK1f55a: '11pm 11am nighttime',\n emjK1f55b: '12pm 12am midnight noon lunchtime',\n emjK1f5fd: 'statue liberty nyc new york city',\n emjK1f638: 'cat grin happy',\n emjK1f639: 'cat rofl lol tears laughter tears joy funny',\n emjK1f63a: 'cat smile',\n emjK1f63b: 'cat love',\n emjK1f63c: 'cat heh',\n emjK1f63d: 'cat kiss kisses',\n emjK1f63e: 'cat pout pouting sad',\n emjK1f63f: 'cat cry cries sad',\n emjK1f4e8: 'incoming message mail email letter',\n emjK1f4e9: 'mail email letter sending send',\n emjK1f4eb: 'mail',\n emjK1f4ea: 'empty mailbox',\n emjK1f6bb: 'restroom toilet washroom bathroom',\n emjK1f6a5: 'traffic traffic light',\n emjK1f6ab: 'no entry no admittance',\n emjK1f689: 'station',\n emjK1f69a: 'delivery truck',\n emjK026fa: 'tent camp camping',\n emjK1f6a8: 'police siren emergency',\n emjK1f17f: 'parking parking spot',\n emjK02733: 'star asterisk',\n emjK02734: 'star',\n emjK02b50: 'star',\n emjK1f4c8: 'chart graph record profits trending up upwards skyrocketed',\n emjK1f4c9: 'chart graph record losses trending down downwards',\n emjK1f4ca: 'chart graph',\n emjK02764: 'love heart',\n};\n\n/**\n * @internal\n * Emoji Family\n */\nexport const EmojiFamilyStrings = {\n People: 'People',\n Nature: 'Nature',\n Activities: 'Activities',\n Food: 'Food',\n Travel: 'Travel',\n Symbols: 'Symbols',\n Objects: 'Objects',\n};\n\n/**\n * @internal\n * Emoji Description Key\n */\nexport type EmojiDescriptionStringKey = keyof typeof EmojiDescriptionStrings;\n\n/**\n * @internal\n * Emoji Keyword Key\n */\nexport type EmojiKeywordStringKey = keyof typeof EmojiKeywordStrings;\n","import { getObjectKeys } from 'roosterjs-content-model-dom';\nimport type { Emoji } from '../type/Emoji';\n\nconst Common1 = createEmoji('1f60a', ':) :-)');\nconst common2 = createEmoji('1f609', ';) ;-)');\nconst common3 = createEmoji('02764', '<3');\nconst common4 = createEmoji('1f61e', ':( :-(');\nconst common5 = createEmoji('1f603', ':D :-D');\n\n/**\n * @internal\n */\nexport const MoreEmoji: Emoji = {\n key: 'more',\n description: 'emjDMore',\n codePoint: '',\n};\n\n/**\n * @internal\n */\nexport const CommonEmojis = [Common1, common2, common3, common4, common5, MoreEmoji];\n\n/**\n * @internal\n */\nexport type EmojiFamilyKeys =\n | 'People'\n | 'Nature'\n | 'Activities'\n | 'Food'\n | 'Travel'\n | 'Symbols'\n | 'Objects';\n\n/**\n * @internal\n * NOTE: name for an emoji should be in lower case\n */\nexport const EmojiList: Record = {\n People: [\n createEmoji('1f601'),\n createEmoji('1f602'),\n common5,\n createEmoji('1f604'),\n createEmoji('1f605'),\n createEmoji('1f606'),\n createEmoji('1f607'),\n common2,\n Common1,\n createEmoji('1f642'),\n createEmoji('1f60b'),\n createEmoji('1f60c'),\n createEmoji('1f60d'),\n createEmoji('1f618'),\n createEmoji('1f61a'),\n createEmoji('1f61c'),\n createEmoji('1f61d', ':p :P :-p :-P'),\n createEmoji('1f60e', 'B) B-)'),\n createEmoji('1f60f'),\n createEmoji('1f636'),\n createEmoji('1f610', ':| :-|'),\n createEmoji('1f612'),\n createEmoji('1f633'),\n common4,\n createEmoji('1f620'),\n createEmoji('1f621'),\n createEmoji('1f614'),\n createEmoji('1f623'),\n createEmoji('1f616'),\n createEmoji('1f62b'),\n createEmoji('1f629'),\n createEmoji('1f624'),\n createEmoji('1f631'),\n createEmoji('1f628'),\n createEmoji('1f630'),\n createEmoji('1f625'),\n createEmoji('1f622'),\n createEmoji('1f62a'),\n createEmoji('1f613'),\n createEmoji('1f62d'),\n createEmoji('1f635'),\n createEmoji('1f632', ':o :O :-o :-O'),\n createEmoji('1f637'),\n createEmoji('1f4a4'),\n createEmojiWithNoKeyword('1f608'),\n createEmoji('1f47f'),\n createEmojiWithNoKeyword('1f479'),\n createEmojiWithNoKeyword('1f47a'),\n createEmoji('1f480'),\n createEmoji('1f47b'),\n createEmoji('1f47d'),\n createEmoji('1f63a'),\n createEmoji('1f638'),\n createEmoji('1f639'),\n createEmoji('1f63b'),\n createEmoji('1f63c'),\n createEmoji('1f63d'),\n createEmojiWithNoKeyword('1f640'),\n createEmoji('1f63f'),\n createEmoji('1f63e'),\n createEmoji('1f64c'),\n createEmoji('1f44f'),\n createEmoji('1f44b'),\n createEmoji('1f44d'),\n createEmoji('1f44e'),\n createEmoji('1f44a'),\n createEmoji('0270a'),\n createEmoji('0270b'),\n createEmoji('0270c'),\n createEmoji('1f44c'),\n createEmojiWithNoKeyword('1f450'),\n createEmojiWithNoKeyword('1f596'),\n createEmoji('1f4aa'),\n createEmoji('1f64f'),\n createEmoji('1f446'),\n createEmoji('1f447'),\n createEmoji('1f448'),\n createEmoji('1f449'),\n createEmoji('1f485'),\n createEmoji('1f444'),\n createEmoji('1f445'),\n createEmoji('1f442'),\n createEmoji('1f443'),\n createEmoji('1f440'),\n createEmojiWithNoKeyword('1f464'),\n createEmoji('1f476'),\n createEmoji('1f466'),\n createEmoji('1f467'),\n createEmoji('1f468'),\n createEmoji('1f469'),\n createEmoji('1f471'),\n createEmoji('1f474'),\n createEmoji('1f475'),\n createEmojiWithNoKeyword('1f472'),\n createEmojiWithNoKeyword('1f473'),\n createEmoji('1f46e'),\n createEmoji('1f477'),\n createEmoji('1f482'),\n createEmoji('1f385'),\n createEmoji('1f47c'),\n createEmoji('1f478'),\n createEmoji('1f470'),\n createEmoji('1f6b6'),\n createEmoji('1f3c3'),\n createEmoji('1f483'),\n createEmoji('1f46f'),\n createEmoji('1f46b'),\n createEmojiWithNoKeyword('1f647'),\n createEmoji('1f481'),\n createEmoji('1f645'),\n createEmoji('1f646'),\n createEmoji('1f64b'),\n createEmoji('1f64e'),\n createEmoji('1f64d'),\n createEmoji('1f487'),\n createEmoji('1f486'),\n createEmoji('1f491'),\n createEmoji('1f48f'),\n createEmoji('1f46a'),\n createEmoji('1f45a'),\n createEmoji('1f455'),\n createEmoji('1f456'),\n createEmoji('1f454'),\n createEmoji('1f457'),\n createEmoji('1f459'),\n createEmoji('1f458'),\n createEmoji('1f484'),\n createEmoji('1f48b'),\n createEmoji('1f463'),\n createEmojiWithNoKeyword('1f460'),\n createEmoji('1f461'),\n createEmoji('1f462'),\n createEmoji('1f45e'),\n createEmoji('1f45f'),\n createEmoji('1f452'),\n createEmoji('1f3a9'),\n createEmoji('1f393'),\n createEmoji('1f451'),\n createEmoji('1f392'),\n createEmoji('1f45d'),\n createEmoji('1f45b'),\n createEmoji('1f45c'),\n createEmoji('1f4bc'),\n createEmoji('1f453'),\n createEmoji('1f48d'),\n createEmoji('1f302'),\n ],\n Nature: [\n createEmoji('1f436'),\n createEmoji('1f431'),\n createEmoji('1f42d'),\n createEmoji('1f439'),\n createEmoji('1f430'),\n createEmoji('1f43b'),\n createEmoji('1f43c'),\n createEmojiWithNoKeyword('1f428'),\n createEmoji('1f42f'),\n createEmoji('1f42e'),\n createEmoji('1f437'),\n createEmoji('1f43d'),\n createEmoji('1f438'),\n createEmoji('1f419'),\n createEmoji('1f435'),\n createEmoji('1f648'),\n createEmoji('1f649'),\n createEmoji('1f64a'),\n createEmoji('1f412'),\n createEmoji('1f427'),\n createEmoji('1f426'),\n createEmojiWithNoKeyword('1f424'),\n createEmoji('1f423'),\n createEmoji('1f425'),\n createEmoji('1f43a'),\n createEmoji('1f417'),\n createEmoji('1f434'),\n createEmoji('1f41d'),\n createEmoji('1f41b'),\n createEmoji('1f40c'),\n createEmoji('1f41e'),\n createEmoji('1f41c'),\n createEmoji('1f40d'),\n createEmoji('1f422'),\n createEmoji('1f420'),\n createEmoji('1f41f'),\n createEmoji('1f421'),\n createEmoji('1f42c'),\n createEmoji('1f433'),\n createEmoji('1f414'),\n createEmoji('1f42b'),\n createEmoji('1f418'),\n createEmoji('1f411'),\n createEmoji('1f40e'),\n createEmoji('1f429'),\n createEmoji('1f43e'),\n createEmoji('1f432'),\n createEmoji('1f335'),\n createEmoji('1f384'),\n createEmoji('1f334'),\n createEmoji('1f331'),\n createEmoji('1f33f'),\n createEmoji('1f340'),\n createEmojiWithNoKeyword('1f38d'),\n createEmojiWithNoKeyword('1f38b'),\n createEmoji('1f343'),\n createEmoji('1f342'),\n createEmoji('1f341'),\n createEmoji('1f33e'),\n createEmoji('1f33a'),\n createEmoji('1f33b'),\n createEmoji('1f339'),\n createEmoji('1f33c'),\n createEmoji('1f337'),\n createEmoji('1f338'),\n createEmoji('1f344'),\n createEmoji('1f490'),\n createEmoji('1f330'),\n createEmoji('1f383'),\n createEmoji('1f41a'),\n createEmojiWithNoKeyword('1f30f'),\n createEmoji('1f315'),\n createEmoji('1f311'),\n createEmoji('1f313'),\n createEmoji('1f314'),\n createEmoji('1f31b'),\n createEmoji('1f319'),\n createEmoji('02b50'),\n createEmoji('1f31f'),\n createEmojiWithNoKeyword('1f4ab'),\n createEmoji('02728'),\n createEmojiWithNoKeyword('02600'),\n createEmojiWithNoKeyword('026c5'),\n createEmoji('02601'),\n createEmoji('026a1'),\n createEmoji('1f525'),\n createEmoji('1f4a5'),\n createEmoji('02744'),\n createEmoji('026c4'),\n createEmoji('1f4a8'),\n createEmoji('02614'),\n createEmojiWithNoKeyword('1f4a7'),\n createEmojiWithNoKeyword('1f4a6'),\n createEmoji('1f30a'),\n ],\n Activities: [\n createEmoji('026bd'),\n createEmoji('1f3c0'),\n createEmoji('1f3c8'),\n createEmoji('026be'),\n createEmoji('1f3be'),\n createEmoji('1f3b1'),\n createEmoji('026f3'),\n createEmoji('1f3bf'),\n createEmoji('1f3c2'),\n createEmoji('1f3a3'),\n createEmoji('1f3ca'),\n createEmoji('1f3c4'),\n createEmoji('1f3c6'),\n createEmoji('1f3bd'),\n createEmoji('1f3ab'),\n createEmoji('1f3ad'),\n createEmoji('1f3a8'),\n createEmoji('1f3aa'),\n createEmoji('1f3a4'),\n createEmoji('1f3a7'),\n createEmoji('1f3bc'),\n createEmoji('1f3b9'),\n createEmoji('1f3b7'),\n createEmoji('1f3ba'),\n createEmoji('1f3b8'),\n createEmoji('1f3bb'),\n createEmoji('1f3ac'),\n createEmoji('1f3ae'),\n createEmoji('1f47e'),\n createEmoji('1f3af'),\n createEmoji('1f3b2'),\n createEmoji('1f3b0'),\n createEmoji('1f3b3'),\n ],\n Food: [\n createEmoji('1f34f'),\n createEmoji('1f34e'),\n createEmoji('1f34a'),\n createEmoji('1f34c'),\n createEmoji('1f349'),\n createEmoji('1f347'),\n createEmoji('1f353'),\n createEmoji('1f348'),\n createEmoji('1f352'),\n createEmoji('1f351'),\n createEmoji('1f34d'),\n createEmoji('1f345'),\n createEmoji('1f346'),\n createEmoji('1f33d'),\n createEmoji('1f360'),\n createEmoji('1f35e'),\n createEmoji('1f357'),\n createEmoji('1f356'),\n createEmoji('1f364'),\n createEmoji('1f373'),\n createEmoji('1f354'),\n createEmoji('1f35f'),\n createEmoji('1f355'),\n createEmoji('1f35d'),\n createEmoji('1f35c'),\n createEmoji('1f372'),\n createEmoji('1f365'),\n createEmoji('1f363'),\n createEmoji('1f371'),\n createEmoji('1f35b'),\n createEmoji('1f359'),\n createEmoji('1f35a'),\n createEmoji('1f358'),\n createEmoji('1f362'),\n createEmoji('1f361'),\n createEmojiWithNoKeyword('1f367'),\n createEmoji('1f368'),\n createEmoji('1f366'),\n createEmoji('1f370'),\n createEmoji('1f36f'),\n createEmoji('1f382'),\n createEmoji('1f36e'),\n createEmoji('1f36c'),\n createEmoji('1f36d'),\n createEmoji('1f36b'),\n createEmoji('1f369'),\n createEmoji('1f36a'),\n createEmoji('1f37a'),\n createEmoji('1f37b'),\n createEmoji('1f377'),\n createEmoji('1f378'),\n createEmoji('1f379'),\n createEmoji('1f376'),\n createEmoji('1f375'),\n createEmoji('02615'),\n createEmoji('1f374'),\n ],\n Travel: [\n createEmoji('1f697'),\n createEmoji('1f695'),\n createEmoji('1f687'),\n createEmojiWithNoKeyword('1f699'),\n createEmoji('1f68c'),\n createEmoji('1f693'),\n createEmoji('1f69a'),\n createEmojiWithNoKeyword('1f691'),\n createEmoji('1f692'),\n createEmoji('1f6b2'),\n createEmoji('1f6a8'),\n createEmoji('1f683'),\n createEmoji('1f684'),\n createEmojiWithNoKeyword('1f685'),\n createEmoji('1f689'),\n createEmoji('02708'),\n createEmoji('026f5'),\n createEmojiWithNoKeyword('1f6a4'),\n createEmoji('1f680'),\n createEmoji('1f4ba'),\n createEmoji('02693'),\n createEmoji('1f6a7'),\n createEmoji('026fd'),\n createEmoji('1f68f'),\n createEmoji('1f6a5'),\n createEmoji('1f3c1'),\n createEmoji('1f6a2'),\n createEmoji('1f3a1'),\n createEmoji('1f3a2'),\n createEmoji('1f3a0'),\n createEmoji('1f301'),\n createEmojiWithNoKeyword('1f5fc'),\n createEmoji('1f3ed'),\n createEmoji('026f2'),\n createEmojiWithNoKeyword('1f391'),\n createEmojiWithNoKeyword('1f5fb'),\n createEmojiWithNoKeyword('1f30b'),\n createEmojiWithNoKeyword('1f5fe'),\n createEmoji('1f305'),\n createEmoji('1f304'),\n createEmoji('1f307'),\n createEmoji('1f306'),\n createEmoji('1f303'),\n createEmoji('1f309'),\n createEmoji('1f30c'),\n createEmoji('1f387'),\n createEmoji('1f386'),\n createEmoji('1f308'),\n createEmoji('1f3f0'),\n createEmojiWithNoKeyword('1f3ef'),\n createEmoji('1f5fd'),\n createEmoji('1f3e0'),\n createEmoji('1f3e1'),\n createEmoji('1f3e2'),\n createEmoji('1f3ec'),\n createEmoji('026fa'),\n createEmojiWithNoKeyword('1f3e3'),\n createEmojiWithNoKeyword('1f3e5'),\n createEmoji('1f3e6'),\n createEmoji('1f3e8'),\n createEmoji('1f3ea'),\n createEmoji('1f3eb'),\n createEmojiWithNoKeyword('1f3e9'),\n createEmoji('1f492'),\n createEmoji('026ea'),\n createEmoji('1f320'),\n ],\n Symbols: [\n common3,\n createEmoji('1f49b'),\n createEmoji('1f49a'),\n createEmoji('1f499'),\n createEmoji('1f494'),\n createEmoji('1f49c'),\n createEmoji('1f495'),\n createEmoji('1f493'),\n createEmoji('1f49e'),\n createEmoji('1f497'),\n createEmoji('1f498'),\n createEmoji('1f496'),\n createEmoji('1f49d'),\n createEmoji('1f49f'),\n createEmojiWithNoKeyword('1f52f'),\n createEmojiWithNoKeyword('026ce'),\n createEmoji('02648'),\n createEmoji('02649'),\n createEmoji('0264a'),\n createEmoji('0264b'),\n createEmoji('0264c'),\n createEmoji('0264d'),\n createEmoji('0264e'),\n createEmoji('0264f'),\n createEmoji('02650'),\n createEmoji('02651'),\n createEmoji('02652'),\n createEmoji('02653'),\n createEmojiWithNoKeyword('1f194'),\n createEmojiWithNoKeyword('1f4f4'),\n createEmojiWithNoKeyword('1f4f3'),\n createEmojiWithNoKeyword('1f19a'),\n createEmojiWithNoKeyword('1f4ae'),\n createEmojiWithNoKeyword('1f18e'),\n createEmojiWithNoKeyword('1f191'),\n createEmojiWithNoKeyword('1f198'),\n createEmojiWithNoKeyword('026d4'),\n createEmoji('1f4db'),\n createEmoji('1f6ab'),\n createEmojiWithNoKeyword('0274c'),\n createEmojiWithNoKeyword('02b55'),\n createEmojiWithNoKeyword('1f4a2'),\n createEmoji('02668'),\n createEmojiWithNoKeyword('1f51e'),\n createEmojiWithNoKeyword('02757'),\n createEmojiWithNoKeyword('02755'),\n createEmojiWithNoKeyword('02753'),\n createEmojiWithNoKeyword('02754'),\n createEmojiWithNoKeyword('02049'),\n createEmojiWithNoKeyword('1f4af'),\n createEmoji('1f531'),\n createEmojiWithNoKeyword('0303d'),\n createEmoji('026a0'),\n createEmojiWithNoKeyword('1f530'),\n createEmojiWithNoKeyword('1f22f'),\n createEmojiWithNoKeyword('1f4b9'),\n createEmoji('02733'),\n createEmojiWithNoKeyword('0274e'),\n createEmojiWithNoKeyword('02705'),\n createEmojiWithNoKeyword('1f4a0'),\n createEmoji('1f300'),\n createEmoji('1f3e7'),\n createEmoji('0267f'),\n createEmoji('1f6ad'),\n createEmojiWithNoKeyword('1f6be'),\n createEmoji('02734'),\n createEmoji('1f17f'),\n createEmoji('1f6b9'),\n createEmoji('1f6ba'),\n createEmojiWithNoKeyword('1f6bc'),\n createEmoji('1f6bb'),\n createEmoji('1f3a6'),\n createEmoji('1f4f6'),\n createEmojiWithNoKeyword('1f201'),\n createEmojiWithNoKeyword('1f196'),\n createEmojiWithNoKeyword('0267b'),\n createEmojiWithNoKeyword('1f197'),\n createEmojiWithNoKeyword('1f192'),\n createEmoji('02747'),\n createEmojiWithNoKeyword('1f195'),\n createEmojiWithNoKeyword('1f193'),\n createEmojiWithNoKeyword('1f51f'),\n createEmojiWithNoKeyword('1f522'),\n createEmojiWithNoKeyword('023ea'),\n createEmojiWithNoKeyword('023e9'),\n createEmojiWithNoKeyword('1f53c'),\n createEmojiWithNoKeyword('1f53d'),\n createEmojiWithNoKeyword('023eb'),\n createEmojiWithNoKeyword('023ec'),\n createEmojiWithNoKeyword('1f199'),\n createEmojiWithNoKeyword('02139'),\n createEmojiWithNoKeyword('1f524'),\n createEmojiWithNoKeyword('1f521'),\n createEmojiWithNoKeyword('1f520'),\n createEmojiWithNoKeyword('1f523'),\n createEmoji('1f3b5'),\n createEmoji('1f3b6'),\n createEmojiWithNoKeyword('03030'),\n createEmojiWithNoKeyword('027bf'),\n createEmojiWithNoKeyword('02714'),\n createEmoji('1f503'),\n createEmojiWithNoKeyword('02795'),\n createEmojiWithNoKeyword('02796'),\n createEmojiWithNoKeyword('02797'),\n createEmojiWithNoKeyword('02716'),\n createEmojiWithNoKeyword('027b0'),\n createEmojiWithNoKeyword('1f4b2'),\n createEmojiWithNoKeyword('1f4b1'),\n createEmojiWithNoKeyword('1f51a'),\n createEmojiWithNoKeyword('1f519'),\n createEmojiWithNoKeyword('1f51b'),\n createEmojiWithNoKeyword('1f51d'),\n createEmojiWithNoKeyword('1f51c'),\n createEmojiWithNoKeyword('02611'),\n createEmojiWithNoKeyword('1f518'),\n createEmojiWithNoKeyword('026ab'),\n createEmojiWithNoKeyword('1f534'),\n createEmojiWithNoKeyword('1f535'),\n createEmojiWithNoKeyword('1f539'),\n createEmojiWithNoKeyword('1f538'),\n createEmojiWithNoKeyword('1f536'),\n createEmojiWithNoKeyword('1f537'),\n createEmojiWithNoKeyword('1f53a'),\n createEmojiWithNoKeyword('1f53b'),\n createEmojiWithNoKeyword('02b1b'),\n createEmojiWithNoKeyword('02b1c'),\n createEmojiWithNoKeyword('1f532'),\n createEmojiWithNoKeyword('1f533'),\n createEmojiWithNoKeyword('1f50a'),\n createEmoji('1f4e3'),\n createEmojiWithNoKeyword('1f4e2'),\n createEmoji('1f514'),\n createEmojiWithNoKeyword('1f004'),\n createEmoji('1f0cf'),\n createEmojiWithNoKeyword('1f3b4'),\n createEmojiWithNoKeyword('1f4ac'),\n createEmoji('1f550'),\n createEmoji('1f551'),\n createEmoji('1f552'),\n createEmoji('1f553'),\n createEmoji('1f554'),\n createEmoji('1f555'),\n createEmoji('1f556'),\n createEmoji('1f557'),\n createEmoji('1f558'),\n createEmoji('1f559'),\n createEmoji('1f55a'),\n createEmoji('1f55b'),\n createEmojiWithNoKeyword('1f236'),\n createEmojiWithNoKeyword('1f250'),\n createEmojiWithNoKeyword('1f239'),\n createEmojiWithNoKeyword('1f21a'),\n createEmojiWithNoKeyword('1f232'),\n createEmojiWithNoKeyword('1f251'),\n createEmojiWithNoKeyword('1f234'),\n createEmojiWithNoKeyword('1f233'),\n createEmojiWithNoKeyword('1f23a'),\n createEmojiWithNoKeyword('1f235'),\n ],\n Objects: [\n createEmojiWithNoKeyword('0231a'),\n createEmoji('1f4f1'),\n createEmojiWithNoKeyword('1f4f2'),\n createEmoji('1f4bb'),\n createEmojiWithNoKeyword('1f4bd'),\n createEmoji('1f4be'),\n createEmoji('1f4bf'),\n createEmoji('1f4c0'),\n createEmoji('1f4fc'),\n createEmoji('1f4f7'),\n createEmoji('1f4f9'),\n createEmoji('1f3a5'),\n createEmoji('1f4de'),\n createEmojiWithNoKeyword('0260e'),\n createEmoji('1f4df'),\n createEmoji('1f4e0'),\n createEmoji('1f4fa'),\n createEmoji('1f4fb'),\n createEmojiWithNoKeyword('023f0'),\n createEmojiWithNoKeyword('0231b'),\n createEmojiWithNoKeyword('023f3'),\n createEmoji('1f4e1'),\n createEmoji('1f50b'),\n createEmoji('1f50c'),\n createEmoji('1f4a1'),\n createEmoji('1f526'),\n createEmojiWithNoKeyword('1f4b8'),\n createEmoji('1f4b5'),\n createEmoji('1f4b4'),\n createEmoji('1f4b0'),\n createEmoji('1f4b3'),\n createEmoji('1f48e'),\n createEmoji('1f527'),\n createEmoji('1f528'),\n createEmoji('1f529'),\n createEmojiWithNoKeyword('1f52b'),\n createEmoji('1f4a3'),\n createEmoji('1f52a'),\n createEmoji('1f6ac'),\n createEmoji('1f52e'),\n createEmoji('1f488'),\n createEmoji('1f48a'),\n createEmoji('1f489'),\n createEmoji('1f516'),\n createEmoji('1f6bd'),\n createEmoji('1f6c0'),\n createEmoji('1f511'),\n createEmoji('1f6aa'),\n createEmojiWithNoKeyword('1f5ff'),\n createEmoji('1f388'),\n createEmojiWithNoKeyword('1f38f'),\n createEmoji('1f380'),\n createEmoji('1f381'),\n createEmoji('1f38a'),\n createEmoji('1f389'),\n createEmojiWithNoKeyword('1f38e'),\n createEmoji('1f390'),\n createEmojiWithNoKeyword('1f38c'),\n createEmojiWithNoKeyword('1f3ee'),\n createEmoji('02709'),\n createEmoji('1f4e9'),\n createEmoji('1f4e8'),\n createEmoji('1f48c'),\n createEmoji('1f4e7'),\n createEmoji('1f4ee'),\n createEmoji('1f4ea'),\n createEmoji('1f4eb'),\n createEmoji('1f4e6'),\n createEmojiWithNoKeyword('1f4e5'),\n createEmojiWithNoKeyword('1f4e4'),\n createEmojiWithNoKeyword('1f4dc'),\n createEmojiWithNoKeyword('1f4c3'),\n createEmojiWithNoKeyword('1f4d1'),\n createEmoji('1f4ca'),\n createEmoji('1f4c8'),\n createEmoji('1f4c9'),\n createEmojiWithNoKeyword('1f4c4'),\n createEmoji('1f4c5'),\n createEmojiWithNoKeyword('1f4c6'),\n createEmojiWithNoKeyword('1f4c7'),\n createEmoji('1f4cb'),\n createEmoji('1f4c1'),\n createEmojiWithNoKeyword('1f4c2'),\n createEmoji('1f4f0'),\n createEmoji('1f4d3'),\n createEmojiWithNoKeyword('1f4d5'),\n createEmojiWithNoKeyword('1f4d7'),\n createEmojiWithNoKeyword('1f4d8'),\n createEmojiWithNoKeyword('1f4d9'),\n createEmojiWithNoKeyword('1f4d4'),\n createEmoji('1f4d2'),\n createEmoji('1f4da'),\n createEmojiWithNoKeyword('1f4d6'),\n createEmojiWithNoKeyword('1f517'),\n createEmoji('1f4ce'),\n createEmoji('02702'),\n createEmojiWithNoKeyword('1f4d0'),\n createEmoji('1f4cf'),\n createEmoji('1f4cc'),\n createEmoji('1f4cd'),\n createEmojiWithNoKeyword('1f6a9'),\n createEmoji('1f510'),\n createEmoji('1f512'),\n createEmoji('1f513'),\n createEmoji('1f50f'),\n createEmojiWithNoKeyword('02712'),\n createEmoji('1f4dd'),\n createEmoji('0270f'),\n createEmoji('1f50d'),\n createEmojiWithNoKeyword('1f50e'),\n ],\n};\n\n/**\n * @internal\n */\nexport const EmojiFabricIconCharacterMap: Record = {\n Activities: 'Soccer',\n Food: 'EatDrink',\n Nature: 'FangBody',\n Objects: 'Lightbulb',\n People: 'Emoji2',\n Symbols: 'Heart',\n Travel: 'Car',\n};\n\n/**\n * @internal\n */\nexport function forEachEmojiFamily(\n callback: (emojis: Emoji[], family: EmojiFamilyKeys) => boolean\n): void {\n const families = getObjectKeys(EmojiList);\n for (const family of families) {\n if (!callback(EmojiList[family], family)) {\n break;\n }\n }\n}\n\n/**\n * @internal\n */\nexport function forEachEmoji(callback: (emoji: Emoji) => boolean): void {\n forEachEmojiFamily(emojis => {\n for (const emoji of emojis) {\n if (!callback(emoji)) {\n return false;\n }\n }\n return true;\n });\n}\n\n// get emoji code point from an emoji key\nfunction getEmojiCodePoint(key: string): string | null {\n const unicode = parseInt(key, 16);\n if (isNaN(unicode)) {\n return null;\n }\n\n // All emojis have codepoints between the following ranges:\n // 0x1F7000 - 0x1F700 -> has surrogate pairs\n // 0x00023 - 0x04000 -> does not have surrogate pairs\n let surrogatePairs: number[];\n if (unicode >= 0x1f000 && unicode <= 0x1f700) {\n const hi = Math.floor((unicode - 0x10000) / 0x400) + 0xd800;\n const lo = ((unicode - 0x10000) % 0x400) + 0xdc00;\n surrogatePairs = [hi, lo];\n } else if (unicode >= 0x00023 && unicode <= 0x04000) {\n surrogatePairs = [unicode];\n }\n\n return String.fromCharCode(...surrogatePairs!);\n}\n\nfunction createEmoji(key: string, shortcut?: string): Emoji {\n return {\n key,\n description: `emjD${key}`,\n keywords: `emjK${key}`,\n shortcut,\n codePoint: getEmojiCodePoint(key) ?? undefined,\n };\n}\n\nfunction createEmojiWithNoKeyword(key: string): Emoji {\n return { key, description: `emjD${key}`, codePoint: getEmojiCodePoint(key) ?? undefined };\n}\n","import { forEachEmoji } from './emojiList';\nimport type { Emoji } from '../type/Emoji';\n\n/**\n * @internal\n */\nexport function searchEmojis(search: string, strings: Record): Emoji[] {\n const shortcutMatch = matchShortcut(search);\n search = search.toLowerCase();\n const fullMatch: Emoji[] = shortcutMatch ? [shortcutMatch] : [];\n const partialMatch: Emoji[] = [];\n const partialSearch = ' ' + (search[0] == ':' ? search.substr(1) : search);\n forEachEmoji(emoji => {\n const keywords = (emoji.keywords && strings[emoji.keywords]) || '';\n const searchableKeywords = emoji.keywords ? ' ' + keywords.toLowerCase() + ' ' : '';\n const index = searchableKeywords.indexOf(partialSearch);\n if (index >= 0) {\n (searchableKeywords[index + partialSearch.length] == ' '\n ? fullMatch\n : partialMatch\n ).push(emoji);\n }\n return true;\n });\n\n return fullMatch.concat(partialMatch);\n}\n\nfunction matchShortcut(search: string): Emoji | null {\n let result: Emoji | null = null;\n search = ' ' + search + ' ';\n forEachEmoji((emoji: Emoji) => {\n if (emoji.shortcut && (' ' + emoji.shortcut + ' ').indexOf(search) >= 0) {\n result = emoji;\n return false;\n }\n return true;\n });\n return result;\n}\n","import * as React from 'react';\nimport InputDialogItem from './InputDialogItem';\nimport { DefaultButton, PrimaryButton } from '@fluentui/react/lib/Button';\nimport { getLocalizedString } from '../../common/index';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport { Dialog, DialogFooter, DialogType, IDialogContentProps } from '@fluentui/react/lib/Dialog';\nimport type { DialogItem } from '../type/DialogItem';\nimport type {\n CancelButtonStringKey,\n LocalizedStrings,\n OkButtonStringKey,\n} from '../../common/index';\n\n/**\n * @internal\n */\nexport interface InputDialogProps {\n dialogTitleKey: Strings;\n unlocalizedTitle: string;\n items: Record>;\n strings?: LocalizedStrings;\n onChange?: (\n changedItemName: ItemNames,\n newValue: string,\n currentValues: Record\n ) => Record | null;\n onOk: (values: Record) => void;\n onCancel: () => void;\n rows?: number;\n}\n\n/**\n * @internal\n */\nexport default function InputDialog(\n props: InputDialogProps\n) {\n const {\n items,\n strings,\n dialogTitleKey,\n unlocalizedTitle,\n onOk,\n onCancel,\n onChange,\n rows,\n } = props;\n const dialogContentProps: IDialogContentProps = React.useMemo(\n () => ({\n type: DialogType.normal,\n title: getLocalizedString(strings, dialogTitleKey, unlocalizedTitle),\n styles: {\n innerContent: {\n height: rows ? '200px' : undefined,\n },\n },\n }),\n [strings, dialogTitleKey, unlocalizedTitle]\n );\n const [currentValues, setCurrentValues] = React.useState>(\n getObjectKeys(items).reduce((result: Record, key) => {\n result[key] = items[key].initValue;\n return result;\n }, {} as Record)\n );\n\n const onSubmit = React.useCallback(() => {\n onOk?.(currentValues);\n }, [onOk, currentValues]);\n const onItemChanged = React.useCallback(\n (itemName: ItemNames, newValue: string) => {\n if (itemName in items) {\n const newValues = onChange?.(itemName, newValue, {\n ...currentValues,\n }) || {\n ...currentValues,\n [itemName]: newValue,\n };\n\n setCurrentValues(newValues);\n }\n },\n [setCurrentValues, currentValues, items]\n );\n\n return (\n \n );\n}\n","import * as React from 'react';\nimport { getLocalizedString } from '../../common/index';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport { TextField } from '@fluentui/react/lib/TextField';\nimport type { DialogItem } from '../type/DialogItem';\nimport type { LocalizedStrings } from '../../common/index';\n\n/**\n * @internal\n */\nexport interface InputDialogItemProps {\n itemName: ItemNames;\n strings: LocalizedStrings | undefined;\n items: Record>;\n currentValues: Record;\n onEnterKey: () => void;\n onChanged: (itemName: ItemNames, newValue: string) => void;\n rows?: number;\n}\n\nconst classNames = mergeStyleSets({\n inputBox: {\n width: '100%',\n minWidth: '250px',\n height: '32px',\n margin: '5px 0 16px',\n borderRadius: '2px',\n },\n});\n\n/**\n * @internal\n */\nexport default function InputDialogItem(\n props: InputDialogItemProps\n) {\n const { itemName, strings, items, currentValues, onChanged, onEnterKey, rows } = props;\n const { labelKey, unlocalizedLabel, autoFocus } = items[itemName];\n const value = currentValues[itemName];\n const onValueChange = React.useCallback(\n (_, newValue) => {\n onChanged(itemName, newValue);\n },\n [itemName, onChanged]\n );\n\n const onKeyPress = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key == 'Enter') {\n onEnterKey();\n }\n },\n [onEnterKey]\n );\n\n return (\n
\n {labelKey ?
{getLocalizedString(strings, labelKey, unlocalizedLabel)}
: null}\n
\n \n
\n
\n );\n}\n","export { showInputDialog } from './utils/showInputDialog';\nexport { DialogItem } from './type/DialogItem';\n","import * as React from 'react';\nimport InputDialog from '../component/InputDialog';\nimport { renderReactComponent } from '../../common/utils/renderReactComponent';\nimport type { DialogItem } from '../type/DialogItem';\nimport type {\n CancelButtonStringKey,\n LocalizedStrings,\n OkButtonStringKey,\n UIUtilities,\n} from '../../common/index';\n\n/**\n * Show a dialog with input items\n * @param uiUtilities UI utilities to help render the dialog\n * @param dialogTitleKey Localized string key for title of this dialog\n * @param unlocalizedTitle Unlocalized title string of this dialog. It will be used if a valid localized string is not found using dialogTitleKey\n * @param items Input items in this dialog\n * @param strings Localized strings\n * @param onChange An optional callback that will be invoked when input item value is changed\n */\nexport function showInputDialog(\n uiUtilities: UIUtilities,\n dialogTitleKey: Strings,\n unlocalizedTitle: string,\n items: Record>,\n strings?: LocalizedStrings,\n onChange?: (\n changedItemName: ItemNames,\n newValue: string,\n currentValues: Record\n ) => Record | null,\n rows?: number\n): Promise | null> {\n return new Promise | null>(resolve => {\n let disposer: null | (() => void) = null;\n const onOk = (result: Record) => {\n disposer?.();\n resolve(result);\n };\n const onCancel = () => {\n disposer?.();\n resolve(null);\n };\n const component = (\n \n );\n\n disposer = renderReactComponent(uiUtilities, component);\n });\n}\n","import * as React from 'react';\nimport { ButtonKeys, Buttons } from '../utils/buttons';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { getLocalizedString } from '../../common/index';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport { getPositionRect } from '../utils/getPositionRect';\nimport { Icon } from '@fluentui/react/lib/Icon';\nimport { IconButton } from '@fluentui/react/lib/Button';\nimport { memoizeFunction } from '@fluentui/react/lib/Utilities';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport { renderReactComponent } from '../../common/utils/renderReactComponent';\nimport { useTheme } from '@fluentui/react/lib/Theme';\nimport type { LocalizedStrings, UIUtilities } from '../../common/index';\nimport type { Theme } from '@fluentui/react/lib/Theme';\nimport type { PasteOptionButtonKeys, PasteOptionStringKeys } from '../type/PasteOptionStringKeys';\n\nconst getPasteOptionClassNames = memoizeFunction((theme: Theme) => {\n const palette = theme.palette;\n\n return mergeStyleSets({\n pastePane: {\n paddingLeft: '4px',\n minWidth: '72px',\n },\n optionPane: {\n textAlign: 'center',\n padding: '4px',\n },\n icon: {\n fontSize: '14px',\n },\n buttonsContainer: {\n justifyContent: 'center',\n display: 'flex',\n },\n button: {\n width: '32px',\n height: '32px',\n margin: '0 4px 4px 0',\n borderRadius: '2px',\n flex: '0 0 auto',\n '&:hover': {\n backgroundColor: palette.themeLighter,\n },\n },\n isChecked: {\n backgroundColor: palette.themeLight,\n '&:hover': {\n backgroundColor: palette.themeLighter,\n },\n },\n });\n});\n\ninterface PasteOptionButtonProps {\n buttonName: PasteOptionButtonKeys;\n className: string;\n paste: (key: PasteOptionButtonKeys) => void;\n strings?: LocalizedStrings;\n}\n\nfunction PasteOptionButton(props: PasteOptionButtonProps) {\n const { buttonName, paste, strings, className } = props;\n const button = Buttons[buttonName];\n const onClick = React.useCallback(() => {\n paste(buttonName);\n }, [paste, buttonName]);\n\n return (\n \n );\n}\n\ninterface PasteOptionProps {\n strings?: LocalizedStrings;\n container: Node;\n offset: number;\n isRtl: boolean;\n paste: (key: PasteOptionButtonKeys) => void;\n dismiss: () => void;\n}\n\n/**\n * @internal\n */\nexport interface PasteOptionPane {\n getSelectedKey: () => PasteOptionButtonKeys | null;\n setSelectedKey: (index: PasteOptionButtonKeys) => void;\n dismiss: () => void;\n}\n\nconst PasteOptionComponent = React.forwardRef(function PasteOptionFunc(\n props: PasteOptionProps,\n ref: React.Ref\n) {\n const { strings, container, offset, paste, dismiss, isRtl } = props;\n const theme = useTheme();\n const classNames = getPasteOptionClassNames(theme);\n const [selectedKey, setSelectedKey] = React.useState(null);\n\n const rect = getPositionRect(container, offset);\n const target = rect && { x: props.isRtl ? rect.left : rect.right, y: rect.bottom };\n\n React.useImperativeHandle(\n ref,\n () => ({\n dismiss,\n setSelectedKey,\n getSelectedKey: () => selectedKey,\n }),\n [dismiss, paste, isRtl, selectedKey, setSelectedKey]\n );\n\n const buttonPane = React.useRef(null);\n const onDismiss = React.useCallback(\n (evt?: Event | React.MouseEvent | React.KeyboardEvent) => {\n const target =\n evt instanceof FocusEvent && evt.relatedTarget instanceof Node\n ? evt.relatedTarget\n : null;\n const clickOnButtonPane =\n target &&\n buttonPane.current &&\n (buttonPane.current == target || buttonPane.current.contains(target));\n if (!clickOnButtonPane) {\n dismiss();\n }\n },\n [dismiss]\n );\n\n const onClickShowSubMenu = React.useCallback(\n (event: React.MouseEvent) => {\n setSelectedKey(ButtonKeys[0]);\n event.preventDefault();\n event.stopPropagation();\n },\n [setSelectedKey]\n );\n\n return (\n \n
\n
\n \n {getLocalizedString(strings, 'pasteOptionPaneText', '(Ctrl)')}\n
\n {selectedKey && (\n
\n {getObjectKeys(Buttons).map(key => (\n \n ))}\n
\n )}\n
\n \n );\n});\n\n/**\n * @internal Show paste open pane component\n * @param uiUtilities The UI utilities object to help render component\n * @param position Target position\n * @param strings Localize string for this component\n * @param onPaste A callback to be called when user click on a paste button\n * @param ref Reference object for this component\n */\nexport function showPasteOptionPane(\n uiUtilities: UIUtilities,\n container: Node,\n offset: number,\n onPaste: (key: PasteOptionButtonKeys) => void,\n ref: React.RefObject,\n strings?: LocalizedStrings\n) {\n let disposer: (() => void) | null = null;\n const onDismiss = () => {\n disposer?.();\n disposer = null;\n };\n\n disposer = renderReactComponent(\n uiUtilities,\n \n );\n}\n","export { PasteOptionButtonKeys, PasteOptionStringKeys } from './type/PasteOptionStringKeys';\nexport { createPasteOptionPlugin } from './plugin/createPasteOptionPlugin';\n","import * as React from 'react';\nimport { ButtonKeys, Buttons } from '../utils/buttons';\nimport { ChangeSource } from 'roosterjs-content-model-dom';\nimport { ClipboardData, IEditor, PluginEvent } from 'roosterjs-content-model-types';\nimport { paste } from 'roosterjs-content-model-core';\nimport { showPasteOptionPane } from '../component/showPasteOptionPane';\nimport type { PasteOptionPane } from '../component/showPasteOptionPane';\nimport type { LocalizedStrings, ReactEditorPlugin, UIUtilities } from '../../common/index';\nimport type { PasteOptionButtonKeys, PasteOptionStringKeys } from '../type/PasteOptionStringKeys';\n\nclass PasteOptionPlugin implements ReactEditorPlugin {\n private clipboardData: ClipboardData | null = null;\n private editor: IEditor | null = null;\n private uiUtilities: UIUtilities | null = null;\n private pasteOptionRef = React.createRef();\n\n constructor(private strings?: LocalizedStrings) {}\n\n getName() {\n return 'PasteOption';\n }\n\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n dispose() {\n this.pasteOptionRef.current?.dismiss();\n this.editor = null;\n }\n\n onPluginEvent(event: PluginEvent) {\n if (event.eventType == 'scroll') {\n if (this.pasteOptionRef.current) {\n this.showPasteOptionPane();\n }\n } else if (this.pasteOptionRef.current) {\n this.handlePasteOptionPaneEvent(event);\n } else if (event.eventType == 'contentChanged') {\n if (event.source == ChangeSource.Paste) {\n const clipboardData = event.data as ClipboardData;\n\n // Only show paste option when we pasted HTML with some format\n if (clipboardData?.text && clipboardData.types?.indexOf('text/html') >= 0) {\n this.clipboardData = clipboardData;\n this.showPasteOptionPane();\n }\n }\n }\n }\n\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n\n private handlePasteOptionPaneEvent(event: PluginEvent) {\n if (event.eventType == 'keyDown' && this.pasteOptionRef.current) {\n const selectedKey = this.pasteOptionRef.current.getSelectedKey();\n\n if (!selectedKey) {\n switch (event.rawEvent.key) {\n case 'Control':\n this.pasteOptionRef.current.setSelectedKey(ButtonKeys[0]);\n cancelEvent(event.rawEvent);\n break;\n\n case 'Escape':\n this.pasteOptionRef.current.dismiss();\n cancelEvent(event.rawEvent);\n break;\n\n default:\n this.pasteOptionRef.current.dismiss();\n break;\n }\n } else {\n const keyboardEvent = event.rawEvent;\n\n if (keyboardEvent.key != 'Control' && keyboardEvent.ctrlKey) {\n // Dismiss the paste option when pressing hotkey CTRL+\n this.pasteOptionRef.current.dismiss();\n return;\n }\n\n for (let i = 0; i < ButtonKeys.length; i++) {\n const key = ButtonKeys[i];\n const button = Buttons[key];\n if (button.shortcut == String.fromCharCode(keyboardEvent.which)) {\n this.onPaste(key);\n cancelEvent(keyboardEvent);\n return;\n }\n }\n\n switch (keyboardEvent.key) {\n case 'Escape':\n this.pasteOptionRef.current.dismiss();\n break;\n case 'ArrowLeft':\n case 'ArrowRight':\n const buttonCount = ButtonKeys.length;\n const diff =\n (keyboardEvent.key == 'ArrowRight') == this.uiUtilities?.isRightToLeft()\n ? -1\n : 1;\n this.pasteOptionRef.current.setSelectedKey(\n ButtonKeys[\n (ButtonKeys.indexOf(selectedKey) + diff + buttonCount) % buttonCount\n ]\n );\n break;\n case 'Enter':\n this.onPaste(selectedKey);\n break;\n case 'Control':\n // Noop\n break;\n default:\n this.pasteOptionRef.current.dismiss();\n return;\n }\n\n cancelEvent(keyboardEvent);\n }\n }\n }\n\n private onPaste = (key: PasteOptionButtonKeys) => {\n if (this.clipboardData && this.editor) {\n this.editor.focus();\n\n switch (key) {\n case 'pasteOptionPasteAsIs':\n paste(this.editor, this.clipboardData);\n break;\n\n case 'pasteOptionPasteText':\n paste(this.editor, this.clipboardData, 'asPlainText');\n break;\n\n case 'pasteOptionMergeFormat':\n paste(this.editor, this.clipboardData, 'mergeFormat');\n break;\n case 'pasteOptionPasteAsImage':\n paste(this.editor, this.clipboardData, 'asImage');\n }\n\n this.pasteOptionRef.current?.setSelectedKey(key);\n }\n };\n\n private showPasteOptionPane() {\n this.pasteOptionRef.current?.dismiss();\n\n const selection = this.editor.getDOMSelection();\n\n if (selection?.type == 'range' && this.uiUtilities) {\n showPasteOptionPane(\n this.uiUtilities,\n selection.range.startContainer,\n selection.range.startOffset,\n this.onPaste,\n this.pasteOptionRef,\n this.strings\n );\n }\n }\n}\n\nfunction cancelEvent(event: UIEvent) {\n event.preventDefault();\n event.stopPropagation();\n}\n\n/**\n * Create a new instance of PasteOption plugin to show an option pane when paste, so that user can choose\n * an option to change the paste result, including:\n * - Paste as is\n * - Paste as text\n * - Paste and merge format\n * @param strings Localized string for this plugin\n * @returns A paste option plugin\n */\nexport function createPasteOptionPlugin(\n strings?: LocalizedStrings\n): ReactEditorPlugin {\n return new PasteOptionPlugin(strings);\n}\n","import type { PasteOptionButtonKeys } from '../type/PasteOptionStringKeys';\n\n/**\n * @internal\n */\nexport interface PasteOptionButtonType {\n unlocalizedText: string;\n shortcut: string;\n icon: string;\n}\n\n/**\n * @internal\n */\nexport const Buttons: Record = {\n pasteOptionPasteAsIs: {\n unlocalizedText: 'Paste as is',\n shortcut: 'P',\n icon: 'Paste',\n },\n pasteOptionPasteText: {\n unlocalizedText: 'Paste text',\n shortcut: 'T',\n icon: 'PasteAsText',\n },\n pasteOptionMergeFormat: {\n unlocalizedText: 'Paste text and merge format',\n shortcut: 'M',\n icon: 'ClipboardList',\n },\n pasteOptionPasteAsImage: {\n unlocalizedText: 'Paste as image',\n shortcut: 'I',\n icon: 'PictureFill',\n },\n};\n\n/**\n * @internal\n */\nexport const ButtonKeys: PasteOptionButtonKeys[] = Object.keys(Buttons) as PasteOptionButtonKeys[];\n","import { isNodeOfType, normalizeRect } from 'roosterjs-content-model-dom';\nimport { Rect } from 'roosterjs-content-model-types';\n\n/**\n * Get bounding rect of this position\n * @param position The position to get rect from\n */\nexport function getPositionRect(container: Node, offset: number): Rect | null {\n let range = container.ownerDocument.createRange();\n\n range.setStart(container, offset);\n\n // 1) try to get rect using range.getBoundingClientRect()\n let rect = normalizeRect(range.getBoundingClientRect());\n\n if (rect) {\n return rect;\n }\n\n // 2) try to get rect using range.getClientRects\n while (container.lastChild) {\n if (offset == container.childNodes.length) {\n container = container.lastChild;\n offset = container.childNodes.length;\n } else {\n container = container.childNodes[offset];\n offset = 0;\n }\n }\n\n const rects = range.getClientRects && range.getClientRects();\n rect = rects && rects.length == 1 ? normalizeRect(rects[0]) : null;\n if (rect) {\n return rect;\n }\n\n // 3) if node is text node, try inserting a SPAN and get the rect of SPAN for others\n if (isNodeOfType(container, 'TEXT_NODE')) {\n const span = container.ownerDocument.createElement('span');\n\n span.textContent = '\\u200b';\n range.insertNode(span);\n rect = normalizeRect(span.getBoundingClientRect());\n span.parentNode.removeChild(span);\n\n if (rect) {\n return rect;\n }\n }\n\n // 4) try getBoundingClientRect on element\n if (isNodeOfType(container, 'ELEMENT_NODE') && container.getBoundingClientRect) {\n rect = normalizeRect(container.getBoundingClientRect());\n\n if (rect) {\n return rect;\n }\n }\n\n return null;\n}\n","import { setAlignment } from 'roosterjs-content-model-api';\nimport type { AlignCenterButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * @internal\n * \"Align center\" button on the format ribbon\n */\nexport const alignCenterButton: RibbonButton = {\n key: 'buttonNameAlignCenter',\n unlocalizedText: 'Align center',\n iconName: 'AlignCenter',\n onClick: editor => {\n setAlignment(editor, 'center');\n },\n};\n","import { setAlignment } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * @internal\n * \"Align justify\" button on the format ribbon\n */\nexport const alignJustifyButton: RibbonButton<'buttonNameAlignJustify'> = {\n key: 'buttonNameAlignJustify',\n unlocalizedText: 'Align justify',\n iconName: 'AlignJustify',\n onClick: editor => {\n setAlignment(editor, 'justify');\n },\n};\n","import { setAlignment } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { AlignLeftButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Align left\" button on the format ribbon\n */\nexport const alignLeftButton: RibbonButton = {\n key: 'buttonNameAlignLeft',\n unlocalizedText: 'Align left',\n iconName: 'AlignLeft',\n onClick: editor => {\n setAlignment(editor, 'left');\n },\n};\n","import { setAlignment } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { AlignRightButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Align right\" button on the format ribbon\n */\nexport const alignRightButton: RibbonButton = {\n key: 'buttonNameAlignRight',\n unlocalizedText: 'Align right',\n iconName: 'AlignRight',\n onClick: editor => {\n setAlignment(editor, 'right');\n },\n};\n","import { renderColorPicker } from '../../colorPicker/component/renderColorPicker';\nimport { setBackgroundColor } from 'roosterjs-content-model-api';\nimport {\n BackgroundColorDropDownItems,\n BackgroundColors,\n getBackgroundColorValue,\n} from '../../colorPicker/utils/backgroundColors';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../../colorPicker/utils/getClassNamesForColorPicker';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { BackgroundColorButtonStringKey } from '../type/RibbonButtonStringKeys';\n\nconst Key: 'buttonNameBackgroundColor' = 'buttonNameBackgroundColor';\n\n/**\n * @internal\n * \"Background color\" button on the format ribbon\n */\nexport const backgroundColorButton: RibbonButton = {\n dropDownMenu: {\n items: BackgroundColorDropDownItems,\n itemClassName: getColorPickerItemClassName(),\n allowLivePreview: true,\n itemRender: (item, onClick) => renderColorPicker(item, BackgroundColors, onClick),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n },\n key: Key,\n unlocalizedText: 'Background color',\n iconName: 'FabricTextHighlight',\n onClick: (editor, key) => {\n // This check will always be true, add it here just to satisfy compiler\n if (key != 'buttonNameBackgroundColor') {\n setBackgroundColor(editor, getBackgroundColorValue(key).lightModeColor);\n }\n },\n};\n","import { toggleBlockQuote } from 'roosterjs-content-model-api';\nimport type { QuoteButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * @internal\n * \"Block quote\" button on the format ribbon\n */\nexport const blockQuoteButton: RibbonButton = {\n key: 'buttonNameQuote',\n unlocalizedText: 'Quote',\n iconName: 'RightDoubleQuote',\n isChecked: formatState => !!formatState.isBlockQuote,\n onClick: editor => {\n toggleBlockQuote(editor);\n },\n};\n","import { toggleBold } from 'roosterjs-content-model-api';\nimport type { BoldButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * @internal\n * \"Bold\" button on the format ribbon\n */\nexport const boldButton: RibbonButton = {\n key: 'buttonNameBold',\n unlocalizedText: 'Bold',\n iconName: 'Bold',\n isChecked: formatState => formatState.isBold,\n onClick: editor => {\n toggleBold(editor);\n },\n};\n","import { toggleBullet } from 'roosterjs-content-model-api';\nimport type { BulletedListButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * @internal\n * \"Bulleted list\" button on the format ribbon\n */\nexport const bulletedListButton: RibbonButton = {\n key: 'buttonNameBulletedList',\n unlocalizedText: 'Bulleted list',\n iconName: 'BulletedList',\n isChecked: formatState => formatState.isBullet,\n onClick: editor => {\n toggleBullet(editor);\n },\n};\n","import { clearFormat } from 'roosterjs-content-model-api';\nimport type { ClearFormatButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * \"Clear format\" button on the format ribbon\n */\nexport const clearFormatButton: RibbonButton = {\n key: 'buttonNameClearFormat',\n unlocalizedText: 'Clear format',\n iconName: 'ClearFormatting',\n onClick: editor => {\n clearFormat(editor);\n },\n};\n","import { toggleCode } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { CodeButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Code\" button on the format ribbon\n */\nexport const codeButton: RibbonButton = {\n key: 'buttonNameCode',\n unlocalizedText: 'Code',\n iconName: 'Code',\n isChecked: formatState => !!formatState.isCodeInline,\n onClick: editor => {\n toggleCode(editor);\n },\n};\n","import { changeFontSize } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { DecreaseFontSizeButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Decrease font size\" button on the format ribbon\n */\nexport const decreaseFontSizeButton: RibbonButton = {\n key: 'buttonNameDecreaseFontSize',\n unlocalizedText: 'Decrease font size',\n iconName: 'FontDecrease',\n onClick: editor => {\n changeFontSize(editor, 'decrease');\n },\n};\n","import { setIndentation } from 'roosterjs-content-model-api';\nimport type { DecreaseIndentButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * @internal\n * \"Decrease indent\" button on the format ribbon\n */\nexport const decreaseIndentButton: RibbonButton = {\n key: 'buttonNameDecreaseIndent',\n unlocalizedText: 'Decrease indent',\n iconName: 'DecreaseIndentLegacy',\n flipWhenRtl: true,\n onClick: editor => {\n setIndentation(editor, 'outdent');\n },\n};\n","import { setFontName } from 'roosterjs-content-model-api';\nimport type { FontButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\ninterface FontName {\n name: string;\n family: string;\n localizedName?: string;\n}\nconst FontNames: FontName[] = [\n { name: 'Arial', family: 'Arial,Helvetica,sans-serif' },\n { name: 'Arial Black', family: \"'Arial Black',Arial,sans-serif\" },\n { name: 'Calibri', family: 'Calibri,Helvetica,sans-serif' },\n { name: 'Calibri Light', family: \"'Calibri Light','Helvetica Light',sans-serif\" },\n { name: 'Cambria', family: 'Cambria,Georgia,serif' },\n { name: 'Candara', family: 'Candara,Optima,sans-serif' },\n { name: 'Century Gothic', family: \"'Century Gothic',sans-serif\" },\n { name: 'Comic Sans MS', family: \"'Comic Sans MS',Chalkboard,cursive\" },\n { name: 'Consolas', family: 'Consolas,Courier,monospace' },\n { name: 'Constantia', family: \"Constantia,'Hoefler Text',serif\" },\n { name: 'Corbel', family: 'Corbel,Skia,sans-serif' },\n { name: 'Courier New', family: \"'Courier New',monospace\" },\n {\n name: 'Franklin Gothic Book',\n family: \"'Franklin Gothic Book','Avenir Next Condensed',sans-serif\",\n },\n {\n name: 'Franklin Gothic Demi',\n family: \"'Franklin Gothic Demi','Avenir Next Condensed Demi Bold',sans-serif\",\n },\n {\n name: 'Franklin Gothic Medium',\n family: \"'Franklin Gothic Medium','Avenir Next Condensed Medium',sans-serif\",\n },\n { name: 'Garamond', family: 'Garamond,Georgia,serif' },\n { name: 'Georgia', family: 'Georgia,serif' },\n { name: 'Impact', family: 'Impact,Charcoal,sans-serif' },\n { name: 'Lucida Console', family: \"'Lucida Console',Monaco,monospace\" },\n { name: 'Lucida Handwriting', family: \"'Lucida Handwriting','Apple Chancery',cursive\" },\n { name: 'Lucida Sans Unicode', family: \"'Lucida Sans Unicode','Lucida Grande',sans-serif\" },\n { name: 'Palatino Linotype', family: \"'Palatino Linotype','Book Antiqua',Palatino,serif\" },\n {\n name: 'Segoe UI',\n family: \"'Segoe UI', 'Segoe UI Web (West European)', 'Helvetica Neue', sans-serif\",\n },\n { name: 'Sitka Heading', family: \"'Sitka Heading',Cochin,serif\" },\n { name: 'Sitka Text', family: \"'Sitka Text',Cochin,serif\" },\n { name: 'Tahoma', family: 'Tahoma,Geneva,sans-serif' },\n { name: 'Times', family: \"Times,'Times New Roman',serif\" },\n { name: 'Times New Roman', family: \"'Times New Roman',Times,serif\" },\n { name: 'Trebuchet MS', family: \"'Trebuchet MS',Trebuchet,sans-serif\" },\n { name: 'TW Cen MT', family: \"'TW Cen MT','Century Gothic',sans-serif\" },\n { name: 'Verdana', family: 'Verdana,Geneva,sans-serif' },\n { name: '-', family: 'FontDivider0' }, //divider between fonts for different scripts (order is by style)\n {\n name: 'Microsoft YaHei',\n family: \"'Microsoft YaHei','微软雅黑',STHeiti,sans-serif\",\n localizedName: '微软雅黑',\n }, //chineseS Microsoft recommended font\n { name: 'SimHei', family: \"SimHei,'黑体',STHeiti,sans-serif\", localizedName: '黑体' }, //chineseS\n {\n name: 'NSimSun',\n family: \"NSimSun,'新宋体',SimSun,'宋体',SimSun-ExtB,'宋体-ExtB',STSong,serif\",\n localizedName: '新宋体',\n }, //chineseS\n { name: 'FangSong', family: \"FangSong,'仿宋',STFangsong,serif\", localizedName: '仿宋' }, //chineseS\n { name: 'SimLi', family: \"SimLi,'隶书','Baoli SC',serif\", localizedName: '隶书' }, //chineseS\n { name: 'KaiTi', family: \"KaiTi,'楷体',STKaiti,serif\", localizedName: '楷体' }, //chineseS\n { name: '-', family: 'FontDivider1' }, //divider between fonts for different scripts (order is by style)\n {\n name: 'Microsoft JhengHei',\n family: \"'Microsoft JhengHei','微軟正黑體','Apple LiGothic',sans-serif\",\n localizedName: '微軟正黑體',\n }, //chineseT Microsoft recommended font\n {\n name: 'PMingLiU',\n family: \"PMingLiU,'新細明體',PMingLiU-ExtB,'新細明體-ExtB','Apple LiSung',serif\",\n localizedName: '新細明體',\n }, //chineseT\n { name: 'DFKai-SB', family: \"DFKai-SB,'標楷體','BiauKai',serif\", localizedName: '標楷體' }, //chineseT\n { name: '-', family: 'FontDivider2' }, //divider between fonts for different scripts (order is alphabetical by foundry)\n {\n name: 'Meiryo',\n family: \"Meiryo,'メイリオ','Hiragino Sans',sans-serif\",\n localizedName: 'メイリオ',\n }, //japanese\n {\n name: 'MS PGothic',\n family:\n \"'MS PGothic','MS Pゴシック','MS Gothic','MS ゴシック','Hiragino Kaku Gothic ProN',sans-serif\",\n localizedName: 'MS Pゴシック',\n }, //japanese\n {\n name: 'MS PMincho',\n family: \"'MS PMincho','MS P明朝','MS Mincho','MS 明朝','Hiragino Mincho ProN',serif\",\n localizedName: 'MS P明朝',\n }, //japanese\n {\n name: 'Yu Gothic',\n family: \"'Yu Gothic','游ゴシック','YuGothic',sans-serif\",\n localizedName: '游ゴシック',\n }, //japanese\n { name: 'Yu Mincho', family: \"'Yu Mincho','游明朝','YuMincho',serif\", localizedName: '游明朝' }, //japanese\n { name: '-', family: 'FontDivider3' }, //divider between fonts for different scripts (order is for legacy reasons)\n {\n name: 'Malgun Gothic',\n family: \"'Malgun Gothic','맑은 고딕',AppleGothic,sans-serif\",\n localizedName: '맑은 고딕',\n }, //korean Microsoft recommended font\n { name: 'Gulim', family: \"Gulim,'굴림','Nanum Gothic',sans-serif\", localizedName: '굴림' }, //korean\n { name: 'Dotum', family: \"Dotum,'돋움',AppleGothic,sans-serif\", localizedName: '돋움' }, //korean\n { name: 'Batang', family: \"Batang,'바탕',AppleMyungjo,serif\", localizedName: '바탕' }, //korean\n { name: 'BatangChe', family: \"BatangChe,'바탕체',AppleMyungjo,serif\", localizedName: '바탕체' }, //korean\n { name: 'Gungsuh', family: \"Gungsuh,'궁서',GungSeo,serif\", localizedName: '궁서' }, //korean\n { name: '-', family: 'FontDivider4' }, //divider between fonts for different scripts (order is alphabetical)\n { name: 'Leelawadee UI', family: \"'Leelawadee UI',Thonburi,sans-serif\" }, //thai Microsoft recommended font\n { name: 'Angsana New', family: \"'Angsana New','Leelawadee UI',Sathu,serif\" }, //thai\n { name: 'Cordia New', family: \"'Cordia New','Leelawadee UI',Silom,sans-serif\" }, //thai\n { name: 'DaunPenh', family: \"DaunPenh,'Leelawadee UI','Khmer MN',sans-serif\" }, //khmer\n { name: '-', family: 'FontDivider5' }, //divider between fonts for different scripts (order is alphabetical)\n { name: 'Nirmala UI', family: \"'Nirmala UI',sans-serif\" }, //indic Microsoft recommended font\n { name: 'Gautami', family: \"Gautami,'Nirmala UI','Telugu MN',sans-serif\" }, //indic\n { name: 'Iskoola Pota', family: \"'Iskoola Pota','Nirmala UI','Sinhala MN',sans-serif\" }, //indic\n { name: 'Kalinga', family: \"Kalinga,'Nirmala UI','Oriya MN',sans-serif\" }, //indic\n { name: 'Kartika', family: \"Kartika,'Nirmala UI','Malayalam MN',sans-serif\" }, //indic\n { name: 'Latha', family: \"Latha,'Nirmala UI','Tamil MN',sans-serif\" }, //indic\n { name: 'Mangal', family: \"Mangal,'Nirmala UI','Devanagari Sangam MN',sans-serif\" }, //indic\n { name: 'Raavi', family: \"Raavi,'Nirmala UI','Gurmukhi MN',sans-serif\" }, //indic\n { name: 'Shruti', family: \"Shruti,'Nirmala UI','Gujarati Sangam MN',sans-serif\" }, //indic\n { name: 'Tunga', family: \"Tunga,'Nirmala UI','Kannada MN',sans-serif\" }, //indic\n { name: 'Vrinda', family: \"Vrinda,'Nirmala UI','Bangla MN',sans-serif\" }, //indic\n { name: '-', family: 'FontDivider6' }, //divider between fonts for different scripts\n { name: 'Nyala', family: 'Nyala,Kefa,sans-serif' }, //other-ethiopic\n { name: 'Sylfaen', family: 'Sylfaen,Mshtakan,Menlo,serif' }, //other-armenian-georgian\n];\n\nconst DropDownItems = FontNames.reduce((items, font) => {\n items[font.family] = font.localizedName || font.name;\n return items;\n}, >{});\n\nconst LowerCaseFontMap = FontNames.reduce((items, font) => {\n items[font.name.toLowerCase()] = font.family;\n return items;\n}, >{});\n\nconst FirstFontRegex = /^['\"]?([^'\",]+)/i;\n\n/**\n * @internal\n * \"Font\" button on the format ribbon\n */\nexport const fontButton: RibbonButton = {\n key: 'buttonNameFont',\n unlocalizedText: 'Font',\n iconName: 'Font',\n dropDownMenu: {\n items: DropDownItems,\n getSelectedItemKey: formatState => {\n const matches = formatState.fontName?.match(FirstFontRegex);\n const firstName = matches?.[1]?.toLowerCase();\n const selectedKey = (firstName && LowerCaseFontMap[firstName]) || '';\n\n return selectedKey;\n },\n allowLivePreview: true,\n },\n onClick: (editor, font) => {\n setFontName(editor, font);\n },\n};\n","import { setFontSize } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { FontSizeButtonStringKey } from '../type/RibbonButtonStringKeys';\n\nconst FONT_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72];\n\n/**\n * @internal\n * \"Font Size\" button on the format ribbon\n */\nexport const fontSizeButton: RibbonButton = {\n key: 'buttonNameFontSize',\n unlocalizedText: 'Font size',\n iconName: 'FontSize',\n dropDownMenu: {\n items: FONT_SIZES.reduce((map, size) => {\n map[size + 'pt'] = size.toString();\n return map;\n }, >{}),\n getSelectedItemKey: formatState => formatState.fontSize,\n allowLivePreview: true,\n },\n onClick: (editor, size) => {\n setFontSize(editor, size);\n },\n};\n","import { changeFontSize } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { IncreaseFontSizeButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Increase font size\" button on the format ribbon\n */\nexport const increaseFontSizeButton: RibbonButton = {\n key: 'buttonNameIncreaseFontSize',\n unlocalizedText: 'Increase font size',\n iconName: 'FontIncrease',\n onClick: editor => {\n changeFontSize(editor, 'increase');\n },\n};\n","import { setIndentation } from 'roosterjs-content-model-api';\nimport type { IncreaseIndentButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * @internal\n * \"Increase indent\" button on the format ribbon\n */\nexport const increaseIndentButton: RibbonButton = {\n key: 'buttonNameIncreaseIndent',\n unlocalizedText: 'Increase indent',\n iconName: 'IncreaseIndentLegacy',\n flipWhenRtl: true,\n onClick: editor => {\n setIndentation(editor, 'indent');\n },\n};\n","import { insertImage } from 'roosterjs-content-model-api';\nimport { InsertImageButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport { RibbonButton } from '../type/RibbonButton';\n\nfunction createInput(doc: Document): HTMLInputElement {\n const input = doc.createElement('input');\n\n input.type = 'file';\n input.accept = 'image/*';\n input.setAttribute('display', 'none');\n\n return input;\n}\n\n/**\n * @internal\n * \"Insert image\" button on the format ribbon\n */\nexport const insertImageButton: RibbonButton = {\n key: 'buttonNameInsertImage',\n unlocalizedText: 'Insert image',\n iconName: 'Photo2',\n onClick: editor => {\n const document = editor.getDocument();\n const fileInput = createInput(document) as HTMLInputElement;\n document.body.appendChild(fileInput);\n\n fileInput.addEventListener('change', () => {\n if (fileInput.files) {\n for (let i = 0; i < fileInput.files.length; i++) {\n insertImage(editor, fileInput.files[i]);\n }\n }\n });\n\n try {\n fileInput.click();\n } finally {\n document.body.removeChild(fileInput);\n }\n },\n};\n","import { adjustLinkSelection, insertLink } from 'roosterjs-content-model-api';\nimport { showInputDialog } from 'roosterjs-react/lib/inputDialog';\nimport type { InsertLinkButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * @internal\n * \"Insert link\" button on the format ribbon\n */\nexport const insertLinkButton: RibbonButton = {\n key: 'buttonNameInsertLink',\n unlocalizedText: 'Insert link',\n iconName: 'Link',\n onClick: (editor, _, strings, uiUtilities) => {\n const [displayText, url] = adjustLinkSelection(editor);\n const items = {\n url: {\n autoFocus: true,\n labelKey: 'insertLinkDialogUrl' as const,\n unlocalizedLabel: 'Web address (URL)',\n initValue: url,\n },\n displayText: {\n labelKey: 'insertLinkDialogDisplayAs' as const,\n unlocalizedLabel: 'Display as',\n initValue: displayText,\n },\n };\n\n showInputDialog(\n uiUtilities,\n 'insertLinkTitle',\n 'Insert link',\n items,\n strings,\n (itemName, newValue, values) => {\n if (itemName == 'url' && values.displayText == values.url) {\n values.displayText = newValue;\n values.url = newValue;\n return values;\n } else {\n return null;\n }\n }\n ).then(result => {\n editor.focus();\n\n if (result && result.url && (result.displayText != displayText || result.url != url)) {\n insertLink(editor, result.url, result.url, result.displayText);\n }\n });\n },\n};\n","import * as React from 'react';\nimport { FocusZone, FocusZoneDirection } from '@fluentui/react/lib/FocusZone';\nimport { insertTable } from 'roosterjs-content-model-api';\nimport { isNodeOfType } from 'roosterjs-content-model-dom';\nimport { mergeStyleSets } from '@fluentui/react/lib/Styling';\nimport { TableCellCoordinate } from 'roosterjs-content-model-types';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { InsertTableButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\n\nconst MaxRows = 10;\nconst MaxCols = 10;\nconst classNames = mergeStyleSets({\n tableButton: {\n width: '15px',\n height: '15px',\n margin: '1px 1px 0 0',\n border: 'solid 1px #a19f9d',\n display: 'inline-block',\n cursor: 'pointer',\n backgroundColor: 'transparent',\n },\n hovered: {\n border: 'solid 1px #DB626C',\n },\n tablePane: {\n width: '160px',\n minWidth: 'auto',\n padding: '4px',\n boxSizing: 'content-box',\n },\n tablePaneInner: {\n lineHeight: '12px',\n },\n title: {\n margin: '5px 0',\n },\n});\n\nexport const insertTableButton: RibbonButton = {\n key: 'buttonNameInsertTable',\n unlocalizedText: 'Insert table',\n iconName: 'Table',\n dropDownMenu: {\n items: {\n insertTablePane: '{0} x {1} table',\n },\n itemRender: (item, onClick) => {\n return ;\n },\n commandBarSubMenuProperties: {\n className: classNames.tablePane,\n },\n },\n onClick: (editor, key) => {\n const { row, col } = parseKey(key);\n insertTable(editor, col, row);\n },\n};\n\nfunction parseKey(key: string): TableCellCoordinate {\n const [row, col] = key.split(',');\n return {\n row: parseInt(row),\n col: parseInt(col),\n };\n}\n\nfunction InsertTablePane(props: {\n item: IContextualMenuItem;\n onClick: (\n e: React.MouseEvent | React.KeyboardEvent,\n item: IContextualMenuItem\n ) => void;\n}) {\n const { item, onClick } = props;\n const [col, setCol] = React.useState(1);\n const [row, setRow] = React.useState(1);\n\n const updateSize = React.useCallback(\n (t?: Node) => {\n if (t && isNodeOfType(t, 'ELEMENT_NODE')) {\n const col = parseInt(t.dataset.col ?? '-1');\n const row = parseInt(t.dataset.row ?? '-1');\n\n if (col > 0 && col <= MaxCols && row > 0 && row <= MaxRows) {\n setCol(col);\n setRow(row);\n }\n }\n },\n [setCol, setRow]\n );\n\n const onMouseEnter = React.useCallback(\n (e: React.MouseEvent) => {\n updateSize(e.target as Node);\n },\n [updateSize]\n );\n\n const onClickButton = React.useCallback(\n (e: React.MouseEvent) => {\n onClick(e, {\n ...item,\n key: createKey(row, col),\n });\n },\n [row, col, onClick]\n );\n\n const ariaLabels = React.useMemo(() => {\n const result: string[][] = [];\n for (let i = 1; i <= MaxCols; i++) {\n const col: string[] = [];\n for (let j = 1; j <= MaxRows; j++) {\n col[j] = formatText(item.text ?? '', i, j);\n }\n result[i] = col;\n }\n return result;\n }, [item.text]);\n\n const items = React.useMemo(() => {\n const items: JSX.Element[] = [];\n\n for (let i = 1; i <= MaxRows; i++) {\n for (let j = 1; j <= MaxCols; j++) {\n const key = `cell_${i}_${j}`;\n const isSelected = j <= col && i <= row;\n items.push(\n \n );\n }\n }\n\n return items;\n }, [col, row]);\n\n const text = formatText(item.text ?? '', row, col);\n\n return (\n
\n
{text}
\n \n {items}\n \n
\n );\n}\n\nfunction formatText(text: string, row: number, col: number) {\n return text.replace('{0}', col.toString()).replace('{1}', row.toString());\n}\n\nfunction createKey(row: number, col: number) {\n return `${row},${col}`;\n}\n","import { toggleItalic } from 'roosterjs-content-model-api';\nimport type { ItalicButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\n/**\n * @internal\n * \"Italic\" button on the format ribbon\n */\nexport const italicButton: RibbonButton = {\n key: 'buttonNameItalic',\n unlocalizedText: 'Italic',\n iconName: 'Italic',\n isChecked: formatState => formatState.isItalic,\n onClick: editor => {\n toggleItalic(editor);\n },\n};\n","import { setDirection } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { LtrButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Left to right\" button on the format ribbon\n */\nexport const ltrButton: RibbonButton = {\n key: 'buttonNameLtr',\n unlocalizedText: 'Left to right',\n iconName: 'BidiLtr',\n onClick: editor => {\n setDirection(editor, 'ltr');\n },\n};\n","import type { RibbonButton } from '../type/RibbonButton';\nimport type { MoreCommandsButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"More commands\" (overflow) button on the format ribbon\n */\nexport const moreCommands: RibbonButton = {\n key: 'buttonNameMoreCommands',\n unlocalizedText: 'More commands',\n iconName: 'MoreCommands',\n onClick: () => {\n return true;\n },\n};\n","import { toggleNumbering } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { NumberedListButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Numbering list\" button on the format ribbon\n */\nexport const numberedListButton: RibbonButton = {\n key: 'buttonNameNumberedList',\n unlocalizedText: 'Numbered List',\n iconName: 'NumberedList',\n isChecked: formatState => formatState.isNumbering,\n onClick: editor => {\n toggleNumbering(editor);\n },\n};\n","import { redo } from 'roosterjs-content-model-core';\nimport { RedoButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport { RibbonButton } from '../type/RibbonButton';\n\n/**\n * @internal\n * \"Undo\" button on the format ribbon\n */\nexport const redoButton: RibbonButton = {\n key: 'buttonNameRedo',\n unlocalizedText: 'Redo',\n iconName: 'Redo',\n isDisabled: formatState => !formatState.canRedo,\n onClick: editor => {\n redo(editor);\n },\n commandBarProperties: {\n buttonStyles: {\n icon: { paddingBottom: '10px' },\n },\n },\n};\n","import { removeLink } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { RemoveLinkButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Remove link\" button on the format ribbon\n */\nexport const removeLinkButton: RibbonButton = {\n key: 'buttonNameRemoveLink',\n unlocalizedText: 'Remove link',\n iconName: 'RemoveLink',\n isDisabled: formatState => !formatState.canUnlink,\n onClick: editor => {\n removeLink(editor);\n },\n};\n","import { setDirection } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { RtlButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Right to left\" button on the format ribbon\n */\nexport const rtlButton: RibbonButton = {\n key: 'buttonNameRtl',\n unlocalizedText: 'Right to left',\n iconName: 'BidiRtl',\n onClick: editor => {\n setDirection(editor, 'rtl');\n },\n};\n","import { setHeadingLevel } from 'roosterjs-content-model-api';\nimport type { HeadingButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport type { RibbonButton } from '../type/RibbonButton';\n\nconst keys: HeadingButtonStringKey[] = [\n 'buttonNameNoHeading',\n 'buttonNameHeading1',\n 'buttonNameHeading2',\n 'buttonNameHeading3',\n 'buttonNameHeading4',\n 'buttonNameHeading5',\n 'buttonNameHeading6',\n];\nconst headings: Partial> = {\n buttonNameHeading1: 'Heading 1',\n buttonNameHeading2: 'Heading 2',\n buttonNameHeading3: 'Heading 3',\n buttonNameHeading4: 'Heading 4',\n buttonNameHeading5: 'Heading 5',\n buttonNameHeading6: 'Heading 6',\n '-': '-',\n buttonNameNoHeading: 'No heading',\n};\n\nexport const setHeadingLevelButton: RibbonButton = {\n key: 'buttonNameHeading',\n unlocalizedText: 'Heading',\n iconName: 'Header1',\n dropDownMenu: {\n items: headings,\n getSelectedItemKey: formatState => {\n return (formatState.headingLevel ?? 0) > 0\n ? 'heading' + formatState.headingLevel\n : 'noHeading';\n },\n },\n onClick: (editor, key) => {\n const headingLevel = keys.indexOf(key);\n\n setHeadingLevel(editor, headingLevel as 0 | 1 | 2 | 3 | 4 | 5 | 6);\n },\n};\n","import { toggleStrikethrough } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { StrikethroughButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Strikethrough\" button on the format ribbon\n */\nexport const strikethroughButton: RibbonButton = {\n key: 'buttonNameStrikethrough',\n unlocalizedText: 'Strikethrough',\n iconName: 'Strikethrough',\n isChecked: formatState => formatState.isStrikeThrough,\n onClick: editor => {\n toggleStrikethrough(editor);\n },\n};\n","import { toggleSubscript } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { SubscriptButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Subscript\" button on the format ribbon\n */\nexport const subscriptButton: RibbonButton = {\n key: 'buttonNameSubscript',\n unlocalizedText: 'Subscript',\n iconName: 'Subscript',\n isChecked: formatState => formatState.isSubscript,\n onClick: editor => {\n toggleSubscript(editor);\n },\n};\n","import { toggleSuperscript } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { SuperscriptButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Superscript\" button on the format ribbon\n */\nexport const superscriptButton: RibbonButton = {\n key: 'buttonNameSuperscript',\n unlocalizedText: 'Superscript',\n iconName: 'Superscript',\n isChecked: formatState => formatState.isSuperscript,\n onClick: editor => {\n toggleSuperscript(editor);\n },\n};\n","import { renderColorPicker } from '../../colorPicker/component/renderColorPicker';\nimport { RibbonButton } from '../type/RibbonButton';\nimport { setTextColor } from 'roosterjs-content-model-api';\nimport { TextColorButtonStringKey } from '../type/RibbonButtonStringKeys';\nimport {\n getTextColorValue,\n TextColorDropDownItems,\n TextColors,\n} from '../../colorPicker/utils/textColors';\nimport {\n getColorPickerContainerClassName,\n getColorPickerItemClassName,\n} from '../../colorPicker/utils/getClassNamesForColorPicker';\n\nconst Key: 'buttonNameTextColor' = 'buttonNameTextColor';\n\n/**\n * @internal\n * \"Text color\" button on the format ribbon\n */\nexport const textColorButton: RibbonButton = {\n dropDownMenu: {\n items: TextColorDropDownItems,\n itemClassName: getColorPickerItemClassName(),\n allowLivePreview: true,\n itemRender: (item, onClick) => renderColorPicker(item, TextColors, onClick),\n commandBarSubMenuProperties: {\n className: getColorPickerContainerClassName(),\n },\n },\n key: Key,\n unlocalizedText: 'Text color',\n iconName: 'FontColor',\n onClick: (editor, key) => {\n // This check will always be true, add it here just to satisfy compiler\n if (key != 'buttonNameTextColor') {\n setTextColor(editor, getTextColorValue(key).lightModeColor);\n }\n },\n};\n","import { toggleUnderline } from 'roosterjs-content-model-api';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { UnderlineButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Underline\" button on the format ribbon\n */\nexport const underlineButton: RibbonButton = {\n key: 'buttonNameUnderline',\n unlocalizedText: 'Underline',\n iconName: 'Underline',\n isChecked: formatState => formatState.isUnderline,\n onClick: editor => {\n toggleUnderline(editor);\n },\n};\n","import { undo } from 'roosterjs-content-model-core';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { UndoButtonStringKey } from '../type/RibbonButtonStringKeys';\n\n/**\n * @internal\n * \"Undo\" button on the format ribbon\n */\nexport const undoButton: RibbonButton = {\n key: 'buttonNameUndo',\n unlocalizedText: 'Undo',\n iconName: 'undo',\n isDisabled: formatState => !formatState.canUndo,\n onClick: editor => {\n undo(editor);\n },\n commandBarProperties: {\n buttonStyles: {\n icon: { paddingBottom: '10px' },\n },\n },\n};\n","import * as React from 'react';\nimport { CommandBar, ICommandBarItemProps, ICommandBarProps } from '@fluentui/react/lib/CommandBar';\nimport { FocusZoneDirection } from '@fluentui/react/lib/FocusZone';\nimport { getLocalizedString, LocalizedStrings } from 'roosterjs-react';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport { IContextualMenuItem, IContextualMenuItemProps } from '@fluentui/react/lib/ContextualMenu';\nimport { IRenderFunction } from '@fluentui/react/lib/Utilities';\nimport { mergeStyles } from '@fluentui/react/lib/Styling';\nimport { moreCommands } from '../buttons/moreCommands';\nimport { RibbonPlugin } from '../type/RibbonPlugin';\nimport type { RibbonButton } from '../type/RibbonButton';\nimport type { ContentModelFormatState } from 'roosterjs-content-model-types';\n\nconst ribbonClassName = mergeStyles({\n '& .ms-CommandBar': {\n padding: '0px',\n },\n});\n\nconst rtlIcon = mergeStyles({\n transform: 'scaleX(-1)',\n});\n\ninterface RibbonProps extends Partial {\n /**\n * The ribbon plugin used for connect editor and the ribbon\n */\n plugin: RibbonPlugin;\n\n /**\n * Buttons in this ribbon\n */\n buttons: RibbonButton[];\n\n /**\n * A dictionary of localized strings for all buttons.\n * Key of the dictionary is the key of each button, value will be the string or a function to return the string\n */\n strings?: LocalizedStrings;\n}\n\n/**\n * The format ribbon component of roosterjs-react\n * @param props Properties of format ribbon component\n * @returns The format ribbon component\n */\nexport function Ribbon(props: RibbonProps) {\n const { plugin, buttons, strings, dir } = props;\n const [formatState, setFormatState] = React.useState(null);\n const isRtl = dir == 'rtl';\n\n const onClick = React.useCallback(\n (_, item?: IContextualMenuItem) => {\n if (item) {\n plugin?.onButtonClick(item.data, item.key, strings);\n }\n },\n [plugin, strings]\n );\n\n const onHover = React.useCallback(\n (button: RibbonButton, key: string) => {\n plugin.startLivePreview(button, key as T, strings);\n },\n [plugin, strings]\n );\n\n const onDismiss = React.useCallback(() => {\n plugin.stopLivePreview();\n }, [plugin]);\n\n const flipIcon = React.useCallback(\n (\n props?: IContextualMenuItemProps,\n defaultRender?: (props?: IContextualMenuItemProps) => JSX.Element | null\n ): JSX.Element | null => {\n if (!defaultRender) {\n return null;\n }\n return {defaultRender(props)};\n },\n []\n );\n\n const commandBarItems = React.useMemo((): ICommandBarItemProps[] => {\n return buttons.map(\n (button): ICommandBarItemProps => {\n const selectedItem =\n formatState && button.dropDownMenu?.getSelectedItemKey?.(formatState);\n const dropDownMenu = button.dropDownMenu;\n\n const result: ICommandBarItemProps = {\n key: button.key,\n data: button,\n iconProps: {\n iconName: button.iconName,\n },\n onRenderIcon: isRtl && button.flipWhenRtl ? flipIcon : undefined,\n iconOnly: true,\n text: getLocalizedString(strings, button.key, button.unlocalizedText),\n ariaLabel: getLocalizedString(strings, button.key, button.unlocalizedText),\n canCheck: true,\n checked: (formatState && button.isChecked?.(formatState)) || false,\n disabled: (formatState && button.isDisabled?.(formatState)) || false,\n ...(button.commandBarProperties || {}),\n };\n\n const contextMenuItemRenderer: IRenderFunction = (\n props,\n defaultRenderer\n ) =>\n props && defaultRenderer ? (\n
onHover(button, props.key)}>\n {defaultRenderer(props)}\n
\n ) : null;\n\n if (dropDownMenu) {\n result.subMenuProps = {\n shouldFocusOnMount: true,\n focusZoneProps: { direction: FocusZoneDirection.bidirectional },\n onMenuDismissed: onDismiss,\n onItemClick: onClick,\n onRenderContextualMenuItem: dropDownMenu.allowLivePreview\n ? contextMenuItemRenderer\n : undefined,\n items: getObjectKeys(dropDownMenu.items).map(key => ({\n key: key,\n text: getLocalizedString(\n strings,\n key,\n dropDownMenu.items[key]\n ),\n data: button,\n canCheck: !!dropDownMenu.getSelectedItemKey,\n checked: selectedItem == key || false,\n className: dropDownMenu.itemClassName,\n onRender: dropDownMenu.itemRender\n ? item => dropDownMenu.itemRender!(item, onClick)\n : undefined,\n })),\n ...(dropDownMenu.commandBarSubMenuProperties || {}),\n };\n } else {\n result.onClick = onClick;\n }\n\n return result;\n }\n );\n }, [buttons, formatState, isRtl, strings, onClick, onDismiss, onHover]);\n\n React.useEffect(() => {\n const disposer = plugin?.registerFormatChangedCallback(setFormatState);\n\n return () => {\n disposer?.();\n };\n }, [plugin]);\n\n const moreCommandsBtn = moreCommands as RibbonButton;\n\n return (\n (\n strings,\n moreCommandsBtn.key,\n moreCommandsBtn.unlocalizedText\n ),\n ...props?.overflowButtonProps,\n }}\n />\n );\n}\n","export { RibbonPlugin } from './type/RibbonPlugin';\nexport { RibbonButton } from './type/RibbonButton';\nexport { RibbonButtonDropDown } from './type/RibbonButtonDropDown';\nexport { RibbonProps } from './type/RibbonProps';\nexport {\n BoldButtonStringKey,\n ItalicButtonStringKey,\n UnderlineButtonStringKey,\n FontButtonStringKey,\n FontSizeButtonStringKey,\n IncreaseFontSizeButtonStringKey,\n DecreaseFontSizeButtonStringKey,\n TextColorButtonStringKey,\n BackgroundColorButtonStringKey,\n BulletedListButtonStringKey,\n NumberedListButtonStringKey,\n MoreCommandsButtonStringKey,\n DecreaseIndentButtonStringKey,\n IncreaseIndentButtonStringKey,\n QuoteButtonStringKey,\n AlignLeftButtonStringKey,\n AlignCenterButtonStringKey,\n AlignRightButtonStringKey,\n AlignJustifyButtonStringKey,\n InsertLinkButtonStringKey,\n RemoveLinkButtonStringKey,\n InsertTableButtonStringKey,\n InsertImageButtonStringKey,\n SuperscriptButtonStringKey,\n SubscriptButtonStringKey,\n StrikethroughButtonStringKey,\n HeadingButtonStringKey,\n HeaderButtonStringKey,\n CodeButtonStringKey,\n LtrButtonStringKey,\n RtlButtonStringKey,\n UndoButtonStringKey,\n RedoButtonStringKey,\n ClearFormatButtonStringKey,\n AllButtonStringKeys,\n CellShadeButtonStringKey,\n} from './type/RibbonButtonStringKeys';\n\nexport { Ribbon } from './component/Ribbon';\nexport { createRibbonPlugin } from './plugin/createRibbonPlugin';\n","import { getFormatState } from 'roosterjs-content-model-api';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport { LocalizedStrings, UIUtilities } from 'roosterjs-react';\nimport { RibbonButton } from '../type/RibbonButton';\nimport type { RibbonPlugin } from '../type/RibbonPlugin';\nimport { ContentModelFormatState, IEditor, PluginEvent } from 'roosterjs-content-model-types';\n\nclass RibbonPluginImpl implements RibbonPlugin {\n private editor: IEditor | null = null;\n private onFormatChanged: ((formatState: ContentModelFormatState) => void) | null = null;\n private timer = 0;\n private formatState: ContentModelFormatState | null = null;\n private uiUtilities: UIUtilities | null = null;\n\n /**\n * Construct a new instance of RibbonPlugin object\n * @param delayUpdateTime The time to wait before refresh the button when user do some editing operation in editor\n */\n constructor(private delayUpdateTime: number = 200) {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Ribbon';\n }\n\n /**\n * Initialize this plugin\n * @param editor The editor instance\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n switch (event.eventType) {\n case 'editorReady':\n case 'contentChanged':\n case 'zoomChanged':\n this.updateFormat();\n break;\n\n case 'keyDown':\n case 'mouseUp':\n this.delayUpdate();\n break;\n }\n }\n\n /**\n * Set the UI utilities objects to this plugin to help render additional UI elements\n * @param uiUtilities The UI utilities object to set\n */\n setUIUtilities(uiUtilities: UIUtilities) {\n this.uiUtilities = uiUtilities;\n }\n\n /**\n * Register a callback to be invoked when format state of editor is changed, returns a disposer function.\n */\n registerFormatChangedCallback(callback: (formatState: ContentModelFormatState) => void) {\n this.onFormatChanged = callback;\n\n return () => {\n this.onFormatChanged = null;\n };\n }\n\n /**\n * When user clicks on a button, call this method to let the plugin to handle this click event\n * @param button The button that is clicked\n * @param key Key of child menu item that is clicked if any\n * @param strings The localized string map for this button\n */\n onButtonClick(\n button: RibbonButton,\n key: T,\n strings?: LocalizedStrings\n ) {\n if (this.editor && this.uiUtilities) {\n this.editor.stopShadowEdit();\n\n button.onClick(this.editor, key, strings, this.uiUtilities);\n\n if (button.isChecked || button.isDisabled || button.dropDownMenu?.getSelectedItemKey) {\n this.updateFormat();\n }\n }\n }\n\n /**\n * Enter live preview state (shadow edit) of editor if there is a non-collapsed selection\n * @param button The button that triggered this action\n * @param key Key of the hovered button sub item\n * @param strings The localized string map for this button\n */\n startLivePreview(\n button: RibbonButton,\n key: T,\n strings?: LocalizedStrings\n ) {\n if (this.editor && this.uiUtilities) {\n const isInShadowEdit = this.editor.isInShadowEdit();\n\n // If editor is already in shadow edit, no need to check again.\n // And the check result may be incorrect because the content is changed from last shadow edit and the cached selection path won't apply\n const range = !isInShadowEdit && this.editor.getDOMSelection();\n\n if (isInShadowEdit || (range && (range.type != 'range' || !range.range.collapsed))) {\n this.editor.startShadowEdit();\n button.onClick(this.editor, key, strings, this.uiUtilities);\n }\n }\n }\n\n /**\n * Leave live preview state (shadow edit) of editor\n */\n stopLivePreview() {\n this.editor?.stopShadowEdit();\n }\n\n private delayUpdate() {\n const window = this.editor?.getDocument().defaultView;\n\n if (!window) {\n return;\n }\n\n if (this.timer) {\n window.clearTimeout(this.timer);\n }\n\n this.timer = window.setTimeout(() => {\n this.timer = 0;\n this.updateFormat?.();\n }, this.delayUpdateTime);\n }\n\n private updateFormat() {\n if (this.editor && this.onFormatChanged) {\n const newFormatState = getFormatState(this.editor);\n\n if (\n !this.formatState ||\n getObjectKeys(newFormatState).some(\n key => newFormatState[key] != this.formatState?.[key]\n )\n ) {\n this.formatState = newFormatState;\n this.onFormatChanged(newFormatState);\n }\n }\n }\n}\n\n/**\n * Create a new instance of RibbonPlugin object\n * @param delayUpdateTime The time to wait before refresh the button when user do some editing operation in editor\n */\nexport function createRibbonPlugin(delayUpdateTime?: number): RibbonPlugin {\n return new RibbonPluginImpl(delayUpdateTime);\n}\n","import * as React from 'react';\nimport { createUIUtilities } from '../../common/index';\nimport { divProperties, getNativeProps } from '@fluentui/react/lib/Utilities';\nimport { Editor } from 'roosterjs-content-model-core';\nimport { useTheme } from '@fluentui/react/lib/Theme';\nimport type { RoosterProps } from '../type/RoosterProps';\nimport type { ReactEditorPlugin } from '../../common/index';\nimport type { EditorPlugin, IEditor, EditorOptions } from 'roosterjs-content-model-types';\n\n/**\n * Main component of react wrapper for roosterjs\n * @param props Properties of this component\n * @returns The react component\n */\nexport function Rooster(props: RoosterProps) {\n const editorDiv = React.useRef(null);\n const editor = React.useRef(null);\n const theme = useTheme();\n\n const { focusOnInit, editorCreator, inDarkMode, plugins } = props;\n\n React.useEffect(() => {\n if (plugins && editorDiv.current) {\n const uiUtilities = createUIUtilities(editorDiv.current, theme);\n\n plugins.forEach(plugin => {\n if (isReactEditorPlugin(plugin)) {\n plugin.setUIUtilities(uiUtilities);\n }\n });\n }\n }, [theme, editorCreator]);\n\n React.useEffect(() => {\n if (editorDiv.current) {\n editor.current = (editorCreator || defaultEditorCreator)(editorDiv.current, props);\n }\n\n if (focusOnInit) {\n editor.current?.focus();\n }\n\n return () => {\n if (editor.current) {\n editor.current.dispose();\n editor.current = null;\n }\n };\n }, [editorCreator]);\n\n React.useEffect(() => {\n editor.current?.setDarkModeState(!!inDarkMode);\n }, [inDarkMode]);\n\n const divProps = getNativeProps>(props, divProperties);\n return
;\n}\n\nfunction defaultEditorCreator(div: HTMLDivElement, options: EditorOptions) {\n return new Editor(div, options);\n}\n\nfunction isReactEditorPlugin(plugin: EditorPlugin): plugin is ReactEditorPlugin {\n return !!(plugin as ReactEditorPlugin)?.setUIUtilities;\n}\n","export { RoosterProps } from './type/RoosterProps';\nexport { Rooster } from './component/Rooster';\n","import * as React from 'react';\nimport { SidePanePlugin } from './SidePanePlugin';\n\nconst styles = require('./SidePane.scss');\n\nexport interface SidePaneProps {\n plugins: SidePanePlugin[];\n className?: string;\n}\n\nexport interface SidePaneState {\n currentPane: SidePanePlugin;\n}\n\nexport class SidePane extends React.Component {\n private div = React.createRef();\n\n constructor(props: SidePaneProps) {\n super(props);\n this.state = {\n currentPane: this.props.plugins[0],\n };\n\n window.addEventListener('hashchange', this.updateStateFromHash);\n window.location.hash ? this.updateStateFromHash() : this.updateHash();\n }\n\n componentDidMount() {\n this.updateStateFromHash();\n }\n\n componentWillUnmount() {\n window.removeEventListener('hashchange', this.updateStateFromHash);\n }\n\n render() {\n const className = (this.props.className || '') + ' ' + styles.sidePane;\n\n return (\n
\n {this.props.plugins.map(this.renderSidePane)}\n
\n );\n }\n\n changeWidth(widthDelta: number) {\n let div = this.div.current;\n if (div) {\n div.style.width = div.clientWidth + widthDelta + 'px';\n }\n }\n\n updateHash = (pluginName?: string, path?: string[]) => {\n window.location.hash =\n (pluginName || this.state.currentPane.getName()) + (path ? '/' + path.join('/') : '');\n };\n\n private updateStateFromHash = () => {\n let hash = window.location.hash;\n let hashes = (hash ? hash.substr(1) : '').split('/');\n let pluginName = hashes[0];\n let plugin =\n pluginName && this.props.plugins.filter(plugin => plugin.getName() == pluginName)[0];\n\n if (plugin) {\n this.setState({\n currentPane: plugin,\n });\n\n window.setTimeout(() => {\n hashes.splice(0, 1);\n if (plugin.setHashPath) {\n plugin.setHashPath(hashes);\n }\n }, 0);\n }\n };\n\n private renderSidePane = (plugin: SidePanePlugin): JSX.Element => {\n const title = plugin.getTitle();\n const isCurrent = this.state.currentPane == plugin;\n\n return (\n
\n
this.updateHash(plugin.getName())}>\n {title}\n
\n
\n
{plugin.renderSidePane(this.updateHash)}
\n
\n
\n );\n };\n}\n","import * as React from 'react';\nimport { IEditor } from 'roosterjs-content-model-types';\nimport { SidePaneElement, SidePaneElementProps } from './SidePaneElement';\nimport { SidePanePlugin } from './SidePanePlugin';\n\ninterface SidePaneComponent

\n extends React.Component,\n SidePaneElement {}\n\nexport abstract class SidePanePluginImpl<\n T extends SidePaneComponent

,\n P extends SidePaneElementProps\n> implements SidePanePlugin {\n protected editor: IEditor;\n private component = React.createRef();\n\n constructor(\n private readonly componentCtor: { new (props: P): T },\n private readonly pluginName: string,\n private readonly title: string\n ) {}\n\n getName() {\n return this.pluginName;\n }\n\n initialize(editor: IEditor) {\n this.editor = editor;\n }\n\n dispose() {\n this.editor = null;\n }\n\n getTitle() {\n return this.title;\n }\n\n renderSidePane(updateHash: (pluginName?: string, path?: string[]) => void) {\n return React.createElement

(this.componentCtor, {\n ...this.getComponentProps({\n updateHash,\n }),\n ref: this.component,\n });\n }\n\n setHashPath(path: string[]) {\n if (this.component.current && this.component.current.setHashPath) {\n this.component.current.setHashPath(path);\n }\n }\n\n protected abstract getComponentProps(baseProps: SidePaneElementProps): P;\n\n protected getComponent(callback: (component: T) => void) {\n if (this.component.current) {\n callback(this.component.current);\n }\n }\n}\n","import * as React from 'react';\nimport apiEntries, { ApiPlaygroundReactComponent } from './apiEntries';\nimport { ApiPaneProps } from './ApiPaneProps';\nimport { getObjectKeys } from 'roosterjs-content-model-dom';\nimport { PluginEvent } from 'roosterjs-content-model-types';\nimport { SidePaneElement } from '../SidePaneElement';\n\nconst styles = require('./ApiPlaygroundPane.scss');\n\nexport interface ApiPlaygroundPaneState {\n current: string;\n}\n\nexport class ApiPlaygroundPane extends React.Component\n implements SidePaneElement {\n private select = React.createRef();\n private pane = React.createRef();\n constructor(props: ApiPaneProps) {\n super(props);\n this.state = { current: 'empty' };\n }\n\n render() {\n let componentClass = apiEntries[this.state.current].component;\n let pane: JSX.Element = null;\n if (componentClass) {\n pane = React.createElement(componentClass, { ...this.props, ref: this.pane });\n }\n\n return (\n <>\n

\n

Select an API to try

\n\n \n
\n {pane}\n \n );\n }\n\n onPluginEvent(e: PluginEvent) {\n if (this.pane.current && this.pane.current.onPluginEvent) {\n this.pane.current.onPluginEvent(e);\n }\n }\n\n setHashPath(path: string[]) {\n let paneName = path && getObjectKeys(apiEntries).indexOf(path[0]) >= 0 ? path[0] : null;\n\n if (paneName && paneName != this.state.current) {\n this.setState({\n current: paneName,\n });\n } else {\n this.props.updateHash(null, [this.state.current]);\n }\n }\n\n private onChange = () => {\n this.props.updateHash(null, [this.select.current.value]);\n };\n}\n","import { ApiPlaygroundPane } from './ApiPlaygroundPane';\nimport { SidePanePluginImpl } from '../SidePanePluginImpl';\nimport type { ApiPaneProps } from './ApiPaneProps';\nimport type { PluginEvent } from 'roosterjs-content-model-types';\nimport type { SidePaneElementProps } from '../SidePaneElement';\n\nexport class ApiPlaygroundPlugin extends SidePanePluginImpl {\n constructor() {\n super(ApiPlaygroundPane, 'api', 'API Playground');\n }\n\n getComponentProps(base: SidePaneElementProps) {\n return {\n ...base,\n getEditor: () => {\n return this.editor;\n },\n };\n }\n\n onPluginEvent(e: PluginEvent) {\n this.getComponent(component => component.onPluginEvent(e));\n }\n}\n","import * as React from 'react';\nimport InsertEntityPane from './insertEntity/InsertEntityPane';\nimport { ApiPaneProps, ApiPlaygroundComponent } from './ApiPaneProps';\n\nexport interface ApiPlaygroundReactComponent\n extends React.Component,\n ApiPlaygroundComponent {}\n\ninterface ApiEntry {\n name: string;\n component?: { new (props: ApiPaneProps): ApiPlaygroundReactComponent };\n}\n\nconst apiEntries: { [key: string]: ApiEntry } = {\n empty: {\n name: 'Please select',\n },\n entity: {\n name: 'Insert Entity',\n component: InsertEntityPane,\n },\n more: {\n name: 'Coming soon...',\n },\n};\n\nexport default apiEntries;\n","import * as React from 'react';\nimport { ApiPaneProps } from '../ApiPaneProps';\nimport { insertEntity } from 'roosterjs-content-model-api';\nimport { trustedHTMLHandler } from '../../../../utils/trustedHTMLHandler';\nimport {\n ContentModelBlockGroup,\n ContentModelEntity,\n InsertEntityOptions,\n} from 'roosterjs-content-model-types';\n\nconst styles = require('./InsertEntityPane.scss');\n\ninterface InsertEntityPaneState {\n entities: ContentModelEntity[];\n}\n\nexport default class InsertEntityPane extends React.Component {\n private entityType = React.createRef();\n private html = React.createRef();\n private styleInline = React.createRef();\n private styleBlock = React.createRef();\n private focusAfterEntity = React.createRef();\n\n private posFocus = React.createRef();\n private posTop = React.createRef();\n private posBottom = React.createRef();\n private posRegionRoot = React.createRef();\n\n constructor(props: ApiPaneProps) {\n super(props);\n this.state = {\n entities: [],\n };\n }\n\n render() {\n return (\n <>\n
\n Type: \n
\n
\n HTML: \n
\n
\n Style:\n \n \n \n \n
\n
\n Position:\n
\n \n \n
\n \n \n
\n \n \n
\n \n \n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n {this.state.entities.map(entity => (\n \n ))}\n
\n \n );\n }\n\n private insertEntity = () => {\n const entityType = this.entityType.current.value;\n const node = document.createElement('span');\n node.innerHTML = trustedHTMLHandler(this.html.current.value);\n const isBlock = this.styleBlock.current.checked;\n const focusAfterEntity = this.focusAfterEntity.current.checked;\n const insertAtTop = this.posTop.current.checked;\n const insertAtBottom = this.posBottom.current.checked;\n const insertAtRoot = this.posRegionRoot.current.checked;\n\n if (node) {\n const editor = this.props.getEditor();\n const options: InsertEntityOptions = {\n contentNode: node,\n focusAfterEntity: focusAfterEntity,\n };\n\n editor.focus();\n\n if (isBlock) {\n insertEntity(\n editor,\n entityType,\n true,\n insertAtRoot\n ? 'root'\n : insertAtTop\n ? 'begin'\n : insertAtBottom\n ? 'end'\n : 'focus',\n options\n );\n } else {\n insertEntity(\n editor,\n entityType,\n isBlock,\n insertAtTop ? 'begin' : insertAtBottom ? 'end' : 'focus',\n options\n );\n }\n }\n };\n\n private onGetEntities = () => {\n const model = this.props.getEditor().getContentModelCopy('connected');\n const allEntities: ContentModelEntity[] = [];\n\n findAllEntities(model, allEntities);\n\n this.setState({\n entities: allEntities.filter(e => !!e),\n });\n };\n}\n\nfunction findAllEntities(group: ContentModelBlockGroup, result: ContentModelEntity[]) {\n group.blocks.forEach(block => {\n switch (block.blockType) {\n case 'BlockGroup':\n findAllEntities(block, result);\n break;\n\n case 'Entity':\n result.push(block);\n break;\n\n case 'Paragraph':\n block.segments.forEach(segment => {\n switch (segment.segmentType) {\n case 'Entity':\n result.push(segment);\n break;\n\n case 'General':\n findAllEntities(segment, result);\n break;\n }\n });\n break;\n\n case 'Table':\n block.rows.forEach(row => row.cells.forEach(cell => findAllEntities(cell, result)));\n break;\n }\n });\n}\n\nfunction EntityButton({ entity }: { entity: ContentModelEntity }) {\n let background = '';\n const onMouseOver = React.useCallback(() => {\n background = entity.wrapper.style.backgroundColor;\n entity.wrapper.style.backgroundColor = 'blue';\n }, [entity]);\n\n const onMouseOut = React.useCallback(() => {\n entity.wrapper.style.backgroundColor = background;\n }, [entity]);\n\n return (\n \n Type: {entity.entityFormat.entityType}\n
\n Id: {entity.entityFormat.id}\n
\n Readonly: {entity.entityFormat.isReadonly ? 'True' : 'False'}\n
\n Fake entity: {entity.entityFormat.isFakeEntity ? 'True' : 'False'}\n
\n \n );\n}\n","import * as React from 'react';\nimport { ContentModelDocument } from 'roosterjs-content-model-types';\nimport { ContentModelDocumentView } from './components/model/ContentModelDocumentView';\nimport { exportButton } from './buttons/exportButton';\nimport { importModelButton } from './buttons/importModelButton';\nimport { refreshButton } from './buttons/refreshButton';\nimport { Ribbon, RibbonButton, RibbonPlugin } from '../../roosterjsReact/ribbon';\nimport { SidePaneElementProps } from '../SidePaneElement';\n\nconst styles = require('./ContentModelPane.scss');\n\nexport interface ContentModelPaneState {\n model: ContentModelDocument;\n}\n\nexport interface ContentModelPaneProps extends ContentModelPaneState, SidePaneElementProps {\n ribbonPlugin: RibbonPlugin;\n}\n\nexport class ContentModelPane extends React.Component<\n ContentModelPaneProps,\n ContentModelPaneState\n> {\n private contentModelButtons: RibbonButton[];\n\n constructor(props: ContentModelPaneProps) {\n super(props);\n\n this.contentModelButtons = [refreshButton, exportButton, importModelButton];\n\n this.state = {\n model: null,\n };\n }\n\n setContentModel(model: ContentModelDocument) {\n this.setState({\n model: model,\n });\n }\n\n render() {\n return (\n <>\n \n
\n {this.state.model ? : null}\n
\n \n );\n }\n}\n","import { ContentModelPane, ContentModelPaneProps } from './ContentModelPane';\nimport { createRibbonPlugin, RibbonPlugin } from '../../roosterjsReact/ribbon';\nimport { IEditor, PluginEvent } from 'roosterjs-content-model-types';\nimport { setCurrentContentModel } from './currentModel';\nimport { SidePaneElementProps } from '../SidePaneElement';\nimport { SidePanePluginImpl } from '../SidePanePluginImpl';\n\nexport class ContentModelPanePlugin extends SidePanePluginImpl<\n ContentModelPane,\n ContentModelPaneProps\n> {\n private contentModelRibbon: RibbonPlugin;\n\n constructor() {\n super(ContentModelPane, 'contentModel', 'Content Model');\n this.contentModelRibbon = createRibbonPlugin();\n }\n\n initialize(editor: IEditor): void {\n super.initialize(editor);\n\n this.contentModelRibbon.initialize(editor);\n editor.getDocument().addEventListener('selectionchange', this.onModelChangeFromSelection);\n }\n\n dispose(): void {\n this.contentModelRibbon.dispose();\n this.editor\n .getDocument()\n .removeEventListener('selectionchange', this.onModelChangeFromSelection);\n\n super.dispose();\n }\n\n onPluginEvent(e: PluginEvent) {\n if (e.eventType == 'contentChanged' && e.source == 'RefreshModel') {\n this.getComponent(component => {\n const model = this.editor.getContentModelCopy('connected');\n component.setContentModel(model);\n setCurrentContentModel(model);\n });\n } else if (\n e.eventType == 'input' ||\n e.eventType == 'selectionChanged' ||\n e.eventType == 'editorReady'\n ) {\n this.onModelChange();\n }\n\n this.contentModelRibbon.onPluginEvent(e);\n }\n\n getInnerRibbonPlugin() {\n return this.contentModelRibbon;\n }\n\n protected getComponentProps(baseProps: SidePaneElementProps): ContentModelPaneProps {\n return {\n ...baseProps,\n model: null,\n ribbonPlugin: this.contentModelRibbon,\n };\n }\n\n private onModelChangeFromSelection = () => {\n if (this.editor.hasFocus()) {\n this.onModelChange();\n }\n };\n\n private onModelChange = () => {\n this.getComponent(component => {\n const model = this.editor.getContentModelCopy('connected');\n component.setContentModel(model);\n setCurrentContentModel(model);\n });\n };\n}\n","import { getCurrentContentModel } from '../currentModel';\nimport { RibbonButton } from '../../../roosterjsReact/ribbon';\n\nexport const exportButton: RibbonButton<'buttonNameExport'> = {\n key: 'buttonNameExport',\n unlocalizedText: 'Create DOM tree',\n iconName: 'DOM',\n onClick: editor => {\n const model = getCurrentContentModel();\n\n if (model) {\n editor.formatContentModel(currentModel => {\n currentModel.blocks = model.blocks;\n\n return true;\n });\n }\n },\n};\n","import { isBlockGroupOfType } from 'roosterjs-content-model-dom';\nimport { showInputDialog } from '../../../roosterjsReact/inputDialog/utils/showInputDialog';\nimport type { RibbonButton } from '../../../roosterjsReact/ribbon/type/RibbonButton';\n\n/**\n * @internal\n * \"Import Model\" button on the format ribbon\n */\nexport const importModelButton: RibbonButton<'buttonNameImportModel'> = {\n key: 'buttonNameImportModel',\n unlocalizedText: 'Import Model',\n iconName: 'Installation',\n isChecked: formatState => formatState.isBold,\n onClick: (editor, _, strings, uiUtilities) => {\n showInputDialog(\n uiUtilities,\n 'buttonNameImportModel',\n 'Import Model',\n {\n model: {\n autoFocus: true,\n labelKey: 'buttonNameImportModel' as const,\n unlocalizedLabel: 'Insert model',\n initValue: '',\n },\n },\n strings,\n undefined /* onChange */,\n 10 /* rows */\n ).then(values => {\n try {\n const importedModel = JSON.parse(values.model);\n if (isBlockGroupOfType(importedModel, 'Document')) {\n editor.formatContentModel(model => {\n model.blocks = importedModel.blocks;\n model.format = importedModel.format;\n return true;\n });\n }\n } catch (e) {\n throw new Error('Invalid model');\n }\n });\n },\n};\n","import { RibbonButton } from '../../../roosterjsReact/ribbon';\n\nexport const refreshButton: RibbonButton<'buttonNameRefresh'> = {\n key: 'buttonNameRefresh',\n unlocalizedText: 'Refresh',\n iconName: 'Refresh',\n onClick: editor => {\n editor.triggerEvent('contentChanged', {\n source: 'RefreshModel',\n });\n },\n};\n","import * as React from 'react';\nimport { css } from '@fluentui/react/lib/Utilities';\n\nconst styles = require('./ButtonGroup.scss');\n\nexport function ButtonGroup(props: {\n hasFormat: boolean;\n hasContent: boolean;\n hasDataset: boolean;\n bodyState: 'children' | 'format' | 'json' | 'collapsed' | 'dataset';\n toggleVisual: () => void;\n toggleFormat: () => void;\n toggleJson: () => void;\n toggleMetadata: () => void;\n}) {\n const {\n hasContent,\n hasFormat,\n hasDataset,\n bodyState,\n toggleFormat,\n toggleJson,\n toggleVisual,\n toggleMetadata,\n } = props;\n\n return (\n
\n {hasContent ? (\n \n 🔎\n \n ) : null}\n {hasFormat ? (\n \n 🖹\n \n ) : null}\n {hasDataset ? (\n \n 🏴\n \n ) : null}\n \n 🅙\n \n
\n );\n}\n","import * as React from 'react';\nimport { ButtonGroup } from './ButtonGroup';\nimport { ContentModelJson } from './model/ContentModelJson';\nimport { css } from '@fluentui/react/lib/Utilities';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\nimport { useProperty } from '../hooks/useProperty';\nimport {\n ContentModelBlockWithCache,\n ContentModelEntity,\n ContentModelGeneralBlock,\n ContentModelWithDataset,\n DatasetFormat,\n} from 'roosterjs-content-model-types';\n\nconst styles = require('./ContentModelView.scss');\nconst MetadataKey = 'editingInfo';\n\nexport function ContentModelView(props: {\n className: string;\n title: string;\n subTitle?: string;\n hasSelection?: boolean;\n isSelected?: boolean;\n jsonSource: Object;\n getContent?: (() => JSX.Element) | null;\n getFormat?: (() => JSX.Element) | null;\n getMetadata?: (() => JSX.Element) | null;\n isExpanded?: boolean;\n}) {\n const {\n title,\n subTitle,\n isExpanded,\n className,\n hasSelection,\n isSelected: isSelection,\n jsonSource,\n getContent,\n getFormat,\n getMetadata,\n } = props;\n const [bodyState, setBodyState] = useProperty<\n 'collapsed' | 'children' | 'format' | 'json' | 'dataset'\n >(isExpanded ? 'children' : 'collapsed');\n const highlightBorder = React.useRef(null);\n\n const toggleVisual = React.useCallback(() => {\n setBodyState(bodyState == 'children' ? 'collapsed' : 'children');\n }, [bodyState]);\n\n const toggleFormat = React.useCallback(() => {\n setBodyState(bodyState == 'format' ? 'collapsed' : 'format');\n }, [bodyState]);\n\n const toggleJson = React.useCallback(() => {\n setBodyState(bodyState == 'json' ? 'collapsed' : 'json');\n }, [bodyState]);\n\n const toggleDataset = React.useCallback(() => {\n setBodyState(bodyState == 'dataset' ? 'collapsed' : 'dataset');\n }, [bodyState]);\n\n const getCachedElement = React.useCallback(() => {\n return (\n (jsonSource as ContentModelBlockWithCache)?.cachedElement ||\n (jsonSource as ContentModelGeneralBlock)?.element ||\n (jsonSource as ContentModelEntity)?.wrapper\n );\n }, [jsonSource]);\n const onMouseOver = React.useCallback(\n (e: React.MouseEvent) => {\n const cachedElement = getCachedElement();\n const doc = cachedElement?.ownerDocument;\n\n if (cachedElement && doc) {\n onMouseOut();\n\n const rect = cachedElement.getBoundingClientRect();\n const div = doc.createElement('div');\n\n if (div) {\n div.style.position = 'fixed';\n div.style.zIndex = '10000';\n div.style.left = rect.left + 'px';\n div.style.top = rect.top + 'px';\n div.style.width = rect.width + 'px';\n div.style.height = rect.height + 'px';\n div.style.border = 'solid 2px #8888ff';\n div.style.boxSizing = 'border-box';\n doc.body.appendChild(div);\n\n highlightBorder.current = div;\n }\n\n e.stopPropagation();\n }\n },\n [getCachedElement]\n );\n const onMouseOut = React.useCallback(() => {\n if (highlightBorder.current) {\n highlightBorder.current.parentNode?.removeChild(highlightBorder.current);\n highlightBorder.current = null;\n }\n }, [getCachedElement]);\n\n const dataset = (jsonSource as ContentModelWithDataset).dataset;\n\n React.useEffect(() => () => {\n onMouseOut();\n });\n\n return (\n \n
\n \n {title}\n
\n
\n \n
\n \n {subTitle || '\\u00a0'}\n \n \n {bodyState == 'json' ? (\n
\n \n
\n ) : bodyState == 'children' && !!getContent ? (\n
{getContent()}
\n ) : bodyState == 'format' && !!getFormat ? (\n
{getFormat()}
\n ) : bodyState == 'dataset' && !!dataset ? (\n
\n \n
\n ) : null}\n \n );\n}\n\nfunction DatasetView(props: { dataset: DatasetFormat; getMetadata?: (() => JSX.Element) | null }) {\n const { dataset, getMetadata } = props;\n\n return (\n <>\n {getObjectKeys(dataset).map(name =>\n !getMetadata || name != MetadataKey ? (\n \n ) : null\n )}\n {getMetadata ? (\n <>\n
Metadata:
\n {getMetadata()}\n \n ) : null}\n \n );\n}\n\nfunction DatasetItemView(props: { dataset: DatasetFormat; name: string }) {\n const { dataset, name } = props;\n const [value, setValue] = useProperty(dataset[name]);\n const inputRef = React.useRef(null);\n const onChange = React.useCallback(() => {\n const newValue = inputRef.current.value;\n dataset[name] = newValue;\n setValue(newValue);\n }, [value, setValue]);\n\n return (\n
\n {name}\n \n
\n );\n}\n","import * as React from 'react';\nimport { BackgroundColorFormatRenderer } from './formatPart/BackgroundColorFormatRenderer';\nimport { BorderFormatRenderers } from './formatPart/BorderFormatRenderers';\nimport { ContentModelBlockFormat, ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { DirectionFormatRenderer } from './formatPart/DirectionFormatRenderer';\nimport { FormatRenderer } from './utils/FormatRenderer';\nimport { FormatView } from './FormatView';\nimport { HtmlAlignFormatRenderer } from './formatPart/HtmlAlignFormatRenderer';\nimport { LineHeightFormatRenderer } from './formatPart/LineHeightFormatRenderer';\nimport { MarginFormatRenderer } from './formatPart/MarginFormatRenderer';\nimport { PaddingFormatRenderer } from './formatPart/PaddingFormatRenderer';\nimport { TextAlignFormatRenderer } from './formatPart/TextAlignFormatRenderer';\nimport { TextIndentFormatRenderer } from './formatPart/TextIndentFormatRenderer';\nimport { WhiteSpaceFormatRenderer } from './formatPart/WhiteSpaceFormatRenderer';\n\nconst BlockFormatRenders: FormatRenderer[] = [\n BackgroundColorFormatRenderer,\n DirectionFormatRenderer,\n TextAlignFormatRenderer,\n HtmlAlignFormatRenderer,\n MarginFormatRenderer,\n PaddingFormatRenderer,\n LineHeightFormatRenderer,\n WhiteSpaceFormatRenderer,\n TextIndentFormatRenderer,\n ...BorderFormatRenderers,\n];\n\nexport function BlockFormatView(props: { format: ContentModelSegmentFormat }) {\n const { format } = props;\n return ;\n}\n","import * as React from 'react';\nimport { FormatRenderer } from './utils/FormatRenderer';\n\nconst styles = require('./FormatView.scss');\n\nexport function FormatView(props: {\n format: T;\n renderers: FormatRenderer[];\n onUpdate?: () => void;\n}) {\n const { format, renderers, onUpdate } = props;\n\n return
{renderers.map(x => x(format, onUpdate))}
;\n}\n","import * as React from 'react';\nimport { ContentModelHyperLinkFormat, LinkFormat } from 'roosterjs-content-model-types';\nimport { createTextFormatRenderer } from './utils/createTextFormatRenderer';\nimport { DisplayFormatRenderer } from './formatPart/DisplayFormatRenderer';\nimport { FormatRenderer } from './utils/FormatRenderer';\nimport { FormatView } from './FormatView';\nimport { MarginFormatRenderer } from './formatPart/MarginFormatRenderer';\nimport { PaddingFormatRenderer } from './formatPart/PaddingFormatRenderer';\nimport { TextColorFormatRenderer } from './formatPart/TextColorFormatRenderer';\nimport { UnderlineFormatRenderer } from './formatPart/BasicFormatRenderers';\n\nconst LinkFormatRenderers: FormatRenderer[] = [\n createTextFormatRenderer(\n 'Name',\n format => format.name,\n (format, value) => (format.name = value)\n ),\n createTextFormatRenderer(\n 'Href',\n format => format.href,\n (format, value) => (format.href = value)\n ),\n createTextFormatRenderer(\n 'Target',\n format => format.target,\n (format, value) => (format.target = value)\n ),\n createTextFormatRenderer(\n 'AnchorId',\n format => format.anchorId,\n (format, value) => (format.anchorId = value)\n ),\n createTextFormatRenderer(\n 'AnchorClass',\n format => format.anchorClass,\n (format, value) => (format.anchorClass = value)\n ),\n createTextFormatRenderer(\n 'AnchorTitle',\n format => format.anchorTitle,\n (format, value) => (format.anchorTitle = value)\n ),\n createTextFormatRenderer(\n 'Relationship',\n format => format.relationship,\n (format, value) => (format.relationship = value)\n ),\n TextColorFormatRenderer,\n UnderlineFormatRenderer,\n DisplayFormatRenderer,\n MarginFormatRenderer,\n PaddingFormatRenderer,\n];\n\nexport function LinkFormatView(props: { format: LinkFormat }) {\n const { format } = props;\n return ;\n}\n","import * as React from 'react';\nimport { ContentModelWithDataset } from 'roosterjs-content-model-types';\nimport { FormatRenderer } from './utils/FormatRenderer';\n\nconst styles = require('./FormatView.scss');\n\nexport function MetadataView(props: {\n model: ContentModelWithDataset;\n renderers: FormatRenderer[];\n updater: (model: ContentModelWithDataset, callback: (format: T | null) => T | null) => void;\n}) {\n const { model, renderers, updater } = props;\n const metadata = React.useRef(null);\n\n const onUpdate = React.useCallback(() => {\n updater(model, () => metadata.current);\n }, [model]);\n\n let result: JSX.Element | null = null;\n\n updater(model, format => {\n metadata.current = format;\n result = format ? (\n
{renderers.map(x => x(format, onUpdate))}
\n ) : null;\n\n return format;\n });\n\n return result;\n}\n","import * as React from 'react';\nimport { BackgroundColorFormatRenderer } from './formatPart/BackgroundColorFormatRenderer';\nimport { ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { FontFamilyFormatRenderer } from './formatPart/FontFamilyFormatRenderer';\nimport { FontSizeFormatRenderer } from './formatPart/FontSizeFormatRenderer';\nimport { FormatRenderer } from './utils/FormatRenderer';\nimport { FormatView } from './FormatView';\nimport { LetterSpacingFormatRenderer } from './formatPart/LetterSpacingFormatRenderer';\nimport { LineHeightFormatRenderer } from './formatPart/LineHeightFormatRenderer';\nimport { TextColorFormatRenderer } from './formatPart/TextColorFormatRenderer';\nimport {\n BoldFormatRenderer,\n ItalicFormatRenderer,\n StrikeFormatRenderer,\n UnderlineFormatRenderer,\n SuperOrSubScriptFormatRenderer,\n} from './formatPart/BasicFormatRenderers';\n\nconst SegmentFormatRenders: FormatRenderer[] = [\n TextColorFormatRenderer,\n BackgroundColorFormatRenderer,\n FontSizeFormatRenderer,\n FontFamilyFormatRenderer,\n BoldFormatRenderer,\n ItalicFormatRenderer,\n UnderlineFormatRenderer,\n StrikeFormatRenderer,\n SuperOrSubScriptFormatRenderer,\n LineHeightFormatRenderer,\n LetterSpacingFormatRenderer,\n];\n\nexport function SegmentFormatView(props: { format: ContentModelSegmentFormat }) {\n const { format } = props;\n return ;\n}\n","import { BackgroundColorFormat } from 'roosterjs-content-model-types';\nimport { createColorFormatRenderer } from '../utils/createColorFormatRender';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\nexport const BackgroundColorFormatRenderer: FormatRenderer = createColorFormatRenderer<\n BackgroundColorFormat\n>(\n 'Back color',\n format => format.backgroundColor,\n (format, value) => (format.backgroundColor = value)\n);\n","import { createCheckboxFormatRenderer } from '../utils/createCheckboxFormatRenderer';\nimport { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport {\n BoldFormat,\n ItalicFormat,\n StrikeFormat,\n SuperOrSubScriptFormat,\n UnderlineFormat,\n} from 'roosterjs-content-model-types';\n\nexport const BoldFormatRenderer: FormatRenderer = createTextFormatRenderer(\n 'Bold',\n format => format.fontWeight,\n (format, value) => (format.fontWeight = value)\n);\n\nexport const ItalicFormatRenderer: FormatRenderer = createCheckboxFormatRenderer<\n ItalicFormat\n>(\n 'Italic',\n format => format.italic,\n (format, value) => (format.italic = value)\n);\n\nexport const UnderlineFormatRenderer: FormatRenderer = createCheckboxFormatRenderer<\n UnderlineFormat\n>(\n 'Underline',\n format => format.underline,\n (format, value) => (format.underline = value)\n);\n\nexport const StrikeFormatRenderer: FormatRenderer = createCheckboxFormatRenderer<\n StrikeFormat\n>(\n 'Strike',\n format => format.strikethrough,\n (format, value) => (format.strikethrough = value)\n);\n\nexport const SuperOrSubScriptFormatRenderer: FormatRenderer = createTextFormatRenderer<\n SuperOrSubScriptFormat\n>(\n 'SuperOrSubScript',\n format => format.superOrSubScriptSequence,\n (format, value) => (format.superOrSubScriptSequence = value)\n);\n","import { BorderBoxFormat } from 'roosterjs-content-model-types';\nimport { createCheckboxFormatRenderer } from '../utils/createCheckboxFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\nexport const BorderBoxFormatRenderer: FormatRenderer = createCheckboxFormatRenderer<\n BorderBoxFormat\n>(\n 'UseBorderBox',\n format => format.useBorderBox,\n (format, value) => (format.useBorderBox = value)\n);\n","import { BorderFormat } from 'roosterjs-content-model-types';\nimport { combineBorderValue, extractBorderValues } from 'roosterjs-content-model-dom';\nimport { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\ntype BorderStyle =\n | 'dashed'\n | 'dotted'\n | 'double'\n | 'groove'\n | 'none'\n | 'outset'\n | 'solid'\n | 'hidden'\n | 'ridge'\n | 'inset';\nconst BorderStyles: BorderStyle[] = [\n 'none',\n 'hidden',\n 'dotted',\n 'dashed',\n 'solid',\n 'double',\n 'groove',\n 'ridge',\n 'inset',\n 'outset',\n];\n\nfunction createBorderRenderer(position: keyof BorderFormat): FormatRenderer[] {\n return [\n createTextFormatRenderer(\n position + 'Width',\n format => extractBorderValues(format[position]).width,\n (format, newValue) => {\n const border = extractBorderValues(format[position]);\n border.width = newValue;\n format[position] = combineBorderValue(border);\n }\n ),\n createDropDownFormatRenderer(\n position + 'Style',\n BorderStyles,\n format => extractBorderValues(format[position]).style as BorderStyle,\n (format, newValue) => {\n const border = extractBorderValues(format[position]);\n border.style = newValue;\n format[position] = combineBorderValue(border);\n }\n ),\n createTextFormatRenderer(\n position + 'Color',\n format => extractBorderValues(format[position]).color,\n (format, newValue) => {\n const border = extractBorderValues(format[position]);\n border.color = newValue;\n format[position] = combineBorderValue(border);\n }\n ),\n ];\n}\n\nexport const BorderFormatRenderers: FormatRenderer[] = [\n ...createBorderRenderer('borderTop'),\n ...createBorderRenderer('borderRight'),\n ...createBorderRenderer('borderBottom'),\n ...createBorderRenderer('borderLeft'),\n];\n","import { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { DirectionFormat } from 'roosterjs-content-model-types';\n\nexport const DirectionFormatRenderer = createDropDownFormatRenderer(\n 'Direction',\n ['ltr', 'rtl'],\n format => format.direction,\n (format, value) => (format.direction = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { DisplayFormat } from 'roosterjs-content-model-types';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\nexport const DisplayFormatRenderer: FormatRenderer = createTextFormatRenderer<\n DisplayFormat\n>(\n 'Display',\n format => format.display,\n (format, value) => (format.display = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FloatFormat } from 'roosterjs-content-model-types';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\nexport const FloatFormatRenderer: FormatRenderer = createTextFormatRenderer<\n FloatFormat\n>(\n 'Float',\n format => format.float,\n (format, value) => (format.float = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FontFamilyFormat } from 'roosterjs-content-model-types';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\nexport const FontFamilyFormatRenderer: FormatRenderer = createTextFormatRenderer<\n FontFamilyFormat\n>(\n 'Font family',\n format => format.fontFamily,\n (format, value) => {\n format.fontFamily = value;\n return undefined;\n }\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FontSizeFormat } from 'roosterjs-content-model-types';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\nexport const FontSizeFormatRenderer: FormatRenderer = createTextFormatRenderer<\n FontSizeFormat\n>(\n 'Font size',\n format => format.fontSize,\n (format, value) => {\n format.fontSize = value;\n return undefined;\n }\n);\n","import { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { HtmlAlignFormat } from 'roosterjs-content-model-types';\n\nexport const HtmlAlignFormatRenderer = createDropDownFormatRenderer<\n HtmlAlignFormat,\n 'start' | 'center' | 'end' | 'justify' | 'initial'\n>(\n 'HTML align',\n ['start', 'center', 'end'],\n format => format.htmlAlign,\n (format, value) => (format.htmlAlign = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { IdFormat } from 'roosterjs-content-model-types';\n\nexport const IdFormatRenderer: FormatRenderer = createTextFormatRenderer(\n 'Id',\n format => format.id,\n (format, value) => (format.id = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { ImageMetadataFormat } from 'roosterjs-content-model-types';\n\nexport const ImageMetadataFormatRenderers: FormatRenderer[] = [\n createTextFormatRenderer(\n 'MetadataWidth',\n format => (format.widthPx || '') + '',\n (format, value) => (format.widthPx = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'MetadataHeight',\n format => (format.heightPx || '') + '',\n (format, value) => (format.heightPx = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'MetadataLeft',\n format => (format.leftPercent || '') + '',\n (format, value) => (format.leftPercent = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'MetadataRight',\n format => (format.rightPercent || '') + '',\n (format, value) => (format.rightPercent = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'MetadataTop',\n format => (format.topPercent || '') + '',\n (format, value) => (format.topPercent = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'MetadataBottom',\n format => (format.bottomPercent || '') + '',\n (format, value) => (format.bottomPercent = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'MetadataAngle',\n format => (format.angleRad || '') + '',\n (format, value) => (format.angleRad = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'OriginalSrc',\n format => format.src,\n () => {},\n 'multiline'\n ),\n createTextFormatRenderer(\n 'NaturalWidth',\n format => (format.naturalWidth || '') + '',\n () => {},\n 'number'\n ),\n createTextFormatRenderer(\n 'NaturalHeight',\n format => (format.naturalHeight || '') + '',\n () => {},\n 'number'\n ),\n];\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { LetterSpacingFormat } from 'roosterjs-content-model-types';\n\nexport const LetterSpacingFormatRenderer: FormatRenderer = createTextFormatRenderer<\n LetterSpacingFormat\n>(\n 'Letter spacing',\n format => format.letterSpacing,\n (format, value) => {\n format.letterSpacing = value;\n }\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { LineHeightFormat } from 'roosterjs-content-model-types';\n\nexport const LineHeightFormatRenderer: FormatRenderer = createTextFormatRenderer<\n LineHeightFormat\n>(\n 'LineHeight',\n format => format.lineHeight,\n (format, value) => (format.lineHeight = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { ListMetadataFormat } from 'roosterjs-content-model-types';\n\nexport const ListMetadataFormatRenderers: FormatRenderer[] = [\n createTextFormatRenderer(\n 'Ordered style',\n format => format.orderedStyleType + '',\n (format, value) => (format.orderedStyleType = parseInt(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'Unordered style',\n format => format.unorderedStyleType + '',\n (format, value) => (format.unorderedStyleType = parseInt(value)),\n 'number'\n ),\n];\n","import { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { ListStyleFormat } from 'roosterjs-content-model-types';\n\nexport const ListStylePositionFormatRenderers: FormatRenderer[] = [\n createDropDownFormatRenderer(\n 'List position',\n ['inside', 'outside'],\n format => format.listStylePosition,\n (format, value) => (format.listStylePosition = value)\n ),\n createTextFormatRenderer(\n 'List style type',\n format => format.listStyleType,\n (format, value) => (format.listStyleType = value)\n ),\n];\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { ListThreadFormat } from 'roosterjs-content-model-types';\n\nexport const ListThreadFormatRenderers: FormatRenderer[] = [\n createTextFormatRenderer(\n 'Start number',\n format => format.startNumberOverride + '',\n (format, value) => (format.startNumberOverride = parseInt(value)),\n 'number'\n ),\n];\n","import { createTextFormatRendererGroup } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { MarginFormat } from 'roosterjs-content-model-types';\n\ntype MarginName = keyof MarginFormat;\nconst MarginNames: MarginName[] = ['marginTop', 'marginRight', 'marginBottom', 'marginLeft'];\n\nexport const MarginFormatRenderer: FormatRenderer = createTextFormatRendererGroup<\n MarginFormat,\n MarginName\n>(\n MarginNames,\n format => MarginNames.map(name => format[name]),\n (format, name, value) => {\n format[name] = value;\n }\n);\n","import { createTextFormatRendererGroup } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { PaddingFormat } from 'roosterjs-content-model-types';\n\ntype PaddingName = keyof PaddingFormat;\nconst PaddingNames: PaddingName[] = ['paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'];\n\nexport const PaddingFormatRenderer: FormatRenderer = createTextFormatRendererGroup<\n PaddingFormat,\n PaddingName\n>(\n PaddingNames,\n format => PaddingNames.map(name => format[name]),\n (format, name, value) => {\n format[name] = value;\n }\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { SizeFormat } from 'roosterjs-content-model-types';\n\nexport const SizeFormatRenderers: FormatRenderer[] = [\n createTextFormatRenderer(\n 'Width',\n format => format.width,\n (format, value) => (format.width = value)\n ),\n createTextFormatRenderer(\n 'Height',\n format => format.height,\n (format, value) => (format.height = value)\n ),\n createTextFormatRenderer(\n 'MaxWidth',\n format => format.maxWidth,\n (format, value) => (format.maxWidth = value)\n ),\n createTextFormatRenderer(\n 'MaxHeight',\n format => format.maxHeight,\n (format, value) => (format.maxHeight = value)\n ),\n createTextFormatRenderer(\n 'MinWidth',\n format => format.minWidth,\n (format, value) => (format.minWidth = value)\n ),\n createTextFormatRenderer(\n 'MinHeight',\n format => format.minHeight,\n (format, value) => (format.minHeight = value)\n ),\n];\n","import { createCheckboxFormatRenderer } from '../utils/createCheckboxFormatRenderer';\nimport { SpacingFormat } from 'roosterjs-content-model-types';\n\nexport const SpacingFormatRenderer = createCheckboxFormatRenderer(\n 'BorderCollapsed',\n format => format.borderCollapse,\n (format, value) => (format.borderCollapse = value)\n);\n","import { createCheckboxFormatRenderer } from '../utils/createCheckboxFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { TableCellMetadataFormat } from 'roosterjs-editor-types';\n\nexport const TableCellMetadataFormatRenders: FormatRenderer[] = [\n createCheckboxFormatRenderer(\n 'BgColorOverride',\n format => format.bgColorOverride,\n (format, value) => (format.bgColorOverride = value)\n ),\n createCheckboxFormatRenderer(\n 'VAlignOverride',\n format => format.vAlignOverride,\n (format, value) => (format.vAlignOverride = value)\n ),\n createCheckboxFormatRenderer(\n 'BorderOverride',\n format => format.borderOverride,\n (format, value) => (format.borderOverride = value)\n ),\n];\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { TableLayoutFormat } from 'roosterjs-content-model-types';\n\nexport const TableLayoutFormatRenderer: FormatRenderer = createTextFormatRenderer<\n TableLayoutFormat\n>(\n 'TableLayout',\n format => format.tableLayout,\n (format, value) => (format.tableLayout = value)\n);\n","import { createCheckboxFormatRenderer } from '../utils/createCheckboxFormatRenderer';\nimport { createColorFormatRenderer } from '../utils/createColorFormatRender';\nimport { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { getObjectKeys, TableBorderFormat } from 'roosterjs-content-model-dom';\nimport { TableMetadataFormat } from 'roosterjs-content-model-types';\n\nexport const TableMetadataFormatRenders: FormatRenderer[] = [\n createColorFormatRenderer(\n 'TopBorderColor',\n format => format.topBorderColor,\n (format, value) => {\n format.topBorderColor = value;\n }\n ),\n createColorFormatRenderer(\n 'BottomBorderColor',\n format => format.bottomBorderColor,\n (format, value) => (format.bottomBorderColor = value)\n ),\n createColorFormatRenderer(\n 'VerticalBorderColor',\n format => format.verticalBorderColor,\n (format, value) => (format.verticalBorderColor = value)\n ),\n createCheckboxFormatRenderer(\n 'HasHeaderRow',\n format => format.hasHeaderRow,\n (format, value) => (format.hasHeaderRow = value)\n ),\n createColorFormatRenderer(\n 'HeaderRowColor',\n format => format.headerRowColor,\n (format, value) => (format.headerRowColor = value)\n ),\n createCheckboxFormatRenderer(\n 'HasFirstColumn',\n format => format.hasFirstColumn,\n (format, value) => (format.hasFirstColumn = value)\n ),\n createCheckboxFormatRenderer(\n 'HasBandedColumns',\n format => format.hasBandedColumns,\n (format, value) => (format.hasBandedColumns = value)\n ),\n createCheckboxFormatRenderer(\n 'HasBandedRows',\n format => format.hasBandedRows,\n (format, value) => (format.hasBandedRows = value)\n ),\n createColorFormatRenderer(\n 'BgColorEven',\n format => format.bgColorEven,\n (format, value) => (format.bgColorEven = value)\n ),\n createColorFormatRenderer(\n 'BgColorOdd',\n format => format.bgColorOdd,\n (format, value) => (format.bgColorOdd = value)\n ),\n createDropDownFormatRenderer(\n 'TableBorderFormat',\n [\n 'Default',\n 'ListWithSideBorders',\n 'NoHeaderBorders',\n 'NoSideBorders',\n 'FirstColumnHeaderExternal',\n 'EspecialType1',\n 'EspecialType2',\n 'EspecialType3',\n 'Clear',\n ],\n format =>\n getObjectKeys(TableBorderFormat)[\n Object.values(TableBorderFormat).indexOf(format.tableBorderFormat)\n ],\n (format, newValue) => (format.tableBorderFormat = TableBorderFormat[newValue])\n ),\n];\n","import { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { TextAlignFormat } from 'roosterjs-content-model-types';\n\nexport const TextAlignFormatRenderer = createDropDownFormatRenderer<\n TextAlignFormat,\n 'start' | 'center' | 'end' | 'justify' | 'initial'\n>(\n 'Text align',\n ['start', 'center', 'end'],\n format => format.textAlign,\n (format, value) => (format.textAlign = value)\n);\n","import * as Color from 'color';\nimport { createColorFormatRenderer } from '../utils/createColorFormatRender';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { TextColorFormat } from 'roosterjs-content-model-types';\n\nexport const TextColorFormatRenderer: FormatRenderer = createColorFormatRenderer<\n TextColorFormat\n>(\n 'Text color',\n format => {\n try {\n return format.textColor ? Color(format.textColor).hex() : '';\n } catch (e) {\n console.log(e);\n }\n },\n (format, value) => {\n format.textColor = value;\n return undefined;\n }\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { TextIndentFormat } from 'roosterjs-content-model-types';\n\nexport const TextIndentFormatRenderer: FormatRenderer = createTextFormatRenderer<\n TextIndentFormat\n>(\n 'Text indent',\n format => format.textIndent,\n (format, value) => (format.textIndent = value)\n);\n","import { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { VerticalAlignFormat } from 'roosterjs-content-model-types';\n\nexport const VerticalAlignFormatRenderer = createDropDownFormatRenderer<\n VerticalAlignFormat,\n 'top' | 'middle' | 'bottom'\n>(\n 'Vertical align',\n ['top', 'middle', 'bottom'],\n format => format.verticalAlign,\n (format, value) => (format.verticalAlign = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { WhiteSpaceFormat } from 'roosterjs-content-model-types';\n\nexport const WhiteSpaceFormatRenderer = createTextFormatRenderer(\n 'White space',\n format => format.whiteSpace,\n (format, value) => (format.whiteSpace = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { WordBreakFormat } from 'roosterjs-content-model-types';\n\nexport const WordBreakFormatRenderer = createTextFormatRenderer(\n 'Word break',\n format => format.wordBreak,\n (format, value) => (format.wordBreak = value)\n);\n","import * as React from 'react';\nimport { FormatRenderer } from './FormatRenderer';\nimport { useProperty } from '../../../hooks/useProperty';\n\nconst styles = require('../FormatView.scss');\n\nfunction CheckboxFormatItem(props: {\n name: string;\n format: TFormat;\n getter: (format: TFormat) => boolean;\n setter?: (format: TFormat, newValue: boolean) => void;\n onUpdate?: () => void;\n}) {\n const { name, getter, setter, format, onUpdate } = props;\n const checkbox = React.useRef(null);\n const [value, setValue] = useProperty(getter(format));\n\n const onChange = React.useCallback(() => {\n const newValue = checkbox.current.checked;\n setValue(newValue);\n setter?.(format, newValue);\n onUpdate?.();\n }, [format, setter, setValue]);\n\n return (\n
\n
{name}
\n
\n \n
\n
\n );\n}\n\nexport function createCheckboxFormatRenderer(\n name: string,\n getter: (format: T) => boolean,\n setter?: (format: T, newValue: boolean) => void\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => (\n \n );\n}\n","import * as Color from 'color';\nimport * as React from 'react';\nimport { FormatRenderer } from './FormatRenderer';\nimport { useProperty } from '../../../hooks/useProperty';\n\nconst styles = require('../FormatView.scss');\nconst Transparent = 'transparent';\n\nfunction ColorFormatItem(props: {\n name: string;\n format: T;\n getter: (format: T) => string;\n setter?: (format: T, newValue: string) => void;\n onUpdate?: () => void;\n}) {\n const { name, getter, setter, format, onUpdate } = props;\n const colorPickerBox = React.useRef(null);\n const colorValueBox = React.useRef(null);\n const transparentCheckBox = React.useRef(null);\n\n let initValue = getter(format);\n\n if (initValue && initValue != Transparent) {\n try {\n const color = Color(initValue);\n initValue = color.hex();\n } catch {}\n }\n\n const [value, setValue] = useProperty(initValue);\n\n const updateValue = React.useCallback(\n (newValue: string) => {\n if (newValue != Transparent) {\n try {\n const color = Color(newValue);\n newValue = color.hex();\n } catch {}\n }\n\n setValue(newValue);\n setter?.(format, newValue);\n onUpdate?.();\n },\n [setter, format]\n );\n\n const onTextBoxChange = React.useCallback(() => {\n updateValue(colorPickerBox.current.value);\n }, [updateValue]);\n\n const onColorValueChange = React.useCallback(() => {\n updateValue(colorValueBox.current.value);\n }, [updateValue]);\n\n const onToggleTransparent = React.useCallback(() => {\n updateValue(\n transparentCheckBox.current.checked ? Transparent : colorPickerBox.current.value\n );\n }, [updateValue]);\n\n let content = (\n <>\n \n \n \n {Transparent}\n \n );\n\n return (\n
\n
{name}
\n
{content}
\n
\n );\n}\n\nexport function createColorFormatRenderer(\n name: string,\n getter: (format: T) => string,\n setter?: (format: T, newValue: string) => void\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => (\n \n );\n}\n\nexport function createColorFormatRendererGroup(\n names: V[],\n getter: (format: T) => string[],\n setter?: (format: T, name: V, newValue: string) => void\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => {\n const initValues = getter(format);\n\n return (\n <>\n {names.map((name, index) => (\n initValues[index]}\n setter={(format, newValue) => setter?.(format, name, newValue)}\n format={format}\n onUpdate={onUpdate}\n key={name}\n />\n ))}\n \n );\n };\n}\n","import * as React from 'react';\nimport { FormatRenderer } from './FormatRenderer';\nimport { useProperty } from '../../../hooks/useProperty';\n\nconst styles = require('../FormatView.scss');\n\nfunction DropDownFormatItem(props: {\n name: string;\n format: TFormat;\n options: TOption[];\n getter: (format: TFormat) => TOption | undefined;\n setter?: (format: TFormat, newValue: TOption | undefined) => void;\n onUpdate?: () => void;\n}) {\n const { name, getter, setter, format, options, onUpdate } = props;\n const dropDown = React.useRef(null);\n const [value, setValue] = useProperty(getter(format));\n\n const onChange = React.useCallback(() => {\n const newValue =\n dropDown.current.value == '' ? undefined : (dropDown.current.value as TOption);\n setValue(newValue);\n setter?.(format, newValue);\n onUpdate?.();\n }, [format, setter]);\n\n return (\n
\n
{name}
\n
\n \n
\n
\n );\n}\n\nexport function createDropDownFormatRenderer(\n name: string,\n options: O[],\n getter: (format: T) => O,\n setter?: (format: T, newValue: O) => void\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => (\n \n );\n}\n\nexport function createDropDownFormatRendererGroup(\n names: V[],\n options: O[],\n getter: (format: T) => O[],\n setter?: (format: T, name: V, newValue: O) => void\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => {\n const initValues = getter(format);\n return (\n <>\n {names.map((name, index) => (\n initValues[index]}\n setter={(format, newValue) => setter?.(format, name, newValue)}\n format={format}\n options={options}\n onUpdate={onUpdate}\n key={name}\n />\n ))}\n \n );\n };\n}\n","import * as React from 'react';\nimport { FormatRenderer } from './FormatRenderer';\nimport { useProperty } from '../../../hooks/useProperty';\n\nconst styles = require('../FormatView.scss');\n\nfunction TextFormatItem(props: {\n name: string;\n format: T;\n getter: (format: T) => string;\n setter?: (format: T, newValue: string) => void;\n onUpdate?: () => void;\n type: 'text' | 'number' | 'multiline';\n}) {\n const { name, getter, setter, format, type, onUpdate } = props;\n const textBox = React.useRef(null);\n const [value, setValue] = useProperty(getter(format));\n\n const updateValue = React.useCallback(\n (newValue: string) => {\n setValue(newValue);\n setter?.(format, newValue);\n onUpdate?.();\n },\n [setter, format]\n );\n\n const onTextBoxChange = React.useCallback(() => {\n updateValue(textBox.current.value);\n }, [updateValue]);\n\n let content: JSX.Element;\n\n switch (type) {\n case 'multiline':\n content = (\n \n );\n break;\n case 'number':\n content = (\n \n );\n break;\n case 'text':\n content = (\n \n );\n break;\n }\n\n return (\n
\n
{name}
\n
{content}
\n
\n );\n}\n\nexport function createTextFormatRenderer(\n name: string,\n getter: (format: T) => string,\n setter?: (format: T, newValue: string) => void,\n type: 'text' | 'number' | 'multiline' = 'text'\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => (\n \n );\n}\n\nexport function createTextFormatRendererGroup(\n names: V[],\n getter: (format: T) => string[],\n setter?: (format: T, name: V, newValue: string) => void,\n type: 'text' | 'number' | 'multiline' = 'text'\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => {\n const initValues = getter(format);\n\n return (\n <>\n {names.map((name, index) => (\n initValues[index]}\n setter={(format, newValue) => setter?.(format, name, newValue)}\n format={format}\n type={type}\n onUpdate={onUpdate}\n key={name}\n />\n ))}\n \n );\n };\n}\n","import * as React from 'react';\nimport { ContentModelBlockGroup } from 'roosterjs-content-model-types';\nimport { ContentModelBlockView } from './ContentModelBlockView';\n\nexport function BlockGroupContentView(props: { group: ContentModelBlockGroup }) {\n const { group } = props;\n\n return (\n <>\n {group.blocks.map((block, index) => (\n \n ))}\n \n );\n}\n","import * as React from 'react';\nimport { ContentModelBlockGroup } from 'roosterjs-content-model-types';\nimport { ContentModelDocumentView } from './ContentModelDocumentView';\nimport { ContentModelFormatContainerView } from './ContentModelFormatContainerView';\nimport { ContentModelGeneralView } from './ContentModelGeneralView';\nimport { ContentModelListItemView } from './ContentModelListItemView';\nimport { ContentModelTableCellView } from './ContentModelTableCellView';\n\nexport function ContentModelBlockGroupView(props: { group: ContentModelBlockGroup }) {\n const { group } = props;\n\n switch (group.blockGroupType) {\n case 'Document':\n return ;\n\n case 'General':\n return ;\n\n case 'ListItem':\n return ;\n\n case 'FormatContainer':\n return ;\n\n case 'TableCell':\n return ;\n }\n}\n","import * as React from 'react';\nimport { ContentModelBlock } from 'roosterjs-content-model-types';\nimport { ContentModelBlockGroupView } from './ContentModelBlockGroupView';\nimport { ContentModelDividerView } from './ContentModelDividerView';\nimport { ContentModelEntityView } from './ContentModelEntityView';\nimport { ContentModelParagraphView } from './ContentModelParagraphView';\nimport { ContentModelTableView } from './ContentModelTableView';\n\nexport function ContentModelBlockView(props: { block: ContentModelBlock }) {\n const { block } = props;\n\n switch (block.blockType) {\n case 'BlockGroup':\n return ;\n\n case 'Paragraph':\n return ;\n\n case 'Table':\n return ;\n\n case 'Entity':\n return ;\n\n case 'Divider':\n return ;\n }\n}\n","import * as React from 'react';\nimport { ContentModelBr } from 'roosterjs-content-model-types';\nimport { ContentModelView } from '../ContentModelView';\nimport { SegmentFormatView } from '../format/SegmentFormatView';\n\nconst styles = require('./ContentModelBrView.scss');\n\nexport function ContentModelBrView(props: { br: ContentModelBr }) {\n const { br } = props;\n const getFormat = React.useCallback(() => {\n return ;\n }, [br.format]);\n\n return (\n \n );\n}\n","import * as React from 'react';\nimport { ContentModelCode, ContentModelCodeFormat } from 'roosterjs-content-model-types';\nimport { ContentModelView } from '../ContentModelView';\nimport { DisplayFormatRenderer } from '../format/formatPart/DisplayFormatRenderer';\nimport { FontFamilyFormatRenderer } from '../format/formatPart/FontFamilyFormatRenderer';\nimport { FormatRenderer } from '../format/utils/FormatRenderer';\nimport { FormatView } from '../format/FormatView';\n\nconst CodeRenderers: FormatRenderer[] = [\n FontFamilyFormatRenderer,\n DisplayFormatRenderer,\n];\n\nconst styles = require('./ContentModelCodeView.scss');\n\nexport function ContentModelCodeView(props: { code: ContentModelCode }) {\n const { code } = props;\n\n const getFormat = React.useCallback(() => {\n return ;\n }, [code.format]);\n\n return (\n \n );\n}\n","import * as React from 'react';\nimport { BackgroundColorFormatRenderer } from '../format/formatPart/BackgroundColorFormatRenderer';\nimport { BorderFormatRenderers } from '../format/formatPart/BorderFormatRenderers';\nimport { ContentModelDivider, ContentModelDividerFormat } from 'roosterjs-content-model-types';\nimport { ContentModelView } from '../ContentModelView';\nimport { DirectionFormatRenderer } from '../format/formatPart/DirectionFormatRenderer';\nimport { DisplayFormatRenderer } from '../format/formatPart/DisplayFormatRenderer';\nimport { FormatRenderer } from '../format/utils/FormatRenderer';\nimport { FormatView } from '../format/FormatView';\nimport { LineHeightFormatRenderer } from '../format/formatPart/LineHeightFormatRenderer';\nimport { MarginFormatRenderer } from '../format/formatPart/MarginFormatRenderer';\nimport { PaddingFormatRenderer } from '../format/formatPart/PaddingFormatRenderer';\nimport { SizeFormatRenderers } from '../format/formatPart/SizeFormatRenderers';\nimport { useProperty } from '../../hooks/useProperty';\nimport { WhiteSpaceFormatRenderer } from '../format/formatPart/WhiteSpaceFormatRenderer';\n\nconst styles = require('./ContentModelDividerView.scss');\nconst DividerFormatRenders: FormatRenderer[] = [\n BackgroundColorFormatRenderer,\n DirectionFormatRenderer,\n MarginFormatRenderer,\n PaddingFormatRenderer,\n LineHeightFormatRenderer,\n WhiteSpaceFormatRenderer,\n ...BorderFormatRenderers,\n DisplayFormatRenderer,\n ...SizeFormatRenderers,\n];\n\nexport function ContentModelDividerView(props: { divider: ContentModelDivider }) {\n const { divider } = props;\n const [tagName, setTagName] = useProperty(divider.tagName);\n const tagNameDropDown = React.useRef(null);\n const onTagNameChange = React.useCallback(() => {\n const newValue = tagNameDropDown.current.value as 'hr' | 'div';\n divider.tagName = newValue;\n setTagName(newValue);\n }, [divider, setTagName]);\n\n const getContent = React.useCallback(() => {\n return (\n
\n TagName:\n \n
\n );\n }, [tagName]);\n\n const getFormat = React.useCallback(() => {\n return ;\n }, [divider.format]);\n\n return (\n \n );\n}\n","import * as React from 'react';\nimport { BlockGroupContentView } from './BlockGroupContentView';\nimport { ContentModelDocument } from 'roosterjs-content-model-types';\nimport { ContentModelView } from '../ContentModelView';\nimport { hasSelectionInBlockGroup } from 'roosterjs-content-model-dom';\n\nconst styles = require('./ContentModelDocumentView.scss');\n\nexport function ContentModelDocumentView(props: { doc: ContentModelDocument }) {\n const { doc } = props;\n const getContent = React.useCallback(() => {\n return ;\n }, [doc]);\n\n return (\n \n );\n}\n","import * as React from 'react';\nimport { BlockFormatView } from '../format/BlockFormatView';\nimport { ContentModelEntity } from 'roosterjs-content-model-types';\nimport { ContentModelView } from '../ContentModelView';\nimport { SegmentFormatView } from '../format/SegmentFormatView';\nimport { useProperty } from '../../hooks/useProperty';\n\nconst styles = require('./ContentModelEntityView.scss');\n\nexport function ContentModelEntityView(props: { entity: ContentModelEntity }) {\n const { entity } = props;\n\n const [id, setId] = useProperty(entity.entityFormat.id);\n const [isReadonly, setIsReadonly] = useProperty(entity.entityFormat.isReadonly);\n const [type, setType] = useProperty(entity.entityFormat.entityType);\n\n const idTextBox = React.useRef(null);\n const isReadonlyCheckBox = React.useRef(null);\n const typeTextBox = React.useRef(null);\n\n const onIdChange = React.useCallback(() => {\n const newValue = idTextBox.current.value;\n entity.entityFormat.id = newValue;\n setId(newValue);\n }, [id, setId]);\n const onTypeChange = React.useCallback(() => {\n const newValue = typeTextBox.current.value;\n entity.entityFormat.entityType = newValue;\n setType(newValue);\n }, [type, setType]);\n const onReadonlyChange = React.useCallback(() => {\n const newValue = isReadonlyCheckBox.current.checked;\n entity.entityFormat.isReadonly = newValue;\n setIsReadonly(newValue);\n }, [id, setId]);\n\n const getContent = React.useCallback(() => {\n return (\n <>\n
\n Id: \n
\n
\n Type:\n \n
\n
\n IsReadonly:\n \n
\n \n );\n }, [type, isReadonly, id]);\n\n const getFormat = React.useCallback(() => {\n return (\n <>\n \n \n \n );\n }, [entity.format]);\n\n return (\n \n );\n}\n","import * as React from 'react';\nimport { BlockFormatView } from '../format/BlockFormatView';\nimport { BlockGroupContentView } from './BlockGroupContentView';\nimport { ContentModelView } from '../ContentModelView';\nimport { DisplayFormatRenderer } from '../format/formatPart/DisplayFormatRenderer';\nimport { FormatRenderer } from '../format/utils/FormatRenderer';\nimport { FormatView } from '../format/FormatView';\nimport { hasSelectionInBlock } from 'roosterjs-content-model-dom';\nimport { SegmentFormatView } from '../format/SegmentFormatView';\nimport { SizeFormatRenderers } from '../format/formatPart/SizeFormatRenderers';\nimport {\n ContentModelFormatContainer,\n ContentModelFormatContainerFormat,\n} from 'roosterjs-content-model-types';\n\nconst styles = require('./ContentModelFormatContainerView.scss');\n\nconst FormatContainerFormatRenderers: FormatRenderer[] = [\n ...SizeFormatRenderers,\n DisplayFormatRenderer,\n];\n\nexport function ContentModelFormatContainerView(props: { container: ContentModelFormatContainer }) {\n const { container } = props;\n const getContent = React.useCallback(() => {\n return ;\n }, [container]);\n\n const getFormat = React.useCallback(() => {\n return (\n <>\n \n \n \n \n );\n }, [container]);\n\n return (\n \n );\n}\n","import * as React from 'react';\nimport { BlockGroupContentView } from './BlockGroupContentView';\nimport { ContentModelCodeView } from './ContentModelCodeView';\nimport { ContentModelLinkView } from './ContentModelLinkView';\nimport { ContentModelView } from '../ContentModelView';\nimport { hasSelectionInBlock } from 'roosterjs-content-model-dom';\nimport { SegmentFormatView } from '../format/SegmentFormatView';\nimport {\n ContentModelGeneralBlock,\n ContentModelGeneralSegment,\n} from 'roosterjs-content-model-types';\n\nconst styles = require('./ContentModelGeneralView.scss');\n\nexport function ContentModelGeneralView(props: { model: ContentModelGeneralBlock }) {\n const { model } = props;\n const segment = isGeneralSegment(model) ? model : undefined;\n const link = segment?.link;\n const code = segment?.code;\n const getContent = React.useCallback(() => {\n return (\n <>\n {link ? : null}\n {code ? : null}\n \n \n );\n }, [model, link]);\n\n const getFormat = React.useCallback(() => {\n return ;\n }, [segment?.format]);\n\n return (\n \n );\n}\n\nfunction isGeneralSegment(block: ContentModelGeneralBlock): block is ContentModelGeneralSegment {\n return (block as ContentModelGeneralSegment).segmentType == 'General';\n}\n","import * as React from 'react';\nimport { ContentModelCodeView } from './ContentModelCodeView';\nimport { ContentModelImage, ContentModelImageFormat } from 'roosterjs-content-model-types';\nimport { ContentModelLinkView } from './ContentModelLinkView';\nimport { ContentModelView } from '../ContentModelView';\nimport { FloatFormatRenderer } from '../format/formatPart/FloatFormatRenderer';\nimport { FormatRenderer } from '../format/utils/FormatRenderer';\nimport { FormatView } from '../format/FormatView';\nimport { IdFormatRenderer } from '../format/formatPart/IdFormatRenderer';\nimport { ImageMetadataFormatRenderers } from '../format/formatPart/ImageMetadataFormatRenderers';\nimport { MarginFormatRenderer } from '../format/formatPart/MarginFormatRenderer';\nimport { MetadataView } from '../format/MetadataView';\nimport { PaddingFormatRenderer } from '../format/formatPart/PaddingFormatRenderer';\nimport { SegmentFormatView } from '../format/SegmentFormatView';\nimport { SizeFormatRenderers } from '../format/formatPart/SizeFormatRenderers';\nimport { updateImageMetadata } from 'roosterjs-content-model-dom';\nimport { useProperty } from '../../hooks/useProperty';\n\nconst styles = require('./ContentModelImageView.scss');\n\nconst ImageFormatRenderers: FormatRenderer[] = [\n IdFormatRenderer,\n ...SizeFormatRenderers,\n MarginFormatRenderer,\n PaddingFormatRenderer,\n FloatFormatRenderer,\n];\n\nexport function ContentModelImageView(props: { image: ContentModelImage }) {\n const { image } = props;\n const srcTextArea = React.useRef(null);\n const imageSelectionCheckBox = React.useRef(null);\n\n const [src, setSrc] = useProperty(image.src);\n const [imageSelected, setImageSelected] = useProperty(\n image.isSelectedAsImageSelection || false\n );\n\n const getFormat = React.useCallback(() => {\n return (\n <>\n \n \n \n );\n }, [image.format]);\n\n const getContent = React.useCallback(() => {\n return (\n <>\n \n \n \n
\n Style:\n \n \n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n {this.state.entities.map(entity => (\n \n ))}\n
\n \n );\n }\n\n private insertEntity = () => {\n const entityType = this.entityType.current.value;\n const node = document.createElement('span');\n node.innerHTML = trustedHTMLHandler(this.html.current.value);\n const isBlock = this.styleBlock.current.checked;\n const isReadonly = this.isReadonly.current.checked;\n const insertAtRoot = this.insertAtRoot.current.checked;\n const focusAfterEntity = this.focusAfterEntity.current.checked;\n\n if (node) {\n const editor = this.props.getEditor();\n\n editor.addUndoSnapshot(() => {\n insertEntity(\n editor,\n entityType,\n node,\n isBlock,\n isReadonly,\n undefined /*position*/,\n insertAtRoot,\n focusAfterEntity\n );\n });\n }\n };\n\n private onGetEntities = () => {\n const selector = getEntitySelector();\n const nodes = this.props.getEditor().queryElements(selector);\n const allEntities = nodes.map(node => getEntityFromElement(node));\n\n this.setState({\n entities: allEntities.filter(e => !!e),\n });\n };\n}\n\nfunction EntityButton({ entity }: { entity: Entity }) {\n let background = '';\n const onMouseOver = React.useCallback(() => {\n background = entity.wrapper.style.backgroundColor;\n entity.wrapper.style.backgroundColor = 'blue';\n }, [entity]);\n\n const onMouseOut = React.useCallback(() => {\n entity.wrapper.style.backgroundColor = background;\n }, [entity]);\n\n return (\n
\n Type: {entity.type}\n
\n Id: {entity.id}\n
\n Readonly: {entity.isReadonly ? 'True' : 'False'}\n
\n
\n );\n}\n","import * as React from 'react';\nimport ApiPaneProps from '../ApiPaneProps';\nimport { LinkData } from 'roosterjs-editor-types';\nimport { matchLink } from 'roosterjs-editor-dom';\n\ninterface MatchLinkState {\n linkData: LinkData;\n}\n\nexport default class MatchLinkPane extends React.Component {\n private url = React.createRef();\n\n constructor(props: ApiPaneProps) {\n super(props);\n this.state = { linkData: undefined };\n }\n\n render() {\n let { scheme, originalUrl, normalizedUrl } = this.state.linkData || ({} as LinkData);\n return (\n <>\n
\n Url: {' '}\n \n
\n {this.state.linkData === null ? (\n
Not matched
\n ) : (\n <>\n
Schema: {scheme || ''}
\n
Original Url: {originalUrl || ''}
\n
Normalized Url: {normalizedUrl || ''}
\n \n )}\n \n );\n }\n\n private onMatchLink = () => {\n let match = matchLink(this.url.current.value);\n this.setState({\n linkData: match,\n });\n };\n}\n","import * as React from 'react';\nimport ApiPaneProps from '../ApiPaneProps';\nimport { IEditor, PositionType, Region } from 'roosterjs-editor-types';\nimport {\n createRange,\n getSelectedBlockElementsInRegion,\n getTagOfNode,\n safeInstanceOf,\n} from 'roosterjs-editor-dom';\n\nconst styles = require('./GetSelectedRegionsPane.scss');\n\ninterface GetSelectedRegionsPaneState {\n regions: Region[];\n}\n\nexport default class GetSelectedRegionsPane extends React.Component<\n ApiPaneProps,\n GetSelectedRegionsPaneState\n> {\n constructor(props: ApiPaneProps) {\n super(props);\n this.state = { regions: [] };\n }\n\n render() {\n const editor = this.props.getEditor();\n return (\n <>\n
\n  \n \n
\n
\n {this.state.regions.map((region, i) => (\n \n ))}\n
\n \n );\n }\n\n private getSelectedRegions = () => {\n this.setState({\n regions: this.props.getEditor().getSelectedRegions(),\n });\n };\n\n private clearAll = () => {\n this.setState({\n regions: [],\n });\n };\n}\n\nfunction Region({ region, editor, index }: { region: Region; editor: IEditor; index: number }) {\n const selectRegion = React.useCallback(() => {\n const blocks = getSelectedBlockElementsInRegion(region);\n if (blocks.length > 0) {\n const range = createRange(\n blocks[0].getStartNode(),\n PositionType.Begin,\n blocks[blocks.length - 1].getEndNode(),\n PositionType.End\n );\n editor.focus();\n editor.select(range);\n }\n }, [region]);\n\n return (\n
\n
\n
\n Region {index}\n
\n
\n Root node: \n
\n
\n Node Before: \n
\n
\n Node After: \n
\n
\n Selected blocks: \n
\n
\n );\n}\n\nfunction NodeName({ node }: { node: Node }) {\n const mouseOver = React.useCallback(() => {\n if (safeInstanceOf(node, 'HTMLElement')) {\n node.className += ' ' + styles.hover;\n }\n }, [node]);\n\n const mouseOut = React.useCallback(() => {\n if (safeInstanceOf(node, 'HTMLElement')) {\n let classNames = node.className.split(' ');\n classNames = classNames.filter(name => name != styles.hover);\n node.className = classNames.join(' ').trim();\n }\n }, [node]);\n\n return node ? (\n safeInstanceOf(node, 'HTMLElement') ? (\n \n {getTagOfNode(node)}#{node.id}\n \n ) : (\n {node.nodeValue.substr(0, 10)}\n )\n ) : null;\n}\n","import * as React from 'react';\nimport ApiPaneProps from '../ApiPaneProps';\nimport { HtmlSanitizer } from 'roosterjs-editor-dom';\nimport { trustedHTMLHandler } from '../../../../utils/trustedHTMLHandler';\n\nconst styles = require('./SanitizerPane.scss');\n\nexport default class SanitizerPane extends React.Component {\n private source = React.createRef();\n private result = React.createRef();\n private sanitizer = new HtmlSanitizer();\n\n render() {\n return (\n <>\n

Input

\n \n \n
\n Style:\n \n \n \n \n
\n
\n Position:\n
\n \n \n
\n \n \n
\n \n \n
\n \n \n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n {this.state.entities.map(entity => (\n \n ))}\n
\n \n );\n }\n\n private insertEntity = () => {\n const entityType = this.entityType.current.value;\n const node = document.createElement('span');\n node.innerHTML = trustedHTMLHandler(this.html.current.value);\n const isBlock = this.styleBlock.current.checked;\n const focusAfterEntity = this.focusAfterEntity.current.checked;\n const insertAtTop = this.posTop.current.checked;\n const insertAtBottom = this.posBottom.current.checked;\n const insertAtRoot = this.posRegionRoot.current.checked;\n\n if (node) {\n const editor = this.props.getEditor();\n const options: InsertEntityOptions = {\n contentNode: node,\n focusAfterEntity: focusAfterEntity,\n };\n\n editor.focus();\n\n if (isBlock) {\n insertEntity(\n editor,\n entityType,\n true,\n insertAtRoot\n ? 'root'\n : insertAtTop\n ? 'begin'\n : insertAtBottom\n ? 'end'\n : 'focus',\n options\n );\n } else {\n insertEntity(\n editor,\n entityType,\n isBlock,\n insertAtTop ? 'begin' : insertAtBottom ? 'end' : 'focus',\n options\n );\n }\n }\n };\n\n private onGetEntities = () => {\n const model = this.props.getEditor().getContentModelCopy('connected');\n const allEntities: ContentModelEntity[] = [];\n\n findAllEntities(model, allEntities);\n\n this.setState({\n entities: allEntities.filter(e => !!e),\n });\n };\n}\n\nfunction findAllEntities(group: ContentModelBlockGroup, result: ContentModelEntity[]) {\n group.blocks.forEach(block => {\n switch (block.blockType) {\n case 'BlockGroup':\n findAllEntities(block, result);\n break;\n\n case 'Entity':\n result.push(block);\n break;\n\n case 'Paragraph':\n block.segments.forEach(segment => {\n switch (segment.segmentType) {\n case 'Entity':\n result.push(segment);\n break;\n\n case 'General':\n findAllEntities(segment, result);\n break;\n }\n });\n break;\n\n case 'Table':\n block.rows.forEach(row => row.cells.forEach(cell => findAllEntities(cell, result)));\n break;\n }\n });\n}\n\nfunction EntityButton({ entity }: { entity: ContentModelEntity }) {\n let background = '';\n const onMouseOver = React.useCallback(() => {\n background = entity.wrapper.style.backgroundColor;\n entity.wrapper.style.backgroundColor = 'blue';\n }, [entity]);\n\n const onMouseOut = React.useCallback(() => {\n entity.wrapper.style.backgroundColor = background;\n }, [entity]);\n\n return (\n \n Type: {entity.entityFormat.entityType}\n
\n Id: {entity.entityFormat.id}\n
\n Readonly: {entity.entityFormat.isReadonly ? 'True' : 'False'}\n
\n Fake entity: {entity.entityFormat.isFakeEntity ? 'True' : 'False'}\n
\n \n );\n}\n","import * as React from 'react';\nimport { ContentModelDocument } from 'roosterjs-content-model-types';\nimport { ContentModelDocumentView } from './components/model/ContentModelDocumentView';\nimport { exportButton } from './buttons/exportButton';\nimport { importModelButton } from './buttons/importModelButton';\nimport { refreshButton } from './buttons/refreshButton';\nimport { Ribbon, RibbonButton, RibbonPlugin } from '../../roosterjsReact/ribbon';\nimport { SidePaneElementProps } from '../SidePaneElement';\n\nconst styles = require('./ContentModelPane.scss');\n\nexport interface ContentModelPaneState {\n model: ContentModelDocument;\n}\n\nexport interface ContentModelPaneProps extends ContentModelPaneState, SidePaneElementProps {\n ribbonPlugin: RibbonPlugin;\n}\n\nexport class ContentModelPane extends React.Component<\n ContentModelPaneProps,\n ContentModelPaneState\n> {\n private contentModelButtons: RibbonButton[];\n\n constructor(props: ContentModelPaneProps) {\n super(props);\n\n this.contentModelButtons = [refreshButton, exportButton, importModelButton];\n\n this.state = {\n model: null,\n };\n }\n\n setContentModel(model: ContentModelDocument) {\n this.setState({\n model: model,\n });\n }\n\n render() {\n return (\n <>\n \n
\n {this.state.model ? : null}\n
\n \n );\n }\n}\n","import { ContentModelPane, ContentModelPaneProps } from './ContentModelPane';\nimport { createRibbonPlugin, RibbonPlugin } from '../../roosterjsReact/ribbon';\nimport { IEditor, PluginEvent } from 'roosterjs-content-model-types';\nimport { setCurrentContentModel } from './currentModel';\nimport { SidePaneElementProps } from '../SidePaneElement';\nimport { SidePanePluginImpl } from '../SidePanePluginImpl';\n\nexport class ContentModelPanePlugin extends SidePanePluginImpl<\n ContentModelPane,\n ContentModelPaneProps\n> {\n private contentModelRibbon: RibbonPlugin;\n\n constructor() {\n super(ContentModelPane, 'contentModel', 'Content Model');\n this.contentModelRibbon = createRibbonPlugin();\n }\n\n initialize(editor: IEditor): void {\n super.initialize(editor);\n\n this.contentModelRibbon.initialize(editor);\n editor.getDocument().addEventListener('selectionchange', this.onModelChangeFromSelection);\n }\n\n dispose(): void {\n this.contentModelRibbon.dispose();\n this.editor\n .getDocument()\n .removeEventListener('selectionchange', this.onModelChangeFromSelection);\n\n super.dispose();\n }\n\n onPluginEvent(e: PluginEvent) {\n if (e.eventType == 'contentChanged' && e.source == 'RefreshModel') {\n this.getComponent(component => {\n const model = this.editor.getContentModelCopy('connected');\n component.setContentModel(model);\n setCurrentContentModel(model);\n });\n } else if (\n e.eventType == 'input' ||\n e.eventType == 'selectionChanged' ||\n e.eventType == 'editorReady'\n ) {\n this.onModelChange();\n }\n\n this.contentModelRibbon.onPluginEvent(e);\n }\n\n getInnerRibbonPlugin() {\n return this.contentModelRibbon;\n }\n\n protected getComponentProps(baseProps: SidePaneElementProps): ContentModelPaneProps {\n return {\n ...baseProps,\n model: null,\n ribbonPlugin: this.contentModelRibbon,\n };\n }\n\n private onModelChangeFromSelection = () => {\n if (this.editor.hasFocus()) {\n this.onModelChange();\n }\n };\n\n private onModelChange = () => {\n this.getComponent(component => {\n const model = this.editor.getContentModelCopy('connected');\n component.setContentModel(model);\n setCurrentContentModel(model);\n });\n };\n}\n","import { getCurrentContentModel } from '../currentModel';\nimport { RibbonButton } from '../../../roosterjsReact/ribbon';\n\nexport const exportButton: RibbonButton<'buttonNameExport'> = {\n key: 'buttonNameExport',\n unlocalizedText: 'Create DOM tree',\n iconName: 'DOM',\n onClick: editor => {\n const model = getCurrentContentModel();\n\n if (model) {\n editor.formatContentModel(currentModel => {\n currentModel.blocks = model.blocks;\n\n return true;\n });\n }\n },\n};\n","import { isBlockGroupOfType } from 'roosterjs-content-model-dom';\nimport { showInputDialog } from '../../../roosterjsReact/inputDialog/utils/showInputDialog';\nimport type { RibbonButton } from '../../../roosterjsReact/ribbon/type/RibbonButton';\n\n/**\n * @internal\n * \"Import Model\" button on the format ribbon\n */\nexport const importModelButton: RibbonButton<'buttonNameImportModel'> = {\n key: 'buttonNameImportModel',\n unlocalizedText: 'Import Model',\n iconName: 'Installation',\n isChecked: formatState => formatState.isBold,\n onClick: (editor, _, strings, uiUtilities) => {\n showInputDialog(\n uiUtilities,\n 'buttonNameImportModel',\n 'Import Model',\n {\n model: {\n autoFocus: true,\n labelKey: 'buttonNameImportModel' as const,\n unlocalizedLabel: 'Insert model',\n initValue: '',\n },\n },\n strings,\n undefined /* onChange */,\n 10 /* rows */\n ).then(values => {\n try {\n const importedModel = JSON.parse(values.model);\n if (isBlockGroupOfType(importedModel, 'Document')) {\n editor.formatContentModel(model => {\n model.blocks = importedModel.blocks;\n model.format = importedModel.format;\n return true;\n });\n }\n } catch (e) {\n throw new Error('Invalid model');\n }\n });\n },\n};\n","import { RibbonButton } from '../../../roosterjsReact/ribbon';\n\nexport const refreshButton: RibbonButton<'buttonNameRefresh'> = {\n key: 'buttonNameRefresh',\n unlocalizedText: 'Refresh',\n iconName: 'Refresh',\n onClick: editor => {\n editor.triggerEvent('contentChanged', {\n source: 'RefreshModel',\n });\n },\n};\n","import * as React from 'react';\nimport { css } from '@fluentui/react/lib/Utilities';\n\nconst styles = require('./ButtonGroup.scss');\n\nexport function ButtonGroup(props: {\n hasFormat: boolean;\n hasContent: boolean;\n hasDataset: boolean;\n bodyState: 'children' | 'format' | 'json' | 'collapsed' | 'dataset';\n toggleVisual: () => void;\n toggleFormat: () => void;\n toggleJson: () => void;\n toggleMetadata: () => void;\n}) {\n const {\n hasContent,\n hasFormat,\n hasDataset,\n bodyState,\n toggleFormat,\n toggleJson,\n toggleVisual,\n toggleMetadata,\n } = props;\n\n return (\n
\n {hasContent ? (\n \n 🔎\n \n ) : null}\n {hasFormat ? (\n \n 🖹\n \n ) : null}\n {hasDataset ? (\n \n 🏴\n \n ) : null}\n \n 🅙\n \n
\n );\n}\n","import * as React from 'react';\nimport { ButtonGroup } from './ButtonGroup';\nimport { ContentModelJson } from './model/ContentModelJson';\nimport { css } from '@fluentui/react/lib/Utilities';\nimport { getObjectKeys } from 'roosterjs-editor-dom';\nimport { useProperty } from '../hooks/useProperty';\nimport {\n ContentModelBlockWithCache,\n ContentModelEntity,\n ContentModelGeneralBlock,\n ContentModelWithDataset,\n DatasetFormat,\n} from 'roosterjs-content-model-types';\n\nconst styles = require('./ContentModelView.scss');\nconst MetadataKey = 'editingInfo';\n\nexport function ContentModelView(props: {\n className: string;\n title: string;\n subTitle?: string;\n hasSelection?: boolean;\n isSelected?: boolean;\n jsonSource: Object;\n getContent?: (() => JSX.Element) | null;\n getFormat?: (() => JSX.Element) | null;\n getMetadata?: (() => JSX.Element) | null;\n isExpanded?: boolean;\n}) {\n const {\n title,\n subTitle,\n isExpanded,\n className,\n hasSelection,\n isSelected: isSelection,\n jsonSource,\n getContent,\n getFormat,\n getMetadata,\n } = props;\n const [bodyState, setBodyState] = useProperty<\n 'collapsed' | 'children' | 'format' | 'json' | 'dataset'\n >(isExpanded ? 'children' : 'collapsed');\n const highlightBorder = React.useRef(null);\n\n const toggleVisual = React.useCallback(() => {\n setBodyState(bodyState == 'children' ? 'collapsed' : 'children');\n }, [bodyState]);\n\n const toggleFormat = React.useCallback(() => {\n setBodyState(bodyState == 'format' ? 'collapsed' : 'format');\n }, [bodyState]);\n\n const toggleJson = React.useCallback(() => {\n setBodyState(bodyState == 'json' ? 'collapsed' : 'json');\n }, [bodyState]);\n\n const toggleDataset = React.useCallback(() => {\n setBodyState(bodyState == 'dataset' ? 'collapsed' : 'dataset');\n }, [bodyState]);\n\n const getCachedElement = React.useCallback(() => {\n return (\n (jsonSource as ContentModelBlockWithCache)?.cachedElement ||\n (jsonSource as ContentModelGeneralBlock)?.element ||\n (jsonSource as ContentModelEntity)?.wrapper\n );\n }, [jsonSource]);\n const onMouseOver = React.useCallback(\n (e: React.MouseEvent) => {\n const cachedElement = getCachedElement();\n const doc = cachedElement?.ownerDocument;\n\n if (cachedElement && doc) {\n onMouseOut();\n\n const rect = cachedElement.getBoundingClientRect();\n const div = doc.createElement('div');\n\n if (div) {\n div.style.position = 'fixed';\n div.style.zIndex = '10000';\n div.style.left = rect.left + 'px';\n div.style.top = rect.top + 'px';\n div.style.width = rect.width + 'px';\n div.style.height = rect.height + 'px';\n div.style.border = 'solid 2px #8888ff';\n div.style.boxSizing = 'border-box';\n doc.body.appendChild(div);\n\n highlightBorder.current = div;\n }\n\n e.stopPropagation();\n }\n },\n [getCachedElement]\n );\n const onMouseOut = React.useCallback(() => {\n if (highlightBorder.current) {\n highlightBorder.current.parentNode?.removeChild(highlightBorder.current);\n highlightBorder.current = null;\n }\n }, [getCachedElement]);\n\n const dataset = (jsonSource as ContentModelWithDataset).dataset;\n\n React.useEffect(() => () => {\n onMouseOut();\n });\n\n return (\n \n
\n \n {title}\n
\n
\n \n
\n \n {subTitle || '\\u00a0'}\n \n \n {bodyState == 'json' ? (\n
\n \n
\n ) : bodyState == 'children' && !!getContent ? (\n
{getContent()}
\n ) : bodyState == 'format' && !!getFormat ? (\n
{getFormat()}
\n ) : bodyState == 'dataset' && !!dataset ? (\n
\n \n
\n ) : null}\n \n );\n}\n\nfunction DatasetView(props: { dataset: DatasetFormat; getMetadata?: (() => JSX.Element) | null }) {\n const { dataset, getMetadata } = props;\n\n return (\n <>\n {getObjectKeys(dataset).map(name =>\n !getMetadata || name != MetadataKey ? (\n \n ) : null\n )}\n {getMetadata ? (\n <>\n
Metadata:
\n {getMetadata()}\n \n ) : null}\n \n );\n}\n\nfunction DatasetItemView(props: { dataset: DatasetFormat; name: string }) {\n const { dataset, name } = props;\n const [value, setValue] = useProperty(dataset[name]);\n const inputRef = React.useRef(null);\n const onChange = React.useCallback(() => {\n const newValue = inputRef.current.value;\n dataset[name] = newValue;\n setValue(newValue);\n }, [value, setValue]);\n\n return (\n
\n {name}\n \n
\n );\n}\n","import * as React from 'react';\nimport { BackgroundColorFormatRenderer } from './formatPart/BackgroundColorFormatRenderer';\nimport { BorderFormatRenderers } from './formatPart/BorderFormatRenderers';\nimport { ContentModelBlockFormat, ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { DirectionFormatRenderer } from './formatPart/DirectionFormatRenderer';\nimport { FormatRenderer } from './utils/FormatRenderer';\nimport { FormatView } from './FormatView';\nimport { HtmlAlignFormatRenderer } from './formatPart/HtmlAlignFormatRenderer';\nimport { LineHeightFormatRenderer } from './formatPart/LineHeightFormatRenderer';\nimport { MarginFormatRenderer } from './formatPart/MarginFormatRenderer';\nimport { PaddingFormatRenderer } from './formatPart/PaddingFormatRenderer';\nimport { TextAlignFormatRenderer } from './formatPart/TextAlignFormatRenderer';\nimport { TextIndentFormatRenderer } from './formatPart/TextIndentFormatRenderer';\nimport { WhiteSpaceFormatRenderer } from './formatPart/WhiteSpaceFormatRenderer';\n\nconst BlockFormatRenders: FormatRenderer[] = [\n BackgroundColorFormatRenderer,\n DirectionFormatRenderer,\n TextAlignFormatRenderer,\n HtmlAlignFormatRenderer,\n MarginFormatRenderer,\n PaddingFormatRenderer,\n LineHeightFormatRenderer,\n WhiteSpaceFormatRenderer,\n TextIndentFormatRenderer,\n ...BorderFormatRenderers,\n];\n\nexport function BlockFormatView(props: { format: ContentModelSegmentFormat }) {\n const { format } = props;\n return ;\n}\n","import * as React from 'react';\nimport { FormatRenderer } from './utils/FormatRenderer';\n\nconst styles = require('./FormatView.scss');\n\nexport function FormatView(props: {\n format: T;\n renderers: FormatRenderer[];\n onUpdate?: () => void;\n}) {\n const { format, renderers, onUpdate } = props;\n\n return
{renderers.map(x => x(format, onUpdate))}
;\n}\n","import * as React from 'react';\nimport { ContentModelHyperLinkFormat, LinkFormat } from 'roosterjs-content-model-types';\nimport { createTextFormatRenderer } from './utils/createTextFormatRenderer';\nimport { DisplayFormatRenderer } from './formatPart/DisplayFormatRenderer';\nimport { FormatRenderer } from './utils/FormatRenderer';\nimport { FormatView } from './FormatView';\nimport { MarginFormatRenderer } from './formatPart/MarginFormatRenderer';\nimport { PaddingFormatRenderer } from './formatPart/PaddingFormatRenderer';\nimport { TextColorFormatRenderer } from './formatPart/TextColorFormatRenderer';\nimport { UnderlineFormatRenderer } from './formatPart/BasicFormatRenderers';\n\nconst LinkFormatRenderers: FormatRenderer[] = [\n createTextFormatRenderer(\n 'Name',\n format => format.name,\n (format, value) => (format.name = value)\n ),\n createTextFormatRenderer(\n 'Href',\n format => format.href,\n (format, value) => (format.href = value)\n ),\n createTextFormatRenderer(\n 'Target',\n format => format.target,\n (format, value) => (format.target = value)\n ),\n createTextFormatRenderer(\n 'AnchorId',\n format => format.anchorId,\n (format, value) => (format.anchorId = value)\n ),\n createTextFormatRenderer(\n 'AnchorClass',\n format => format.anchorClass,\n (format, value) => (format.anchorClass = value)\n ),\n createTextFormatRenderer(\n 'AnchorTitle',\n format => format.anchorTitle,\n (format, value) => (format.anchorTitle = value)\n ),\n createTextFormatRenderer(\n 'Relationship',\n format => format.relationship,\n (format, value) => (format.relationship = value)\n ),\n TextColorFormatRenderer,\n UnderlineFormatRenderer,\n DisplayFormatRenderer,\n MarginFormatRenderer,\n PaddingFormatRenderer,\n];\n\nexport function LinkFormatView(props: { format: LinkFormat }) {\n const { format } = props;\n return ;\n}\n","import * as React from 'react';\nimport { ContentModelWithDataset } from 'roosterjs-content-model-types';\nimport { FormatRenderer } from './utils/FormatRenderer';\n\nconst styles = require('./FormatView.scss');\n\nexport function MetadataView(props: {\n model: ContentModelWithDataset;\n renderers: FormatRenderer[];\n updater: (model: ContentModelWithDataset, callback: (format: T | null) => T | null) => void;\n}) {\n const { model, renderers, updater } = props;\n const metadata = React.useRef(null);\n\n const onUpdate = React.useCallback(() => {\n updater(model, () => metadata.current);\n }, [model]);\n\n let result: JSX.Element | null = null;\n\n updater(model, format => {\n metadata.current = format;\n result = format ? (\n
{renderers.map(x => x(format, onUpdate))}
\n ) : null;\n\n return format;\n });\n\n return result;\n}\n","import * as React from 'react';\nimport { BackgroundColorFormatRenderer } from './formatPart/BackgroundColorFormatRenderer';\nimport { ContentModelSegmentFormat } from 'roosterjs-content-model-types';\nimport { FontFamilyFormatRenderer } from './formatPart/FontFamilyFormatRenderer';\nimport { FontSizeFormatRenderer } from './formatPart/FontSizeFormatRenderer';\nimport { FormatRenderer } from './utils/FormatRenderer';\nimport { FormatView } from './FormatView';\nimport { LetterSpacingFormatRenderer } from './formatPart/LetterSpacingFormatRenderer';\nimport { LineHeightFormatRenderer } from './formatPart/LineHeightFormatRenderer';\nimport { TextColorFormatRenderer } from './formatPart/TextColorFormatRenderer';\nimport {\n BoldFormatRenderer,\n ItalicFormatRenderer,\n StrikeFormatRenderer,\n UnderlineFormatRenderer,\n SuperOrSubScriptFormatRenderer,\n} from './formatPart/BasicFormatRenderers';\n\nconst SegmentFormatRenders: FormatRenderer[] = [\n TextColorFormatRenderer,\n BackgroundColorFormatRenderer,\n FontSizeFormatRenderer,\n FontFamilyFormatRenderer,\n BoldFormatRenderer,\n ItalicFormatRenderer,\n UnderlineFormatRenderer,\n StrikeFormatRenderer,\n SuperOrSubScriptFormatRenderer,\n LineHeightFormatRenderer,\n LetterSpacingFormatRenderer,\n];\n\nexport function SegmentFormatView(props: { format: ContentModelSegmentFormat }) {\n const { format } = props;\n return ;\n}\n","import { BackgroundColorFormat } from 'roosterjs-content-model-types';\nimport { createColorFormatRenderer } from '../utils/createColorFormatRender';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\nexport const BackgroundColorFormatRenderer: FormatRenderer = createColorFormatRenderer<\n BackgroundColorFormat\n>(\n 'Back color',\n format => format.backgroundColor,\n (format, value) => (format.backgroundColor = value)\n);\n","import { createCheckboxFormatRenderer } from '../utils/createCheckboxFormatRenderer';\nimport { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport {\n BoldFormat,\n ItalicFormat,\n StrikeFormat,\n SuperOrSubScriptFormat,\n UnderlineFormat,\n} from 'roosterjs-content-model-types';\n\nexport const BoldFormatRenderer: FormatRenderer = createTextFormatRenderer(\n 'Bold',\n format => format.fontWeight,\n (format, value) => (format.fontWeight = value)\n);\n\nexport const ItalicFormatRenderer: FormatRenderer = createCheckboxFormatRenderer<\n ItalicFormat\n>(\n 'Italic',\n format => format.italic,\n (format, value) => (format.italic = value)\n);\n\nexport const UnderlineFormatRenderer: FormatRenderer = createCheckboxFormatRenderer<\n UnderlineFormat\n>(\n 'Underline',\n format => format.underline,\n (format, value) => (format.underline = value)\n);\n\nexport const StrikeFormatRenderer: FormatRenderer = createCheckboxFormatRenderer<\n StrikeFormat\n>(\n 'Strike',\n format => format.strikethrough,\n (format, value) => (format.strikethrough = value)\n);\n\nexport const SuperOrSubScriptFormatRenderer: FormatRenderer = createTextFormatRenderer<\n SuperOrSubScriptFormat\n>(\n 'SuperOrSubScript',\n format => format.superOrSubScriptSequence,\n (format, value) => (format.superOrSubScriptSequence = value)\n);\n","import { BorderBoxFormat } from 'roosterjs-content-model-types';\nimport { createCheckboxFormatRenderer } from '../utils/createCheckboxFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\nexport const BorderBoxFormatRenderer: FormatRenderer = createCheckboxFormatRenderer<\n BorderBoxFormat\n>(\n 'UseBorderBox',\n format => format.useBorderBox,\n (format, value) => (format.useBorderBox = value)\n);\n","import { BorderFormat } from 'roosterjs-content-model-types';\nimport { combineBorderValue, extractBorderValues } from 'roosterjs-content-model-dom';\nimport { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\ntype BorderStyle =\n | 'dashed'\n | 'dotted'\n | 'double'\n | 'groove'\n | 'none'\n | 'outset'\n | 'solid'\n | 'hidden'\n | 'ridge'\n | 'inset';\nconst BorderStyles: BorderStyle[] = [\n 'none',\n 'hidden',\n 'dotted',\n 'dashed',\n 'solid',\n 'double',\n 'groove',\n 'ridge',\n 'inset',\n 'outset',\n];\n\nfunction createBorderRenderer(position: keyof BorderFormat): FormatRenderer[] {\n return [\n createTextFormatRenderer(\n position + 'Width',\n format => extractBorderValues(format[position]).width,\n (format, newValue) => {\n const border = extractBorderValues(format[position]);\n border.width = newValue;\n format[position] = combineBorderValue(border);\n }\n ),\n createDropDownFormatRenderer(\n position + 'Style',\n BorderStyles,\n format => extractBorderValues(format[position]).style as BorderStyle,\n (format, newValue) => {\n const border = extractBorderValues(format[position]);\n border.style = newValue;\n format[position] = combineBorderValue(border);\n }\n ),\n createTextFormatRenderer(\n position + 'Color',\n format => extractBorderValues(format[position]).color,\n (format, newValue) => {\n const border = extractBorderValues(format[position]);\n border.color = newValue;\n format[position] = combineBorderValue(border);\n }\n ),\n ];\n}\n\nexport const BorderFormatRenderers: FormatRenderer[] = [\n ...createBorderRenderer('borderTop'),\n ...createBorderRenderer('borderRight'),\n ...createBorderRenderer('borderBottom'),\n ...createBorderRenderer('borderLeft'),\n];\n","import { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { DirectionFormat } from 'roosterjs-content-model-types';\n\nexport const DirectionFormatRenderer = createDropDownFormatRenderer(\n 'Direction',\n ['ltr', 'rtl'],\n format => format.direction,\n (format, value) => (format.direction = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { DisplayFormat } from 'roosterjs-content-model-types';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\nexport const DisplayFormatRenderer: FormatRenderer = createTextFormatRenderer<\n DisplayFormat\n>(\n 'Display',\n format => format.display,\n (format, value) => (format.display = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FloatFormat } from 'roosterjs-content-model-types';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\nexport const FloatFormatRenderer: FormatRenderer = createTextFormatRenderer<\n FloatFormat\n>(\n 'Float',\n format => format.float,\n (format, value) => (format.float = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FontFamilyFormat } from 'roosterjs-content-model-types';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\nexport const FontFamilyFormatRenderer: FormatRenderer = createTextFormatRenderer<\n FontFamilyFormat\n>(\n 'Font family',\n format => format.fontFamily,\n (format, value) => {\n format.fontFamily = value;\n return undefined;\n }\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FontSizeFormat } from 'roosterjs-content-model-types';\nimport { FormatRenderer } from '../utils/FormatRenderer';\n\nexport const FontSizeFormatRenderer: FormatRenderer = createTextFormatRenderer<\n FontSizeFormat\n>(\n 'Font size',\n format => format.fontSize,\n (format, value) => {\n format.fontSize = value;\n return undefined;\n }\n);\n","import { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { HtmlAlignFormat } from 'roosterjs-content-model-types';\n\nexport const HtmlAlignFormatRenderer = createDropDownFormatRenderer<\n HtmlAlignFormat,\n 'start' | 'center' | 'end' | 'justify' | 'initial'\n>(\n 'HTML align',\n ['start', 'center', 'end'],\n format => format.htmlAlign,\n (format, value) => (format.htmlAlign = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { IdFormat } from 'roosterjs-content-model-types';\n\nexport const IdFormatRenderer: FormatRenderer = createTextFormatRenderer(\n 'Id',\n format => format.id,\n (format, value) => (format.id = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { ImageMetadataFormat } from 'roosterjs-content-model-types';\n\nexport const ImageMetadataFormatRenderers: FormatRenderer[] = [\n createTextFormatRenderer(\n 'MetadataWidth',\n format => (format.widthPx || '') + '',\n (format, value) => (format.widthPx = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'MetadataHeight',\n format => (format.heightPx || '') + '',\n (format, value) => (format.heightPx = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'MetadataLeft',\n format => (format.leftPercent || '') + '',\n (format, value) => (format.leftPercent = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'MetadataRight',\n format => (format.rightPercent || '') + '',\n (format, value) => (format.rightPercent = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'MetadataTop',\n format => (format.topPercent || '') + '',\n (format, value) => (format.topPercent = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'MetadataBottom',\n format => (format.bottomPercent || '') + '',\n (format, value) => (format.bottomPercent = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'MetadataAngle',\n format => (format.angleRad || '') + '',\n (format, value) => (format.angleRad = parseFloat(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'OriginalSrc',\n format => format.src,\n () => {},\n 'multiline'\n ),\n createTextFormatRenderer(\n 'NaturalWidth',\n format => (format.naturalWidth || '') + '',\n () => {},\n 'number'\n ),\n createTextFormatRenderer(\n 'NaturalHeight',\n format => (format.naturalHeight || '') + '',\n () => {},\n 'number'\n ),\n];\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { LetterSpacingFormat } from 'roosterjs-content-model-types';\n\nexport const LetterSpacingFormatRenderer: FormatRenderer = createTextFormatRenderer<\n LetterSpacingFormat\n>(\n 'Letter spacing',\n format => format.letterSpacing,\n (format, value) => {\n format.letterSpacing = value;\n }\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { LineHeightFormat } from 'roosterjs-content-model-types';\n\nexport const LineHeightFormatRenderer: FormatRenderer = createTextFormatRenderer<\n LineHeightFormat\n>(\n 'LineHeight',\n format => format.lineHeight,\n (format, value) => (format.lineHeight = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { ListMetadataFormat } from 'roosterjs-content-model-types';\n\nexport const ListMetadataFormatRenderers: FormatRenderer[] = [\n createTextFormatRenderer(\n 'Ordered style',\n format => format.orderedStyleType + '',\n (format, value) => (format.orderedStyleType = parseInt(value)),\n 'number'\n ),\n createTextFormatRenderer(\n 'Unordered style',\n format => format.unorderedStyleType + '',\n (format, value) => (format.unorderedStyleType = parseInt(value)),\n 'number'\n ),\n];\n","import { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { ListStyleFormat } from 'roosterjs-content-model-types';\n\nexport const ListStylePositionFormatRenderers: FormatRenderer[] = [\n createDropDownFormatRenderer(\n 'List position',\n ['inside', 'outside'],\n format => format.listStylePosition,\n (format, value) => (format.listStylePosition = value)\n ),\n createTextFormatRenderer(\n 'List style type',\n format => format.listStyleType,\n (format, value) => (format.listStyleType = value)\n ),\n];\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { ListThreadFormat } from 'roosterjs-content-model-types';\n\nexport const ListThreadFormatRenderers: FormatRenderer[] = [\n createTextFormatRenderer(\n 'Start number',\n format => format.startNumberOverride + '',\n (format, value) => (format.startNumberOverride = parseInt(value)),\n 'number'\n ),\n];\n","import { createTextFormatRendererGroup } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { MarginFormat } from 'roosterjs-content-model-types';\n\ntype MarginName = keyof MarginFormat;\nconst MarginNames: MarginName[] = ['marginTop', 'marginRight', 'marginBottom', 'marginLeft'];\n\nexport const MarginFormatRenderer: FormatRenderer = createTextFormatRendererGroup<\n MarginFormat,\n MarginName\n>(\n MarginNames,\n format => MarginNames.map(name => format[name]),\n (format, name, value) => {\n format[name] = value;\n }\n);\n","import { createTextFormatRendererGroup } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { PaddingFormat } from 'roosterjs-content-model-types';\n\ntype PaddingName = keyof PaddingFormat;\nconst PaddingNames: PaddingName[] = ['paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'];\n\nexport const PaddingFormatRenderer: FormatRenderer = createTextFormatRendererGroup<\n PaddingFormat,\n PaddingName\n>(\n PaddingNames,\n format => PaddingNames.map(name => format[name]),\n (format, name, value) => {\n format[name] = value;\n }\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { SizeFormat } from 'roosterjs-content-model-types';\n\nexport const SizeFormatRenderers: FormatRenderer[] = [\n createTextFormatRenderer(\n 'Width',\n format => format.width,\n (format, value) => (format.width = value)\n ),\n createTextFormatRenderer(\n 'Height',\n format => format.height,\n (format, value) => (format.height = value)\n ),\n createTextFormatRenderer(\n 'MaxWidth',\n format => format.maxWidth,\n (format, value) => (format.maxWidth = value)\n ),\n createTextFormatRenderer(\n 'MaxHeight',\n format => format.maxHeight,\n (format, value) => (format.maxHeight = value)\n ),\n createTextFormatRenderer(\n 'MinWidth',\n format => format.minWidth,\n (format, value) => (format.minWidth = value)\n ),\n createTextFormatRenderer(\n 'MinHeight',\n format => format.minHeight,\n (format, value) => (format.minHeight = value)\n ),\n];\n","import { createCheckboxFormatRenderer } from '../utils/createCheckboxFormatRenderer';\nimport { SpacingFormat } from 'roosterjs-content-model-types';\n\nexport const SpacingFormatRenderer = createCheckboxFormatRenderer(\n 'BorderCollapsed',\n format => format.borderCollapse,\n (format, value) => (format.borderCollapse = value)\n);\n","import { createCheckboxFormatRenderer } from '../utils/createCheckboxFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { TableCellMetadataFormat } from 'roosterjs-editor-types';\n\nexport const TableCellMetadataFormatRenders: FormatRenderer[] = [\n createCheckboxFormatRenderer(\n 'BgColorOverride',\n format => format.bgColorOverride,\n (format, value) => (format.bgColorOverride = value)\n ),\n createCheckboxFormatRenderer(\n 'VAlignOverride',\n format => format.vAlignOverride,\n (format, value) => (format.vAlignOverride = value)\n ),\n createCheckboxFormatRenderer(\n 'BorderOverride',\n format => format.borderOverride,\n (format, value) => (format.borderOverride = value)\n ),\n];\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { TableLayoutFormat } from 'roosterjs-content-model-types';\n\nexport const TableLayoutFormatRenderer: FormatRenderer = createTextFormatRenderer<\n TableLayoutFormat\n>(\n 'TableLayout',\n format => format.tableLayout,\n (format, value) => (format.tableLayout = value)\n);\n","import { createCheckboxFormatRenderer } from '../utils/createCheckboxFormatRenderer';\nimport { createColorFormatRenderer } from '../utils/createColorFormatRender';\nimport { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { getObjectKeys, TableBorderFormat } from 'roosterjs-content-model-dom';\nimport { TableMetadataFormat } from 'roosterjs-content-model-types';\n\nexport const TableMetadataFormatRenders: FormatRenderer[] = [\n createColorFormatRenderer(\n 'TopBorderColor',\n format => format.topBorderColor,\n (format, value) => {\n format.topBorderColor = value;\n }\n ),\n createColorFormatRenderer(\n 'BottomBorderColor',\n format => format.bottomBorderColor,\n (format, value) => (format.bottomBorderColor = value)\n ),\n createColorFormatRenderer(\n 'VerticalBorderColor',\n format => format.verticalBorderColor,\n (format, value) => (format.verticalBorderColor = value)\n ),\n createCheckboxFormatRenderer(\n 'HasHeaderRow',\n format => format.hasHeaderRow,\n (format, value) => (format.hasHeaderRow = value)\n ),\n createColorFormatRenderer(\n 'HeaderRowColor',\n format => format.headerRowColor,\n (format, value) => (format.headerRowColor = value)\n ),\n createCheckboxFormatRenderer(\n 'HasFirstColumn',\n format => format.hasFirstColumn,\n (format, value) => (format.hasFirstColumn = value)\n ),\n createCheckboxFormatRenderer(\n 'HasBandedColumns',\n format => format.hasBandedColumns,\n (format, value) => (format.hasBandedColumns = value)\n ),\n createCheckboxFormatRenderer(\n 'HasBandedRows',\n format => format.hasBandedRows,\n (format, value) => (format.hasBandedRows = value)\n ),\n createColorFormatRenderer(\n 'BgColorEven',\n format => format.bgColorEven,\n (format, value) => (format.bgColorEven = value)\n ),\n createColorFormatRenderer(\n 'BgColorOdd',\n format => format.bgColorOdd,\n (format, value) => (format.bgColorOdd = value)\n ),\n createDropDownFormatRenderer(\n 'TableBorderFormat',\n [\n 'Default',\n 'ListWithSideBorders',\n 'NoHeaderBorders',\n 'NoSideBorders',\n 'FirstColumnHeaderExternal',\n 'EspecialType1',\n 'EspecialType2',\n 'EspecialType3',\n 'Clear',\n ],\n format =>\n getObjectKeys(TableBorderFormat)[\n Object.values(TableBorderFormat).indexOf(format.tableBorderFormat)\n ],\n (format, newValue) => (format.tableBorderFormat = TableBorderFormat[newValue])\n ),\n];\n","import { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { TextAlignFormat } from 'roosterjs-content-model-types';\n\nexport const TextAlignFormatRenderer = createDropDownFormatRenderer<\n TextAlignFormat,\n 'start' | 'center' | 'end' | 'justify' | 'initial'\n>(\n 'Text align',\n ['start', 'center', 'end'],\n format => format.textAlign,\n (format, value) => (format.textAlign = value)\n);\n","import * as Color from 'color';\nimport { createColorFormatRenderer } from '../utils/createColorFormatRender';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { TextColorFormat } from 'roosterjs-content-model-types';\n\nexport const TextColorFormatRenderer: FormatRenderer = createColorFormatRenderer<\n TextColorFormat\n>(\n 'Text color',\n format => {\n try {\n return format.textColor ? Color(format.textColor).hex() : '';\n } catch (e) {\n console.log(e);\n }\n },\n (format, value) => {\n format.textColor = value;\n return undefined;\n }\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { FormatRenderer } from '../utils/FormatRenderer';\nimport { TextIndentFormat } from 'roosterjs-content-model-types';\n\nexport const TextIndentFormatRenderer: FormatRenderer = createTextFormatRenderer<\n TextIndentFormat\n>(\n 'Text indent',\n format => format.textIndent,\n (format, value) => (format.textIndent = value)\n);\n","import { createDropDownFormatRenderer } from '../utils/createDropDownFormatRenderer';\nimport { VerticalAlignFormat } from 'roosterjs-content-model-types';\n\nexport const VerticalAlignFormatRenderer = createDropDownFormatRenderer<\n VerticalAlignFormat,\n 'top' | 'middle' | 'bottom'\n>(\n 'Vertical align',\n ['top', 'middle', 'bottom'],\n format => format.verticalAlign,\n (format, value) => (format.verticalAlign = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { WhiteSpaceFormat } from 'roosterjs-content-model-types';\n\nexport const WhiteSpaceFormatRenderer = createTextFormatRenderer(\n 'White space',\n format => format.whiteSpace,\n (format, value) => (format.whiteSpace = value)\n);\n","import { createTextFormatRenderer } from '../utils/createTextFormatRenderer';\nimport { WordBreakFormat } from 'roosterjs-content-model-types';\n\nexport const WordBreakFormatRenderer = createTextFormatRenderer(\n 'Word break',\n format => format.wordBreak,\n (format, value) => (format.wordBreak = value)\n);\n","import * as React from 'react';\nimport { FormatRenderer } from './FormatRenderer';\nimport { useProperty } from '../../../hooks/useProperty';\n\nconst styles = require('../FormatView.scss');\n\nfunction CheckboxFormatItem(props: {\n name: string;\n format: TFormat;\n getter: (format: TFormat) => boolean;\n setter?: (format: TFormat, newValue: boolean) => void;\n onUpdate?: () => void;\n}) {\n const { name, getter, setter, format, onUpdate } = props;\n const checkbox = React.useRef(null);\n const [value, setValue] = useProperty(getter(format));\n\n const onChange = React.useCallback(() => {\n const newValue = checkbox.current.checked;\n setValue(newValue);\n setter?.(format, newValue);\n onUpdate?.();\n }, [format, setter, setValue]);\n\n return (\n
\n
{name}
\n
\n \n
\n
\n );\n}\n\nexport function createCheckboxFormatRenderer(\n name: string,\n getter: (format: T) => boolean,\n setter?: (format: T, newValue: boolean) => void\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => (\n \n );\n}\n","import * as Color from 'color';\nimport * as React from 'react';\nimport { FormatRenderer } from './FormatRenderer';\nimport { useProperty } from '../../../hooks/useProperty';\n\nconst styles = require('../FormatView.scss');\nconst Transparent = 'transparent';\n\nfunction ColorFormatItem(props: {\n name: string;\n format: T;\n getter: (format: T) => string;\n setter?: (format: T, newValue: string) => void;\n onUpdate?: () => void;\n}) {\n const { name, getter, setter, format, onUpdate } = props;\n const colorPickerBox = React.useRef(null);\n const colorValueBox = React.useRef(null);\n const transparentCheckBox = React.useRef(null);\n\n let initValue = getter(format);\n\n if (initValue && initValue != Transparent) {\n try {\n const color = Color(initValue);\n initValue = color.hex();\n } catch {}\n }\n\n const [value, setValue] = useProperty(initValue);\n\n const updateValue = React.useCallback(\n (newValue: string) => {\n if (newValue != Transparent) {\n try {\n const color = Color(newValue);\n newValue = color.hex();\n } catch {}\n }\n\n setValue(newValue);\n setter?.(format, newValue);\n onUpdate?.();\n },\n [setter, format]\n );\n\n const onTextBoxChange = React.useCallback(() => {\n updateValue(colorPickerBox.current.value);\n }, [updateValue]);\n\n const onColorValueChange = React.useCallback(() => {\n updateValue(colorValueBox.current.value);\n }, [updateValue]);\n\n const onToggleTransparent = React.useCallback(() => {\n updateValue(\n transparentCheckBox.current.checked ? Transparent : colorPickerBox.current.value\n );\n }, [updateValue]);\n\n let content = (\n <>\n \n \n \n {Transparent}\n \n );\n\n return (\n
\n
{name}
\n
{content}
\n
\n );\n}\n\nexport function createColorFormatRenderer(\n name: string,\n getter: (format: T) => string,\n setter?: (format: T, newValue: string) => void\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => (\n \n );\n}\n\nexport function createColorFormatRendererGroup(\n names: V[],\n getter: (format: T) => string[],\n setter?: (format: T, name: V, newValue: string) => void\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => {\n const initValues = getter(format);\n\n return (\n <>\n {names.map((name, index) => (\n initValues[index]}\n setter={(format, newValue) => setter?.(format, name, newValue)}\n format={format}\n onUpdate={onUpdate}\n key={name}\n />\n ))}\n \n );\n };\n}\n","import * as React from 'react';\nimport { FormatRenderer } from './FormatRenderer';\nimport { useProperty } from '../../../hooks/useProperty';\n\nconst styles = require('../FormatView.scss');\n\nfunction DropDownFormatItem(props: {\n name: string;\n format: TFormat;\n options: TOption[];\n getter: (format: TFormat) => TOption | undefined;\n setter?: (format: TFormat, newValue: TOption | undefined) => void;\n onUpdate?: () => void;\n}) {\n const { name, getter, setter, format, options, onUpdate } = props;\n const dropDown = React.useRef(null);\n const [value, setValue] = useProperty(getter(format));\n\n const onChange = React.useCallback(() => {\n const newValue =\n dropDown.current.value == '' ? undefined : (dropDown.current.value as TOption);\n setValue(newValue);\n setter?.(format, newValue);\n onUpdate?.();\n }, [format, setter]);\n\n return (\n
\n
{name}
\n
\n \n
\n
\n );\n}\n\nexport function createDropDownFormatRenderer(\n name: string,\n options: O[],\n getter: (format: T) => O,\n setter?: (format: T, newValue: O) => void\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => (\n \n );\n}\n\nexport function createDropDownFormatRendererGroup(\n names: V[],\n options: O[],\n getter: (format: T) => O[],\n setter?: (format: T, name: V, newValue: O) => void\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => {\n const initValues = getter(format);\n return (\n <>\n {names.map((name, index) => (\n initValues[index]}\n setter={(format, newValue) => setter?.(format, name, newValue)}\n format={format}\n options={options}\n onUpdate={onUpdate}\n key={name}\n />\n ))}\n \n );\n };\n}\n","import * as React from 'react';\nimport { FormatRenderer } from './FormatRenderer';\nimport { useProperty } from '../../../hooks/useProperty';\n\nconst styles = require('../FormatView.scss');\n\nfunction TextFormatItem(props: {\n name: string;\n format: T;\n getter: (format: T) => string;\n setter?: (format: T, newValue: string) => void;\n onUpdate?: () => void;\n type: 'text' | 'number' | 'multiline';\n}) {\n const { name, getter, setter, format, type, onUpdate } = props;\n const textBox = React.useRef(null);\n const [value, setValue] = useProperty(getter(format));\n\n const updateValue = React.useCallback(\n (newValue: string) => {\n setValue(newValue);\n setter?.(format, newValue);\n onUpdate?.();\n },\n [setter, format]\n );\n\n const onTextBoxChange = React.useCallback(() => {\n updateValue(textBox.current.value);\n }, [updateValue]);\n\n let content: JSX.Element;\n\n switch (type) {\n case 'multiline':\n content = (\n \n );\n break;\n case 'number':\n content = (\n \n );\n break;\n case 'text':\n content = (\n \n );\n break;\n }\n\n return (\n
\n
{name}
\n
{content}
\n
\n );\n}\n\nexport function createTextFormatRenderer(\n name: string,\n getter: (format: T) => string,\n setter?: (format: T, newValue: string) => void,\n type: 'text' | 'number' | 'multiline' = 'text'\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => (\n \n );\n}\n\nexport function createTextFormatRendererGroup(\n names: V[],\n getter: (format: T) => string[],\n setter?: (format: T, name: V, newValue: string) => void,\n type: 'text' | 'number' | 'multiline' = 'text'\n): FormatRenderer {\n return (format: T, onUpdate?: () => void) => {\n const initValues = getter(format);\n\n return (\n <>\n {names.map((name, index) => (\n initValues[index]}\n setter={(format, newValue) => setter?.(format, name, newValue)}\n format={format}\n type={type}\n onUpdate={onUpdate}\n key={name}\n />\n ))}\n \n );\n };\n}\n","import * as React from 'react';\nimport { ContentModelBlockGroup } from 'roosterjs-content-model-types';\nimport { ContentModelBlockView } from './ContentModelBlockView';\n\nexport function BlockGroupContentView(props: { group: ContentModelBlockGroup }) {\n const { group } = props;\n\n return (\n <>\n {group.blocks.map((block, index) => (\n \n ))}\n \n );\n}\n","import * as React from 'react';\nimport { ContentModelBlockGroup } from 'roosterjs-content-model-types';\nimport { ContentModelDocumentView } from './ContentModelDocumentView';\nimport { ContentModelFormatContainerView } from './ContentModelFormatContainerView';\nimport { ContentModelGeneralView } from './ContentModelGeneralView';\nimport { ContentModelListItemView } from './ContentModelListItemView';\nimport { ContentModelTableCellView } from './ContentModelTableCellView';\n\nexport function ContentModelBlockGroupView(props: { group: ContentModelBlockGroup }) {\n const { group } = props;\n\n switch (group.blockGroupType) {\n case 'Document':\n return ;\n\n case 'General':\n return ;\n\n case 'ListItem':\n return ;\n\n case 'FormatContainer':\n return ;\n\n case 'TableCell':\n return ;\n }\n}\n","import * as React from 'react';\nimport { ContentModelBlock } from 'roosterjs-content-model-types';\nimport { ContentModelBlockGroupView } from './ContentModelBlockGroupView';\nimport { ContentModelDividerView } from './ContentModelDividerView';\nimport { ContentModelEntityView } from './ContentModelEntityView';\nimport { ContentModelParagraphView } from './ContentModelParagraphView';\nimport { ContentModelTableView } from './ContentModelTableView';\n\nexport function ContentModelBlockView(props: { block: ContentModelBlock }) {\n const { block } = props;\n\n switch (block.blockType) {\n case 'BlockGroup':\n return ;\n\n case 'Paragraph':\n return ;\n\n case 'Table':\n return ;\n\n case 'Entity':\n return ;\n\n case 'Divider':\n return ;\n }\n}\n","import * as React from 'react';\nimport { ContentModelBr } from 'roosterjs-content-model-types';\nimport { ContentModelView } from '../ContentModelView';\nimport { SegmentFormatView } from '../format/SegmentFormatView';\n\nconst styles = require('./ContentModelBrView.scss');\n\nexport function ContentModelBrView(props: { br: ContentModelBr }) {\n const { br } = props;\n const getFormat = React.useCallback(() => {\n return ;\n }, [br.format]);\n\n return (\n \n );\n}\n","import * as React from 'react';\nimport { ContentModelCode, ContentModelCodeFormat } from 'roosterjs-content-model-types';\nimport { ContentModelView } from '../ContentModelView';\nimport { DisplayFormatRenderer } from '../format/formatPart/DisplayFormatRenderer';\nimport { FontFamilyFormatRenderer } from '../format/formatPart/FontFamilyFormatRenderer';\nimport { FormatRenderer } from '../format/utils/FormatRenderer';\nimport { FormatView } from '../format/FormatView';\n\nconst CodeRenderers: FormatRenderer[] = [\n FontFamilyFormatRenderer,\n DisplayFormatRenderer,\n];\n\nconst styles = require('./ContentModelCodeView.scss');\n\nexport function ContentModelCodeView(props: { code: ContentModelCode }) {\n const { code } = props;\n\n const getFormat = React.useCallback(() => {\n return ;\n }, [code.format]);\n\n return (\n \n );\n}\n","import * as React from 'react';\nimport { BackgroundColorFormatRenderer } from '../format/formatPart/BackgroundColorFormatRenderer';\nimport { BorderFormatRenderers } from '../format/formatPart/BorderFormatRenderers';\nimport { ContentModelDivider, ContentModelDividerFormat } from 'roosterjs-content-model-types';\nimport { ContentModelView } from '../ContentModelView';\nimport { DirectionFormatRenderer } from '../format/formatPart/DirectionFormatRenderer';\nimport { DisplayFormatRenderer } from '../format/formatPart/DisplayFormatRenderer';\nimport { FormatRenderer } from '../format/utils/FormatRenderer';\nimport { FormatView } from '../format/FormatView';\nimport { LineHeightFormatRenderer } from '../format/formatPart/LineHeightFormatRenderer';\nimport { MarginFormatRenderer } from '../format/formatPart/MarginFormatRenderer';\nimport { PaddingFormatRenderer } from '../format/formatPart/PaddingFormatRenderer';\nimport { SizeFormatRenderers } from '../format/formatPart/SizeFormatRenderers';\nimport { useProperty } from '../../hooks/useProperty';\nimport { WhiteSpaceFormatRenderer } from '../format/formatPart/WhiteSpaceFormatRenderer';\n\nconst styles = require('./ContentModelDividerView.scss');\nconst DividerFormatRenders: FormatRenderer[] = [\n BackgroundColorFormatRenderer,\n DirectionFormatRenderer,\n MarginFormatRenderer,\n PaddingFormatRenderer,\n LineHeightFormatRenderer,\n WhiteSpaceFormatRenderer,\n ...BorderFormatRenderers,\n DisplayFormatRenderer,\n ...SizeFormatRenderers,\n];\n\nexport function ContentModelDividerView(props: { divider: ContentModelDivider }) {\n const { divider } = props;\n const [tagName, setTagName] = useProperty(divider.tagName);\n const tagNameDropDown = React.useRef(null);\n const onTagNameChange = React.useCallback(() => {\n const newValue = tagNameDropDown.current.value as 'hr' | 'div';\n divider.tagName = newValue;\n setTagName(newValue);\n }, [divider, setTagName]);\n\n const getContent = React.useCallback(() => {\n return (\n
\n TagName:\n \n
\n );\n }, [tagName]);\n\n const getFormat = React.useCallback(() => {\n return ;\n }, [divider.format]);\n\n return (\n \n );\n}\n","import * as React from 'react';\nimport { BlockGroupContentView } from './BlockGroupContentView';\nimport { ContentModelDocument } from 'roosterjs-content-model-types';\nimport { ContentModelView } from '../ContentModelView';\nimport { hasSelectionInBlockGroup } from 'roosterjs-content-model-dom';\n\nconst styles = require('./ContentModelDocumentView.scss');\n\nexport function ContentModelDocumentView(props: { doc: ContentModelDocument }) {\n const { doc } = props;\n const getContent = React.useCallback(() => {\n return ;\n }, [doc]);\n\n return (\n \n );\n}\n","import * as React from 'react';\nimport { BlockFormatView } from '../format/BlockFormatView';\nimport { ContentModelEntity } from 'roosterjs-content-model-types';\nimport { ContentModelView } from '../ContentModelView';\nimport { SegmentFormatView } from '../format/SegmentFormatView';\nimport { useProperty } from '../../hooks/useProperty';\n\nconst styles = require('./ContentModelEntityView.scss');\n\nexport function ContentModelEntityView(props: { entity: ContentModelEntity }) {\n const { entity } = props;\n\n const [id, setId] = useProperty(entity.entityFormat.id);\n const [isReadonly, setIsReadonly] = useProperty(entity.entityFormat.isReadonly);\n const [type, setType] = useProperty(entity.entityFormat.entityType);\n\n const idTextBox = React.useRef(null);\n const isReadonlyCheckBox = React.useRef(null);\n const typeTextBox = React.useRef(null);\n\n const onIdChange = React.useCallback(() => {\n const newValue = idTextBox.current.value;\n entity.entityFormat.id = newValue;\n setId(newValue);\n }, [id, setId]);\n const onTypeChange = React.useCallback(() => {\n const newValue = typeTextBox.current.value;\n entity.entityFormat.entityType = newValue;\n setType(newValue);\n }, [type, setType]);\n const onReadonlyChange = React.useCallback(() => {\n const newValue = isReadonlyCheckBox.current.checked;\n entity.entityFormat.isReadonly = newValue;\n setIsReadonly(newValue);\n }, [id, setId]);\n\n const getContent = React.useCallback(() => {\n return (\n <>\n
\n Id: \n
\n
\n Type:\n \n
\n
\n IsReadonly:\n \n
\n \n );\n }, [type, isReadonly, id]);\n\n const getFormat = React.useCallback(() => {\n return (\n <>\n \n \n \n );\n }, [entity.format]);\n\n return (\n \n );\n}\n","import * as React from 'react';\nimport { BlockFormatView } from '../format/BlockFormatView';\nimport { BlockGroupContentView } from './BlockGroupContentView';\nimport { ContentModelView } from '../ContentModelView';\nimport { DisplayFormatRenderer } from '../format/formatPart/DisplayFormatRenderer';\nimport { FormatRenderer } from '../format/utils/FormatRenderer';\nimport { FormatView } from '../format/FormatView';\nimport { hasSelectionInBlock } from 'roosterjs-content-model-dom';\nimport { SegmentFormatView } from '../format/SegmentFormatView';\nimport { SizeFormatRenderers } from '../format/formatPart/SizeFormatRenderers';\nimport {\n ContentModelFormatContainer,\n ContentModelFormatContainerFormat,\n} from 'roosterjs-content-model-types';\n\nconst styles = require('./ContentModelFormatContainerView.scss');\n\nconst FormatContainerFormatRenderers: FormatRenderer[] = [\n ...SizeFormatRenderers,\n DisplayFormatRenderer,\n];\n\nexport function ContentModelFormatContainerView(props: { container: ContentModelFormatContainer }) {\n const { container } = props;\n const getContent = React.useCallback(() => {\n return ;\n }, [container]);\n\n const getFormat = React.useCallback(() => {\n return (\n <>\n \n \n \n \n );\n }, [container]);\n\n return (\n \n );\n}\n","import * as React from 'react';\nimport { BlockGroupContentView } from './BlockGroupContentView';\nimport { ContentModelCodeView } from './ContentModelCodeView';\nimport { ContentModelLinkView } from './ContentModelLinkView';\nimport { ContentModelView } from '../ContentModelView';\nimport { hasSelectionInBlock } from 'roosterjs-content-model-dom';\nimport { SegmentFormatView } from '../format/SegmentFormatView';\nimport {\n ContentModelGeneralBlock,\n ContentModelGeneralSegment,\n} from 'roosterjs-content-model-types';\n\nconst styles = require('./ContentModelGeneralView.scss');\n\nexport function ContentModelGeneralView(props: { model: ContentModelGeneralBlock }) {\n const { model } = props;\n const segment = isGeneralSegment(model) ? model : undefined;\n const link = segment?.link;\n const code = segment?.code;\n const getContent = React.useCallback(() => {\n return (\n <>\n {link ? : null}\n {code ? : null}\n \n \n );\n }, [model, link]);\n\n const getFormat = React.useCallback(() => {\n return ;\n }, [segment?.format]);\n\n return (\n \n );\n}\n\nfunction isGeneralSegment(block: ContentModelGeneralBlock): block is ContentModelGeneralSegment {\n return (block as ContentModelGeneralSegment).segmentType == 'General';\n}\n","import * as React from 'react';\nimport { ContentModelCodeView } from './ContentModelCodeView';\nimport { ContentModelImage, ContentModelImageFormat } from 'roosterjs-content-model-types';\nimport { ContentModelLinkView } from './ContentModelLinkView';\nimport { ContentModelView } from '../ContentModelView';\nimport { FloatFormatRenderer } from '../format/formatPart/FloatFormatRenderer';\nimport { FormatRenderer } from '../format/utils/FormatRenderer';\nimport { FormatView } from '../format/FormatView';\nimport { IdFormatRenderer } from '../format/formatPart/IdFormatRenderer';\nimport { ImageMetadataFormatRenderers } from '../format/formatPart/ImageMetadataFormatRenderers';\nimport { MarginFormatRenderer } from '../format/formatPart/MarginFormatRenderer';\nimport { MetadataView } from '../format/MetadataView';\nimport { PaddingFormatRenderer } from '../format/formatPart/PaddingFormatRenderer';\nimport { SegmentFormatView } from '../format/SegmentFormatView';\nimport { SizeFormatRenderers } from '../format/formatPart/SizeFormatRenderers';\nimport { updateImageMetadata } from 'roosterjs-content-model-dom';\nimport { useProperty } from '../../hooks/useProperty';\n\nconst styles = require('./ContentModelImageView.scss');\n\nconst ImageFormatRenderers: FormatRenderer[] = [\n IdFormatRenderer,\n ...SizeFormatRenderers,\n MarginFormatRenderer,\n PaddingFormatRenderer,\n FloatFormatRenderer,\n];\n\nexport function ContentModelImageView(props: { image: ContentModelImage }) {\n const { image } = props;\n const srcTextArea = React.useRef(null);\n const imageSelectionCheckBox = React.useRef(null);\n\n const [src, setSrc] = useProperty(image.src);\n const [imageSelected, setImageSelected] = useProperty(\n image.isSelectedAsImageSelection || false\n );\n\n const getFormat = React.useCallback(() => {\n return (\n <>\n \n \n \n );\n }, [image.format]);\n\n const getContent = React.useCallback(() => {\n return (\n <>\n \n